public DestroyBuildingUidCondition(ConditionVO vo, IConditionParent parent) : base(vo, parent) { this.buildingMatchUid = this.prepareArgs[1].ToLower(); this.any = (this.buildingMatchUid == "any"); this.buildingsDestroyed = 0; this.buildingsToDestroy = 0; string text = this.prepareArgs[0]; if (text.Contains("%")) { this.byPercent = true; text = text.Substring(0, text.Length - 1); int percent = Convert.ToInt32(text); if (this.any && this.byPercent) { this.buildingsToDestroy = percent; return; } EntityController entityController = Service.EntityController; NodeList <BuildingNode> nodeList = entityController.GetNodeList <BuildingNode>(); int num = 0; for (BuildingNode buildingNode = nodeList.Head; buildingNode != null; buildingNode = buildingNode.Next) { if (this.IsBuildingValid(buildingNode.BuildingComp)) { num++; } } this.buildingsToDestroy = IntMath.GetPercent(percent, num); } else { this.buildingsToDestroy = Convert.ToInt32(text); } }
public DestroyBuildingTypeCondition(ConditionVO vo, IConditionParent parent) : base(vo, parent) { this.buildingMatchType = StringUtils.ParseEnum <BuildingType>(this.prepareArgs[1]); this.any = (this.buildingMatchType == BuildingType.Any); this.buildingsDestroyed = 0; this.buildingsToDestroy = 0; if (!this.prepareArgs[0].Contains("%")) { this.buildingsToDestroy = Convert.ToInt32(this.prepareArgs[0], CultureInfo.InvariantCulture); return; } this.byPercent = true; string text = this.prepareArgs[0]; text = text.Substring(0, text.get_Length() - 1); int percent = Convert.ToInt32(text, CultureInfo.InvariantCulture); if (this.any && this.byPercent) { this.buildingsToDestroy = percent; return; } EntityController entityController = Service.Get <EntityController>(); NodeList <BuildingNode> nodeList = entityController.GetNodeList <BuildingNode>(); int num = 0; for (BuildingNode buildingNode = nodeList.Head; buildingNode != null; buildingNode = buildingNode.Next) { if (this.IsBuildingValid(buildingNode.BuildingComp)) { num++; } } this.buildingsToDestroy = IntMath.GetPercent(percent, num); }
public void ChildFailed(AbstractCondition child) { ConditionVO conditionVo = child.GetConditionVo(); child.Destroy(); this.Failures.Add(conditionVo.Uid); this.events.SendEvent(EventId.VictoryConditionFailure, conditionVo); }
public EatResponse OnEvent(EventId id, object cookie) { if (id == EventId.VictoryConditionSuccess) { ConditionVO conditionVO = (ConditionVO)cookie; if (conditionVO.Uid.ToLower() == this.prepareArgs[0].ToLower()) { this.parent.SatisfyTrigger(this); } } return(EatResponse.NotEaten); }
public void ChildSatisfied(AbstractCondition child) { if (child == this.failureCondition) { return; } ConditionVO conditionVo = child.GetConditionVo(); child.Destroy(); this.Successes.Add(conditionVo.Uid); this.events.SendEvent(EventId.VictoryConditionSuccess, conditionVo); }
public List <ConditionVO> GetDefaultConditions() { List <ConditionVO> list = new List <ConditionVO>(); ConditionVO item = this.sdc.Get <ConditionVO>("DestroyHQ"); list.Add(item); item = this.sdc.Get <ConditionVO>("DestroyHalfBuildings"); list.Add(item); item = this.sdc.Get <ConditionVO>("DestroyAllBuildings"); list.Add(item); return(list); }
public RetainBuildingCondition(ConditionVO vo, IConditionParent parent, ConditionMatchType matchType) : base(vo, parent) { this.matchType = matchType; this.buildingId = this.prepareArgs[1]; this.any = (this.buildingId == "any"); if (matchType == ConditionMatchType.Uid) { this.level = Service.StaticDataController.Get <BuildingTypeVO>(this.buildingId).Lvl; } else if (!this.any && this.prepareArgs.Length > 2) { this.level = Convert.ToInt32(this.prepareArgs[2]); } else { this.level = 0; } this.buildingsDestroyed = 0; this.buildingsToDestroy = 0; EntityController entityController = Service.EntityController; NodeList <BuildingNode> nodeList = entityController.GetNodeList <BuildingNode>(); BuildingNode buildingNode = nodeList.Head; int num = 0; while (buildingNode != null) { if (this.IsBuildingValid(buildingNode.BuildingComp)) { num++; } buildingNode = buildingNode.Next; } if (this.prepareArgs[0].Contains("%")) { this.byPercent = true; string text = this.prepareArgs[0]; text = text.Substring(0, text.Length - 1); int percent = 100 - Convert.ToInt32(text); if (this.any && this.byPercent) { this.buildingsToDestroy = percent; return; } this.buildingsToDestroy = IntMath.GetPercent(percent, num); } else { this.buildingsToDestroy = num - Convert.ToInt32(this.prepareArgs[0]); } }
public AbstractCondition(ConditionVO vo, IConditionParent parent) { this.events = Service.Get <EventManager>(); this.vo = vo; this.parent = parent; if (!string.IsNullOrEmpty(vo.PrepareString)) { this.prepareArgs = vo.PrepareString.Split(new char[] { '|' }); return; } this.prepareArgs = new string[0]; }
public OwnBuildingCondition(ConditionVO vo, IConditionParent parent, ConditionMatchType matchType) : base(vo, parent) { this.threshold = Convert.ToInt32(this.prepareArgs[0], CultureInfo.InvariantCulture); this.buildingId = this.prepareArgs[1]; this.matchType = matchType; this.any = (this.buildingId == "any"); if (matchType == ConditionMatchType.Uid) { this.level = Service.Get <IDataController>().Get <BuildingTypeVO>(this.buildingId).Lvl; return; } if (!this.any && this.prepareArgs.Length > 2) { this.level = Convert.ToInt32(this.prepareArgs[2], CultureInfo.InvariantCulture); return; } this.level = 0; }
public TrainUnitCondition(ConditionVO vo, IConditionParent parent, int startingValue, ConditionMatchType matchType) : base(vo, parent) { this.matchType = matchType; this.unitMatch = this.prepareArgs[1]; this.unitsToTrain = Convert.ToInt32(this.prepareArgs[0]); this.unitsTrained = startingValue; if (this.unitMatch == "any") { this.any = true; } if (matchType == ConditionMatchType.Uid) { this.level = Service.StaticDataController.Get <TroopTypeVO>(this.unitMatch).Lvl; } else if (!this.any) { this.level = Convert.ToInt32(this.prepareArgs[2]); } }
public OwnBuildingCondition(ConditionVO vo, IConditionParent parent, ConditionMatchType matchType) : base(vo, parent) { this.threshold = Convert.ToInt32(this.prepareArgs[0]); this.buildingId = this.prepareArgs[1]; this.matchType = matchType; this.any = (this.buildingId == "any"); if (matchType == ConditionMatchType.Uid) { this.level = Service.StaticDataController.Get <BuildingTypeVO>(this.buildingId).Lvl; } else if (!this.any && this.prepareArgs.Length > 2) { this.level = Convert.ToInt32(this.prepareArgs[2]); } else { this.level = 0; } }
public RetainUnitCondition(ConditionVO vo, IConditionParent parent, ConditionMatchType matchType) : base(vo, parent) { this.matchType = matchType; this.unitMatchId = this.prepareArgs[1]; this.unitsToKill = Convert.ToInt32(this.prepareArgs[0], CultureInfo.InvariantCulture); this.unitsKilled = 0; this.any = (this.unitMatchId == "any"); if (matchType == ConditionMatchType.Uid) { this.level = Service.Get <IDataController>().Get <TroopTypeVO>(this.unitMatchId).Lvl; return; } if (!this.any && this.prepareArgs.Length > 2) { this.level = Convert.ToInt32(this.prepareArgs[2], CultureInfo.InvariantCulture); return; } this.level = 0; }
public RetainUnitCondition(ConditionVO vo, IConditionParent parent, ConditionMatchType matchType) : base(vo, parent) { this.matchType = matchType; this.unitMatchId = this.prepareArgs[1]; this.unitsToKill = Convert.ToInt32(this.prepareArgs[0]); this.unitsKilled = 0; this.any = (this.unitMatchId == "any"); if (matchType == ConditionMatchType.Uid) { this.level = Service.StaticDataController.Get <TroopTypeVO>(this.unitMatchId).Lvl; } else if (!this.any && this.prepareArgs.Length > 2) { this.level = Convert.ToInt32(this.prepareArgs[2]); } else { this.level = 0; } }
public TrainUnitCondition(ConditionVO vo, IConditionParent parent, int startingValue, ConditionMatchType matchType) : base(vo, parent) { this.matchType = matchType; this.unitMatch = this.prepareArgs[1]; this.unitsToTrain = Convert.ToInt32(this.prepareArgs[0], CultureInfo.InvariantCulture); this.unitsTrained = startingValue; if (this.unitMatch == "any") { this.any = true; } if (matchType == ConditionMatchType.Uid) { this.level = Service.Get <IDataController>().Get <TroopTypeVO>(this.unitMatch).Lvl; return; } if (!this.any) { this.level = Convert.ToInt32(this.prepareArgs[2], CultureInfo.InvariantCulture); } }
public void GetMissionProgress(CampaignMissionVO mission, out int current, out int total) { if (!this.missions.ContainsKey(mission.Uid)) { current = 0; total = 1; } current = 0; total = 0; for (int i = 0; i < mission.Conditions.Count; i++) { Dictionary <string, int> counters = this.missions[mission.Uid].Counters; ConditionVO conditionVO = mission.Conditions[i]; int startingValue = (counters != null && counters.ContainsKey(conditionVO.Uid)) ? counters[conditionVO.Uid] : 0; AbstractCondition abstractCondition = ConditionFactory.GenerateCondition(conditionVO, null, startingValue); int num; int num2; abstractCondition.GetProgress(out num, out num2); current += num; total += num2; abstractCondition.Destroy(); } }
public void ActivateFailureCondition(ConditionVO condition) { this.failureCondition = ConditionFactory.GenerateCondition(condition, this); this.failureCondition.Start(); }
public DegenerateCondition(ConditionVO vo, IConditionParent parent) : base(vo, parent) { }
public DeployUnitTypeCondition(ConditionVO vo, IConditionParent parent) : base(vo, parent) { this.unitMatchType = StringUtils.ParseEnum <TroopType>(this.prepareArgs[1]); this.unitsToDeploy = Convert.ToInt32(this.prepareArgs[0], CultureInfo.InvariantCulture); this.unitsDeployed = 0; }
public CountEventsCondition(ConditionVO vo, IConditionParent parent, int startingValue, string overrideEvent) : base(vo, parent) { this.eventsCounted = startingValue; this.eventsThreshold = Convert.ToInt32(this.prepareArgs[0], CultureInfo.InvariantCulture); this.releventEvent = StringUtils.ParseEnum <EventId>(overrideEvent); }
public OwnResourceCondition(ConditionVO vo, IConditionParent parent) : base(vo, parent) { this.resourceKey = this.prepareArgs[1]; this.threshold = Convert.ToInt32(this.prepareArgs[0], CultureInfo.InvariantCulture); }
public static AbstractCondition GenerateCondition(ConditionVO vo, IConditionParent parent) { return(ConditionFactory.GenerateCondition(vo, parent, 0)); }
public static AbstractCondition GenerateCondition(ConditionVO vo, IConditionParent parent, int startingValue) { AbstractCondition result; try { string conditionType = vo.ConditionType; switch (conditionType) { case "DestroyBuildingType": result = new DestroyBuildingTypeCondition(vo, parent); return(result); case "DestroyBuildingId": result = new DestroyBuildingIdCondition(vo, parent); return(result); case "DestroyBuildingUid": result = new DestroyBuildingUidCondition(vo, parent); return(result); case "DestroyUnitType": result = new DestroyUnitTypeCondition(vo, parent); return(result); case "DestroyUnitId": result = new DestroyUnitIdCondition(vo, parent); return(result); case "DestroyUnitUid": result = new DestroyUnitUidCondition(vo, parent); return(result); case "RetainBuildingType": case "RetainBuildingTypeLevel": result = new RetainBuildingCondition(vo, parent, ConditionMatchType.Type); return(result); case "RetainBuildingIdLevel": result = new RetainBuildingCondition(vo, parent, ConditionMatchType.Type); return(result); case "RetainBuildingUid": result = new RetainBuildingCondition(vo, parent, ConditionMatchType.Type); return(result); case "RetainUnitTypeLevel": result = new RetainUnitCondition(vo, parent, ConditionMatchType.Type); return(result); case "RetainUnitIdLevel": result = new RetainUnitCondition(vo, parent, ConditionMatchType.Id); return(result); case "RetainUnitUid": result = new RetainUnitCondition(vo, parent, ConditionMatchType.Uid); return(result); case "OwnBuildingUid": result = new OwnBuildingCondition(vo, parent, ConditionMatchType.Uid); return(result); case "OwnBuildingIdLevel": result = new OwnBuildingCondition(vo, parent, ConditionMatchType.Id); return(result); case "OwnBuildingTypeLevel": result = new OwnBuildingCondition(vo, parent, ConditionMatchType.Type); return(result); case "OwnUnitUid": result = new OwnUnitCondition(vo, parent, ConditionMatchType.Uid, TroopType.Infantry); return(result); case "OwnUnitIdLevel": result = new OwnUnitCondition(vo, parent, ConditionMatchType.Id, TroopType.Infantry); return(result); case "OwnUnitTypeLevel": result = new OwnUnitCondition(vo, parent, ConditionMatchType.Type, TroopType.Infantry); return(result); case "OwnHeroUid": result = new OwnUnitCondition(vo, parent, ConditionMatchType.Uid, TroopType.Hero); return(result); case "OwnHeroIdLevel": result = new OwnUnitCondition(vo, parent, ConditionMatchType.Id, TroopType.Hero); return(result); case "OwnHeroTypeLevel": result = new OwnUnitCondition(vo, parent, ConditionMatchType.Type, TroopType.Hero); return(result); case "OwnResource": result = new OwnResourceCondition(vo, parent); return(result); case "DeployUnitId": result = new DeployUnitIdCondition(vo, parent); return(result); case "DeployUnitType": result = new DeployUnitTypeCondition(vo, parent); return(result); case "DeployUnitUid": result = new DeployUnitUidCondition(vo, parent); return(result); case "CountEvents": result = new CountEventsCondition(vo, parent, startingValue); return(result); case "CollectCurrency": result = new CollectCurrencyCondition(vo, parent, startingValue); return(result); case "LootCurrency": result = new LootCurrencyCondition(vo, parent, startingValue); return(result); case "PvpStart": result = new CountEventsCondition(vo, parent, startingValue, "pvp_battle_started"); return(result); case "PvpWin": result = new CountEventsCondition(vo, parent, startingValue, "pvp_battle_won"); return(result); case "TrainUnitUid": result = new TrainUnitCondition(vo, parent, startingValue, ConditionMatchType.Uid); return(result); case "TrainUnitIdLevel": result = new TrainUnitCondition(vo, parent, startingValue, ConditionMatchType.Id); return(result); case "TrainUnitTypeLevel": result = new TrainUnitCondition(vo, parent, startingValue, ConditionMatchType.Type); return(result); case "TrainHeroUid": result = new TrainUnitCondition(vo, parent, startingValue, ConditionMatchType.Uid); return(result); case "TrainHeroIdLevel": result = new TrainUnitCondition(vo, parent, startingValue, ConditionMatchType.Id); return(result); case "TrainHeroTypeLevel": result = new TrainUnitCondition(vo, parent, startingValue, ConditionMatchType.Type); return(result); } Service.Logger.ErrorFormat("Unrecognized condition {0} in {1}", new object[] { vo.ConditionType, vo.Uid }); result = new DegenerateCondition(vo, parent); } catch (Exception ex) { Service.Logger.ErrorFormat("Invalid condition detected in uid {0}. {1}:{2}", new object[] { vo.Uid, vo.ConditionType, vo.PrepareString }); throw ex; } return(result); }
public LootCurrencyCondition(ConditionVO vo, IConditionParent parent, int startingValue) : base(vo, parent) { this.currencyLooted = startingValue; this.threshold = Convert.ToInt32(this.prepareArgs[0]); this.currencyType = StringUtils.ParseEnum <CurrencyType>(this.prepareArgs[1]); }
public CollectCurrencyCondition(ConditionVO vo, IConditionParent parent, int startingValue) : base(vo, parent) { this.currencyCollected = startingValue; this.threshold = Convert.ToInt32(this.prepareArgs[0], CultureInfo.InvariantCulture); this.currencyType = StringUtils.ParseEnum <CurrencyType>(this.prepareArgs[1]); }
public DestroyUnitUidCondition(ConditionVO vo, IConditionParent parent) : base(vo, parent) { this.unitMatchUid = this.prepareArgs[1]; this.unitsToKill = Convert.ToInt32(this.prepareArgs[0]); this.unitsKilled = 0; }
public DeployUnitIdCondition(ConditionVO vo, IConditionParent parent) : base(vo, parent) { this.unitMatchId = this.prepareArgs[1]; this.unitsToDeploy = Convert.ToInt32(this.prepareArgs[0], CultureInfo.InvariantCulture); this.unitsDeployed = 0; }
public DestroyUnitTypeCondition(ConditionVO vo, IConditionParent parent) : base(vo, parent) { this.unitMatchType = StringUtils.ParseEnum <TroopType>(this.prepareArgs[1]); this.unitsToKill = Convert.ToInt32(this.prepareArgs[0]); this.unitsKilled = 0; }
public CountEventsCondition(ConditionVO vo, IConditionParent parent, int startingValue) : base(vo, parent) { this.eventsCounted = startingValue; this.eventsThreshold = Convert.ToInt32(this.prepareArgs[0]); this.releventEvent = StringUtils.ParseEnum <EventId>(this.prepareArgs[1]); }
public static AbstractCondition GenerateCondition(ConditionVO vo, IConditionParent parent, int startingValue) { AbstractCondition result; try { string conditionType = vo.ConditionType; uint num = < PrivateImplementationDetails >.ComputeStringHash(conditionType); if (num <= 1623103722u) { if (num <= 832100428u) { if (num <= 163493600u) { if (num <= 105823299u) { if (num != 64621872u) { if (num != 105823299u) { goto IL_77A; } if (!(conditionType == "PvpStart")) { goto IL_77A; } result = new CountEventsCondition(vo, parent, startingValue, "pvp_battle_started"); return(result); } else { if (!(conditionType == "DestroyBuildingId")) { goto IL_77A; } result = new DestroyBuildingIdCondition(vo, parent); return(result); } } else if (num != 123671498u) { if (num != 163493600u) { goto IL_77A; } if (!(conditionType == "DeployUnitType")) { goto IL_77A; } result = new DeployUnitTypeCondition(vo, parent); return(result); } else if (!(conditionType == "RetainBuildingTypeLevel")) { goto IL_77A; } } else if (num <= 520648309u) { if (num != 501321751u) { if (num != 520648309u) { goto IL_77A; } if (!(conditionType == "DeployUnitId")) { goto IL_77A; } result = new DeployUnitIdCondition(vo, parent); return(result); } else { if (!(conditionType == "OwnHeroUid")) { goto IL_77A; } result = new OwnUnitCondition(vo, parent, ConditionMatchType.Uid, TroopType.Hero); return(result); } } else if (num != 695933359u) { if (num != 747533164u) { if (num != 832100428u) { goto IL_77A; } if (!(conditionType == "LootCurrency")) { goto IL_77A; } result = new LootCurrencyCondition(vo, parent, startingValue); return(result); } else { if (!(conditionType == "TrainUnitIdLevel")) { goto IL_77A; } result = new TrainUnitCondition(vo, parent, startingValue, ConditionMatchType.Id); return(result); } } else { if (!(conditionType == "TrainUnitUid")) { goto IL_77A; } result = new TrainUnitCondition(vo, parent, startingValue, ConditionMatchType.Uid); return(result); } } else if (num <= 1050956926u) { if (num <= 989645379u) { if (num != 849188692u) { if (num != 989645379u) { goto IL_77A; } if (!(conditionType == "OwnBuildingTypeLevel")) { goto IL_77A; } result = new OwnBuildingCondition(vo, parent, ConditionMatchType.Type); return(result); } else if (!(conditionType == "RetainBuildingType")) { goto IL_77A; } } else if (num != 1007252735u) { if (num != 1050956926u) { goto IL_77A; } if (!(conditionType == "OwnUnitIdLevel")) { goto IL_77A; } result = new OwnUnitCondition(vo, parent, ConditionMatchType.Id, TroopType.Infantry); return(result); } else { if (!(conditionType == "DestroyUnitType")) { goto IL_77A; } result = new DestroyUnitTypeCondition(vo, parent); return(result); } } else if (num <= 1326685565u) { if (num != 1274004404u) { if (num != 1326685565u) { goto IL_77A; } if (!(conditionType == "DestroyBuildingType")) { goto IL_77A; } result = new DestroyBuildingTypeCondition(vo, parent); return(result); } else { if (!(conditionType == "OwnBuildingIdLevel")) { goto IL_77A; } result = new OwnBuildingCondition(vo, parent, ConditionMatchType.Id); return(result); } } else if (num != 1431426922u) { if (num != 1543340005u) { if (num != 1623103722u) { goto IL_77A; } if (!(conditionType == "DestroyUnitId")) { goto IL_77A; } result = new DestroyUnitIdCondition(vo, parent); return(result); } else { if (!(conditionType == "OwnUnitUid")) { goto IL_77A; } result = new OwnUnitCondition(vo, parent, ConditionMatchType.Uid, TroopType.Infantry); return(result); } } else { if (!(conditionType == "CollectCurrency")) { goto IL_77A; } result = new CollectCurrencyCondition(vo, parent, startingValue); return(result); } result = new RetainBuildingCondition(vo, parent, ConditionMatchType.Type); return(result); } if (num <= 2489623796u) { if (num <= 1926476989u) { if (num <= 1707822318u) { if (num != 1638088896u) { if (num == 1707822318u) { if (conditionType == "TrainHeroIdLevel") { result = new TrainUnitCondition(vo, parent, startingValue, ConditionMatchType.Id); return(result); } } } else if (conditionType == "RetainUnitTypeLevel") { result = new RetainUnitCondition(vo, parent, ConditionMatchType.Type); return(result); } } else if (num != 1898419805u) { if (num == 1926476989u) { if (conditionType == "PvpWin") { result = new CountEventsCondition(vo, parent, startingValue, "pvp_battle_won"); return(result); } } } else if (conditionType == "DestroyBuildingUid") { result = new DestroyBuildingUidCondition(vo, parent); return(result); } } else if (num <= 2364440747u) { if (num != 2067306214u) { if (num == 2364440747u) { if (conditionType == "DestroyUnitUid") { result = new DestroyUnitUidCondition(vo, parent); return(result); } } } else if (conditionType == "RetainBuildingUid") { result = new RetainBuildingCondition(vo, parent, ConditionMatchType.Type); return(result); } } else if (num != 2396552976u) { if (num != 2468451715u) { if (num == 2489623796u) { if (conditionType == "OwnHeroIdLevel") { result = new OwnUnitCondition(vo, parent, ConditionMatchType.Id, TroopType.Hero); return(result); } } } else if (conditionType == "OwnHeroTypeLevel") { result = new OwnUnitCondition(vo, parent, ConditionMatchType.Type, TroopType.Hero); return(result); } } else if (conditionType == "RetainUnitUid") { result = new RetainUnitCondition(vo, parent, ConditionMatchType.Uid); return(result); } } else if (num <= 3247436989u) { if (num <= 2832454201u) { if (num != 2767093421u) { if (num == 2832454201u) { if (conditionType == "RetainBuildingIdLevel") { result = new RetainBuildingCondition(vo, parent, ConditionMatchType.Type); return(result); } } } else if (conditionType == "OwnUnitTypeLevel") { result = new OwnUnitCondition(vo, parent, ConditionMatchType.Type, TroopType.Infantry); return(result); } } else if (num != 3058909421u) { if (num != 3104392635u) { if (num == 3247436989u) { if (conditionType == "TrainHeroTypeLevel") { result = new TrainUnitCondition(vo, parent, startingValue, ConditionMatchType.Type); return(result); } } } else if (conditionType == "OwnResource") { result = new OwnResourceCondition(vo, parent); return(result); } } else if (conditionType == "CountEvents") { result = new CountEventsCondition(vo, parent, startingValue); return(result); } } else if (num <= 3768327639u) { if (num != 3321256586u) { if (num == 3768327639u) { if (conditionType == "OwnBuildingUid") { result = new OwnBuildingCondition(vo, parent, ConditionMatchType.Uid); return(result); } } } else if (conditionType == "DeployUnitUid") { result = new DeployUnitUidCondition(vo, parent); return(result); } } else if (num != 3844659541u) { if (num != 3865285083u) { if (num == 3968265935u) { if (conditionType == "RetainUnitIdLevel") { result = new RetainUnitCondition(vo, parent, ConditionMatchType.Id); return(result); } } } else if (conditionType == "TrainUnitTypeLevel") { result = new TrainUnitCondition(vo, parent, startingValue, ConditionMatchType.Type); return(result); } } else if (conditionType == "TrainHeroUid") { result = new TrainUnitCondition(vo, parent, startingValue, ConditionMatchType.Uid); return(result); } IL_77A: Service.Get <StaRTSLogger>().ErrorFormat("Unrecognized condition {0} in {1}", new object[] { vo.ConditionType, vo.Uid }); result = new DegenerateCondition(vo, parent); } catch (Exception ex) { Service.Get <StaRTSLogger>().ErrorFormat("Invalid condition detected in uid {0}. {1}:{2}", new object[] { vo.Uid, vo.ConditionType, vo.PrepareString }); throw ex; } return(result); }