Esempio n. 1
0
 //unsubscribe from old and subscribe to new target with sending messages to target
 private void SubscribeToTarget(NebulaObject newTargetObject)
 {
     UnsubscribeFromTarget();
     targetObject = newTargetObject;
     if (targetObject)
     {
         targetObject.SendMessage(ComponentMessages.OnTargetSubscribeMe, nebulaObject);
     }
 }
Esempio n. 2
0
        /// <summary>
        /// Add new damager item to damagers collection list
        /// </summary>
        /// <param name="damagerID">ID of damager</param>
        /// <param name="damagerType">Type of damager item</param>
        /// <param name="damage">Damage value</param>
        /// <param name="workshop">Workshop of damager if has workshop</param>
        /// <param name="level">Level of damager if has level</param>
        /// <param name="race">Race of damager if has race</param>
        /// <param name="source">Source damager object (may be null)</param>
        public void AddDamager(string damagerID, byte damagerType, float damage, byte workshop, int level, byte race, NebulaObject source)
        {
            //send message to damager when he is start attacking
            if (source != null && source)
            {
                if (!m_Damagers.Has(source.Id))
                {
                    source.SendMessage(ComponentMessages.OnStartAttack, nebulaObject);
                }
            }

            var damageInfo = m_Damagers.Add(damagerID, damagerType, damage, workshop, level, race);

            if (damageInfo != null)
            {
                //send message to self object when receive new damage
                nebulaObject.SendMessage(ComponentMessages.OnNewDamage, damageInfo);
            }
        }
Esempio n. 3
0
        private void GiveExpAndPvpPointsToPlayer(NebulaObject playerObject, NebulaObject owner, float difficulty, float npcLevel, float npcMaxHealth)
        {
            int   baseExp     = 20;
            float playerLevel = GetLevel(playerObject);
            float levelRat    = npcLevel / playerLevel;
            float bexp        = (difficulty * levelRat * (baseExp));
            float hpExp       = difficulty * Mathf.ClampLess(npcMaxHealth - 1000, 0f) * 0.01f;

            if (levelRat < 1.0f)
            {
                hpExp *= levelRat;
            }
            int exp = (int)Math.Round(bexp + hpExp);

            s_Log.InfoFormat("sended exp = {0} for bot difficulty = {1}, hp exp bonus = {2}", exp, difficulty, (int)(difficulty * Mathf.ClampLess(npcMaxHealth - 1000, 0f) * 0.01f));
            playerObject.GetComponent <PlayerCharacterObject>().AddExp(exp);
            playerObject.SendMessage(ComponentMessages.OnEnemyDeath, owner);

            GivePvpPoints(playerObject, owner, npcLevel, (int)playerLevel);
        }