private void BattleEnded(bool writeReport) { if (writeReport) { BattleReport.CompleteBattle(); } AboutToExitBattle(this, Attackers, Defenders); ExitBattle(this, Attackers, Defenders); foreach (var combatObj in Defenders.AllCombatObjects().Where(combatObj => !combatObj.IsDead)) { combatObj.ExitBattle(); } foreach (var combatObj in Attackers.AllCombatObjects().Where(combatObj => !combatObj.IsDead)) { combatObj.ExitBattle(); } foreach (var group in Attackers) { WithdrawAttacker(this, group); } foreach (var group in Defenders) { WithdrawDefender(this, group); } // Delete all groups Attackers.Clear(); Defenders.Clear(); }
private void SlipIntoShock() { string line = "<color=red>" + gameObject.name + " is experiencing shock from loss of blood!</color>"; BattleReport.AddToBattleReport(line); stateMachine.TriggerTemporaryState(IncapacitatedState.TemporaryState.InShock, 30f); }
public GangLevelUpReport ProcessExperience(BattleReport battleReport) { var gang = _gangFactory.GetGang(battleReport.GangId); var underdogBonus = GetUnderdogBonus(gang.GangRating, battleReport.OpponentGangRating, battleReport.HasWon); var advancements = new List <GangerLevelUpReport>(); foreach (var gangerStats in battleReport.GangBattleStats) { var ganger = _gangerFactory.GetGanger(gangerStats.GangerId); var experience = 0; experience += GetLeaderBonus(ganger, battleReport.GameType, battleReport.HasWon, battleReport.IsAttacker); experience += GetWoundingHitBonus(gangerStats.Kills); experience += GetObjectivesBonus(gangerStats.Objectives, battleReport.GameType); experience += GetWinningBonus(battleReport.HasWon, battleReport.GameType); experience += GetSurvivalBonus(); var advanceRolls = GetNumberOfAdvanceRolls(ganger, experience); while (advanceRolls > 0) { advancements.Add(DoAdvanceRoll(ganger, gang.GangHouse)); advanceRolls--; } ganger.Experience += experience; _gangerFactory.UpdateGanger(ganger); } return(new GangLevelUpReport() { GangerAdvancements = advancements }); }
public async Task <IActionResult> DeleteUnconfirmed(int?id) { if (id == null) { return(NotFound()); } BattleReport battleReport = await _db.BattleReports.FindAsync(id); if (battleReport == null) { return(NotFound()); } if (battleReport.OpponentsUsername != User.Identity.Name) { return(Unauthorized()); } string username = battleReport.OpponentsUsername; _db.BattleReports.Remove(battleReport); await _db.SaveChangesAsync(); return(RedirectToAction(nameof(UnconfirmedBattleReports), new { id = username })); }
private void BeginSimulation() { BattleConfig battleConfig = null; SerializeHelper.DeserializeJsonToData(Utils.GetBattleConfigPath(battleConfigName), out battleConfig); BattleEngine battleEngine = new BattleEngine(); battleEngine.Init(battleConfig); if (AppConst.AsyncServer) { Task <BattleReport> task = new Task <BattleReport>(battleEngine.DoPlayBattle); task.Start(); task.GetAwaiter().OnCompleted(() => EndSimulation(task)); } else { BattleReport battleReport = battleEngine.DoPlayBattle(); EndSimulation(battleReport); } }
/// <summary> /// Process injuries /// </summary> /// <param name="battleReport">Battle report</param> /// <returns>Injury report</returns> public InjuryReport ProcessInjuries(BattleReport battleReport) { // If a ganger is down, a roll less than three means they're injured. var injuries = new List <GangerInjuryReport>(); foreach (var stats in battleReport.GangBattleStats) { if (stats.OutOfAction || (stats.Down && _diceRoller.RollDie() <= 3)) { injuries.Add(new GangerInjuryReport() { TheGanger = _gangerManager.GetGanger(stats.GangerId), Injuries = DetermineInjury(null), }); } } // var injuries = battleReport.GangBattleStats // .Where(stats => stats.OutOfAction || (stats.Down && DiceRoller.RollDie() <= 3)) // .Select(ganger => _gangerManager.GetGanger(ganger.GangerId)) // .Select(ganger => new GangerInjuryReport() { TheGanger = ganger, Injuries = DetermineInjury(null) }) // .ToList(); // apply injuries to Gangers var injuredGangers = new List <GangerInjuryReport>(); for (int i = 0; i < injuries.Count(); i++) { var ganger = injuries[i].TheGanger; foreach (var injury in injuries[i].Injuries) { ganger = injury.InjuryEffect(ganger); } injuredGangers.Add(new GangerInjuryReport() { Injuries = injuries[i].Injuries, TheGanger = ganger, }); } // update gangers in db foreach (var report in injuredGangers) { _gangerManager.UpdateGanger(report.TheGanger); foreach (var injury in report.Injuries) { if (injury.InjuryId != InjuryEnum.FullRecovery) { _gangerManager.AddGangerInjury(report.TheGanger.GangerId, injury.InjuryId); } } } return(new InjuryReport() { Injuries = injuries, }); }
private static void AddButtonForOption(string option) { GameObject newButton = Instantiate(Resources.Load("FilterOption"), Vector2.zero, Quaternion.identity, buttonContainer) as GameObject; newButton.transform.localPosition = new Vector2(0f, 495f + (buttons.Count * -20f)); newButton.transform.GetChild(0).GetComponent<Text>().text = option; newButton.GetComponent<Button>().onClick.AddListener(delegate { BattleReport.FilterReport(option); }); buttons.Add(newButton); }
public static BattleFrameData GetFrameDate(this ClientContext context, int frame) { BattleReport battleReport = context.battleReport.value; BattleFrameData battleFrameData = null; battleReport.battleFrames.TryGetValue(frame, out battleFrameData); return(battleFrameData); }
private void EndSimulation(BattleReport battleReport) { if (!string.IsNullOrEmpty(battleReportName)) { SerializeHelper.SerializeDataToBytes <BattleReport>(battleReport, Utils.GetBattleReportPath(battleReportName)); SerializeHelper.SerializeDataToJson <BattleReport>(battleReport, Utils.GetBattleReportPath(battleReportName) + ".json"); } Debug.LogWarning("result -> " + battleReportName); }
public async Task <IActionResult> Edit(EditBattleReportViewModel viewModel) { viewModel.StatusMessage = string.Empty; if (!ModelState.IsValid) { viewModel.Factions = await _db.Factions.OrderBy(f => f.Name).ToListAsync(); viewModel.PosterWon = viewModel.BattleReport.WinnersUsername == User.Identity.Name; int postersFactionId = viewModel.Factions.First(f => f.Name == viewModel.BattleReport.PostersFaction).Id; viewModel.PostersFactionThemes = await _db.Themes.Where(t => t.FactionId == postersFactionId).OrderBy(t => t.Name).ToListAsync(); viewModel.PostersFactionCasters = await _db.Casters.Where(c => c.FactionId == postersFactionId).OrderBy(c => c.Name).ToListAsync(); int opponentsFactionId = viewModel.Factions.First(f => f.Name == viewModel.BattleReport.OpponentsFaction).Id; viewModel.OpponentsFactionThemes = await _db.Themes.Where(t => t.FactionId == opponentsFactionId).OrderBy(t => t.Name).ToListAsync(); viewModel.OpponentsFactionCasters = await _db.Casters.Where(c => c.FactionId == opponentsFactionId).OrderBy(c => c.Name).ToListAsync(); return(View(viewModel)); } BattleReport battleReport = await _db.BattleReports.FindAsync(viewModel.BattleReport.Id); battleReport.PostersFaction = viewModel.BattleReport.PostersFaction; battleReport.PostersTheme = viewModel.BattleReport.PostersTheme; battleReport.PostersCaster = viewModel.BattleReport.PostersCaster; battleReport.PostersArmyList = viewModel.BattleReport.PostersArmyList; battleReport.PostersArmyPoints = viewModel.BattleReport.PostersArmyPoints; battleReport.PostersControlPoints = viewModel.BattleReport.PostersControlPoints; battleReport.OpponentsFaction = viewModel.BattleReport.OpponentsFaction; battleReport.OpponentsTheme = viewModel.BattleReport.OpponentsTheme; battleReport.OpponentsCaster = viewModel.BattleReport.OpponentsCaster; battleReport.OpponentsArmyList = viewModel.BattleReport.OpponentsArmyList; battleReport.OpponentsArmyPoints = viewModel.BattleReport.OpponentsArmyPoints; battleReport.OpponentsControlPoints = viewModel.BattleReport.OpponentsControlPoints; battleReport.DatePlayed = viewModel.BattleReport.DatePlayed; battleReport.EndCondition = viewModel.BattleReport.EndCondition; battleReport.GameSize = viewModel.BattleReport.GameSize; battleReport.Scenario = viewModel.BattleReport.Scenario; battleReport.LosersUsername = viewModel.PosterWon ? viewModel.BattleReport.OpponentsUsername : viewModel.BattleReport.PostersUsername; battleReport.LosingFaction = viewModel.PosterWon ? viewModel.BattleReport.OpponentsFaction : viewModel.BattleReport.PostersFaction; battleReport.LosingTheme = viewModel.PosterWon ? viewModel.BattleReport.OpponentsTheme : viewModel.BattleReport.PostersTheme; battleReport.LosingCaster = viewModel.PosterWon ? viewModel.BattleReport.OpponentsCaster : viewModel.BattleReport.PostersCaster; battleReport.WinnersUsername = viewModel.PosterWon ? viewModel.BattleReport.PostersUsername : viewModel.BattleReport.OpponentsUsername; battleReport.WinningFaction = viewModel.PosterWon ? viewModel.BattleReport.PostersFaction : viewModel.BattleReport.OpponentsFaction; battleReport.WinningTheme = viewModel.PosterWon ? viewModel.BattleReport.PostersTheme : viewModel.BattleReport.OpponentsTheme; battleReport.WinningCaster = viewModel.PosterWon ? viewModel.BattleReport.PostersCaster : viewModel.BattleReport.OpponentsCaster; await _db.SaveChangesAsync(); return(RedirectToAction(nameof(UnconfirmedBattleReports), new { id = User.Identity.Name })); }
private void VomitCheck(int severity) { if (severity >= vomitThreshold) { if (UnityEngine.Random.Range(0, 100) > myCombatSkills.statusResistance / (severity + 1)) { stateMachine.TriggerTemporaryState(IncapacitatedState.TemporaryState.Vomitting, severity + 1); string line = "<color=blue>The injury causes " + gameObject.name + " to vomit!</color>"; BattleReport.AddToBattleReport(line); } } }
private void DownedCheck(int severity) { if (severity >= downedThreshold) { if (UnityEngine.Random.Range(0, 100) > myCombatSkills.statusResistance / (severity + 1)) { stateMachine.TriggerTemporaryState(IncapacitatedState.TemporaryState.Downed, severity + 1); string line = "<color=blue>" + gameObject.name + " is knocked to the ground!</color>"; BattleReport.AddToBattleReport(line); } } }
public void Add(ICombatGroup combatGroup, BattleSide battleSide, bool allowReportAccess) { bool isAttacker = battleSide == BattleSide.Attack; lock (battleLock) { if (GetCombatGroup(combatGroup.Id) != null) { throw new Exception( string.Format("Trying to add a group to battle {0} with id {1} that already exists", BattleId, combatGroup.Id)); } (battleSide == BattleSide.Attack ? Attackers : Defenders).Add(combatGroup); if (isAttacker) { combatGroup.CombatObjectAdded += AttackerGroupOnCombatObjectAdded; combatGroup.CombatObjectRemoved += AttackerGroupOnCombatObjectRemoved; } else { combatGroup.CombatObjectAdded += DefenderGroupOnCombatObjectAdded; combatGroup.CombatObjectRemoved += DefenderGroupOnCombatObjectRemoved; } if (BattleStarted) { BattleReport.WriteReportGroup(combatGroup, isAttacker, ReportState.Entering); if (isAttacker) { ReinforceAttacker(this, combatGroup); } else { ReinforceDefender(this, combatGroup); } } if (allowReportAccess) { BattleReport.AddAccess(combatGroup, battleSide); } if (combatGroup.Tribe != null) { BattleReport.AddTribeToBattle(combatGroup.Tribe, battleSide); } } }
public void Remove(ICombatGroup group, BattleSide side, ReportState state) { lock (battleLock) { // Remove from appropriate combat list if (side == BattleSide.Attack) { if (!Attackers.Remove(group)) { return; } group.CombatObjectAdded -= AttackerGroupOnCombatObjectAdded; group.CombatObjectRemoved -= AttackerGroupOnCombatObjectRemoved; } else { if (!Defenders.Remove(group)) { return; } group.CombatObjectAdded -= DefenderGroupOnCombatObjectAdded; group.CombatObjectRemoved -= DefenderGroupOnCombatObjectRemoved; } // If battle hasnt started then dont worry about cleaning anything up since nothing has happened to these objects if (!BattleStarted) { return; } // Snap a report of exit BattleReport.WriteReportGroup(group, side == BattleSide.Attack, state); // Tell objects to exit from battle foreach (var co in group.Where(co => !co.Disposed)) { co.ExitBattle(); } // Send exit events if (side == BattleSide.Attack) { WithdrawAttacker(this, group); } else { WithdrawDefender(this, group); } } }
private void Start() { if (!string.IsNullOrEmpty(battleReportName)) { BattleReport battleReport = null; SerializeHelper.DeserializeBytesToData <BattleReport>(Utils.GetBattleReportPath(battleReportName), out battleReport); battleReportPlayer = new BattleReportPlayer(); battleReportPlayer.Init(battleReport); } }
// // Initial route set // static public void post(BattleReport btrpt) { var connection = SqliteHelper.DBContext("HsiuHsien_MainDB.db"); using (connection){ connection.DefaultTimeout = 60; //Insert initial exp data connection.Open(); var insertCmd = connection.CreateCommand(); insertCmd.CommandText = String.Format(@"INSERT INTO Ro_Rou( Ro_No, Ch_No) VALUES( '1', '{0}')", btrpt.Ch_Dtl.Ch_No); insertCmd.ExecuteNonQuery(); } }
/// <Summary> /// Initializes a new instance of the BattleViewer class. /// </Summary> /// <param name="thisBattle">The <see cref="BattleReport"/> to be displayed.</param> public BattleViewer(BattleReport report) { InitializeComponent(); theBattle = report; eventCount = 0; // Take a copy of all of the stacks so that we can mess with them // without disturbing the master copy in the global turn file. foreach (Stack stack in theBattle.Stacks.Values) { myStacks[stack.Key] = new Stack(stack); } }
private void KnockoutCheck(int severity) { int multiplier = 10; // * severityLevel to get time knocked out if (severity >= knockoutThreshold) { if (UnityEngine.Random.Range(0, 100) > myCombatSkills.statusResistance / (severity + 1)) { int duration = severity * multiplier; myBody.unconscious = true; stateMachine.TriggerTemporaryState(IncapacitatedState.TemporaryState.Unconscious, duration); string line = "<color=blue>" + gameObject.name + " has been knocked unconscious by the attack!</color>"; BattleReport.AddToBattleReport(line); } } }
public async Task <IActionResult> Details(int?id) { if (id == null) { return(NotFound()); } BattleReport reportFromDB = await _db.BattleReports.FindAsync(id); if (reportFromDB == null) { return(NotFound()); } return(View(reportFromDB)); }
public BattleReport DoPlayBattle() { _context = Contexts.sharedInstance.server; while (!_context.isBattleEnd) { _systems.Execute(); _systems.Cleanup(); } BattleReport battleReport = _context.battleReport.value; OnBattleEnd(); return(battleReport); }
public static int get_Version(IntPtr l) { int result; try { BattleReport battleReport = (BattleReport)LuaObject.checkSelf(l); LuaObject.pushValue(l, true); LuaObject.pushValue(l, battleReport.Version); result = 2; } catch (Exception e) { result = LuaObject.error(l, e); } return(result); }
public static int constructor(IntPtr l) { int result; try { BattleReport o = new BattleReport(); LuaObject.pushValue(l, true); LuaObject.pushValue(l, o); result = 2; } catch (Exception e) { result = LuaObject.error(l, e); } return(result); }
private void Attack() { AttackInfo myAttack; AttackTimer attackTimer = usm.attackTimer; BodyPartController myBody = usm.bodyController; CombatSkills mySkills = usm.combatSkills; if (Random.Range(0, 100) <= 75) { if (!myBody.PartTooInjured(attack1Parts)) { AttackAnimation(); myAttack = mySkills.RequestAttackInfo(attack1Parts[0].MyWeapon()); } else { string line = "<color=red>" + gameObject.name + " is too injured to attack with their " + attack1Parts[0].MyWeapon().name + "</color>"; FloatingTextController.CreateFloatingText("Too injured!", transform, Color.red); BattleReport.AddToBattleReport(line); attackTimer.ResetAttackTimer(7f); //arbitrarily reset attack timer to prevent attack //unit reactions -> run away if not player? return; } } else { if (!myBody.PartTooInjured(attack2Parts)) { AttackAnimation(); myAttack = mySkills.RequestAttackInfo(attack2Parts[0].MyWeapon()); } else { string line = "<color=red>" + gameObject.name + " is too injured to attack with their " + attack2Parts[0].MyWeapon().name + "</color>"; FloatingTextController.CreateFloatingText("Too injured!", transform, Color.red); BattleReport.AddToBattleReport(line); attackTimer.ResetAttackTimer(7f); //arbitrarily reset attack timer to prevent attack //unit reactions -> run away if not player? return; } } Debug.Log(gameObject.name + " attacking with reset timer of " + myAttack.speed); targetBody.RecieveAttack(myAttack, transform); //should reset back to whatever weapon was used attackTimer.ResetAttackTimer(myAttack.speed); }
public void TakeDamage(AttackInfo recievedAttack) { DamageInfo damageInfo = DetermineSeverityLevel(recievedAttack); int severity = damageInfo.severityLevel; string line; if (severity >= 0) { if (severity > currentSeverityLevel) { currentSeverityLevel = severity; if (dollPart != null) { dollPart.SeverityColor(severity); } } string log; if (dollPart != null) { //Debug.Log(gameObject.name + " is logging for " + damageInfo.damageType + " damage!"); log = dollPart.LogInjury(severity, damageInfo.damageType); } string unitName = gameObject.name; string injuryString = GetInjuryString(damageInfo.damageType, severity); if (injuryString == null) { Debug.LogError("injury string is null for " + damageInfo.damageType.ToString() + " severity " + severity); } line = string.Format(injuryString, unitName, damageInfo.weaponName, damageInfo.attackerName); string[] filters = new string[] { gameObject.name, damageInfo.attackerName }; BattleReport.AddToBattleReport(line, filters); StatusChecks(severity); Bleed(damageInfo); } else { line = recievedAttack.attackerName + " 's " + recievedAttack.weapon.name + " does no damage to " + gameObject.name + "'s " + name; ReportFilter.AddToFilterList(gameObject.name); ReportFilter.AddToFilterList(damageInfo.attackerName); BattleReport.AddToBattleReport(line); } }
public static int set_Commands(IntPtr l) { int result; try { BattleReport battleReport = (BattleReport)LuaObject.checkSelf(l); List <BattleCommand> commands; LuaObject.checkType <List <BattleCommand> >(l, 2, out commands); battleReport.Commands = commands; LuaObject.pushValue(l, true); result = 1; } catch (Exception e) { result = LuaObject.error(l, e); } return(result); }
public static int set_BattleType(IntPtr l) { int result; try { BattleReport battleReport = (BattleReport)LuaObject.checkSelf(l); BattleType battleType; LuaObject.checkEnum <BattleType>(l, 2, out battleType); battleReport.BattleType = battleType; LuaObject.pushValue(l, true); result = 1; } catch (Exception e) { result = LuaObject.error(l, e); } return(result); }
public static int set_RandomSeed(IntPtr l) { int result; try { BattleReport battleReport = (BattleReport)LuaObject.checkSelf(l); int randomSeed; LuaObject.checkType(l, 2, out randomSeed); battleReport.RandomSeed = randomSeed; LuaObject.pushValue(l, true); result = 1; } catch (Exception e) { result = LuaObject.error(l, e); } return(result); }
public static int set_InstanceId(IntPtr l) { int result; try { BattleReport battleReport = (BattleReport)LuaObject.checkSelf(l); ulong instanceId; LuaObject.checkType(l, 2, out instanceId); battleReport.InstanceId = instanceId; LuaObject.pushValue(l, true); result = 1; } catch (Exception e) { result = LuaObject.error(l, e); } return(result); }
/// <summary> /// Determines if this village should be attacked. /// </summary> /// <returns></returns> private async Task <bool> ShouldAttack(CancellationToken ct) { ReadOnlyCollection <IWebElement> reports = villageInfoScreen.GetLastReports(); // Previous attacks, predict if it's worth to attack based on the most recent report if (reports.Count > 0) { // We click the first report and read it reports[0].Click(); BattleReport report = battleReportScreen.ReadReport(); await Task.Delay(random.Next(450, 700), ct); return(report.ShouldAttackAgain()); } // No previous attacks means attack. return(true); }
// // Attack // private void button1_Click(object sender, System.EventArgs e) { // Monster mns = test.Mns_testValue(); // List<Monster> MnsList = new List<Monster>(); // MnsList.Add(mns); // btrpt.Mns_Dtl = MnsList; btrpt = Mns_Sts.get(btrpt); string result = Battle.StartFight(ref btrpt); foreach (string meg in btrpt.message) { output.AppendText(meg); Thread.Sleep(400); output.AppendText(Environment.NewLine); } output.AppendText(result); output.AppendText(Environment.NewLine); UIDisplay(btrpt); }
/// <summary> /// Instantiates the next battle. /// </summary> private void LoadBattle() { //Create new battle gameobject. this.battleObject = (GameObject)Instantiate(this.BattlePrefab); this.battleObject.GetComponent<BattleScript>().Battle = Globals.Instance.Battle; BattleScript bScript = this.battleObject.GetComponent<BattleScript>(); //Set the initial score. bScript.Score = Globals.Instance.Score; //Create new battle report and set the object to record data there. BattleReport report = new BattleReport(); bScript.Report = report; Globals.Instance.Reports.Add(report); //Set the delegate method if applicable. if (this.UseServerAgents) bScript.AITurnDelegate = this.AFABLTurn; }
/// <summary> /// Instantiates the next battle. /// </summary> private void LoadNextBattle() { //Create new battle gameobject. this.battleObject = (GameObject)Instantiate(this.BattlePrefab); this.battleObject.GetComponent<BattleScript>().Battle = this.scenario.Battles[0]; //Create new battle report and set the object to record data there. BattleReport report = new BattleReport(); this.battleObject.GetComponent<BattleScript>().Report = report; //Set the initial score. this.battleObject.GetComponent<BattleScript>().Score = this.score; //Update lists. this.scenario.Battles.RemoveAt(0); this.battleReports.Add(report); }