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(); }
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); }