[vJass] (system) Missile

This bundle is marked as approved. It works and satisfies the submission rules.
I have worked on this missle engine for 2 months now and start the first official beta today.

Please post feedback, critism, pros, cons, bugs, etc.
Thanks all for your patience!

And thanks for downloading.
Preview image by Furby. Thanks a lot!

I've updated the testmap and added a second spell.
There is a lot of improvements in version 0.1.7 and I plan to make it even faster and even more modular. I also plan to create an easy to understand API.

Used librarys:

Changed all constants (TRUE, FALSE) to true/false
Changed interval to 0.03125
Fixed object leaks
Performance improvements on MissileMovement: Less object generation
Merged MissileLocHelpers to Missile<type>Target
Removed HomingMissile wrapper
Added second spell (Rain of Fire)
Removed Libraries from Modules

Changed name to Missile.
Completely remade in modules, supports now a lot of optional stuff.
Added SpellHelper, fixed a lot of problems, made the Miranas Arrow example WAY more powerful to show what this system is able to be capable of.

Missile, Projectile, xe, xemissile, xecollider, projectile, collider, awesome, anachron, collide, colliding, vJass

CustomMissile 0.1.7 (Map)

BPower: 11:02, 25th Feb 2016 Reason for re-review: Nowadays the spell section is packed full of missile systems from different authors, therefore a more qualified moderator comment than "this is neat stuff" is required. There is keen...
I've done some more progress with the helpers, now you can create an easy target spell (Unit/Location) with this amount of lines.

library ShootingArrow requires Missile, MissileMove, MissileTargets, MissileCollideHit, MissileUnitHit, MissileGroundHit, MissileDestHit, MissileDecay, MissileHelpers

    private struct arrow extends Missile
        //implement MissileCollideHit // Missile hits other MISSILES
        //implement MissileUnitHit // Missile hits UNITS
        //implement MissileGroundHit // Missile hits TERRAIN
        //implement MissileDestHit // Missile hits DESTRUCTABLES
        //implement MissileDecay // Missile will DECAY
        implement MissileMove // Missile can MOVE
        implement MissilePositionTarget // Missile has target POSITION
        implement MissileAllocHelper
        public static method onDeath takes nothing returns nothing
            call BJDebugMsg("Missile died")
    struct Spell
        private static integer ABILITY_ID = 'plsh'
        public static method onCast takes nothing returns nothing
            local arrow missile = arrow.fromSpell()
            set missile.sfx = "Abilities\\Weapons\\SearingArrow\\SearingArrowMissile.mdl"
            set missile.z = missile.z + 75.
            set missile.source.z = missile.source.z + 75.
            set missile.target.z = missile.target.z + 75.
            call BJDebugMsg("Angle: " + R2S(bj_RADTODEG * missile.xyAngle))
            call BJDebugMsg("TargetX: " + R2S(missile.targetX))
            call BJDebugMsg("TargetY: " + R2S(missile.targetY))
            //call missile.fire()
            //call missile.destroy()
        implement MissileCastHelper


Note: The arrow.fromSpell() is a method that comes within MissileAllocHelper and does a lot of work for you!
Level 19
Mar 18, 2012
Maybe the user is inactive, maybe the last update is long time ago.
As long as the main system aka Warcraft III is on the same patch we
can directly compare and rate new and old submission.

Nowadays we have tons of Missile systems in the databank, why so ever.
This one is no longer one of the top systems and so should be the rating.