• 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.

Spells & Systems Mini-Contest #18

Status
Not open for further replies.
Level 6
Joined
Jan 27, 2007
Messages
208
@eccho

my spell is MUI i think ._.
maybe this trigger is the problem
  • Fire Knockback
    • Events
      • Time - Every 0.04 seconds of game time
    • Conditions
    • Actions
      • For each (Integer A) from 1 to 12, do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • KnockbackReal[(Integer A)] Less than 50.00
            • Then - Actions
              • Unit - Make FireKnockbackUnit[(Integer A)] face Elementalist 0000 <gen> over 0.00 seconds
              • Unit - Pause FireKnockbackUnit[(Integer A)]
              • Set KnockbackReal[(Integer A)] = (KnockbackReal[(Integer A)] + 5.00)
              • Set FireKnockbackPoint[(Integer A)] = ((Position of FireKnockbackUnit[(Integer A)]) offset by KnockbackReal[(Integer A)] towards ((Facing of FireKnockbackUnit[(Integer A)]) - 180.00) degrees)
              • Unit - Move FireKnockbackUnit[(Integer A)] instantly to FireKnockbackPoint[(Integer A)]
              • Custom script: call RemoveLocation (udg_FireKnockbackPoint[GetForLoopIndexA()])
            • Else - Actions
              • Unit - Unpause FireKnockbackUnit[(Integer A)]
              • Set KnockbackReal[(Integer A)] = 0.00
              • Set FireKnockbackUnit[(Integer A)] = No unit
but, Elementalist gen can be replaced by variable easily to make this spell MUI
 
Level 23
Joined
Nov 29, 2006
Messages
2,482
@ l0git3c

well, you are using a loop from 1 to 12, which is assumingly indicating that the integer A index stands for the Players index. So In that case, it is not mui, but it is mpi.
(reminder: MUI = Multi-Unit-Instanceable: Can be used by any unit owned by any player.
MPI = Multi-Player-Instanceable: Can be used only by one unit owned by any player.)
Also, the timers indicates that, as you have 2 timers with the index 1, 2 with 2, and so on, up to 12.
 
Level 6
Joined
Jan 27, 2007
Messages
208
Well, update my submission spells...
------------------------------------------------------------------------


Frost.jpg

Ice
Description
Decrease enemy unit movement speed rate depends on this skill levels for 3 second. If you cast this spell again to targeted unit immediately, it will deals splash damage and decrease nearby enemy units movement speed by 50% for 3 second. If you cast Fire, and immediately cast this spell, it will silence enemy for 5 second.

Fire.jpg

Fire
Description
Instantly deals damage depends on this skill levels. If you cast this spell again to targeted unit immediately, it will stun enemy for 2 second. If you cast Ice, and immediately cast this spell to targeted unit, it will knockback enemy and deals bonus damage.

Changelog :
[+]Makes this spells MUI.
[+]Converts 24 triggers to 1 trigger only.
[+]Changes Fire effect and Fire Combination.



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

Attachments

  • S&S Mini Contest #18 l0git3c Submission 1.2.w3x
    41.3 KB · Views: 50
Level 25
Joined
Jun 5, 2008
Messages
2,573
I will be taking all my free time to devout it to the spells...
I am keeping my fingers crossed this is gonna be a run for the deadline...
If i don't make it till the deadline i will go with the Deep Freeze/Full Impact synergy though the new synergy i have in mind is soooo better....
@Berzerker
Anyway nice job at improving your spell...
 
Level 22
Joined
Dec 31, 2006
Messages
2,216
Hmm.. I need to finish my spells soon, hehe. I'm having some trouble finding time to work, but I'll try to finish the first spell today.
The spells I'm creating are:
Electric Ball
and
Ale Bombardment.
 
Level 17
Joined
Sep 8, 2007
Messages
994
I am done now too I think. At last =) (I guess I should add alot more documentation, but currently, meh._.)

14wyss7.jpg
Crusher Ward

Summons an immobile ward at the targeted point with an attached chain and spinning missiles which are moving around the ward, faster and faster. When the missiles reaches a specific limit the chain will collapse sending the missiles away. While moving, the missiles will damage any enemy ground unit standing in their way.

Level 1 - 750 max speed, up to 75 damage per hit, 5 damage per second over 5 seconds if ignited.
Level 2 - 900 max speed, up to 90 damage per hit, 10 damage per second over 5 seconds if ignited.
Level 3 - 1050 max speed, up to 105 damage per hit, 15 damage per second over 5 seconds if ignited.
Level 4 - 1200 max speed, up to 120 damage per hit, 20 damage per second over 5 seconds if ignited.
15ojyht.jpg
Phoenix Strike

Calls forth a flying phoenix at the targeted area, sending explosive missiles at random points within the area of effect. When the missiles reaches the ground they will deal damage to enemy ground units.
If a crusher ward attachment is being hit by a phoenix missile it will ignite setting nearby enemy units on fire and explode upon death.

Level 1 - Fires 5 missiles dealing 50 damage each.
Level 2 - Fires 6 missiles dealing 75 damage each.
Level 3 - Fires 7 missiles dealing 100 damage each.
Level 4 - Fires 8 missiles dealing 125 damage each.
2jbpf9z.png
2a8lq4l.png
2sakpqh.png
30m1zrc.png

I may also have taken a few shortcuts at the end. I "borrowed" a copy of the poison ability to get my final effect. Let's say I was getting tired:p

Enjoy=)
Hint: Don't look at the code until you tested it. The code is really huge and confusing.

Edit: The spells have been compiled with JassHelper and JNGP v5b
The spells also requires a small library called PMB (Playable Map Bounds) it is included in the map
JASS:
library PMB initializer Init
    globals
        real        mapRectMaxX
        real        mapRectMaxY
        real        mapRectMinX
        real        mapRectMinY
    endglobals
    
    constant function IsInMapRect takes real x, real y returns boolean
        return x < mapRectMaxX and y < mapRectMaxY and x > mapRectMinX and y > mapRectMinY
    endfunction
    
    private function Init takes nothing returns nothing
        set mapRectMaxX = GetRectMaxX(bj_mapInitialPlayableArea)
        set mapRectMaxY = GetRectMaxY(bj_mapInitialPlayableArea)
        set mapRectMinX = GetRectMinX(bj_mapInitialPlayableArea)
        set mapRectMinY = GetRectMinY(bj_mapInitialPlayableArea)
    endfunction
endlibrary


Wow, very neat idea :D I think you're going to win (if I am not whehehehe ;P)
 
Level 23
Joined
Nov 29, 2006
Messages
2,482
Thanks. Yeah the idea was good, but you, as a vJass coder should see that the code is way too messy :p

@l0git3c, It's up to you... I just said if you decide to do so. But you should wait until after the contest.
 
Level 16
Joined
Feb 22, 2006
Messages
960
So in the end another new version from me... reworked my second spell totaly :p

------------------------------------------------------------------------
attachment.php

Charge
Charges the target with electric energy, which deals damage over time to the target. After 12 seconds or if the spell gets dispelled there is a chance of 25% that the target gets damaged for 45% of the damage delt before.
Level 1 - Deals 18 damage per second.
Level 2 - Deals 22 damage per second.
Level 3 - Deals 26 damage per second.

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

------------------------------------------------------------------------
attachment.php

Electro-Magnetic Orbs
Creates Electro-Magnetic Orbs which move away from the spell targeted point. If an orb hits an unit, the unit will take damage. Also if the unit has the charge debuff, the orb will stick to the unit for 5 seconds, after 5 seconds, the orb explodes. Furthermore the unit gets slowed for 7seconds.
Level 1 - The orb deals 10 damage per interval to units it hits. If the orb explodes it deals 75 damage to the unit it was sticked at. Creates 10 Orbs.
Level 2 - The orb deals 15 damage per interval to units it hits. If the orb explodes it deals 125 damage to the unit it was sticked at. Creates 15 Orbs.
Level 3 - The orb deals 20 damage per interval to units it hits. If the orb explodes it deals 175 damage to the unit it was sticked at. Creates 20 Orbs.

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

Attachments

  • orb.jpg
    orb.jpg
    1.4 KB · Views: 156
Last edited:
Level 23
Joined
Nov 29, 2006
Messages
2,482
Yeah, figured... It used Stop...

Bah, and a friend of mine discovered a lousy bug when casting phoenix strike several times at once. The Wards is 100% working, but the phoenix strike isnt, so I think I must rescript it totally. The bug is, that when you cast it multiplytimes very fast, some phoenixes never die... and then the structs are getting messed up. Damn it.
 
Level 25
Joined
Jun 5, 2008
Messages
2,573
Just to colect opinions there is a screenshot attached to my post, containing the apearance of my first spell(new entry), this one is dark themed, and the screenshot contains effects.
I spammed it so it would create massive effects and to see if it lags.

attachment.php


EDIT: might look like a complete anarchy but in the game it looks even better due to particle(dummy) motion.
 

Attachments

  • temp1.JPG
    temp1.JPG
    61.2 KB · Views: 263
Level 6
Joined
Jan 27, 2007
Messages
208
Well, update again >,<
------------------------------------------------------------------------


Frost.jpg

Ice
Description
Decrease enemy unit movement speed rate depends on this skill levels for 3 second. If you cast this spell again to targeted unit immediately, it will deals splash damage and decrease nearby enemy units movement speed by 50% for 3 second. If you cast Fire, and immediately cast this spell, it will silence enemy for 5 second.

Fire.jpg

Fire
Description
Instantly deals damage depends on this skill levels. If you cast this spell again to targeted unit immediately, it will stun enemy for 2 second. If you cast Ice, and immediately cast this spell to targeted unit, it will knockback enemy and deals bonus damage.

Changelog :
[+]Smoothing knockback system.
[+]Remove unused variable.
[+]Replace Elemetalist <gen> with variable caster unit.



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

Attachments

  • S&S Mini Contest #18 l0git3c Submission 1.2.w3x
    41.2 KB · Views: 47
Level 17
Joined
Sep 8, 2007
Messages
994
Well, update again >,<
------------------------------------------------------------------------


Frost.jpg

Ice
Description
Decrease enemy unit movement speed rate depends on this skill levels for 3 second. If you cast this spell again to targeted unit immediately, it will deals splash damage and decrease nearby enemy units movement speed by 50% for 3 second. If you cast Fire, and immediately cast this spell, it will silence enemy for 5 second.

Fire.jpg

Fire
Description
Instantly deals damage depends on this skill levels. If you cast this spell again to targeted unit immediately, it will stun enemy for 2 second. If you cast Ice, and immediately cast this spell to targeted unit, it will knockback enemy and deals bonus damage.

Changelog :
[+]Smoothing knockback system.
[+]Remove unused variable.
[+]Replace Elemetalist <gen> with variable caster unit.



------------------------------------------------------------------------
instead of the whole spell anew you should update the other post and just say its updated ... just for the record.
 
Level 23
Joined
Nov 29, 2006
Messages
2,482
/@ Mephisto
I could have sworn that I gave you some feedback some time ago, where I said that it looked fine, yet, I wished it would have been more complex in effects and such.
However, I never looked at the code, and when I see it now, I gotta say to you man.

1) You must null your locals (local handles) when you are done with them in your function. If you do not, they leak, as the handle index counter never goes down if you aren't. And sure, with all your respect, I have wondered the same, since Blizzard themselves never null their locals in any of their functions. Kind of stupid isn't it?

2) The usage of locations is okay, however, when you are working with jass, it's better to avoid them. Use coordinates instead, and call natives which is using x and y as inputs - they are faster and you will not have to clear up coordinates like locations, since they are just real values.

3) You use alot of BJ functions such as CreateNUnitsAtLoc, UnitApplyTimedLifeBJ, GetUnitAbilityLevelSwapped and so on. You said you thought it was savable in the world editor, but you used jngp to compile it, and you still are (noticable since you use libraries and "private"). My point is, since you use jngp it is easier to find the natives of the calls you are doing. So why not not use them:p?
Another note: BJ's which is not calling natives, but simply calculates you something, especially when it comes to locations, can be avoidable by looking inside it and create your own, more efficient (All BJ's are not bad, but DistanceBetweenPoints for instance is best to not use, just like AngleBetweenPoints).

4) TriggerSleepAction is really rubbish. It is known to have caused issues many times, and is not accurate either. Yet I know that you cant avoid it in gui for instance... But timers is really the best way to go.

5) Overall... you need to improve the coding =) Other than that you are good to go.
 
Status
Not open for further replies.
Top