Example #1
0
        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);
        }
Example #3
0
        public void ChildFailed(AbstractCondition child)
        {
            ConditionVO conditionVo = child.GetConditionVo();

            child.Destroy();
            this.Failures.Add(conditionVo.Uid);
            this.events.SendEvent(EventId.VictoryConditionFailure, conditionVo);
        }
Example #4
0
 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);
 }
Example #5
0
        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);
        }
Example #6
0
        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);
        }
Example #7
0
        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;
 }
Example #10
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]);
     }
 }
Example #11
0
 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;
     }
 }
Example #12
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;
 }
Example #13
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);
     }
 }
Example #15
0
 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();
     }
 }
Example #16
0
 public void ActivateFailureCondition(ConditionVO condition)
 {
     this.failureCondition = ConditionFactory.GenerateCondition(condition, this);
     this.failureCondition.Start();
 }
Example #17
0
 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;
 }
Example #19
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);
 }
Example #20
0
 public OwnResourceCondition(ConditionVO vo, IConditionParent parent) : base(vo, parent)
 {
     this.resourceKey = this.prepareArgs[1];
     this.threshold   = Convert.ToInt32(this.prepareArgs[0], CultureInfo.InvariantCulture);
 }
Example #21
0
 public static AbstractCondition GenerateCondition(ConditionVO vo, IConditionParent parent)
 {
     return(ConditionFactory.GenerateCondition(vo, parent, 0));
 }
Example #22
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);
        }
Example #23
0
 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]);
 }
Example #24
0
 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]);
 }
Example #25
0
 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;
 }
Example #27
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;
 }
Example #28
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]);
 }
Example #29
0
        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);
        }