当前位置: 首页>>代码示例>>C#>>正文


C# GamePlayer.GetModifiedSpecLevel方法代码示例

本文整理汇总了C#中GamePlayer.GetModifiedSpecLevel方法的典型用法代码示例。如果您正苦于以下问题:C# GamePlayer.GetModifiedSpecLevel方法的具体用法?C# GamePlayer.GetModifiedSpecLevel怎么用?C# GamePlayer.GetModifiedSpecLevel使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在GamePlayer的用法示例。


在下文中一共展示了GamePlayer.GetModifiedSpecLevel方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: GetObjectSpecLevel

        /// <summary>
        /// Get object specialization level based on server type
        /// </summary>
        /// <param name="player">player whom specializations are checked</param>
        /// <param name="objectType">object type</param>
        /// <returns>specialization in object or 0</returns>
        public virtual int GetObjectSpecLevel(GamePlayer player, eObjectType objectType)
        {
            int res = 0;

            foreach (eObjectType obj in GetCompatibleObjectTypes(objectType))
            {
                int spec = player.GetModifiedSpecLevel(SkillBase.ObjectTypeToSpec(obj));
                if (res < spec)
                    res = spec;
            }
            return res;
        }
开发者ID:mynew4,项目名称:DAoC,代码行数:18,代码来源:AbstractServerRules.cs

示例2: Execute

        /// <summary>
        /// Execute the ability
        /// </summary>
        /// <param name="ab">The ability executed</param>
        /// <param name="player">The player that used the ability</param>
        public void Execute(Ability ab, GamePlayer player)
        {
            if (player == null)
            {
                if (log.IsWarnEnabled)
                    log.Warn("Could not retrieve player in FlurryAbilityHandler.");
                return;
            }

            #region precheck
            if (!player.IsAlive)
            {
                player.Out.SendMessage(LanguageMgr.GetTranslation(player.Client.Account.Language, "Skill.Ability.CannotUseDead"), eChatType.CT_System, eChatLoc.CL_SystemWindow);
                return;
            }
            if (player.IsMezzed)
            {
                player.Out.SendMessage(LanguageMgr.GetTranslation(player.Client.Account.Language, "Skill.Ability.CannotUseMezzed"), eChatType.CT_System, eChatLoc.CL_SystemWindow);
                return;
            }
            if (player.IsStunned)
            {
                player.Out.SendMessage(LanguageMgr.GetTranslation(player.Client.Account.Language, "Skill.Ability.CannotUseStunned"), eChatType.CT_System, eChatLoc.CL_SystemWindow);
                return;
            }
            if (player.IsSitting)
            {
                player.Out.SendMessage(LanguageMgr.GetTranslation(player.Client.Account.Language, "Skill.Ability.CannotUseStanding"), eChatType.CT_System, eChatLoc.CL_SystemWindow);
                return;
            }
            if (player.TargetObject == null)
            {
                player.Out.SendMessage(LanguageMgr.GetTranslation(player.Client.Account.Language, "Skill.Ability.CannotUseNoTarget"), eChatType.CT_System, eChatLoc.CL_SystemWindow);
                return;
            }
            if (!(player.TargetObject is GamePlayer || player.TargetObject is GameKeepGuard))
            {
                player.Out.SendMessage(LanguageMgr.GetTranslation(player.Client.Account.Language, "Skill.Ability.Flurry.TargetNotPlayerOrGuards"), eChatType.CT_System, eChatLoc.CL_SystemWindow);
                return;
            }
            if (!GameServer.ServerRules.IsAllowedToAttack(player, (GameLiving)player.TargetObject, true))
            {
                player.Out.SendMessage(LanguageMgr.GetTranslation(player.Client.Account.Language, "Skill.Ability.CannotAttackTarget", player.TargetObject.Name), eChatType.CT_System, eChatLoc.CL_SystemWindow);
                return;
            }
            if (!player.IsObjectInFront(player.TargetObject, 180) || !player.TargetInView)
            {
                player.Out.SendMessage(LanguageMgr.GetTranslation(player.Client.Account.Language, "Skill.Ability.CannotSeeTarget", player.TargetObject.Name), eChatType.CT_System, eChatLoc.CL_SystemWindow);
                return;
            }
            if (!player.IsWithinRadius(player.TargetObject, 135)) //Didn't use AttackRange cause of the fact that player could use a Bow
            {
                player.Out.SendMessage(LanguageMgr.GetTranslation(player.Client.Account.Language, "Skill.Ability.TargetIsWithinRadius"), eChatType.CT_System, eChatLoc.CL_SystemWindow);
                return;
            }
            if (player.TargetObject is GamePlayer && SpellHandler.FindEffectOnTarget((GamePlayer)player.TargetObject, "Phaseshift") != null)
            {
                player.Out.SendMessage(LanguageMgr.GetTranslation(player.Client.Account.Language, "Skill.Ability.TargetIsPhaseshifted", player.TargetObject.Name), eChatType.CT_Missed, eChatLoc.CL_SystemWindow);
                return;
            }
            if(player.TargetObject is GamePlayer)
            {
                SputinsLegacyEffect SputinLegacy = (player.TargetObject as GamePlayer).EffectList.GetOfType<SputinsLegacyEffect>();
                if(SputinLegacy != null)
                {
                    player.Out.SendMessage(LanguageMgr.GetTranslation(player.Client.Account.Language, "Skill.Ability.TargetIsUnderSputinLegacy", player.TargetObject.Name), eChatType.CT_Missed, eChatLoc.CL_SystemWindow);
                    return;
                }
            }
            #endregion

            GameLiving target = (GameLiving)player.TargetObject;
            int damage = 0;
            int specc = (player.CharacterClass is PlayerClass.ClassBlademaster) ?
                player.GetModifiedSpecLevel(Specs.Celtic_Dual) : player.GetModifiedSpecLevel(Specs.Dual_Wield);

            //damage = base HP / 100 * DWspec / 2.7 that would be the original calculation
            if (target is GamePlayer)
            {
                damage = (int)(target.MaxHealth / 100 * specc / 4.5);  // prev 3.5
            }
            else
            { damage = (int)(target.MaxHealth / 100 * specc / 4.6); } // prev 3.6

            #region Resists
            int primaryResistModifier = target.GetResist(eDamageType.Slash);

            //Using the resist BuffBonusCategory2 - its unused in ResistCalculator
            int secondaryResistModifier = target.SpecBuffBonusCategory[(int)eProperty.Resist_Slash];

            int resistModifier = 0;
            //primary resists
            resistModifier += (int)(damage * (double)primaryResistModifier * -0.01);
            //secondary resists
            resistModifier += (int)((damage + (double)resistModifier) * (double)secondaryResistModifier * -0.01);
//.........这里部分代码省略.........
开发者ID:mynew4,项目名称:DOLSharp,代码行数:101,代码来源:FlurryAbilityHandler.cs

示例3: IsObjectTooClose

        /// <summary>
        /// Checks whether object is too close to player
        /// </summary>
        /// <param name="obj">object</param>
        /// <param name="player">player</param>
        /// <returns>true if object prevents player from hiding</returns>
        private bool IsObjectTooClose(GameObject obj, GamePlayer player)
        {
            float enemyLevel = Math.Max(1f, obj.Level);
            float stealthLevel = player.GetModifiedSpecLevel(Specs.Stealth);
            if(stealthLevel > 50)
                stealthLevel = 50;
            float radius;

            if(obj is GamePlayer && ((GamePlayer)obj).HasAbility(Abilities.DetectHidden))
            {
                //1792.0 = 2048.0 - 256.0 <- Detect Hidden doubles the range
                radius = 2048f - (1792f * stealthLevel / enemyLevel);
            }
            else
            {
                //1024.0 = 1024.0 - 128.0 <- normal Range
                radius = 1024f - (896f * stealthLevel / enemyLevel);
            }

            //If we are so skilled we can hide right under the nose of
            //this enemy player, we continue the checks for the next
            //player without any redundant distance calculations
            if(radius <= 0) return false;

            //Test if the stealthing player is in range of this
            //player's "impossible to hide" circle
            return obj.IsWithinRadius(player,(int)radius);
        }
开发者ID:mynew4,项目名称:DOLSharp,代码行数:34,代码来源:StealthSpecHandler.cs


注:本文中的GamePlayer.GetModifiedSpecLevel方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。