Exemplo n.º 1
0
        private void DoDamage(CallReason continueReason)
        {
            var healthModifier = new IntModifier(ModifyMode.Addition, AttributeCode.Health, -5);
            var sourcePos      = World.Instance.GetEntity(ActionSource).Position;

            log.InfoFormat("Bow Attack LookDir is {0}", LookDirection);

            var LookDirP = new Vector(LookDirection.Z, -LookDirection.X);
            var P1       = sourcePos + LookDirP * 0.5f * ATTACKWIDTH;
            var P2       = sourcePos - LookDirP * 0.5f * ATTACKWIDTH;
            var P3       = P2 + LookDirection * ATTACKDISTANCE;

            var dmgArea = new RectangleAreaTarget(P1, P2, P3)
            {
                AreaTargetOption = AreaTargetOption.IgnoreSource,
                SourceName       = ActionSource
            };

            World.Instance.ApplyModifier(dmgArea, healthModifier);

            // SetIdle
            AddCondition(new TimedContinueCondition(new System.TimeSpan(0, 0, 0, 0, 500)));
            ContinueEvent -= DoDamage;
            ContinueEvent += SetIdle;
            StartConditions();
        }
Exemplo n.º 2
0
        private void DoDamage(CallReason continueReason)
        {
            var healthModifier = new IntModifier(ModifyMode.Addition, AttributeCode.Health, -5);
            var sourcePos      = World.Instance.GetEntity(ActionSource).Position;

            log.InfoFormat("DS LookDir is {0}", LookDirection);

            var LookDirP = new Vector(LookDirection.Z, -LookDirection.X);
            var P1       = sourcePos + LookDirP * 0.5f * ATTACKWIDTH;
            var P2       = sourcePos - LookDirP * 0.5f * ATTACKWIDTH;
            var P3       = P2 + LookDirection * ATTACKDISTANCE;

            var dmgArea = new RectangleAreaTarget(P1, P2, P3)
            {
                AreaTargetOption = AreaTargetOption.IgnoreSource,
                SourceName       = ActionSource
            };

            World.Instance.ApplyModifier(dmgArea, healthModifier);

            var interupted = World.Instance.GetEntitesInArea(dmgArea);

            m_InteruptionHandler.OnInterupt(interupted);
        }