public static bool check_random_encounter(RandomEncounterQuery setup, RandomEncounter encounter) { if ((RandomRange(1, 20) == 1)) { var r = RandomRange(1, 3); if ((r == 1)) { encounter.Location = new locXY(470, 480); } else if ((r == 2)) { encounter.Location = new locXY(503, 478); } else { encounter.Location = new locXY(485, 485); } if ((check_predetermined_encounter(setup, encounter))) { return(true); } else if ((check_unrepeatable_encounter(setup, encounter))) { return(true); } else { return(check_repeatable_encounter(setup, encounter)); } } return(false); }
public static RandomEncounter LoadRandomEncounter(BinaryReader reader) { RandomEncounter enc = new RandomEncounter(); enc.PokemonID = reader.ReadInt32(); enc.Chance = reader.ReadSingle(); enc.Group = reader.ReadString(); return(enc); }
public static bool encounter_exists(RandomEncounterQuery setup, RandomEncounter encounter) { Logger.Info("Testing encounter_exists"); if (((setup.Type == RandomEncounterType.Resting))) { return(check_sleep_encounter(setup, encounter)); } else { return(check_random_encounter(setup, encounter)); } }
public override void OnWalkEnter(TileMetadata metadata, WorldState world, Point mapPos) { _latestMap = world.Map; _walkedOn = mapPos; _walkedOnTick = world.Game.TotalFixedUpdates; // if this map is a combat area we should just encounter enemies on every single tile if (!world.Map.Info.CombatArea) { RandomEncounter.TryRandomEncounter(world); } }
void LoadEncounters() { XmlNode RootXml = MainController.Global.LoadXmlFile("RandomEncounters"); foreach (XmlElement encounterelement in RootXml.ChildNodes) { RandomEncounter tempencounter = new RandomEncounter { name = (encounterelement["name"] != null) ? encounterelement["name"].InnerText : null, func = (encounterelement["function"] != null) ? encounterelement["function"].InnerText : null, scene = (encounterelement["scene"] != null) ? encounterelement["scene"].InnerText : null, turnstillrepeat = (encounterelement["turnstillrepeat"] != null) ? int.Parse(encounterelement["turnstillrepeat"].InnerText) : 0 }; } }
protected override void SetStringValue(string value) { var entries = value.Split(':'); if (!this.Validate(entries, $"Malformed battle event \"{value}\".", e => (e.Length == 37 || e.Length == 19) && e[0] == "battle")) { return; } var newEncounter = new RandomEncounter { StringValue = value }; this.Encounter = newEncounter; }
public static bool check_sleep_encounter(RandomEncounterQuery setup, RandomEncounter encounter) { if ((RandomRange(1, 10) == 1)) { encounter.Id = 4000; if ((SelectedPartyLeader.GetArea() == 1)) { return(false); } else if ((SelectedPartyLeader.GetArea() == 2)) { if ((SelectedPartyLeader.GetMap() == 5002)) { var enemy_list = new[] { (14057, 1, 3, 1), (14089, 2, 4, 1), (14291, 1, 4, 6), (14050, 2, 3, 1), (14094, 1, 2, 3), (14090, 2, 4, 1), (14056, 4, 9, 1), (14088, 1, 3, 1), (14047, 2, 4, 1), (14070, 2, 5, 1) };
//for the temp object will copy all stats in prefab of that goblin pre set public void AddMember(Entity ent) { this.name = ent.name; this.image = ent.image; this.chanceEncounter = ent.chanceEncounter; this.role = ent.role; this.weakness = ent.weakness; this.invulnerable = ent.invulnerable; this.weakness = ent.weakness; this.level = ent.level; this.hitPoints = ent.hitPoints; this.maxHitPoints = ent.maxHitPoints; this.damage = ent.damage; this.magicDamage = ent.magicDamage; this.specialDamage = ent.specialDamage; }
protected virtual void RollScene() { Encounter currentScene; //check trigger scenes, add them if not already in queue. foreach (var scene in triggerScenes) { if (scene.isActive && scene.isTriggered()) { triggered.Enqueue(scene); } } if (triggered.Count > 0) { currentScene = triggered.Dequeue(); } //if we have no triggers, check for bad luck prevention. else { //set up the picker as a fallback. Lottery <Encounter> picker = new Lottery <Encounter>(); //loop through the semi-randoms. foreach (var entry in semiRandomScenes) { //ignore inactives. if (!entry.Key.isActive) { continue; } //add any new items that are still active and proc our bad luck preventer. else if (entry.Value >= entry.Key.numEncountersBeforeRequiringThis && !badLuckPreventerScene.Contains(entry.Key)) { badLuckPreventerScene.Enqueue(entry.Key); } //only add them to the RNG lottery if we're actually going to use the RNG lottery - that is, we don't have any bad luck preventers taking priority. else if (badLuckPreventerScene.Count == 0) { picker.AddItem(entry.Key, entry.Key.chances); } } //do the first bad luck preventer if any exist. if (badLuckPreventerScene.Count > 0) { currentScene = badLuckPreventerScene.Dequeue(); } //if none exist else { //finish adding the entries to the RNG lottery. foreach (var scene in randomScenes) { if (scene.isActive) { picker.AddItem(scene, scene.chances); } } //select an entry from the lottery. currentScene = picker.Select(); } } //run the scene. currentScene.RunEncounter(); //if the scene is now complete, remove it from the hashset/dictionary that contains it. if (currentScene.isCompleted) { if (currentScene is TriggeredEncounter trigger) { triggerScenes.Remove(trigger); } else if (currentScene is SemiRandomEncounter semiRandom) { semiRandomScenes.Remove(semiRandom); semiRandomContainer.Remove(semiRandom); } else { RandomEncounter random = (RandomEncounter)currentScene; randomScenes.Remove(random); } } //if the current scene was semi-random, reset its bad luck preventer count. otherwise, //increment the bad luck preventer for each scene. foreach (var entry in semiRandomScenes.Keys) { if (entry == currentScene) { semiRandomScenes[entry] = 0; } else if (entry.isActive) { semiRandomScenes[entry]++; } } }
void Awake() { encounter = GetComponent <RandomEncounter>(); }
public static void SaveRandomEncounter(RandomEncounter enc, BinaryWriter writer) { writer.Write(enc.PokemonID); writer.Write(enc.Chance); writer.Write(enc.Group); }
public static void encounter_create(RandomEncounter encounter) { Logger.Info("Testing encounter_create with id={0}", encounter.Id); var is_sleep_encounter = false; LocAndOffsets location; if ((encounter.Id >= 4000)) { location = SelectedPartyLeader.GetLocationFull(); is_sleep_encounter = true; } else { location = new LocAndOffsets(encounter.Location); } var i = 0; var total = encounter.Enemies.Count; while ((i < total)) { var j = 0; while ((j < encounter.Enemies[i].Count)) { if (is_sleep_encounter) { var party = new List <GameObject>(); foreach (var pc in GameSystems.Party.PartyMembers) { if (!pc.IsUnconscious()) { party.Add(pc); } } if (party.Count > 0) { location = party[i % party.Count].GetLocationFull(); } } var npc = GameSystems.MapObject.CreateObject(encounter.Enemies[i].ProtoId, location); if ((npc != null)) { npc.TurnTowards(SelectedPartyLeader); if (((encounter.Id < 2000) || (encounter.Id >= 4000))) { npc.Attack(SelectedPartyLeader); npc.SetNpcFlag(NpcFlag.KOS); } } j = j + 1; } i = i + 1; } return; }
public void BattleStart(RandomEncounter rEncounter) { //isBoss = GameObject.FindGameObjectWithTag("Boss").GetComponent<EncounterInstance>().BossStage; numberOfEnemies = Random.Range(0, 3); //roles a random number between 0-2 on how many enemies you will encounter where 0 = 1 exploreCamera.SetActive(false); //sets exploration player camera off battleCamera.SetActive(true); //turns the battle camera on for a battle //encounteredEnemies = GetRandomEnemy(EnemiesInLocation(rEncounter)); //gets the enemy you will encounter //Debug.Log(encounteredEnemies.name); player.GetComponent <PlayerMove>().inCombat = true; //makes it so player cant move in combat if (player.GetComponent <PlayerMove>().inCombat) { gameObject.GetComponent <BattleStateManager>().enabled = true; audio.clip = otherClip; audio.Play(); } for (int i = 0; i < 3; i++) { //plPos = Instantiate(player.GetComponent<PlayerInfo>().allParty[i], playerBPosition[i].transform.position, Quaternion.identity) as GameObject; //places enemy in position 2 player.GetComponent <PlayerInfo>().allParty[i].transform.position = playerBPosition[i].transform.position; //gets the player and player name battleCamera.GetComponent <BattleUI>().partyName[2 - i].text = player.GetComponent <PlayerInfo>().allParty[i].GetComponent <Entity>().Name; if (GameObject.FindGameObjectWithTag("Boss").GetComponent <EncounterInstance>().BossStage == true) { enPos = Instantiate(allEnemies[i], enemyBPosition[i].transform.position, Quaternion.identity) as GameObject; //places random enemy in enemy position encounteredEnemies.Add(enPos); //adds Boss to list //gets the enemy targets name battleCamera.GetComponent <BattleUI>().targetName[i].text = i + 1 + ": " + enPos.GetComponent <Entity>().Name; StartCoroutine(DelaySpawn()); } /*else if (i <= numberOfEnemies && isBoss == false) * { * whichEnemy = Random.Range(0, 5); //roles a random number of which random enemy in list * //Debug.Log(encounteredEnemies[whichEnemy].name); * //enPos = Instantiate(encounteredEnemies[whichEnemy], enemyBPosition[i].transform.position, Quaternion.identity) as GameObject; * Debug.Log(allEnemies[whichEnemy].name); //states what random enemy it is * //encounteredEnemies.Add(allEnemies[whichEnemy]); * //encounteredEnemies[i] = allEnemies[whichEnemy]; * enPos = Instantiate(allEnemies[whichEnemy], enemyBPosition[i].transform.position, Quaternion.identity) as GameObject; //places random enemy in enemy position * encounteredEnemies.Add(enPos); //adds random range of enemies to list * //gets the enemy targets name * battleCamera.GetComponent<BattleUI>().targetName[i].text = enPos.GetComponent<Entity>().Name; * }*/ } /* * //rEncounter is based off of the tile and how it is set to uncommon, common, or epic and then the gameobjects themselves have encounter rates * encounteredEnemies = GetRandomEnemy(EnemiesInLocation(rEncounter)); //make this enemy random as well * * enPos = Instantiate(emptyPos2, enemyBPosition[0].transform.position, Quaternion.identity) as GameObject; //places enemy in position 2 * * enPos.transform.parent = enemyBPosition[0]; //places the sprite where the enemy position 2 is * tempEnt = enPos.AddComponent<Entity>() as Entity; //temp entity in which it will switch between different goblins based off of encounter rate * tempEnt.AddMember(GetRandomEnemy(EnemiesInLocation(rEncounter))); * enPos.GetComponent<SpriteRenderer>().sprite = encounteredEnemies.image; */ }
private static bool test(RandomEncounter encounter) { return(encounter.isActive && !encounter.isCompleted); }
public static bool AddRandomEncounter(RandomEncounter encounter) { return(randomEncounters.Add(encounter)); }