Example #1
0
    public float GetCritValue(Damage damage)
    {
        if (m_DamageCrit == null || m_DamageCrit.damageBatchOid != damage.batchOid)
        {
            m_DamageCrit = new DamageCrit(damage);
        }

        if (m_DamageCrit.hasTrigger)
        {
            return(m_DamageCrit.critValue);
        }
        else
        {
            m_DamageCrit.hasTrigger = true;
            foreach (CritData tempData in m_CritDataList)
            {
                if (tempData.Check(damage))
                {
                    m_DamageCrit.critValue = tempData.value;
                    break;
                }
            }

            return(m_DamageCrit.critValue);
        }
    }
Example #2
0
 void OnCollisionEnter(Collision col)
 {
     if (isActive)
     {
         //print (col.transform.tag);
         gameObject.GetComponent <Rigidbody> ().useGravity = true;
         gameObject.layer = 11;
         isActive         = false;
         if (col.gameObject.layer == 12 || col.gameObject.layer == 19)
         {
             Transform enemy          = col.transform;
             Bounds    enemyBounds    = enemy.GetComponent <Collider> ().bounds;
             float     topY           = enemyBounds.center.y + enemyBounds.extents.y + 0.2f;
             Vector3   damagePosition = new Vector3(enemy.position.x, topY + 0.4f, enemy.position.z);
             float     timeDelta      = Time.time - createdTime;
             int       intMax         = (int)(powerDivisor / Mathf.Pow(timeDelta, powerExp));
             if (intMax > 100)
             {
                 intMax = 100;
             }
             if (intMax < 50)
             {
                 Transform damageCanvas = ((GameObject)Resources.Load("GameObjects/DamageCanvas/Damage", typeof(GameObject))).transform;
                 Transform damager      = Instantiate(damageCanvas);
                 damager.position = damagePosition;
                 Damage damageScript = damager.GetComponent <Damage> ();
                 damageScript.SetDamage((int)(intMax * ui.GetDamageMultiplier()));
             }
             else
             {
                 Transform damageCanvas = ((GameObject)Resources.Load("GameObjects/DamageCanvas/DamageCrit", typeof(GameObject))).transform;
                 Transform damager      = Instantiate(damageCanvas);
                 damager.position = damagePosition;
                 DamageCrit damageScript = damager.GetComponent <DamageCrit> ();
                 damageScript.SetDamage((int)(intMax * ui.GetDamageMultiplier()));
             }
             if (col.transform.tag == "Skeleton" || col.transform.tag == "Zombie" || col.transform.tag == "Vampire" || col.transform.tag == "Ghost")
             {
                 Enemy enemyScript = enemy.GetComponent <Enemy> ();
                 enemyScript.Hit((int)(intMax * ui.GetDamageMultiplier()), transform.up);
             }
             else if (col.transform.tag == "Witch")
             {
                 Witch witch = enemy.GetComponent <Witch> ();
                 witch.WasHit((int)(intMax * ui.GetDamageMultiplier()), transform.up);
             }
         }
         else if (col.gameObject.layer == 25)
         {
             col.gameObject.GetComponent <Sign> ().Activated();
         }
         iTween.ScaleTo(gameObject, iTween.Hash("x", 0.1f, "y", 0.03f, "z", 0.1f, "time", 0.2f));
     }
     if (col.transform.tag == "Ground")
     {
         Destroy(gameObject, 0.3f);
         gameObject.layer = 11;
     }
 }