public override void OverridableLeaveFight(Fighter Fighter) { switch (this.FightState) { // TODO deco du joueur case Fights.FightState.STATE_PLACE: if (Fighter == Fighter.Team.Leader) { foreach (var TeamFighter in Fighter.Team.GetFighters()) { TeamFighter.Life = 0; } Fighter.Left = true; this.OverridableEndFight(this.GetEnnemyTeam(Fighter.Team), Fighter.Team); } break; case FightState.STATE_ACTIVE: if (Fighter.TryDie(Fighter.ActorId, true) != -3) { Fighter.LeaveFight(); Fighter.Send(new GameLeaveMessage()); } break; } }
public override void OverridableLeaveFight(Fighter Fighter) { // Un persos quitte le combat switch (this.FightState) { case Fights.FightState.STATE_PLACE: // TODO : Uniquement si kické this.Map.SendToMap(new GameFightTeamFlagFightersMessage(new List <Fighter> { Fighter }, Fighter.Team.LeaderId, false)); this.SendToFight(new GameActorDestroyMessage(Fighter.ActorId)); Fighter.LeaveFight(); Fighter.Send(new GameLeaveMessage()); if (Team1.GetAliveFighters().Count == 0 || Team2.GetAliveFighters().Count == 0) { FightTeam ft = null; if (Team1.GetAliveFighters().Count == 0) { ft = Team1; } else { ft = Team2; } foreach (var TeamFighter in ft.GetFighters()) { TeamFighter.Life = 0; } Fighter.Left = true; this.OverridableEndFight(this.GetEnnemyTeam(ft), ft); } break; case FightState.STATE_ACTIVE: if (Fighter.TryDie(Fighter.ActorId, true) != -3) { Fighter.LeaveFight(); Fighter.Send(new GameLeaveMessage()); } ; break; } }
public override void OverridableLeaveFight(Fighter Fighter) { // Un persos quitte le combat switch (this.FightState) { case Fights.FightState.STATE_PLACE: if (Fighter == Fighter.Team.Leader) { foreach (var TeamFighter in Fighter.Team.GetFighters()) { TeamFighter.Life = 0; } Fighter.Left = true; this.OverridableEndFight(this.GetEnnemyTeam(Fighter.Team), Fighter.Team); } else { this.Map.SendToMap(new GameFightTeamFlagFightersMessage(new List <Fighter> { Fighter }, Fighter.Team.LeaderId, false)); this.SendToFight(new GameActorDestroyMessage(Fighter.ActorId)); Fighter.LeaveFight(); Fighter.Send(new GameLeaveMessage()); } break; case FightState.STATE_ACTIVE: if (Fighter.TryDie(Fighter.ActorId, true) != -3) { Fighter.LeaveFight(); Fighter.Send(new GameLeaveMessage()); } break; } }
public int TryDie(long CasterId, bool force = false) { if (force) { this.Life = 0; } if (this.Life <= 0) { if (!haveSendKillingMessage)//TODO mat affichich quand le double meurt alors que l'invoqueur a abondonné { this.Fight.SendToFight(new GameActionMessage((int)GameActionTypeEnum.FIGHT_KILLFIGHTER, CasterId, this.ActorId.ToString())); haveSendKillingMessage = true; } if (this.InvokTotal > 0) { this.Team.GetAliveFighters().Where(x => x.Invocator != null && x.Invocator.ActorId == this.ActorId).ToList().ForEach(Fighter => Fighter.TryDie(this.ActorId, true)); } System.Threading.Thread.Sleep(500); this.Fight.onFighterDie(this, this.Fight.GetFighter(CasterId)); if (this.Fight.TryEndFight()) { return(-3); } if (this.Fight.CurrentFighter == this) { this.Fight.FightLoopState = FightLoopState.STATE_END_TURN; } /*foreach (var item in this.Fight.getGlyphe().Where(x => x.Caster.ActorId == this.ActorId)) * { * this.Fight.SendToFight(new FightGlypheMessage("-", item.CellId, item.Size, 4)); * this.Fight.SendToFight(new FightGlypheCanceledMessage(item.CellId)); * this.Fight.removeGlyphe(item); * } * * foreach (var item in this.Fight.getTraps().Where(x => x.Caster.ActorId == this.ActorId)) * { * item.desappear(); * this.Fight.removeTrap(item); * }*/ return(-2); } return(-1); }