本文整理汇总了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;
}
示例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);
//.........这里部分代码省略.........
示例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);
}