public pAvailableEnemyTypes(uint id, float cost, eEnemyRoleDifficulty diff, eEnemyRole role, float weight) { enemyID = id; enemyCost = cost; difficulty = diff; this.role = role; this.weight = weight; }
static EnemyRoleData CreateCustomData(eEnemyRoleDifficulty difficulty, eEnemyRole role, float cost, uint enemyId, float weightMult = 1) { EnemyRoleData data = new EnemyRoleData(); data.Difficulty = difficulty; data.Enemy = enemyId; data.Cost = cost; data.Role = role; data.Weight = Mathf.Min(2f, Mathf.Max(0.2f, UnityEngine.Random.value * weightMult)); return(data); }
private static eEnemyGroupType GetValidGroupTypeFromRole(eEnemyRole role) { if (role.Equals(eEnemyRole.Scout)) { return(eEnemyGroupType.Patrol); } if (role.Equals(eEnemyRole.Lurker)) { return(eEnemyGroupType.PureSneak); } return(eEnemyGroupType.Hibernate); }
private static void SetupRandomizedGroupsByIDs(LG_PopulateArea area, Dictionary <int, float> enemyIDs) { if (enemyIDs == null || enemyIDs.Count < 1) { LoggerWrapper.Log("No enemy population tweaks, aborting setup..."); return; } HashSet <pAvailableEnemyTypes> validTypes; validTypes = GetValidGroups(enemyIDs); Dictionary <pAvailableEnemyTypes, float> weightedGroups = SetupWeighting(validTypes, enemyIDs); pAvailableEnemyTypes dataGroup = weightedGroups.RandomElementByWeight(e => e.Value).Key; LoggerWrapper.Log(dataGroup.ToString(), LogLevel.Debug); if (!enemyIDs.ContainsKey((int)dataGroup.enemyID)) { return; } area.m_groupPlacement.groupData.Difficulty = dataGroup.difficulty; area.m_groupPlacement.groupData.Type = GetValidGroupTypeFromRole(dataGroup.role); foreach (EnemyGroupCompositionData enemyGroupCompositionData in area.m_groupPlacement.groupData.Roles) { eEnemyRole role = dataGroup.role; EnsureValidRole(area.m_groupPlacement.groupData.Type, area.m_groupPlacement.groupData.Difficulty, ref role); enemyGroupCompositionData.Role = role; } LoggerWrapper.Log($"Setting enemyDataGroup: Diff:{area.m_groupPlacement.groupData.Difficulty} Role:{area.m_groupPlacement.groupData.Type} Type:{dataGroup.role}", LogLevel.Debug); }
private static void EnsureValidRole(eEnemyGroupType type, eEnemyRoleDifficulty difficulty, ref eEnemyRole role) { if (type == eEnemyGroupType.Patrol) { role = eEnemyRole.Scout; } }