public override void Start() { var randomMap = RandomInstance.getInstance(this); var map = World.StorageManager.Spacemaps[randomMap.Next(1, 29)]; map.CreateBinaryBot(Vector.Random(map), true); }
public override void Reward() { base.Reward(); AlmostNoNpcsLeft -= LowGate_AlmostNoNpcsLeft; var randomInstance = RandomInstance.getInstance(this); var num = randomInstance.NextDouble(); foreach (var joined in JoinedPlayers.Values) { var currencyReward = new Reward(new Dictionary <RewardType, int> { { RewardType.CREDITS, 1250000 }, { RewardType.URIDIUM, 12500 } }); var ammoReward = new Reward(RewardType.AMMO, Item.Find("ammunition_laser_ucb-100"), 12500); var specialReward = new characters.Reward(RewardType.ITEM, Item.Find("equipment_weapon_laser_lf-4"), 1); if (num < 0.03) { specialReward.ParseRewards(joined); } //TODO MoveOut(joined); ammoReward.ParseRewards(joined); currencyReward.ParseRewards(joined); if (joined.OwnedGates.ContainsKey(Id)) { joined.OwnedGates.TryRemove(Id, out _); } } JoinedPlayers.Clear(); }
public void RandomiseReward() { var randomInstance = RandomInstance.getInstance(this); var num = randomInstance.NextDouble(); if (num < 0.005) { BoxReward = new Reward(RewardType.ITEM, Item.Find("equipment_weapon_laser_lf-4"), 1); } //else if (num < 0.02) TODO: add design rewards //{ // BoxReward = new Reward(RewardType.DESIGN, Item.Find("ship_goliath_design_solace"), 1); //} //else if (num < 0.03) //{ // BoxReward = new Reward(RewardType.DESIGN, Item.Find("ship_vengeance_design_lightning"), 1); //} else if (num < 0.06) { BoxReward = new Reward(RewardType.ITEM, Item.Find("equipment_weapon_laser_lf-3"), 1); } else if (num < 0.07) { BoxReward = new Reward(RewardType.ITEM, Item.Find("equipment_generator_shield_sg3n-b02"), 1); } else if (num < 0.17) { BoxReward = new Reward(RewardType.ITEM, Item.Find("equipment_generator_speed_g3n-7900"), 1); } else if (num < 0.2) { BoxReward = new Reward(new Dictionary <RewardType, int> { { RewardType.GALAXY_GATES_ENERGY, 16 } }); BoxReward.Rewards.Add((short)0); BoxReward.Rewards.Add(RewardType.AMMO); BoxReward.Rewards.Add(Item.Find("ammunition_laser_rsb-75")); BoxReward.Rewards.Add(1024); } else if (num < 0.3) { BoxReward = new Reward(RewardType.URIDIUM, 320); BoxReward.Rewards.Add((short)0); BoxReward.Rewards.Add(RewardType.AMMO); BoxReward.Rewards.Add(Item.Find("ammunition_laser_ucb-100")); BoxReward.Rewards.Add(500); } else { BoxReward = new Reward(RewardType.URIDIUM, 43); BoxReward.Rewards.Add((short)0); BoxReward.Rewards.Add(RewardType.AMMO); BoxReward.Rewards.Add(Item.Find("ammunition_rocketlauncher_sar-02")); BoxReward.Rewards.Add(150); BoxReward.Rewards.Add((short)0); BoxReward.Rewards.Add(RewardType.AMMO); BoxReward.Rewards.Add(Item.Find("ammunition_rocketlauncher_hstrm-01")); BoxReward.Rewards.Add(64); } }
public static List <T> Sample <T>(this IList <T> self, bool replacement = false, int sampleSize = -1, IRandom random = null) { if (sampleSize == -1) { sampleSize = self.Count; } if (replacement) { random ??= RandomInstance.Get(); var result = new List <T>(sampleSize); for (var i = 0; i < sampleSize; ++i) { var j = random.Next(self.Count); result.Add(self[j]); } return(result); } else { if (sampleSize > self.Count) { throw new ArgumentOutOfRangeException("sampleSize", "Sample size must not be larger than the size of the population without replacement."); } var result = Shuffle(self, random); if (sampleSize == self.Count) { return(result); } return(result.Take(sampleSize).ToList()); } }
private async void ListenerEventWorker() { var EventID = RandomInstance.Next(); ListenerEventID = EventID; await Task.Delay(500); if (EventID != ListenerEventID) { return; // Another event called } var res = new ResourceModel { Date = DateTime.Now, Fuel = CurrentFuel, Ammo = CurrentAmmo, Steel = CurrentSteel, Bauxite = CurrentBauxite, RepairBucket = CurrentRepairBucket, DevelopmentMaterial = CurrentDevelopmentMaterial, InstantConstruction = CurrentInstantConstruction, ImprovementMaterial = CurrentImprovementMaterial }; var x = ResourceList.ToList(); x.Add(res); ResourceList = x.ToArray(); ResetChart(GetDaysFromPeriod()); }
private object Invalidize(string fieldName, object value, Type type) { if (fieldName.Equals("path", StringComparison.InvariantCultureIgnoreCase)) { return("45/shapes"); } if (type == typeof(string)) { return((string)value + "invalidValue"); } if (type == typeof(int)) { return(593); } if (type == typeof(List <int>)) { return(new List <int> { 593 }); } if (type.IsEnum) { Array values = Enum.GetValues(type); return(values.GetValue(RandomInstance.Next(values.Length))); } return(null); }
public void TestFrontendCall() { var config = new ConfigParams(tokenId: "10"); var er = new EnrichmentWrapper(config); var instance = RandomInstance.RandomizeCoordinatesAndSave(20, config, false); er.SpatialmHGWrapper(instance.Item1.Zip(instance.Item2, (a, b) => new Tuple <double, double, bool>(a.GetDimension(0), a.GetDimension(1), b)).ToList()); }
private async void ListenerEventWorker() { var EventID = RandomInstance.Next(); ListenerEventID = EventID; await Task.Delay(500); if (EventID != ListenerEventID) { return; // Another event called } string zItemsPath = ResourceCachePath; var res = new ResourceModel { Date = DateTime.Now, Fuel = CurrentFuel, Ammo = CurrentAmmo, Steel = CurrentSteel, Bauxite = CurrentBauxite, RepairBucket = CurrentRepairBucket, DevelopmentMaterial = CurrentDevelopmentMaterial, InstantConstruction = CurrentInstantConstruction, ImprovementMaterial = CurrentImprovementMaterial }; CriticalSection("ResourceChartWrite", () => { int tries = 5; if ((DateTime.Now - LatestWritten).TotalSeconds < 60.0) { return; } while (tries > 0) { try { using (FileStream fs = new FileStream(zItemsPath, FileMode.Append)) { CSV.Write(fs, res.Date.ToString("yyyy-MM-dd HH:mm:ss"), res.Fuel, res.Ammo, res.Steel, res.Bauxite, res.RepairBucket, res.DevelopmentMaterial, res.InstantConstruction, res.ImprovementMaterial ); } break; } catch (IOException) { tries--; } catch (Exception) { break; } } }); }
public static Vector GetPosOnCircle(Vector circleCenter, int radius) { var randomInstance = RandomInstance.getInstance(circleCenter); var a = randomInstance.Next(0, 360); var calculateX = circleCenter.X + Convert.ToInt32(radius * Math.Cos(a / (180 / Math.PI))); var calculateY = circleCenter.Y + Convert.ToInt32(radius * Math.Sin(a / (180 / Math.PI))); return(new Vector(calculateX, calculateY)); }
public static AuthorizationState GetNewAuth() => new AuthorizationState() { State = RandomInstance.GetRandomString(20), DidReceiveCallback = false, LinkHandoutTime = DateTime.Now, CallbackReceiveTime = null, Code = null };
internal void Create(Spacemap spacemap, int vwId, Vector vector, int r) { var random = RandomInstance.getInstance(this); foreach (var npc in Npcs) { spacemap.CreateNpc(npc.Ship, AILevels.GALAXY_GATES, false, 0, Vector.GetPosOnCircle(vector, random.Next(0, 360), r), 0, npc.NamePrefix + " " + (Id + 1), npc.Ship.Reward.Multiply(npc.Multiplier)); } }
/// <summary> /// Creates new authorization code awaiter /// </summary> /// <returns></returns> public static AuthorizationState GetNewAuth() { return(new AuthorizationState { State = RandomInstance.GetRandomString(50), DidReceiveCallback = false, LinkHandoutTime = DateTime.UtcNow, CallbackReceiveTime = null, Code = null }); }
private int GetNextNumber(int totalDice) { int totalValue = 0; for (int i = 0; i < totalDice; i++) { totalValue += RandomInstance.Next(1, NUM_SIDES + 1); } return(totalValue); }
public static void ShuffleFill <T>(this IList <T> self, IRandom random = null) { random ??= RandomInstance.Get(); for (var i = 0; i < self.Count; ++i) { var j = random.Next(i + 1); var temp = self[i]; self[i] = self[j]; self[j] = temp; } }
public void RandomiseReward() { var randomInstance = RandomInstance.getInstance(this); var num = randomInstance.NextDouble(); if (num < 0.005) { BoxReward = new Reward(RewardType.URIDIUM, 32); BoxReward.Rewards.Add((short)0); BoxReward.Rewards.Add(RewardType.AMMO); BoxReward.Rewards.Add(Item.Find("ammunition_laser_ucb-100")); BoxReward.Rewards.Add(395); } else if (num < 0.02) { BoxReward = new Reward(RewardType.CREDITS, 50000); BoxReward.Rewards.Add((short)0); BoxReward.Rewards.Add(RewardType.AMMO); BoxReward.Rewards.Add(Item.Find("ammunition_laser_rsb-75")); BoxReward.Rewards.Add(100); } else if (num < 0.1) { BoxReward = new Reward(RewardType.CREDITS, 7500); BoxReward.Rewards.Add((short)0); BoxReward.Rewards.Add(RewardType.AMMO); BoxReward.Rewards.Add(Item.Find("ammunition_rocketlauncher_sar-02")); BoxReward.Rewards.Add(6); BoxReward.Rewards.Add((short)0); BoxReward.Rewards.Add(RewardType.AMMO); BoxReward.Rewards.Add(Item.Find("ammunition_rocketlauncher_hstrm-01")); BoxReward.Rewards.Add(4); } else if (num < 0.2) { BoxReward = new Reward(new Dictionary <RewardType, int> { { RewardType.GALAXY_GATES_ENERGY, 1 } }); BoxReward.Rewards.Add((short)0); BoxReward.Rewards.Add(RewardType.AMMO); BoxReward.Rewards.Add(Item.Find("ammunition_laser_mcb-25")); BoxReward.Rewards.Add(580); } else if (num < 0.3) { BoxReward = new Reward(RewardType.AMMO, Item.Find("ammunition_laser_mcb-50"), 150); } else { BoxReward = new Reward(RewardType.AMMO, Item.Find("ammunition_laser_mcb-25"), 250); } }
protected override void Reward(Player player) { try { Reward reward; if (CustomReward != null) { reward = CustomReward; } else { RewardType type; var orderedRewards = REWARDS.OrderBy(x => x.Chance).ToArray(); var random = RandomInstance.getInstance(this); //todo var n = random.NextDouble(); var potentialReward = orderedRewards.FirstOrDefault(x => x.Chance > n) ?? orderedRewards.Last(); if (Enum.TryParse(potentialReward.LootId, true, out type)) { reward = new Reward(type, potentialReward.Amount); } else { type = RewardType.ITEM; if (potentialReward.LootId.StartsWith("ammunition")) { type = RewardType.AMMO; } reward = new Reward(type, Item.Find(potentialReward.LootId), potentialReward.Amount); } } if (player.BoostedBoxRewards == 1) { reward.ParseRewards(player, 2); } else { reward.ParseRewards(player); } } catch (Exception e) { Console.WriteLine(e); Console.WriteLine(e.StackTrace); } }
public static Vector Random(Spacemap map, Vector min = null, Vector max = null) { if (min == null) { min = map.Limits[0]; } if (max == null) { max = map.Limits[1]; } var random = RandomInstance.getInstance(map); var posX = random.Next(min.X, max.X); var posY = random.Next(min.Y, max.Y); return(new Vector(posX, posY)); }
private int RandomizeDamage(int baseDmg, double hitProbability = 0.90) { var random = RandomInstance.getInstance(this); double randNums = random.NextDouble(); if (hitProbability - randNums < 0) { return(0); } var difference = (baseDmg * randNums) * 0.15; if (randNums > 0.5) { return((int)(baseDmg + difference)); } return((int)(baseDmg - difference)); }
private int RandomizeDamage(int damage) { if (damage <= 0) { return(0); } int max = damage + 1000; int min = damage - 1000; if (min < 0) { min = 0; } var random = RandomInstance.getInstance(this); int calculatedDamage = random.Next(max - min) + min; return(calculatedDamage); }
private void RandomiseDamage(PendingDamage pendingDamage) { if (pendingDamage.Attacker == null) { Out.WriteLog("Trying to randomise a damage without attacker", LogKeys.ERROR_LOG); throw new Exception("Trying to randomise a damage where there is no attacker"); } var attacker = pendingDamage.Attacker; var random = RandomInstance.getInstance(attacker).NextDouble(); if (pendingDamage.Damage > 0) { if (random > attacker.HitRate) { pendingDamage.Damage = 0; } else { var randomDamage = Convert.ToInt32(RandomInstance.getInstance(attacker).Next(pendingDamage.Damage - attacker.MaximalDamageReduce, attacker.MaximalDamageIncrease + pendingDamage.Damage)); pendingDamage.Damage = randomDamage; } } if (pendingDamage.AbsorbDamage > 0) { if (random > attacker.HitRate) { pendingDamage.AbsorbDamage = 0; } else { var randomDamage = Convert.ToInt32(RandomInstance.getInstance(attacker).Next(pendingDamage.AbsorbDamage - attacker.MaximalDamageReduce, attacker.MaximalDamageIncrease + pendingDamage.AbsorbDamage)); pendingDamage.AbsorbDamage = randomDamage; } } }
public static List <T> Shuffle <T>(this IList <T> self, IRandom random = null) { // ref: https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle var result = new List <T>(self.Count); random ??= RandomInstance.Get(); for (var i = 0; i < self.Count; ++i) { var j = random.Next(i + 1); if (j == i) { result.Add(self[i]); } else { result.Add(result[j]); result[j] = self[i]; } } return(result); }
/// <summary> /// 创建游戏 /// </summary> /// <param name="name"></param> /// <param name="username"></param> /// <param name="result"></param> /// <param name="MapSelection"></param> /// <param name="seed"></param> /// <param name="isTestGame"></param> /// <param name="isSocket"></param> /// <param name="IsRotatoMap"></param> /// <param name="version"></param> /// <returns></returns> private static bool CreateNewGame(string name, string[] username, out GaiaGame result, string MapSelection, int seed = 0, bool isTestGame = false, bool isSocket = false, bool IsRotatoMap = false, int version = 3) { if (m_dic.ContainsKey(name)) { result = null; return(false); } else { seed = seed == 0 ? RandomInstance.Next(int.MaxValue) : seed; result = new GaiaGame(username, name); result.IsTestGame = isTestGame; result.GameName = name; //游戏名称 result.IsSocket = isSocket; //即时制 result.IsRotatoMap = IsRotatoMap; //旋转地图 result.version = version; //开局的两条命令 result.Syntax(GameSyntax.setupmap + " " + MapSelection, out string log); result.Syntax(GameSyntax.setupGame + seed, out log); m_dic.Add(name, result); return(true); } }
public async void Trigger(TimeSpan delay) { await Task.Delay(delay); ActionExtension.InvokeInMainThreadAsync(() => { if (FancyHintAdorner.IsAnyShown) { DebugMessage($"{Id}: something else is being shown right now"); return; } if (Shown) { DebugMessage($"{Id}: already shown"); return; } if (!Available) { DebugMessage($"{Id}: not available"); return; } if (!OptionDebugMode && RandomInstance.NextDouble() > Probability) { DebugMessage($"{Id}: not now, random says so"); return; } if (_startupsDelay > StartupId) { DebugMessage($"{Id}: waiting for a next start up ({_startupsDelay}, current: {StartupId})"); return; } if (_triggersDelay-- > 0) { DebugMessage($"{Id}: waiting for a next ({_triggersDelay + 1}) trigger"); return; } if (!_forced && DateTime.Now - _lastShown < OptionMinimumDelay) { DebugMessage($"{Id}: gap ({DateTime.Now - _lastShown}, required: {OptionMinimumDelay}) is too low"); return; } var args = new ShowHintEventArgs(); Show?.Invoke(this, args); if (!args.Shown) { DebugMessage($"{Id}: cancelled!"); return; } DebugMessage($"{Id}: shown"); Shown = true; _lastShown = DateTime.Now; ValuesStorage.Set(KeyLastShown, _lastShown); }); }
private int RandomShip() { var random = RandomInstance.getInstance(this); return(POSSIBLE_SHIPS[random.Next(0, POSSIBLE_SHIPS.Length - 1)]); }
static void InitiateRandomResetTimer() { int randomId = 0; TickManager.Add(RandomInstance.getInstance(new object()), out randomId); }
/// <summary> /// Returns whether or not the datareader should be closed /// </summary> protected virtual bool ShouldCloseDataReader() { // Ignore commandCancelled, instead randomly close it 9/10 of the time return(RandomInstance.Next(10) != 0); }
/// <summary> /// Retrieves a random element from <paramref name="list"/>. /// </summary> /// <typeparam name="T"><see cref="List{T}"/> type</typeparam> /// <param name="list"><see cref="List{T}"/> from which to retrieve a random element</param> /// <returns>A random element</returns> public static T GetRandomElement <T>(this IList <T> list) { var i = RandomInstance.Next(list.Count); return(list[i]); }
public void RerollState() { State = RandomInstance.GetRandomString(20); }
/// <summary> /// Получить случайную подпись /// </summary> public ISignatureLibraryApp GetRandomSignature() => _signaturesLibrary.Count > 0 ? _signaturesLibrary.Values[RandomInstance.RandomNumber(_signaturesLibrary.Values.Count)] : null;