Esempio n. 1
0
    protected override void CastAbility()
    {
        base.CastAbility();

        // Fire bullet
        GameObject go = (GameObject)GameObject.Instantiate(Resources.Load("Bullet"), shooter.getMousePosition(), Quaternion.identity);

        // Set damage
        DamageOnHit dmg = go.GetComponent <DamageOnHit>();

        dmg.damageOnHit           = damage;
        dmg.destroyOnGround       = true;
        dmg.destroyOnAnyCollision = true;

        // Set speed of bullet
        Vector3 velocity = speed * Vector3.Normalize(shooter.runner.transform.position - shooter.getMousePosition());

        if (!angledBullets)
        {
            velocity.y = 0;
        }

        go.rigidbody2D.velocity = velocity;

        // Rotate to look towards player
        //go.transform.rotation = Quaternion.LookRotation(go.rigidbody2D.velocity);
    }
        public override void OnSpellAdd(ModularSpell addedSpell)
        {
            // save onCast actions
            IOnCastAction[] totalOnCastActions = addedSpell.onCastActions.Clone() as IOnCastAction[];


            //modify damage of AllOnHitActions
            foreach (IOnHitAction onHitAction in addedSpell.AllOnHitActions)
            {
                if (onHitAction.GetType() == typeof(DamageOnHit))
                {
                    DamageOnHit damageAction = onHitAction as DamageOnHit;
                    damageAction.damage *= damageMultiplier;
                }
            }


            addedSpell.onCastActions = new IOnCastAction[1];

            // create new multiple cast action
            RepeatCastOnCast castRepeater = new RepeatCastOnCast();

            castRepeater.nRepeats         = nCasts;
            castRepeater.timeBetweenCasts = timeBetweenCasts;
            // add old onCast actions to it
            castRepeater.OnCastActions = totalOnCastActions;
            castRepeater.Init(addedSpell);


            addedSpell.onCastActions[0] = castRepeater;
        }
Esempio n. 3
0
    protected override void CastAbility()
    {
        base.CastAbility();

        // Mine
        GameObject go = (GameObject)GameObject.Instantiate(Resources.Load("Mine"), shooter.getMousePosition(), Quaternion.identity);

        // Set damage
        DamageOnHit dmg = go.GetComponent <DamageOnHit>();

        dmg.damageOnHit          = damage;
        dmg.explosionScaleFactor = 4f;
    }
    protected override void Initialize()
    {
        base.Initialize();
        DamageOnHit doh = GetComponent <DamageOnHit>();

        doh.onHitOccured += GainExperience;


        targetSelectors.Add(new TargetSelection()); //immediate hit object
        TargetSelectionOnCollision targetSelection = GetComponent <TargetSelectionOnCollision>();

        targetSelection.Selectors      = targetSelectors;
        targetSelection.Effects        = impactEffects;
        targetSelection.onHitOccured  += GainExperience;
        targetSelection.CollisionLayer = collisionLayer;
    }
Esempio n. 5
0
    protected override void CastAbility()
    {
        base.CastAbility();

        // Fire bullet
        GameObject go = (GameObject)GameObject.Instantiate(Resources.Load("Dog"), shooter.getMousePosition(), Quaternion.identity);

        // Set damage
        DamageOnHit dmg = go.GetComponent <DamageOnHit>();

        dmg.damageOnHit = damage;

        // Set speed of bullet
        EnemyWalking walking = go.GetComponent <EnemyWalking>();

        walking.speed = 5;
    }
Esempio n. 6
0
    protected override void CastAbility()
    {
        base.CastAbility();

        // Create a blast of shrapnel fountaining upwards
        for (int x = 0; x < numberOfShrapnel; x++)
        {
            GameObject go = (GameObject)GameObject.Instantiate(Resources.Load("Shrapnel"), shooter.getMousePosition(), Quaternion.identity);

            // Set damage
            DamageOnHit dmg = go.GetComponent <DamageOnHit>();
            dmg.damageOnHit     = damage;
            dmg.destroyOnGround = true;

            // Set velocity upwards with a random X component
            go.rigidbody2D.velocity = new Vector2(randomNumber(-300, 300, 100), randomNumber(400, 600, 100));
        }
    }
Esempio n. 7
0
    // Update is called once per frame
    void OnTriggerEnter2D(Collider2D c)
    {
        dmgScript  = c.GetComponent <DamageOnHit> ();
        teamScript = c.GetComponent <CommonVars> ();

        if (dmgScript == null || teamScript == null)
        {
            return;
        }

        if (teamScript.team == Team.Neutral || team == teamScript.team)
        {
            return;
        }

        if (!isDead)
        {
            rigidBodyHurt(dmgScript.damage, c.transform);
        }
    }