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); }
public void Awake() { mCombatReceiverModel = GetComponent("CombatReceiverModel") as CombatReceiverModel; if (mCombatReceiverModel == null) { throw new MissingComponentException("Unable to find CombatReceiverModel."); } }
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"); } }
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); } } } }
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); } } }
// 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); } }
// 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); } }
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; }