/// <summary> /// Inflicts damage to this object, broadcasts message, and destroys game object if health is <= 0. /// </summary> public virtual void Damage(float amount, object player) { if (!this.isServer) { return; } if (this.health <= 0) // already destroyed ? { return; } // check if attacker can damage this object Player myPlayer = PlayerManager.GetPlayerByGameObject(this.gameObject); if (!TeamManager.CanPlayerDamagePlayer(player as Player, myPlayer)) { return; } this.health -= amount; var info = new InflictedDamageInfo(); info.damage = amount; info.player = player; this.gameObject.BroadcastMessageNoExceptions("OnDamaged", info); if (this.health <= 0) { this.gameObject.BroadcastMessageNoExceptions("OnKilled", info); Destroy(this.gameObject); } }
void OnKilled(InflictedDamageInfo info) { if (null == prefab || null == position) { return; } prefab.InstantiateWithNetwork(position.position, position.rotation); }
void OnDamaged(InflictedDamageInfo info) { Player attacker = info.player as Player; if (attacker != null) { // notify player that he inflicted damage // p.SendMessage ("OnInflictedDamage", info, SendMessageOptions.DontRequireReceiver); attacker.OnInflictedDamage(info.damage); } }
void OnDamaged(InflictedDamageInfo info) { Player attacker = info.player as Player; if (attacker != null) { // notify player that he inflicted damage var info2 = new InflictedDamageInfo(); info2.damage = info.damage; info2.player = PlayerManager.GetPlayerByGameObject(this.gameObject); attacker.gameObject.BroadcastMessageNoExceptions("OnInflictedDamage", info2); } }
void OnKilled(InflictedDamageInfo info) { Player attacker = info.player as Player; var deadPlayer = PlayerManager.GetPlayerByGameObject(this.gameObject); // notify dead player if (deadPlayer != null) { deadPlayer.gameObject.BroadcastMessageNoExceptions("OnDied", attacker); } // notify attacker that he made a kill if (attacker != null) { var info2 = new InflictedDamageInfo(info.damage, deadPlayer); attacker.gameObject.BroadcastMessageNoExceptions("OnEarnedKill", info2); } }
void OnKilled(InflictedDamageInfo info) { // notify player that his object is dead Player attacker = info.player as Player; var deadPlayer = PlayerManager.GetPlayerByGameObject(this.gameObject); if (deadPlayer != null) { deadPlayer.gameObject.BroadcastMessageNoExceptions("OnDied", attacker); } else { // manually increase num kills if (attacker != null) { attacker.GetComponent <Score.Score>().NumKills++; } } }
/// <summary> /// Message should be sent when a player inflicts damage to an object. /// </summary> private void OnInflictedDamage(InflictedDamageInfo info) { }