/************************************************************************************************* *** Start *************************************************************************************************/ private void Start() { Score = 0; ScoreToSpeedUp = GaintToSpeedUp; difficultyManager = FindObjectOfType <Difficulty_Manager>(); }
private Difficulty_Manager() { instance = this; CalculateNewDifficultyFactor(); }
/// <summary> /// Refreshes melee and ranged mod probabilites. /// </summary> public void RefreshProbabilities() { (float certainty, float extraversion, float neurotisism) = PenStatsManager.GetInstance().GetMeanPen(PlayerManager.GetInstance().GetActivePlayers()); ////////////////////////////////////////////////////////////////////////////////////////////////////////// /// Ranged Modification Probabilities. ///////////////////////////////////////////////////////////////////////////////////////////////////////// float value = (float)ErrorFunction.Erf(Difficulty_Manager.GetInstance().GetDifficultyFactor() / 100) * 100; rangedModificationType.Find(x => x.GetItem().Equals("Attack_Damage_Modification")).SetValue(value);//Attack Damage Probability. List <Possibility> Basepos = new List <Possibility>(); //Base Probabilities for other Mods. float rBaseAR = (100 - value) / (rangedModificationType.Count - 1); float rBaseMS = (100 - value) / (rangedModificationType.Count - 1); float rBaseAS = (100 - value) / (rangedModificationType.Count - 1); float a = 10 / 2; float t = 1 / 2 + (extraversion / 200); float l = 1 / 2 + (neurotisism / 200); float pAR = (1 + certainty / 100) * (rBaseAR - a * certainty / 100) * t + (1 - t) - (2 * a * certainty / 100); //Calculate Attack Range Probability. float pMS = 2 * rBaseMS - pAR; //Calculate Movement Speed Probability. float pAS; float minPas = 10; float maxPas = 90; //Calculate Attack Speed Probability. if (l <= 0.5) { pAS = (1 - 2 * l) * minPas + 2 * l * rBaseAS; } else { pAS = 2 * (l - 1) * rBaseAS + (1 - 2 * (l - 1)) * maxPas; } pAS = rBaseAS * (1 - certainty / 100) + pAS * certainty / 100; float diff = rBaseAS - pAS;//Calculate difference between Base Pas and new Pas. float bonusPar = pAR * diff / (100 - rBaseAS); float bonusPms = pMS * diff / (100 - rBaseAS); rangedModificationType.Find(x => x.GetItem().Equals("Attack_Range_Modification")).SetValue(pAR + bonusPar); //Attack Range Probability. rangedModificationType.Find(x => x.GetItem().Equals("Movement_Speed_Modification")).SetValue(pMS + bonusPms); //Movement Speed Probability. rangedModificationType.Find(x => x.GetItem().Equals("Attack_Speed_Modification")).SetValue(pAS); //Attack Speed Probability. ////////////////////////////////////////////////////////////////////////////////////////////////////////// /// Melee Modification Probabilities. ///////////////////////////////////////////////////////////////////////////////////////////////////////// float mBaseAT = (float)ErrorFunction.Erf(Difficulty_Manager.GetInstance().GetDifficultyFactor() / 100) * 100; //Attack Damage Base Probability. float mBaseMS = (100 - meleeModificationType.Find(x => x.GetItem().Equals("Attack_Damage_Modification")).GetValue()) / (meleeModificationType.Count - 1); //Movement Speed Base Probability. float mBaseAS = (100 - meleeModificationType.Find(x => x.GetItem().Equals("Attack_Damage_Modification")).GetValue()) / (meleeModificationType.Count - 1); //Attack Speed Base Probability. float pMSmax = 33; //Movement Speed Max Probability. float pASmax = 33; //Attack Speed Max Probability. float pADmax = 66; //Attack Damage Max Probability. pMS = mBaseMS - t * (pMSmax - mBaseMS); pAS = mBaseAS + l * (pASmax - mBaseAS); float pAD = mBaseAT * (certainty / 100) + (1 - certainty / 100) * pADmax; meleeModificationType.Find(x => x.GetItem().Equals("Attack_Damage_Modification")).SetValue(pAD); //Attack Damage Probability. meleeModificationType.Find(x => x.GetItem().Equals("Movement_Speed_Modification")).SetValue(pMS); //Movement Speed Probability. meleeModificationType.Find(x => x.GetItem().Equals("Attack_Speed_Modification")).SetValue(pAS); //Attack Speed Probability. }
public IEnumerator SpawnEnemies() { totalEnemies = (int)Math.Ceiling(room.Tiles_number_x * room.Tiles_number_z * 0.8f * Difficulty_Manager.GetInstance().GetDifficultyFactor() / 100); totalActiveEnemies = totalEnemies; //(int)Math.Ceiling(0.2f * totalEnemies); for later use numberOfWaves = 1; //(int)Math.Ceiling((float)totalEnemies / totalActiveEnemies); for later use int currentWave = 0; int remainingEnemies = totalEnemies; while (currentWave <= numberOfWaves) { currentWave++; waveFinished = false; if (remainingEnemies - totalActiveEnemies >= 0) { SpawnWave(totalActiveEnemies); } else { SpawnWave(remainingEnemies); } yield return(new WaitUntil(() => waveFinished)); } Battle_Manager.GetInstance().RemoveBattle(this); }
/************************************************************************************************* *** Start *************************************************************************************************/ private void Start() { isRotating = false; difficultyManager = FindObjectOfType <Difficulty_Manager>(); q_RotationObjetive = gameObject.transform.rotation; }