示例#1
0
        /// <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);
            }
        }
示例#2
0
        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++;
                }
            }
        }
示例#7
0
 /// <summary>
 /// Message should be sent when a player inflicts damage to an object.
 /// </summary>
 private void    OnInflictedDamage(InflictedDamageInfo info)
 {
 }