first spell WIP
JASS: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
I feel really sad for those who waste time on coding spells, if anyone is wondering why, there is a spell download section. Also, you don't have to code in Jass to make good spells. Just create new ones based on the old ones in the object editor.
Just don't A Void. Not on a contest thread ;__;
It's just too much.
Captain obvious: incoming transmission...
@A Void - you drunk or smthing? Copy + Paste is not allowed, L.O.L.
Plus, this is why we post WIPs - pieces of code written by YOU to at least "pretend" you did something on your own.
Many of spells coded in spell section might not fit his needs: both efficiency and effect wise. Also the "outdated" keyword might be usefull one here. Everyone with enough sanity knows that after copying spells, you usually want to apapt it perfectly for your map/needs - at least this is the approach most of the experienced coders follow (if they are not coding entire script on their own already..).
Bonus points for everyone who creates his OWN hero - not an abomination created via merging multiple resources of others into single flesh.
Whatmore, his script looks very promising and is efficient - could use some modularity in case of multiple existing resources. I bet you are just jelous because you don't really know how to code simple queue, not even talking about advanced effects.
Captain obvious: transmission over...
Well, this is "Hero Contest" not Jass Coding Spells contest. You can use GUI or even CnP. I can download spells from the spell section, I could care less about "abomination", mr.Captain obvious..
All spells for the hero must be created specifically for this contest, there will be no previously-made spells allowed.
You couldn't be more wrong:
Can I ask which race does fit for Polar Fulbolgs?
Afterall you can argue in README file of some kind that you took charge after Cenarius and as of now, Night Elves enjoy white colour more than they once have blue.
So, Polar Furbolg it is.
Capt obvious, unfortunatelly, I wasn't talking to you - I thought you are busy coping someone' spells into "your" hero.
Capt obvious please, you haven't corrected anyone - you didn't get an irony.
Dude please, you are talking to someone who read war3 lore couple of times already.
Stop being childlish, everyone already pointed out that points you have made during "lets copy some stuff" discussion were wrong.
Over..
Hero - Ranger.![]()
Isn't that a custom model made from the BETA files?
Yes it is, it was made by Kuhneghetz. I will recreate the alpha Ranger hero from the alpha version of Warcraft III. It will include custom model, abilities and icons.
Something you obviously need to follow i.e THE RULES said:The hero must be made with only In-Game Resources, which means no Custom Resources (models, textures, icons, etc). Specifically, that means Resources that can be found in War3.mpq, War3x.mpq, War3xlocal.mpq, & War3Patch.mpq. The only exceptions to this rule would be
A) A custom "Dummy" model for Dummy Casters or Dummy Projectiles (see below)
B) A modified version of an existing in-game icon to increase functionality ONLY (i.e. creating a Passive-version, or Autocast-version, or Regular-version, etc); i.e. only Border-change.
C) A custom "Hero Glow" model (Chest, Weapon, etc) for use in making Unit models into better-fitting Hero models.
D) An existing In-Game model, modified to have Dissipate anims instead of Decay.
I know you're doing this deliberately but still...
Well, then I will just use in-game ranger model.![]()
At least two spells must be enhanced - you need to work on them a bit e.g use some GUI triggering or do some scripting.
Hero Contest is more of a "generic" contest - instead of focusing on one thing, you are forced to work on many different things - concept, spells, idea behind, name, art, effects etc. - and don't forget to connect them together.
The impression your hero gives, is very strong argument towards winning the whole contest, thats why you don't really want to miss a thing![]()
EDIT: Kyrbi0 when it says two spells must be trigger enhanced, what does that mean? Does it mean I can make the entire spell based off of a standard ability and then just use a trigger to make an effect or what?
Since it doesn't indicate (& due to some other factors, i.e. people I don't want to 'scare away' from this Contest), I would interpret that to mean any level of Triggering is acceptable. Even as simple as a Dummy-Cast-ed ability or a Trigger which adds SFX to an existing Spell is "trigger-enhanced".Oh I know all this but I want to know to which extent they must be trigger/script enhanced. Whether it's creating a Special effect, the spell's effects themselves all of the above or anything else I may have missed.
I will join the contest.
My goal is to complete a hero :
Name : Hell Master
Spells : Super Nova - Nova Spray - Phoenix Rush - Hell Rush ( They are all done and bugfree )
I may miss posting my hero but actually because of school and Baccalaureate (High School Certificate) and bullshit, but however, I join this.
first spell WIP
JASS: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]
you are rightThat should probably be replaced by a 'Shard' struct array.
I'll be honest, I could almost see a pure Furbolg in the NE race, but a "Polar Furbolg"? Might be too much of a stretch.Night Elf seems to fit in basing on the Furbolg storyline, not sure of their Polar blood line.
Look, I appreciate your comments & that you want to see this Contest succeed (as do I); we have that in common. So let's make the most of that commonality rather than what sets us apart.Someone needs to address the elephant in the room. The contest has been set incorrectly with at least one incorrect rule. All these hero-related posts are fine and dandy, but also ignorant. If someone doesn't mend the problems this contest will never be peak standard.
[IMG]http://i.imgur.com/SHZVc2k.png[/IMG]Tala Starseer - the High Elf Arcanist
The Arcanist is an AoE damage dealer, best kept in the backline, raining down arcane magic upon her enemies, preferably with a troop of Spellbreakers at the front, who aren't at risk of being killed by her assault. The Arcanist was a Sorceress of great skill and immense power. This immense power is hard to control, and her magicks run the risk of causing great harm to her allies.
Tala excels at defending allied bases, and facing large enemy forces. Her abilities are Stormshiver, Starburst, Nourish and Polymastery.
Arcane Mana Beam![]()
[IMG]http://i.imgur.com/p9aOqTE.png[/IMG]Stormshiver:![]()
Mana Cost - 40/65/90
Cooldown - 5/3.75/2.5
[Level 1/2/3] - The Arcanist calls down a bolt of lightning, dealing upto 100/175/250 damage to any enemy units caught within the blast radius [100].
[IMG]http://i.imgur.com/0Ra74JN.png[/IMG]Starburst:![]()
Mana Cost - 60/70/80
Cooldown - 10/10/10
[Level 1/2/3] - Summons 3/5/7 Starchildren, who then flock to the Arcanist, lasting 7 seconds.
The Starchildren will move to explode near whoever the Arcanist attacks, dealing upto 150/250/350 damage to enemy units around them.
[IMG]http://i.imgur.com/mmCIQ4C.png[/IMG]Nourish:![]()
Mana Cost - 75/75/75
Cooldown - 10/12.5/15
[Level 1/2/3] - After a short delay, the Arcanist lets out a surge of magical energy, increasing all nearby allied units' health regeneration, mana regeneration, aswell as increasing their armor by 5, while reducing their Damage by 25% for 10 seconds.
While being Nourished, the Arcanist gains +5 Agility, Intelligence and Strength.
Once Nourish dispels, it can disrupt nearby Arcanists' own Nourished Agility, Intelligence and Strength.
[IMG]http://i.imgur.com/uIQucBq.png[/IMG]Polymastery:![]()
Mana Cost - 250
Cooldown - 180
[Level 1] - The Arcanist summons a small horde of her polymorphed enemies, appearing in the sky in fifteen waves. Each falling Sheep deals 100 damage to nearby units.
I guess I'm in, though I won't be able to do much triggering for my Hero. I'd actually managed to work a side-effect of one of the abilities' triggered components into a form of counterplay against another of this Hero. However, if I reach a point where no matter what I do, I can't make the ability work as intended, and can't find any workarounds, I'm out.
Hopefully that doesn't happen, and I can stay 'til the end. Anyway, here, I've already set up the kit.
[IMG]http://i.imgur.com/SHZVc2k.png[/IMG]Tala Starseer - the High Elf Arcanist
The Arcanist is an AoE damage dealer, best kept in the backline, raining down arcane magic upon her enemies, preferably with a troop of Spellbreakers at the front, who aren't at risk of being killed by her assault. The Arcanist was a Sorceress of great skill and immense power. This immense power is hard to control, and her magicks run the risk of causing great harm to her allies.
Tala excels at defending allied bases, and facing large enemy forces. Her abilities are Stormshiver, Starburst, Nourish and Polymastery.With every attack, the Arcanist fires a beam of energy at her enemies.Arcane Mana Beam![]()
Stormshiver is an excellent damage ability later in the game, when the Arcanist has a larger mana pool, although if not used carefully, can easily kill allied units.[IMG]http://i.imgur.com/p9aOqTE.png[/IMG]Stormshiver:![]()
Mana Cost - 40/65/90
Cooldown - 5/3.75/2.5
[Level 1/2/3] - The Arcanist calls down a bolt of lightning, dealing upto 100/175/250 damage to any enemy units caught within the blast radius [100].
Starburst is an interesting spell, which summons a number of Starchildren. These children can be controlled for 7 seconds before disappearing, but will default to following the Arcanist, and attacking either the enemy she targets first, or whoever they can get to if she is ordered to "Attack Move" to an area.[IMG]http://i.imgur.com/0Ra74JN.png[/IMG]Starburst:![]()
Mana Cost - 60/70/80
Cooldown - 10/10/10
[Level 1/2/3] - Summons 3/5/7 Starchildren, who then flock to the Arcanist, lasting 7 seconds.
The Starchildren will move to explode near whoever the Arcanist attacks, dealing upto 150/250/350 damage to enemy units around them.
Nourish has the potential to greatly affect the outcome of an upcoming battle. After a brief channeling, the Arcanist buffs all nearby allied units, granting them extremely rapid regeneration and a huge armor boost, while briefly reducing the damage they can do.[IMG]http://i.imgur.com/mmCIQ4C.png[/IMG]Nourish:![]()
Mana Cost - 75/75/75
Cooldown - 10/12.5/15
[Level 1/2/3] - After a short delay, the Arcanist lets out a surge of magical energy, increasing all nearby allied units' health regeneration, mana regeneration, aswell as increasing their armor by 5, while reducing their Damage by 25% for 10 seconds.
While being Nourished, the Arcanist gains +5 Agility, Intelligence and Strength.
Once Nourish dispels, it can disrupt nearby Arcanists' own Nourished Agility, Intelligence and Strength.
Polymastery is an interesting spell, with rather grim implications. This ability has a very long channel time, and can heavily damage a large portion of enemy or allied bases. Battles fought within the Polymastery AoE should consist mostly of Spellbreakers under your or your allies' control, else you run the risk of killing or wounding a sizable chunk of both armies.[IMG]http://i.imgur.com/uIQucBq.png[/IMG]Polymastery:![]()
Mana Cost - 250
Cooldown - 180
[Level 1] - The Arcanist summons a small horde of her polymorphed enemies, appearing in the sky in fifteen waves. Each falling Sheep deals 100 damage to nearby units.
All that's left for me now to do is to balance the Hero out. Currently, their early game is surprisingly weak, but their lategame is very powerful if they aren't pressured by their enemies. Most of their spells have some form of casting delay.
One such ability provides them with enough mana regeneration to more than make up for the initial mana cost, and given enough time they can quickly regenerate their own mana pool. If you let them be for long enough, they can unleash a massive barrage of magic upon you, with their full mana bar.
Look, I appreciate your comments & that you want to see this Contest succeed (as do I); we have that in common. So let's make the most of that commonality rather than what sets us apart.
I have, as I said I would, sent out a message 'to my betters' to try & get some good advice on the subject (I'm awaiting a reply). More importantly, rather than "calling out" the problem repeatedly, consider responding to the various ideas that have been suggested...
Or perhaps more importantly, we could've used your thoughts on the write-up that has been sitting around for almost an entire year... I openly admitted to needing some help on the coding bits.
Resources that can be found in War3.mpq, War3x.mpq, War3xlocal.mpq, & War3Patch.mpq
Dunno if already asked but:
So that may mean we could use some resources that are in the said mpqs but not in-game? Just asking, so we can know and Void could continue using the skin.
good question, I could also use that beta Ranger skin found in War3.mpq to overwrite the present one. Can I do that?
But, Void, do you know more resources that are in the mpq but not ingame?
^^^^^^that means Resources that can be found in War3.mpq, War3x.mpq, War3xlocal.mpq, & War3Patch.mpq