Ejemplo n.º 1
0
    void GetVictims()
    {
//	Debug.Log("Getting victims\n");
        if (monsters == null)
        {
            monsters = Peripheral.Instance.targets;
        }

        List <HitMe> targets = new List <HitMe>();

        for (int i = 0; i < monsters.max_count; i++)
        {
            HitMe enemy = monsters.array[i];
            if (enemy == null || enemy.amDying() || !enemy.gameObject.activeSelf)
            {
                continue;
            }

            if (Vector2.Distance(enemy.transform.position, this.transform.position) < radius)
            {
                targets.Add(enemy);
            }
        }

        if (targets.Count == 0)
        {
            return;
        }

        StatSum type = null;

        type        = arrow.myFirearm.toy.rune.GetStats(false);
        type.factor = 0.9f;
        StatSum explode_statsum = type.getSubStatSum(EffectType.Explode_Force);



        for (int i = 0; i < targets.Count; i++)
        {
            arrow.myFirearm.addXp(targets[i].HurtMe(explode_statsum, null, EffectType.Null), true);
            float mass = targets[i].my_rigidbody.mass;
            //Vector3 dir3 = targets[i].transform.position - from;
            Vector3 dir3 = this.transform.position - from;
            Vector2 dir  = Vector3.Normalize(new Vector2(dir3.x, dir3.y));
            //float dist = Vector2.Distance(targets[i].transform.position, from);

            float adjust = targets[i].my_ai.speed;
            targets[i].my_rigidbody.AddForce(adjust * strength * dir * mass, ForceMode2D.Impulse);
        }
    }