コード例 #1
0
ファイル: Combatant.cs プロジェクト: GrindFest/GrindFest
        // I attacked someone
        private void OnAttackPayload(AttackPayload payload)
        {
            foreach (Combatant target in payload.Targets)
            {
                var hitPayload = new HitPayload(payload, this, payload.Power);

                target.SendMessage(hitPayload);
            }
        }
コード例 #2
0
ファイル: Combatant.cs プロジェクト: GrindFest/GrindFest
        // Someone hit me
        private void OnHitPayload(HitPayload payload)
        {
            var attacker = payload.Attacker;

            float totalDamage = 0;
            foreach (var damageEntry in payload.AttackPayload.DamageEntries)
            {
                var damage = _random.Next((int)damageEntry.MinDamage, (int)(damageEntry.MinDamage + damageEntry.DeltaDamage));

                //TODO: damage reduction

                totalDamage += damage;
            }

            // if damage = 0
            // parry/immune

            //if dodgechange < random
            // dodge

            //else

            Attributes[AttributeId.Hitpoints] = Math.Max(0, Attributes[AttributeId.Hitpoints] - (int)totalDamage);

            Zoned.Broadcast(new ServerFloatingNumberPacket(Zoned.Id, (int)totalDamage, FloatingNumberType.Damage));

            if (Attributes[AttributeId.Hitpoints] == 0)
            {
                DeathPayload deathPayload = new DeathPayload(payload, this, payload.Power);

                SendMessage(deathPayload);
            }
            else
            {
                // We could play hit animation here if we had one
            }
        }
コード例 #3
0
ファイル: DeathPayload.cs プロジェクト: GrindFest/GrindFest
 public DeathPayload(HitPayload hitPayload, Combatant victim, Power power)
 {
     this.HitPayload = hitPayload;
     this.Victim = victim;
     this.Power = power;
 }