public override bool OnEventCalled(object arg1, object arg2, object arg3) { TakenDamages damages = (TakenDamages)arg2; Fighter.Heal(damages.Delta, Fighter.ContextualId); return(true); }
public void LoseLife(TakenDamages damages, int sourceid) { damages.EvaluateWithResistances(Fight.GetFighter(sourceid), this, Fight.PvP); if (damages.Delta <= 0) { return; } Fight.TryStartSequence(sourceid, 1); if (FighterStats.ShieldPoints > 0) { if (FighterStats.ShieldPoints - damages.Delta <= 0) { ushort rest = (ushort)(damages.Delta - FighterStats.ShieldPoints); Fight.Send(new GameActionFightLifeAndShieldPointsLostMessage((ushort)ActionsEnum.ACTION_CHARACTER_BOOST_SHIELD, sourceid, ContextualId, rest, 0, (ushort)FighterStats.ShieldPoints)); FighterStats.ShieldPoints = 0; if (FighterStats.Stats.LifePoints - rest <= 0) { FighterStats.Stats.LifePoints = 0; RefreshStats(); Die(); } else { ShowFighter(); FighterStats.Stats.LifePoints -= (short)rest; } return; } else { Fight.Send(new GameActionFightLifeAndShieldPointsLostMessage(0, sourceid, ContextualId, 0, 0, (ushort)damages.Delta)); FighterStats.ShieldPoints -= (int)damages.Delta; ShowFighter(); return; } } if (FighterStats.Stats.LifePoints - damages.Delta <= 0) { Fight.Send(new GameActionFightLifePointsLostMessage(0, sourceid, ContextualId, (ushort)FighterStats.Stats.LifePoints, 0)); FighterStats.Stats.LifePoints = 0; Die(); return; } else { ushort erosionDelta = (ushort)CalculateErosionDamage(damages.Delta); FighterStats.RealStats.LifePoints -= (short)erosionDelta; FighterStats.ErodedLife += erosionDelta; FighterStats.Stats.LifePoints -= damages.Delta; Fight.Send(new GameActionFightLifePointsLostMessage(0, sourceid, ContextualId, (ushort)damages.Delta, erosionDelta)); RefreshStats(); ApplyFighterEvent(FighterEventType.AFTER_ATTACKED, sourceid, damages); } Fight.TryEndSequence(1, 103); }
/// <summary> /// Dégâts subis =dégâts totaux - résistance fixe - (dégâts totaux / 100/pourcentage de résistance) /// </summary> /// <param name="delta"></param> /// <param name="sourceid"></param> public virtual void TakeDamages(TakenDamages damages, int sourceid) { if (ApplyFighterEvent(FighterEventType.BEFORE_ATTACKED, sourceid, damages)) { return; } LoseLife(damages, sourceid); }
public override bool OnEventCalled(object arg1, object arg2, object arg3) { TakenDamages damages = (TakenDamages)arg2; damages.Delta *= (short)(Delta / 100); Fighter.LoseLife(damages, (int)arg1); return(true); }
public override bool OnEventCalled(object arg1, object arg2, object arg3) { int casterId = (int)arg1; TakenDamages damages = (TakenDamages)arg2; var martyr = Fighter.Fight.GetFighter(SourceId); martyr.TakeDamages(damages, casterId); return(true); }
/// <summary> /// Dégâts subis =dégâts totaux - résistance fixe - (dégâts totaux / 100/pourcentage de résistance) /// </summary> /// <param name="delta"></param> /// <param name="sourceid"></param> public virtual void TakeDamages(TakenDamages damages, int sourceid) { if (CharacterRecord.GetCharacterRecordById(this.ContextualId).GodMod) { return; } if (ApplyFighterEvent(FighterEventType.BEFORE_ATTACKED, sourceid, damages)) { return; } LoseLife(damages, sourceid); }
public override bool OnEventCalled(object arg1, object arg2, object arg3) { int sourceId = (int)arg1; TakenDamages damages = (TakenDamages)arg2; damages.Delta = damages.GetDeltaPercentage(REWIND_PERCENTAGE); List <short> cellIds = ShapesProvider.GetCrossCells(Fighter.CellId, Fighter.CellId, 1); foreach (var cellId in cellIds) { Fighter target = Fighter.Fight.GetFighter(cellId); if (target != null) { //target.Fight.Send(new DebugHighlightCellsMessage(0, new ushort[] { (ushort)cellId })); } } return(false); }
static void Steal(Fighter fighter, Fighter target, short jet, ElementType element, SpellLevelRecord level) { var takenDamages = new TakenDamages(jet, element); takenDamages.EvaluateWithResistances(fighter, target, fighter.Fight.PvP); short healJet = (short)(takenDamages.Delta / 2); short targetLife = target.FighterStats.Stats.LifePoints; target.TakeDamages(new TakenDamages(jet, element), fighter.ContextualId); if (targetLife - jet < 0) { fighter.Heal((short)(targetLife / 2), fighter.ContextualId); } else { fighter.Heal(healJet, fighter.ContextualId); } }
/// <summary> /// Called when the player takes damages /// </summary> /// <param name="obj">damages taken</param> public override bool OnEventCalled(object arg1, object arg2, object arg3) { TakenDamages damages = (TakenDamages)arg2; if (Fighter.ContextualId == (int)arg1 || damages.Delta <= 0) { return(false); } short statBuffDelta = (short)damages.Delta; int num = Fighter.GetAllBuffs <StatBuff>(x => x.SourceSpellId == SourceSpellId).FindAll(x => x.Duration == PunishementDelay).Sum(x => x.Delta); if (num < Delta) { if (statBuffDelta + num > (int)Delta) { statBuffDelta = (short)(Delta - num); } StatBuff buff = new StatBuff((uint)Fighter.BuffIdProvider.Pop(), StatDefinition, (uint)GetBuffEffectType(StatDefinition.FieldName), statBuffDelta, PunishementDelay, Fighter.ContextualId, SourceSpellId, statBuffDelta, 0); Fighter.AddBuff(buff); } return(false); }