示例#1
0
        public GameMessagePrivateUpdateVital(Session session, global::ACE.Entity.Enum.Ability ability, uint ranks, uint baseValue, uint totalInvestment, uint currentValue)
            : base(GameMessageOpcode.PrivateUpdateVital, GameMessageGroup.UIQueue)
        {
            // TODO We shouldn't be passing session. Insetad, we should pass the value after session.UpdateSkillSequence++.

            Vital vital;

            switch (ability)
            {
            case global::ACE.Entity.Enum.Ability.Health:
                vital = Vital.Health;
                break;

            case global::ACE.Entity.Enum.Ability.Stamina:
                vital = Vital.Stamina;
                break;

            case global::ACE.Entity.Enum.Ability.Mana:
                vital = Vital.Mana;
                break;

            default:
                throw new ArgumentException("invalid ability specified");
            }

            Writer.Write(session.Player.Sequences.GetNextSequence(Sequence.SequenceType.PrivateUpdateAttribute));
            Writer.Write((uint)vital);
            Writer.Write(ranks);
            Writer.Write(baseValue);
            Writer.Write(totalInvestment);
            Writer.Write(currentValue);
        }
示例#2
0
        public GameMessagePrivateUpdateAbility(Session session, global::ACE.Entity.Enum.Ability ability, uint ranks, uint baseValue, uint totalInvestment)
            : base(GameMessageOpcode.PrivateUpdateAttribute, GameMessageGroup.UIQueue)
        {
            // TODO We shouldn't be passing session. Insetad, we should pass the value after session.UpdateSkillSequence++.

            PropertyAttribute networkAbility;

            switch (ability)
            {
            case global::ACE.Entity.Enum.Ability.Strength:
                networkAbility = PropertyAttribute.Strength;
                break;

            case global::ACE.Entity.Enum.Ability.Endurance:
                networkAbility = PropertyAttribute.Endurance;
                break;

            case global::ACE.Entity.Enum.Ability.Coordination:
                networkAbility = PropertyAttribute.Coordination;
                break;

            case global::ACE.Entity.Enum.Ability.Quickness:
                networkAbility = PropertyAttribute.Quickness;
                break;

            case global::ACE.Entity.Enum.Ability.Focus:
                networkAbility = PropertyAttribute.Focus;
                break;

            case global::ACE.Entity.Enum.Ability.Self:
                networkAbility = PropertyAttribute.Self;
                break;

            default:
                throw new ArgumentException("invalid ability specified");
            }

            Writer.Write(session.Player.Sequences.GetNextSequence(Sequence.SequenceType.PrivateUpdateAttribute));
            Writer.Write((uint)networkAbility);
            Writer.Write(ranks);
            Writer.Write(baseValue);
            Writer.Write(totalInvestment);
        }
        public static void Handle(ClientMessage message, Session session)
        {
            global::ACE.Entity.Enum.Ability ability = global::ACE.Entity.Enum.Ability.None;
            var networkAbility = (PropertyAttribute)message.Payload.ReadUInt32();

            switch (networkAbility)
            {
            case PropertyAttribute.Strength:
                ability = global::ACE.Entity.Enum.Ability.Strength;
                break;

            case PropertyAttribute.Endurance:
                ability = global::ACE.Entity.Enum.Ability.Endurance;
                break;

            case PropertyAttribute.Coordination:
                ability = global::ACE.Entity.Enum.Ability.Coordination;
                break;

            case PropertyAttribute.Quickness:
                ability = global::ACE.Entity.Enum.Ability.Quickness;
                break;

            case PropertyAttribute.Focus:
                ability = global::ACE.Entity.Enum.Ability.Focus;
                break;

            case PropertyAttribute.Self:
                ability = global::ACE.Entity.Enum.Ability.Self;
                break;

            case PropertyAttribute.Undef:
                return;
            }
            var xpSpent = message.Payload.ReadUInt32();

            session.Player.SpendXp(ability, xpSpent);
        }
示例#4
0
 public GameMessagePrivateUpdateVital(Session session, global::ACE.Entity.Enum.Ability ability, CreatureVital cv) :
     this(session, ability, cv.Ranks, cv.Base, cv.ExperienceSpent, cv.Current)
 {
 }