HomeUser Control Panel (unavailable in archive)ForumsTutorialsArt GalleryResourcesMaps

Spell Making Session #10 Submissions

03-02-2008, 08:40 PM#1
Rising_Dusk
The only posts that belong in this thread are submissions for the 10th spell making session. Any other posts will be deleted and their posters penalized for breaking the rules.
03-03-2008, 02:12 PM#2
Szythe
Piercing Knives


Zoom (requires log in)

The Assassin throws 4/7/10 knives which curve toward the target point. Upon hitting an enemy unit, each knife will deal 25/35/45 damage, slow the unit by 20%/25%/30%, and pierce it. Pierced units will have 40/55/70 damage dealt to them upon the expiration of the Pierce buff. Pierce damage is stackable. Pierce lasts 5 seconds. Each enemy may only be hit by one knife from each volley.

Download Map
Attached Images
File type: jpgknives.JPG (47.0 KB)
Attached Files
File type: w3xPiercingKnives.w3x (28.8 KB)
03-04-2008, 12:34 AM#3
Toadcop
STONE CRUSHER

the Stone Master summon wave of falling rocks which damages nearby units xD loled.

3 lvl spell.
1 - 10 rocks
2 - 20 rocks
3 - 30 rocks

// MUI use vJass... (taked ~8 hours to create this spell if some one is interested in this xD)
Attached Images
File type: jpgStoneCrusher.jpg (43.1 KB)
Attached Files
File type: w3xTc's_Stone_Crusher_Spell.w3x (57.7 KB)
03-04-2008, 09:12 PM#4
Anitarf
Zoom (requires log in)Click image for larger version

Name:	SpiritHelix.jpg
Views:	532
Size:	57.1 KB
ID:	32237
Spirit Helix - The spell follows the JESP standard and requires the Jass NewGen pack. .SpiritHelix.w3x.
Attached Images
File type: jpgSpiritHelix.jpg (57.1 KB)
Attached Files
File type: w3xSpiritHelix.w3x (33.2 KB)
03-05-2008, 11:53 PM#5
emjlr3
I guess this would be an alpha submission, I can updated this at a later date correct?



Spirit Bomb
Do some neat stuff, deal some damage, lose some life, etc.
Collapse Spell Code:
scope SpiritBomb

globals
    // Rawcode of Spirit Bomb ability
    private constant integer abil_id = 'A000'
    // Rawcode of your caster dummy
    private constant integer dummy_id = 'n000'
    // Order for both abilities
    private constant string order = "channel"
    // Area for damage and tree destroy
    private constant real area = 500.
    // Rawcode of Spirit Bomb (Helper) ability
    private constant integer ally_abil_id = 'A001'
    // HP cost per ~.2 seconds of channel time for caster/helpers
    private constant real cost = 10.
    // Max channel duration
    private constant real length = 10.
    // Speed at which the bomb increases its size
    private constant real size = 1.02
    // Effect for bomb                   
    private constant string bombfx = "units\\nightelf\\Wisp\\Wisp.mdl"
    // Effect for aura around caster
    private constant string aurafx = "Abilities\\Spells\\NightElf\\Tranquility\\Tranquility.mdl"
    // Effect at target when the bomb hits
    private constant string hit = "Abilities\\Spells\\Human\\Thunderclap\\ThunderClapCaster.mdl"
    // Lightning effect from allies who help to spirit bomb
    private constant string lightfx = "DRAL"
    
    // Do not touch these
    private boolexpr Bool = null
    private real Ally_Help = 0.
    private unit Caster = null
    private unit Bomb = null
    // Trigger for ability, will become SpiritBomb_Trigger, which can be used publically
    public trigger Trigger = null
    private timer T = CreateTimer()
    private group G = CreateGroup()
    private location L = null
    private rect R = Rect(-area,-area,area,area)
endglobals
private function Damage takes real time returns real
    // Input equation for damage dealt
    // Time refers to the length of time the hero channels
    // Ally_Help refers to the length of time allies helped by channeling as well, which is additive for each ally
    return (75.*time) + (75.*Ally_Help)
    // For instance here, the bomb deals 75 damage for every second channeled by the hero
    // and 75 additional damage for every second any other hero channels
endfunction

//===========================================================================
// Struct for movement
private struct BombMovement
    unit bomb
    real time
    real cos
    real sin
    real speed
    integer runs
    effect sfx
endstruct
globals
    private BombMovement dat
endglobals

// Ally functions
private function Add_Ability takes nothing returns nothing
    call UnitAddAbility(GetEnumUnit(),ally_abil_id)
endfunction
private function Remove_Ability takes nothing returns nothing
    call UnitRemoveAbility(GetEnumUnit(),ally_abil_id)
    if OrderId2String(GetUnitCurrentOrder(GetEnumUnit()))==order then
        call PauseUnit(GetEnumUnit(),true)
        call IssueImmediateOrder(GetEnumUnit(),"stop")
        call PauseUnit(GetEnumUnit(),false)
    endif
endfunction
private function Ally_Actions takes nothing returns nothing
    local timer tim = CreateTimer()
    local unit cast = GetTriggerUnit()
    local lightning light = AddLightningEx(lightfx,false,GetUnitX(Bomb),GetUnitY(Bomb),700.,GetUnitX(cast),GetUnitY(cast),200.)
    
    call TimerStart(tim,9999.,false,null)
    loop
        exitwhen OrderId2String(GetUnitCurrentOrder(cast))!=order or GetWidgetLife(cast)<.405
        call TriggerSleepAction(0.)
        call UnitDamageTarget(cast,cast,cost,false,false,ATTACK_TYPE_NORMAL,DAMAGE_TYPE_NORMAL,null)         
    endloop
    set Ally_Help = Ally_Help + TimerGetElapsed(tim)
    call DestroyTimer(tim)
    call DestroyLightning(light)
    
    set cast = null
    set tim = null
    set light = null
endfunction
private function Allies takes nothing returns boolean
    set bj_ghoul[55] = GetFilterUnit()
    return bj_ghoul[55]!=Caster and GetWidgetLife(bj_ghoul[55])>.405 and IsUnitAlly(bj_ghoul[55],GetOwningPlayer(Caster)) and IsUnitType(bj_ghoul[55],UNIT_TYPE_HERO)==true
endfunction

// Main spell functions
private function FilterIsEnemy takes nothing returns boolean
    return IsUnitEnemy(GetFilterUnit(), bj_groupEnumOwningPlayer) and GetUnitState(GetFilterUnit(),UNIT_STATE_LIFE)>.405
endfunction 
private function DamageEnemiesArea takes unit damageUnit, real x, real y, real amount returns nothing
    local unit u
    
    call GroupClear(G)
    set bj_groupEnumOwningPlayer = GetOwningPlayer(damageUnit)
    call GroupEnumUnitsInRange(G, x, y, area, Condition(function FilterIsEnemy))
    loop
        set u = FirstOfGroup(G)
        exitwhen u == null
        call GroupRemoveUnit(G,u)
        call UnitDamageTarget(damageUnit,u,amount,false,false,ATTACK_TYPE_NORMAL,DAMAGE_TYPE_NORMAL,null)
    endloop
endfunction
private function KillTrees takes nothing returns nothing
    call KillDestructable(GetEnumDestructable())    
endfunction
private function Move_Bomb_Child takes nothing returns nothing
    local real x = GetUnitX(dat.bomb)
    local real y = GetUnitY(dat.bomb)
    
    if dat.runs>=25 then     
        call MoveRectTo(R,x,y)
        call EnumDestructablesInRect(R,null,function KillTrees)
        call DamageEnemiesArea(dat.bomb,x,y,Damage(dat.time))
        call KillUnit(dat.bomb)
        call DestroyEffect(dat.sfx)
        call DestroyEffect(AddSpecialEffect(hit,x,y))
        call dat.destroy(dat)
        set Ally_Help = 0.
        call PauseTimer(T)
    else
        call SetUnitX(dat.bomb,x + dat.cos)
        call SetUnitY(dat.bomb,y + dat.sin)
        set dat.runs = dat.runs + 1 
        call SetUnitFlyHeight(dat.bomb,250.-(10.*dat.runs),0.)
    endif
endfunction 
private function Move_Bomb takes unit bomb, real time, location targ, effect sfx returns nothing
    local real xtarg = GetLocationX(targ)
    local real ytarg = GetLocationY(targ)
    local real xbomb = GetUnitX(bomb)
    local real ybomb = GetUnitY(bomb)
    local real ang = Atan2((ytarg-ybomb),(xtarg-xbomb))
    local real dist = SquareRoot((xbomb-xtarg)*(xbomb-xtarg) + (ybomb-ytarg)*(ybomb-ytarg))
    
    set dat = BombMovement.create()
    set dat.bomb = bomb
    set dat.time = time
    set dat.speed = dist/25.
    set dat.cos = dat.speed*Cos(ang)
    set dat.sin = dat.speed*Sin(ang)
    set dat.runs = 0
    set dat.sfx = sfx
    
    call PauseTimer(T)
    call TimerStart(T,.04,true,function Move_Bomb_Child) 
endfunction
private function Main_Actions takes nothing returns nothing
    local unit cast = GetTriggerUnit()
    local player play = GetOwningPlayer(cast)
    local unit bomb = CreateUnit(play,dummy_id,GetUnitX(cast),GetUnitY(cast),0.)
    local unit aura = CreateUnit(play,dummy_id,GetUnitX(cast),GetUnitY(cast),0.)
    local effect auraeffect = AddSpecialEffectTarget(aurafx,aura,"origin")
    local effect bombeffect = AddSpecialEffectTarget(bombfx,bomb,"origin")
    local real scale = 1.
    set L = GetSpellTargetLoc()
    call GroupClear(G)
    
    set Caster = cast
    set Bomb = bomb
    call UnitAddAbility(bomb, 'amrf')
    call UnitRemoveAbility(bomb, 'amrf')
    
    call GroupEnumUnitsInRect(G,bj_mapInitialPlayableArea,Bool)
    call ForGroup(G,function Add_Ability)      
    
    call SetUnitScale(aura,2.,2.,2.)
    call SetUnitScale(bomb,.5,.5,.5)
    call SetUnitFlyHeight(bomb,250.,0.)
    call SetUnitFlyHeight(aura,0.,0.)
    
    call TimerStart(T,9999.,false,null)
    loop
        exitwhen OrderId2String(GetUnitCurrentOrder(cast))!=order or TimerGetElapsed(T)>length or GetWidgetLife(cast)<.405
        call TriggerSleepAction(0.)
        call SetUnitScale(bomb,scale,scale,scale)
        call UnitDamageTarget(cast,cast,cost,false,false,ATTACK_TYPE_NORMAL,DAMAGE_TYPE_NORMAL,null)
        
        set scale = scale*size
    endloop
    
    call ForGroup(G,function Remove_Ability)
    call KillUnit(aura)
    call DestroyEffect(auraeffect)
    call Move_Bomb(bomb,TimerGetElapsed(T),L,bombeffect)
    
    set aura = null
    set cast = null
    set bomb = null
    set bombeffect = null
    set auraeffect = null
    call RemoveLocation(L)
endfunction

// Conditions
private function Conditions takes nothing returns nothing
    if GetSpellAbilityId()==abil_id then
        call Main_Actions()
    elseif GetSpellAbilityId()==ally_abil_id then
        call Ally_Actions()
    endif
endfunction

//===========================================================================
public function InitTrig takes nothing returns nothing
    set Trigger = CreateTrigger()
    
    call TriggerRegisterAnyUnitEventBJ( Trigger, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddAction( Trigger, function Conditions )
    
    set Bool = Condition(function Allies)
endfunction 

endscope

btw this is very un-MUI, more from a lack of need then anything else
Attached Files
File type: w3xSpirit Bomb - emjlr3.w3x (105.6 KB)
03-06-2008, 09:08 AM#6
ADOLF
fireball v2.

just another fireball spl by ME=)

// use NGJP
Attached Images
File type: jpgfbl_scr.jpg (148.5 KB)
Attached Files
File type: w3xFireball_v2._by ADOLF.w3x (33.4 KB)
03-07-2008, 02:17 AM#7
moyack
My Entry:

Zoom (requires log in)
The Spear of Longinus
By moyack


Requires JASS NEW GEN pack 4A or up. Totally MUI, complies with the JESP standard.

Spell type: Passive

Description: The Spear of Longinus is known for being a weapon blessed by the Gods, giving to its owner astonishing strength and deadly results. Every time the owner of this mighty spear attacks, it has a chance to deal additional damage to the target unit, impaling them and throwing away a long distance.

Additionally if there are units behind them, this spear will impale them with the target unit.

  • Level 1: low chance to cast the ability, up to 3 units impaled, deals 100 damage to each impaled unit, consumes 10 mana.

  • Level 2: medium chance to cast the ability, up to 4 units impaled, deals 150 damage to each impaled unit, consumes 8 mana.

  • Level 3: high chance to cast the ability, up to 5 units impaled, deals 200 damage to each impaled unit, consumes 6 mana.

Download.

Changelog

6/03/2008: First release
7/03/2008: Added triggered cooldown so the user can't abuse of stop/attack and fixed the flying height setting in the custom missile.

Attached Images
File type: jpgClip_9.jpg (68.5 KB)
Attached Files
File type: w3xLonginus Spear.w3x (33.1 KB)
03-07-2008, 10:06 PM#8
Alexander244
Harmonic Beserk

Requires
JassNewGenPack v4A, or later

Credits
Vexorian: JassHelper, GetPathability
PipeDream: Grimoire
PitzerMike: PJass

Description
The Blademaster goes into a focused beserk around a controllable point of balance, damaging enemy units with his dance. More damage is done at higher speeds.

The point around which the hero "oscillates" can be moved by the player, so the direction and speed can be constantly adjusted to suit the situation.

  • Level 1 - 15-45 damage per second, 4.0 second oscillations.

  • Level 2 - 25-75 damage per second, 3.8 second oscillations.

  • Level 3 - 35-105 damage per second, 3.6 second oscillations.

Complies with the JESP standard.
Zoom (requires log in)
Expand Spell Code:

Expand Read Me:
Attached Images
File type: jpgHarmonic Beserk.jpg (56.5 KB)
Attached Files
File type: w3xHarmonicBeserk.w3x (65.6 KB)
03-07-2008, 11:54 PM#9
TheSecretArts
THIS IS MY FINAL UPDATE!!!!!!!!!!
Zoom (requires log in)
This is Empowered Light.
The bolt starts out relatively weak with (10*abilitylvl)+50 healing/damage and 75 collision, but for each unit it hits, it increases collision by .75, healing/damage by 10(+25 for each 3 levels the ability reaches), model size by .1
It damages enemies any undead and heals allies.
Trust me, it can get big (IE; 1000+ healing a hit when it hits rediculous amounts of units). And yes, it IS supposed to cause healing/damage (if undead) to the caster when they cast it!

Require's vJASS!
It has sounds, fully customizable (I did turn it into a healing spell), the only thing missing is MUI. It is 449 lines of code, all written by me, with a little syntactical help by Vex and some others.
(Screenshot does some justice... Ignore the caption though, I forgot what the spell was named )
Code:
Expand JASS:
Attached Images
File type: jpgHolyEmpowerment.JPG (23.0 KB)
Attached Files
File type: w3xEmpoweredHealing.w3x (28.6 KB)
03-08-2008, 10:27 AM#10
zen87
Sky Bomber
Zoom (requires log in)

Requirement:
  • Vexorian's Caster System
  • My Effect System (to put this into your map, change the private prefix in the EffectTimer to public)

Description:
Sends an uncontrollable Sky bomber to bombard all units in a line. If the Sky bomber is destroyed before it throws all the bomb, all the bomb it stored will be dropped. Each bomb deals 250 siege damage.
You may detonate the bomber to drop all the bombs.
  • Level 1 - Moves up to 800 range, drops 4 bombs.
  • Level 2 - Moves up to 1150 range, drops 6 bombs.
  • Level 3 - Moves up to 1500 range, drops 8 bombs.

Spell Code:
Expand JASS:
Attached Images
File type: jpgUntitled.jpg (53.8 KB)
Attached Files
File type: w3xSpell Making Session - Sky Bomber.w3x (188.5 KB)
03-08-2008, 09:50 PM#11
Rising_Dusk
Zoom (requires log in)
Shrapnade
v1.04
Description

Spell Description:
Shrapnade
Range: 1000
Cooldown: 3 seconds

Lobs an explosive bomb towards the target point which explodes and fragments into multiple other bombs upon landing. Each bomb deals damage.

Level 1 - 80 damage per bomb, 1 fragment
Level 2 - 100 damage per bomb, 2 fragments
Level 3 - 120 damage per bomb, 3 fragments
Level 4 - 140 damage per bomb, 4 fragments
Level 5 - 160 damage per bomb, 5 fragments


Background:
The spell is made specifically for the Spell Session #10 on wc3c. The spell also complies with the JESP manifest, is fully multi-instanceable, and requires Grimoire and vJass.

Download
Attached Images
File type: jpgShrapnade.jpg (83.2 KB)
Attached Files
File type: w3xSpellSession10_Shrapnade_v1.04.w3x (72.9 KB)
03-09-2008, 10:30 PM#12
bomber7
Heres my submission, I'll be adding a screenshot shortly.

Btw, I'm surprised at the intensity of the competition here.

I might update my spell at a later time to make its end more dramatic.

Zoom (requires log in)
Note, the screenshot sucks compared to how it looks in-game.

Requires vJASS

UPDATED!
Attached Images
File type: jpgWC3ScrnShot_031408_180117_01.jpg (42.4 KB)
Attached Files
File type: w3xLightningDeath.w3x (56.2 KB)
03-10-2008, 09:24 PM#13
Here-b-Trollz
Fissure
By Here-b-Trollz

* Made specifically for this contest
* Requires vJass
* Requires a few external functions which are included in the library 'Cache'


Tooltip:
Sends out two parallel rock walls in the target direction, dealing damage to any units in their way, and then, after a short duration, the walls close in, pushing units toward the center and dealing damage to any units stuck in the middle when they meet.
Attached Images
File type: jpgFissureScreenshot.jpg (85.0 KB)
Attached Files
File type: w3xFissure.w3x (36.0 KB)
03-15-2008, 09:02 AM#14
midiway
Zoom (requires log in)

Multi-Shoot

-Require vJass
-Multiinstanceable


The Ranger shoots an arrow that splits into many, dealing each one 50 damage to the first target it hits. The far the point you choose to shoot it at is to the caster, the more the arrows spread out.

A given number of arrows are frozen and will slow the movement speed and attack speed by 50%. Additionally, you can chose a point where frozen arrows will be concentrated in a single one whenever you shoot in the angle of this point.


Level 1 - Split into 5 arrows, 2 frozen.
Level 2 - Split into 7 arrows, 3 frozen.
Level 3 - Split into 9 arrows, 4 frozen.
Attached Images
File type: jpgscreenMS.jpg (116.0 KB)
Attached Files
File type: w3xMultiShoot.w3x (78.1 KB)
03-15-2008, 12:51 PM#15
HINDYhat
~ update 2 ~


- Requires JassHelper (JassNewGenPack) for vJass syntax.
- Follows the JESP standard.

Ptyalize

This hero spits a rotating sludge ball towards the target point. Any enemy units who collide with it will become attached to it. Consequently, any other enemy unit who collides with an attached unit will become attached to that unit. After a certain time, the sludge ball explodes, all attached units are damaged and flinged away in a centrifugal manner.

Level 1 - Lasts 3 seconds. Deals 40 damage + angular velocity * radius from the sludge ball.
Level 2 - Lasts 4 seconds. Deals 55 damage + angular velocity * radius from the sludge ball.
Level 3 - Lasts 5 seconds. Deals 70 damage + angular velocity * radius from the sludge ball.
Attached Files
File type: w3xPtyalize.w3x (68.9 KB)