void HandleDoorTile(Tile tile) { sim.AddEvent(PlayerEvent.Info("Found a door")); var prompt = string.Format("Leave the room or look again?"); sim.AddEvent(PlayerEvent.PromptChoice(prompt, Choice.SwipeLeft("leave", "Leave"), Choice.SwipeRight("stay", "Stay"))); }
public void StartBattle(Mob mob) { sim.currentMob = mob; sim.player.lastBattleMove = null; sim.player.initiative = 0f; mob.initiative = 0f; sim.AddEvent(PlayerEvent.Info("! [" + mob.name + "]")); Continue(); }
void HandleInteractibleTile(Tile tile) { sim.AddEvent(PlayerEvent.Info("Found interactible")); var interactible = InteractibleStore.Find(tile.contentId); var prompt = string.Format("You see {0}", interactible.name); sim.AddEvent(PlayerEvent.PromptChoice(prompt, Choice.SwipeLeft("investigate", "Investigate"), Choice.SwipeRight("ignore", "Ignore"))); sim.discoveredObjects.Add(interactible.id); }
public void GainExperience() { var experienceProcessor = new ExperienceProcessor(sim.player, currentMob); var amount = experienceProcessor.ExperienceGain(); var ev = PlayerEvent.Info(string.Format("+{0} experience", amount)); var trigger = new Trigger(Trigger.Type.PlayerStatChange); //trigger.data[Trigger.statKey] = Stat.xp; trigger.data[Trigger.statChangeAmountKey] = amount; ev.Triggers.Add(trigger); sim.AddEvent(ev); }
public void Gold() { // Gold if (tpd.RollPercent(currentMob.goldChance)) { var goldGenerator = new GoldGenerator(sim.player, currentMob); var amount = goldGenerator.Mob(); var ev = PlayerEvent.Info(string.Format("{0} gold", amount)); var trigger = new Trigger(Trigger.Type.PlayerResourceChange); trigger.data[Trigger.resourceKey] = Constants.goldAttr; trigger.data[Trigger.resourceAmountKey] = amount; ev.Triggers.Add(trigger); sim.AddEvent(ev); } }
public void Continue() { if (!PlayerAlive()) { // hand player dead situation } if (!MobAlive()) { MobDeath(); Victory(); } var initiativeProcessor = new InitiativeProcessor(sim.player, currentMob); string nextMove = initiativeProcessor.NextMove(); if (nextMove == InitiativeProcessor.playerIdent) { var playerCombatProcessor = new PlayerCombatProcessor(sim); playerCombatProcessor.TakeAction(); } else { var mobCombatProcessor = new MobCombatProcessor(sim); mobCombatProcessor.TakeAction(); } if (iterationCount >= iterationLimit) { sim.AddEvent(PlayerEvent.Info("[DEV] Iteration limit reached! Something went wrong.")); } if (sim.requiresInput) { return; } else { Debug.Log("Iterating battle processor continue"); ++iterationCount; Continue(); } }
public void TakeTurn() { sim.AddEvent(PlayerEvent.Info("enemy turn...")); sim.EndGameTurn(); }
void TargetDoor() { sim.AddEvent(PlayerEvent.Info("Nothing intersting... heading for door")); }
public void MobDeath() { sim.AddEvent(PlayerEvent.Info(currentMob.name + " dies!")); }