Marine v1
1500
ID:
201
Family ID:
Author:
Boekie
Rarity:
rare
Element:
iron
Attack Type:
Decay
Attack Range:
1200
Attack CD:
0.6
Damage:
336-336
Mana:
30
Mana regen:
1.2
Status:
Approved

Description:

A highly esteemed footsoldier with low self esteem.
Stim
This marine uses a stimpack, increasing its attackspeed by 150% and decreasing its attackdamage by 50%. This buff lasts 5 seconds. 

Level Bonus:
+0.08 seconds duration

AC_TYPE_OFFENSIVE_IMMEDIATE
 25, 1200 range, 8s cooldown
Frag Grenade
When this tower damages a creep it has a 20% chance to fire a frag grenade that will split into 6 smaller grenades after a short delay. When a grenade collides with a creep it deals 1200 spelldamage and increases the damage the target takes from attacks by 2%, stacking up to a maximum of 50%.

Level Bonus:
+0.3% chance
+100 damage
+0.1% damage increase
Download

Toggle Triggers

Autocast

caster_art: Abilities\Spells\Human\Avatar\AvatarCaster.mdl AUTOCAST_cooldown: 8 AUTOCAST_numBuffsBeforeIdle: 0 AUTOCAST_isExtended: false AUTOCAST_autocastType: AC_TYPE_OFFENSIVE_IMMEDIATE AUTOCAST_manacost: 25 AUTOCAST_range: 1200 AUTOCAST_buffType: 0 AUTOCAST_targetSelf: true AUTOCAST_targetType: 0 target_art: AUTOCAST_autoRange: 1200
private function onAutocast takes Tower tower returns nothing
    local integer level = tower.getLevel()
    call boekie_stim_buff.applyCustomTimed(tower,tower,level,5.0+0.08*level)
endfunction

Header

    globals
        //@export
        ProjectileType shard
        //@export
        BuffType boekie_stim_buff
        //Don't need to export this one, as the second member doesn't need to refer to it.
        BuffType boekie_grenade_buff
    endglobals
    
    function Expiration takes Projectile p returns nothing
        local Tower tower = p.getCaster()
        local real CONE_WIDTH = 120.0 //degrees
        local real NUM_PROJECTILES = p.userInt
        
        local real angle = p.direction - CONE_WIDTH / 2
        local real dmgRatio = p.getDmgRatio()
        
        loop
            exitwhen p.userInt <= 0
            set Projectile.create(shard, tower, dmgRatio, tower.calcSpellCritNoBonus(), p.x, p.y, p.z, angle + GetRandomReal(-8.0, 8.0)).userInt = 0
            set angle = angle + CONE_WIDTH / (NUM_PROJECTILES - 1)
            set p.userInt = p.userInt - 1
        endloop
    endfunction  
    
    function Impact takes Projectile p, Unit target returns nothing
        local Tower tower = p.getCaster()
        local integer level = tower.getLevel()
        local Buff b = target.getBuffOfType(boekie_grenade_buff)
        call p.doSpellDamage(target, 1200 + 100 * level)
        call SFXAtUnit("Objects\\Spawnmodels\\Human\\FragmentationShards\\FragBoomSpawn.mdl", target.getUnit())
        if b != 0 then
            call boekie_grenade_buff.apply(tower, target, IMinBJ(480, b.getLevel()+20+level))
        else
            call boekie_grenade_buff.apply(tower, target, level)
        endif
    endfunction 
    
    //Do not remove or rename this function!
    //Put your initialization tasks here, this function will be called on map init
    private function init takes nothing returns nothing
        local Modifier m = Modifier.create()
        call m.addModification(MOD_ATTACKSPEED,1.5,0.0) 
        call m.addModification(MOD_DAMAGE_ADD_PERC,-0.5,0.0) 
        set boekie_stim_buff = BuffType.create(0.0,0.0,true) //0.0 time since I will apply it custom timed 
        call boekie_stim_buff.setBuffModifier(m)
        call boekie_stim_buff.setBuffIcon('@@0@@')
        
        set m = Modifier.create()
        call m.addModification(MOD_ATK_DAMAGE_RECEIVED,0.02,0.001)
        set boekie_grenade_buff = BuffType.create(-1.0,0.0,false) //Lasts indefinitely
        call boekie_grenade_buff.setBuffModifier(m)
        call boekie_grenade_buff.setBuffIcon('@@1@@')
        
        set shard = ProjectileType.createRanged( "Abilities\\Weapons\\GyroCopter\\GyroCopterMissile.mdl", 400.00, 500.00 )  
        call shard.setEventOnExpiration(Expiration)  
        call shard.enableCollision(Impact, 75.00, TARGET_CREEPS, true)  
    endfunction

On Damage

ONDAMAGE_chance: 0.20 ONDAMAGE_chanceLevelAdd: 0.003
function onDamage takes Tower tower returns nothing
    set Projectile.createFromUnitToUnit(shard, tower, 1.00, tower.calcSpellCritNoBonus(), tower, Event.getTarget(), false, true, false).userInt = 6 //six projectiles
endfunction
Experienced Marine v1
2500
ID:
294
Family ID:
Author:
Boekie
Rarity:
rare
Element:
iron
Attack Type:
Decay
Attack Range:
1200
Attack CD:
0.6
Damage:
560-560
Mana:
35
Mana regen:
1.3
Status:
Approved

Description:

A highly esteemed footsoldier with moderate self esteem.
Stim
This marine uses a stimpack, increasing its attackspeed by 150% and decreasing its attackdamage by 50%. This buff lasts 5 seconds. 

Level Bonus:
+0.08 seconds duration

AC_TYPE_OFFENSIVE_IMMEDIATE
 25, 1200 range, 7s cooldown
Frag Grenade
When this tower damages a creep it has a 25% chance to fire a frag grenade that will split into 8 smaller grenades after a short delay. When a grenade collides with a creep it deals 1800 spelldamage and increases the damage the target takes from attacks by 2%, stacking up to a maximum of 50%.

Level Bonus:
+0.4% chance
+150 damage
+0.1% damage increase
Download

Toggle Triggers

Autocast

caster_art: Abilities\Spells\Human\Avatar\AvatarCaster.mdl AUTOCAST_cooldown: 7 AUTOCAST_numBuffsBeforeIdle: 0 AUTOCAST_isExtended: false AUTOCAST_autocastType: AC_TYPE_OFFENSIVE_IMMEDIATE AUTOCAST_manacost: 25 AUTOCAST_range: 1200 AUTOCAST_buffType: 0 AUTOCAST_targetSelf: true AUTOCAST_targetType: 0 target_art: AUTOCAST_autoRange: 1200
private function onAutocast takes Tower tower returns nothing
    local integer level = tower.getLevel()
    call boekie_stim_buff.applyCustomTimed(tower,tower,level,5.0+0.08*level)
endfunction

Header

    globals
        //@import
        ProjectileType shard
        //@import
        BuffType boekie_stim_buff
    endglobals
    
    //Do not remove or rename this function!
    //Put your initialization tasks here, this function will be called on map init
    private function init takes nothing returns nothing         
    endfunction

On Damage

ONDAMAGE_chance: 0.25 ONDAMAGE_chanceLevelAdd: 0.004
function onDamage takes Tower tower returns nothing
    set Projectile.createFromUnitToUnit(shard, tower, 1.50, tower.calcSpellCritNoBonus(), tower, Event.getTarget(), false, true, false).userInt = 8 //eight projectiles
endfunction