Exemple #1
0
    private static Vector3 DetermineColorLeech(CombatAttackModel attack, CombatReceiverModel receiver, float percentDamageToTotalHealthDealt)
    {
        Color attackerColor = new Color();
        Color receiverColor = new Color();

        // Make sure the attacker and receiver have colors
        if (attack.Owner)
        {
            try
            {
                attackerColor = attack.Owner.renderer.material.color;
                receiverColor = receiver.renderer.material.color;
            }
            catch
            {
                return(new Vector3());
            }
        }

        //Player Property += ((Experience Property - Player Property) * SCALER) * ( Damage / Experiences Health)
        float scale = SCALER * percentDamageToTotalHealthDealt;
        //Debug.Log ("PercentDamageDealtToTotalHealth: " + percentDamageToTotalHealthDealt + " Scaler: " + SCALER + " Final: " + scale);
        //Debug.Log("Receiver Color: " + receiverColor + " Attacker Color: " + attackerColor);
        float   rDifference = (receiverColor.r - attackerColor.r) * scale;
        float   gDifference = (receiverColor.g - attackerColor.g) * scale;
        float   bDifference = (receiverColor.b - attackerColor.b) * scale;
        Vector3 colorChange = new Vector3(rDifference, gDifference, bDifference);

        //Debug.Log ("Color Change: " + colorChange);

        return(colorChange);
    }
Exemple #2
0
 public void Awake()
 {
     mCombatReceiverModel = GetComponent("CombatReceiverModel") as CombatReceiverModel;
     if (mCombatReceiverModel == null)
     {
         throw new MissingComponentException("Unable to find CombatReceiverModel.");
     }
 }
Exemple #3
0
 public void Awake()
 {
     mCombatReceiverModel = GetComponent("CombatReceiverModel") as CombatReceiverModel;
     if (mCombatReceiverModel == null)
     {
         throw new MissingComponentException("Unable to find CombatReceiverModel.");
     }
 }
    public void Awake()
    {
        mColorCombatComponent = gameObject.GetComponent("ColorCombatComponent") as ColorCombatComponent;
        if (mColorCombatComponent == null)
        {
            throw new MissingComponentException("Unable to find ColorCombatComponent");
        }

        mCombatReceiverModel = gameObject.GetComponent("CombatReceiverModel") as CombatReceiverModel;
        if (mCombatReceiverModel == null)
        {
            throw new MissingComponentException("Unable to find CombatReceiverModel");
        }
    }
    public void Awake()
    {
        mColorCombatComponent = gameObject.GetComponent("ColorCombatComponent") as ColorCombatComponent;
        if (mColorCombatComponent == null)
        {
            throw new MissingComponentException("Unable to find ColorCombatComponent");
        }

        mCombatReceiverModel = gameObject.GetComponent("CombatReceiverModel") as CombatReceiverModel;
        if (mCombatReceiverModel == null)
        {
            throw new MissingComponentException("Unable to find CombatReceiverModel");
        }
    }
Exemple #6
0
 public void Collide(Collider collider)
 {
     // Collide when active.
     if (mCombatAttackModel.IsActive)
     {
         // Only collide with CombatReceivers that are active.
         CombatReceiverModel receiverModel = collider.gameObject.GetComponent("CombatReceiverModel") as CombatReceiverModel;
         if (receiverModel != null && receiverModel.IsActive)
         {
             // Check masks to see if these should interact.
             if (mCombatAttackModel.CollisionMask == receiverModel.CollisionMask)
             {
                 // An attack collision has occured, resolve it.
                 CombatGod.ResolveAttackCollision(mCombatAttackModel, receiverModel);
             }
         }
     }
 }
Exemple #7
0
    private void GoofyRandomization(float scale, GameObject newActor)
    {
        ActorModel am = newActor.GetComponent("ActorModel") as ActorModel;

        if (am)
        {
            am.Scale *= scale;
        }
        if (rigidbody)
        {
            rigidbody.mass *= scale;
        }
        CombatReceiverModel crm = newActor.GetComponent("CombatReceiverModel") as CombatReceiverModel;

        if (crm)
        {
            crm.InitialHealthPoints *= scale;
        }
    }
    void Awake()
    {
        // Grab the receiver off the object.
        // If no receiver then this object will not have attacks enacted upon it.
        mCombatReceiverModel = gameObject.GetComponent("CombatReceiverModel") as CombatReceiverModel;
        if (mCombatReceiverModel == null)
        {
            throw new MissingComponentException("Unable to find CombatAttackModel.  Spawning a default.");
        }

        mCombatReceiverModel.HealthPoints = mCombatReceiverModel.InitialHealthPoints;
        if (renderer && renderer.material)
        {
            renderer.material.color = mCombatReceiverModel.BaseColor;
            ColorCombatComponent colorComp = GetComponent("ColorCombatComponent") as ColorCombatComponent;
            if (colorComp)
            {
                colorComp.SetColor(mCombatReceiverModel.BaseColor);
            }
        }
    }
    void Awake()
    {
        // Grab the receiver off the object.
        // If no receiver then this object will not have attacks enacted upon it.
        mCombatReceiverModel = gameObject.GetComponent("CombatReceiverModel") as CombatReceiverModel;
        if (mCombatReceiverModel == null)
        {
            throw new MissingComponentException("Unable to find CombatAttackModel.  Spawning a default.");
        }

        mCombatReceiverModel.HealthPoints = mCombatReceiverModel.InitialHealthPoints;
        if (renderer && renderer.material)
        {
            renderer.material.color = mCombatReceiverModel.BaseColor;
            ColorCombatComponent colorComp = GetComponent("ColorCombatComponent") as ColorCombatComponent;
            if (colorComp)
            {
                colorComp.SetColor(mCombatReceiverModel.BaseColor);
            }
        }
    }
Exemple #10
0
    // This is the main controller for combat.  It arbitrates the interaction, records what took place
    // into a combat result, and sends out a message to both parties about the combat result.
    public static void ResolveAttackCollision(CombatAttackModel attack, CombatReceiverModel receiver)
    {
        CombatResult result;

        result = new CombatResult();
        // Record models
        result.Attack = attack;
        result.Receiver = receiver;

        result.DamageToReceiver = attack.Damage;

        result.DamageToAttacker = receiver.DamageToAttackerOnHit;

        if (receiver.AllowColorLeech)
        {
            result.ColorChangeAttacker = DetermineColorLeech(attack, receiver, result.DamageToReceiver/receiver.InitialHealthPoints);
        }
        else
        {
            result.ColorChangeAttacker = Vector3.zero;
        }

        // Determine if attack will kill the receiver.
        if ( (receiver.HealthPoints - result.DamageToReceiver) <= 0)
        {
            result.DamageToAttacker += receiver.DamageToAttackerOnKill;
        }
        // Send result back to the receiver.
        receiver.SendMessage("ReceiveCombatResult", result, SendMessageOptions.DontRequireReceiver);
        attack.SendMessage("AttackCombatResult", result, SendMessageOptions.DontRequireReceiver);
        // Inform the owner of the attack success.
        if (attack.Owner)
        {
            attack.Owner.SendMessage("AttackCombatResult", result, SendMessageOptions.DontRequireReceiver);
        }
    }
Exemple #11
0
    // This is the main controller for combat.  It arbitrates the interaction, records what took place
    // into a combat result, and sends out a message to both parties about the combat result.
    public static void ResolveAttackCollision(CombatAttackModel attack, CombatReceiverModel receiver)
    {
        CombatResult result;

        result = new CombatResult();
        // Record models
        result.Attack   = attack;
        result.Receiver = receiver;

        result.DamageToReceiver = attack.Damage;

        result.DamageToAttacker = receiver.DamageToAttackerOnHit;

        if (receiver.AllowColorLeech)
        {
            result.ColorChangeAttacker = DetermineColorLeech(attack, receiver, result.DamageToReceiver / receiver.InitialHealthPoints);
        }
        else
        {
            result.ColorChangeAttacker = Vector3.zero;
        }

        // Determine if attack will kill the receiver.
        if ((receiver.HealthPoints - result.DamageToReceiver) <= 0)
        {
            result.DamageToAttacker += receiver.DamageToAttackerOnKill;
        }
        // Send result back to the receiver.
        receiver.SendMessage("ReceiveCombatResult", result, SendMessageOptions.DontRequireReceiver);
        attack.SendMessage("AttackCombatResult", result, SendMessageOptions.DontRequireReceiver);
        // Inform the owner of the attack success.
        if (attack.Owner)
        {
            attack.Owner.SendMessage("AttackCombatResult", result, SendMessageOptions.DontRequireReceiver);
        }
    }
Exemple #12
0
    private static Vector3 DetermineColorLeech(CombatAttackModel attack, CombatReceiverModel receiver, float percentDamageToTotalHealthDealt)
    {
        Color attackerColor = new Color();
        Color receiverColor = new Color();
        // Make sure the attacker and receiver have colors
        if (attack.Owner)
        {
            try
            {
                attackerColor = attack.Owner.renderer.material.color;
                receiverColor = receiver.renderer.material.color;
            }
            catch
            {
                return new Vector3();
            }
        }

        //Player Property += ((Experience Property - Player Property) * SCALER) * ( Damage / Experiences Health)
        float scale = SCALER * percentDamageToTotalHealthDealt;
        //Debug.Log ("PercentDamageDealtToTotalHealth: " + percentDamageToTotalHealthDealt + " Scaler: " + SCALER + " Final: " + scale);
        //Debug.Log("Receiver Color: " + receiverColor + " Attacker Color: " + attackerColor);
        float rDifference = (receiverColor.r - attackerColor.r) * scale;
        float gDifference = (receiverColor.g - attackerColor.g) * scale;
        float bDifference = (receiverColor.b - attackerColor.b) * scale;
        Vector3 colorChange = new Vector3( rDifference, gDifference, bDifference);
        //Debug.Log ("Color Change: " + colorChange);

        return colorChange;
    }