Example #1
0
        public override void CheckSuccess(CombatData combatData, AgentData agentData, FightData fightData, HashSet <AgentItem> playerAgents)
        {
            var raidRewardsTypes = new HashSet <int>
            {
                55821,
                60685,
                914,
                22797
            };
            List <RewardEvent> rewards = combatData.GetRewardEvents();
            RewardEvent        reward  = rewards.FirstOrDefault(x => raidRewardsTypes.Contains(x.RewardType));

            if (reward != null)
            {
                fightData.SetSuccess(true, reward.Time);
            }
            else
            {
                switch (GenericFallBackMethod)
                {
                case FallBackMethod.Death:
                    SetSuccessByDeath(combatData, fightData, playerAgents, true, GetSuccessCheckIds());
                    break;

                case FallBackMethod.CombatExit:
                    SetSuccessByCombatExit(new HashSet <int>(GetSuccessCheckIds()), combatData, fightData, playerAgents);
                    break;

                default:
                    break;
                }
            }
        }
Example #2
0
        public override void CheckSuccess(CombatData combatData, AgentData agentData, FightData fightData, HashSet <AgentItem> playerAgents)
        {
            // check reward
            NPC mainTarget = Targets.Find(x => x.ID == GenericTriggerID);

            if (mainTarget == null)
            {
                throw new InvalidOperationException("Error Encountered: Main target of the fight not found");
            }
            RewardEvent         reward          = combatData.GetRewardEvents().LastOrDefault();
            AbstractDamageEvent lastDamageTaken = combatData.GetDamageTakenData(mainTarget.AgentItem).LastOrDefault(x => (x.Damage > 0) && playerAgents.Contains(x.From.GetFinalMaster()));

            if (lastDamageTaken != null)
            {
                if (reward != null && lastDamageTaken.Time - reward.Time < 100)
                {
                    fightData.SetSuccess(true, Math.Min(lastDamageTaken.Time, reward.Time));
                }
                else
                {
                    SetSuccessByDeath(combatData, fightData, playerAgents, true, GenericTriggerID);
                    if (fightData.Success)
                    {
                        fightData.SetSuccess(true, Math.Min(fightData.FightEnd, lastDamageTaken.Time));
                    }
                }
            }
        }
Example #3
0
        internal override void CheckSuccess(CombatData combatData, AgentData agentData, FightData fightData, IReadOnlyCollection <AgentItem> playerAgents)
        {
            RewardEvent reward = combatData.GetRewardEvents().FirstOrDefault(x => x.RewardType == 55821);

            if (reward != null)
            {
                fightData.SetSuccess(true, reward.Time);
            }
        }
        internal SortieNodeInfo(MapInfo rpMap, RawMapExploration rpData)
        {
            ID = rpData.Node;

            var rDifficulty = rpMap.Difficulty;

            if (!rDifficulty.HasValue)
            {
                InternalID = ID;
            }
            else
            {
                var rDifficultyCount = Enum.GetNames(typeof(EventMapDifficulty)).Length - 1;
                InternalID = ID * rDifficultyCount + (int)rDifficulty.Value - 3;
            }

            WikiID = MapService.Instance.GetNodeWikiID(rpMap.ID, ID);

            EventType    = rpData.NodeEventType;
            EventSubType = rpData.NodeEventSubType;

            switch (EventType)
            {
            case SortieEventType.Reward:
                Event = new RewardEvent(rpData);
                break;

            case SortieEventType.Whirlpool:
                Event = new WhirlpoolEvent(rpData);
                break;

            case SortieEventType.NormalBattle:
            case SortieEventType.BossBattle:
                Event = new BattleEvent(rpMap, rpData, WikiID);
                break;

            case SortieEventType.NothingHappened:
                Event = new NothingHappenedEvent(rpMap, rpData);
                break;

            case SortieEventType.AviationReconnaissance:
                Event = new AviationReconnaissanceEvent(rpData);
                break;

            case SortieEventType.EscortSuccess:
                Event = new EscortSuccessEvent(rpData);
                break;

            case SortieEventType.Landing:
                Event = new LandingEvent(rpData);
                break;
            }

            IsDeadEnd = rpData.NextRouteCount == 0;
        }
Example #5
0
    public void SendBattleWinEvent()
    {
        var         userProfile = Whiteboard.Get <UserProfile>(GameConstants.Player.PLAYER_PROFILE);
        RewardEvent rewardEvent = new RewardEvent();

        rewardEvent.EventType = RewardEvent.Types.RewardEventType.BattleWin;
        rewardEvent.UserId    = userProfile.UserId;
        Request request = RequestGenerator.CreateRequest(RequestType.RewardUser, rewardEvent.ToByteString());

        NetworkManager.Instance.SendRequest(request, OnRewardReceived);
    }
        internal override void CheckSuccess(CombatData combatData, AgentData agentData, FightData fightData, IReadOnlyCollection <AgentItem> playerAgents)
        {
            IReadOnlyList <RewardEvent> rewards = combatData.GetRewardEvents();
            RewardEvent reward = rewards.FirstOrDefault(x => x.RewardType == 29453);

            if (reward != null)
            {
                fightData.SetSuccess(true, reward.Time);
            }
            else
            {
                SetSuccessByDeath(combatData, fightData, playerAgents, true);
            }
        }
        internal override void CheckSuccess(CombatData combatData, AgentData agentData, FightData fightData, IReadOnlyCollection <AgentItem> playerAgents)
        {
            var   raidRewardsTypes = new HashSet <int>();
            ulong build            = combatData.GetBuildEvent().Build;

            if (build < 97235)
            {
                raidRewardsTypes = new HashSet <int>
                {
                    // Old types, on each kill
                    55821,
                    60685
                };
            }
            else
            {
                raidRewardsTypes = new HashSet <int>
                {
                    // New types, once per week
                    22797
                };
            }
            IReadOnlyList <RewardEvent> rewards = combatData.GetRewardEvents();
            RewardEvent reward = rewards.FirstOrDefault(x => raidRewardsTypes.Contains(x.RewardType));

            if (reward != null)
            {
                fightData.SetSuccess(true, reward.Time);
            }
            else
            {
                switch (GenericFallBackMethod)
                {
                case FallBackMethod.Death:
                    SetSuccessByDeath(combatData, fightData, playerAgents, true, GetSuccessCheckIds());
                    break;

                case FallBackMethod.CombatExit:
                    SetSuccessByDeath(combatData, fightData, playerAgents, true, GetSuccessCheckIds());
                    if (!fightData.Success)
                    {
                        SetSuccessByCombatExit(new HashSet <int>(GetSuccessCheckIds()), combatData, fightData, playerAgents);
                    }
                    break;

                default:
                    break;
                }
            }
        }
Example #8
0
        internal SortieNodeInfo(SortieInfo rpOwner, long rpTimestamp, RawMapExploration rpData)
        {
            r_Owner = rpOwner;

            ID = rpData.Node;

            var rMap = r_Owner.Map;

            WikiID = MapService.Instance.GetNodeWikiID(rMap.ID, ID);

            EventType    = rpData.NodeEventType;
            EventSubType = rpData.NodeEventSubType;

            switch (EventType)
            {
            case SortieEventType.Reward:
                Event = new RewardEvent(rpData);
                break;

            case SortieEventType.Whirlpool:
                Event = new WhirlpoolEvent(r_Owner.Fleet.Ships, r_Owner.EscortFleet, rpData);
                break;

            case SortieEventType.NormalBattle:
            case SortieEventType.BossBattle:
                Event = new BattleEvent(rpTimestamp, rMap, rpData, WikiID);
                break;

            case SortieEventType.NothingHappened:
                Event = new NothingHappenedEvent(rMap, rpData);
                break;

            case SortieEventType.AviationReconnaissance:
                Event = new AviationReconnaissanceEvent(rpData);
                break;

            case SortieEventType.EscortSuccess:
                Event = new EscortSuccessEvent(rpData);
                break;

            case SortieEventType.Landing:
                Event = new LandingEvent(rpData);
                break;
            }

            IsDeadEnd = rpData.NextRouteCount == 0;
        }
 public override void CheckSuccess(CombatData combatData, AgentData agentData, FightData fightData, HashSet<AgentItem> playerAgents)
 {
     var strikeRewardIDs = new HashSet<ulong>
         {
             993
         };
     List<RewardEvent> rewards = combatData.GetRewardEvents();
     RewardEvent reward = rewards.FirstOrDefault(x => strikeRewardIDs.Contains(x.RewardID));
     if (reward != null)
     {
         fightData.SetSuccess(true, reward.Time);
     }
     else
     {
         SetSuccessByDeath(combatData, fightData, playerAgents, true);
     }
 }
Example #10
0
    private void OnRewardReceived(string requestId)
    {
        RewardEvent updatedEvent = NetworkManager.Instance.GetResponse <RewardEvent>(requestId);

        if (updatedEvent.Rewards.Count > 0)
        {
            Debug.Log(string.Format("Rewarded Chest ID : {0}  Updated Slot : {1}", updatedEvent.Rewards[0].RewardId, updatedEvent.Slot));
            Hashtable param = new Hashtable();
            param.Add(ChestSlot.SLOT_INDEX, updatedEvent.Slot);
            param.Add(ChestSlot.REWARD, updatedEvent.Rewards[0]);
            ActionManager.instance.TriggerEvent(StringConstants.EventNames.UPDATE_SLOTS_DATA, param);
        }
        else
        {
            Debug.LogError("All slots are full");
        }
    }
        internal override void CheckSuccess(CombatData combatData, AgentData agentData, FightData fightData, IReadOnlyCollection <AgentItem> playerAgents)
        {
            // check reward
            NPC mainTarget = Targets.FirstOrDefault(x => x.ID == GenericTriggerID);

            if (mainTarget == null)
            {
                throw new MissingKeyActorsException("Main target of the fight not found");
            }
            RewardEvent reward = combatData.GetRewardEvents().LastOrDefault();
            AbstractHealthDamageEvent lastDamageTaken = combatData.GetDamageTakenData(mainTarget.AgentItem).LastOrDefault(x => (x.HealthDamage > 0) && playerAgents.Contains(x.From.GetFinalMaster()));

            if (lastDamageTaken != null)
            {
                if (reward != null && Math.Abs(lastDamageTaken.Time - reward.Time) < 100)
                {
                    fightData.SetSuccess(true, Math.Min(lastDamageTaken.Time, reward.Time));
                }
                else
                {
                    SetSuccessByDeath(combatData, fightData, playerAgents, true, GenericTriggerID);
                }
            }
        }
 internal void Reward()
 {
     if (PartRewardsTypeNames != null && PartRewardsTypeNames.Length != 0)
     {
         // choose a random reward
         Random rng    = new Random();
         Type   t      = Type.GetType(PartRewardsTypeNames[rng.Next(0, PartRewardsTypeNames.Length)]);
         Part   reward = ((Part)Activator.CreateInstance(t));
         // start some visualization-actions showing the reward
         Button.AddAction(new CCSequence(new CCFadeTo(0.25f, 0), new CCDelayTime(3f), new CCFadeTo(1f, byte.MaxValue)));
         var guiLayer = ((HangarLayer)Layer).GUILayer;
         reward.Position = guiLayer.HangarCoordinatesToGUI(BoundingBoxTransformedToWorld.Center);
         guiLayer.AddChild(reward);
         reward.FitToBox(Button.BoundingBoxTransformedToWorld.Size * 2);
         var rewardEndScale = reward.GetTotalScale();
         reward.Scale = 0.000001f;
         reward.AddAction(new CCSequence(new CCDelayTime(1.25f),
                                         new CCEaseBackOut(new CCScaleTo(0.5f, rewardEndScale)),
                                         new CCDelayTime(1f),
                                         new CCEaseIn(new CCMoveTo(0.8f, guiLayer.VisibleBoundsWorldspace.Center + new CCPoint(0, guiLayer.VisibleBoundsWorldspace.Size.Height)), 3f),
                                         new CCRemoveSelf(),
                                         new CCCallFunc(() => { RewardEvent?.Invoke(this, reward); })));
     }
 }
        private Reward[] ParseRewards(string prefix, string postfix = "Reward_")
        {
            Reward[] r   = new Reward[asset.ReadByte($"{prefix}Rewards")];
            int      num = 0;
            string   text;

            while (true)
            {
                if (num >= r.Length)
                {
                    return(r);
                }

                text = $"{prefix}{postfix}{num}_Type";
                if (!asset.Has(text))
                {
                    break;
                }

                RewardType type = asset.ReadEnum <RewardType>(text);
                string     desc = local?.ReadString($"{prefix}{postfix}{num}");
                string     tp   = $"{prefix}{postfix}{num}_";
                switch (type)
                {
                case RewardType.Achievement:
                    r[num] = new RewardAchievement()
                    {
                        ID = asset.ReadString(tp + "ID")
                    };
                    break;

                case RewardType.Event:
                    r[num] = new RewardEvent()
                    {
                        ID = asset.ReadString(tp + "ID")
                    };
                    break;

                case RewardType.Experience:
                    r[num] = new RewardExperience()
                    {
                        Value = asset.ReadUInt32(tp + "Value")
                    };
                    break;

                case RewardType.Flag_Bool:
                    r[num] = new RewardFlagBool()
                    {
                        ID    = asset.ReadUInt16(tp + "ID"),
                        Value = asset.ReadBoolean(tp + "Value")
                    };
                    break;

                case RewardType.Flag_Math:
                    r[num] = new RewardFlagMath()
                    {
                        A_ID      = asset.ReadUInt16(tp + "A_ID"),
                        B_ID      = asset.ReadUInt16(tp + "B_ID"),
                        Operation = asset.ReadEnum <Operation_Type>(tp + "Operation")
                    };
                    break;

                case RewardType.Flag_Short:
                    r[num] = new RewardFlagShort()
                    {
                        ID           = asset.ReadUInt16(tp + "ID"),
                        Modification = asset.ReadEnum <Modification_Type>(tp + "Modification"),
                        Value        = asset.ReadInt16(tp + "Value")
                    };
                    break;

                case RewardType.Flag_Short_Random:
                    r[num] = new RewardFlagShortRandom()
                    {
                        ID           = asset.ReadUInt16(tp + "ID"),
                        Max_Value    = asset.ReadInt16(tp + "Max_Value"),
                        Min_Value    = asset.ReadInt16(tp + "Min_Value"),
                        Modification = asset.ReadEnum <Modification_Type>(tp + "Modification")
                    };
                    break;

                case RewardType.Item:
                    r[num] = new RewardItem()
                    {
                        Ammo       = asset.ReadByte(tp + "Ammo"),
                        Amount     = asset.ReadByte(tp + "Amount"),
                        Auto_Equip = asset.ReadBoolean(tp + "Auto_Equip"),
                        Barrel     = asset.ReadUInt16(tp + "Barrel"),
                        Grip       = asset.ReadUInt16(tp + "Grip"),
                        Magazine   = asset.ReadUInt16(tp + "Magazine"),
                        Sight      = asset.ReadUInt16(tp + "Sight"),
                        Tactical   = asset.ReadUInt16(tp + "Tactical"),
                        ID         = asset.ReadUInt16(tp + "ID")
                    };
                    break;

                case RewardType.Item_Random:
                    r[num] = new RewardItemRandom()
                    {
                        Amount = asset.ReadByte(tp + "Amount"),
                        ID     = asset.ReadUInt16(tp + "ID")
                    };
                    break;

                case RewardType.Quest:
                    r[num] = new RewardQuest()
                    {
                        ID = asset.ReadUInt16(tp + "ID")
                    };
                    break;

                case RewardType.Reputation:
                    r[num] = new RewardReputation()
                    {
                        Value = asset.ReadInt32(tp + "Value")
                    };
                    break;

                case RewardType.Teleport:
                    r[num] = new RewardTeleport()
                    {
                        Spawnpoint = asset.ReadString(tp + "Spawnpoint")
                    };
                    break;

                case RewardType.Vehicle:
                    r[num] = new RewardVehicle()
                    {
                        ID         = asset.ReadUInt16(tp + "ID"),
                        Spawnpoint = asset.ReadString(tp + "Spawnpoint")
                    };
                    break;

                case RewardType.Currency:
                    r[num] = new RewardCurrency()
                    {
                        GUID  = asset.ReadString(tp + "GUID"),
                        Value = asset.ReadUInt32(tp + "Value")
                    };
                    break;

                case RewardType.Hint:
                    r[num] = new RewardHint()
                    {
                        Duration = asset.ReadSingle(tp + "Duration", 2f)
                    };
                    break;
                }
                r[num].Localization = desc ?? "";
                num++;
            }
            return(r);
        }
Example #14
0
        internal SortieNodeInfo(SortieInfo rpOwner, long rpTimestamp, RawMapExploration rpData)
        {
            r_Owner = rpOwner;

            ID = rpData.Node;

            var rMap = r_Owner.Map;

            WikiID = MapService.Instance.GetNodeWikiID(rMap.ID, ID);

            EventType    = rpData.NodeEventType;
            EventSubType = rpData.NodeEventSubType;

            switch (EventType)
            {
            case SortieEventType.Reward:
                Event = new RewardEvent(rpData);
                break;

            case SortieEventType.Whirlpool:
                Event = new WhirlpoolEvent(r_Owner.Fleet.Ships, r_Owner.EscortFleet, rpData);
                break;

            case SortieEventType.NormalBattle:
            case SortieEventType.BossBattle:
                Event = new BattleEvent(rpTimestamp, rMap, rpData, WikiID);
                break;

            case SortieEventType.NothingHappened:
                Event = new NothingHappenedEvent(rMap, rpData);
                break;

            case SortieEventType.AviationReconnaissance:
                Event = new AviationReconnaissanceEvent(rpData);
                break;

            case SortieEventType.EscortSuccess:
                Event = new EscortSuccessEvent(rpData);
                break;

            case SortieEventType.Landing:
                Event = new LandingEvent(rpData);
                break;
            }

            IsDeadEnd = rpData.NextRouteCount == 0;

            if (rpData.EnemyAerialRaid != null)
            {
                try
                {
                    EnemyAerialRaid = new EnemyAerialRaid(rpData.EnemyAerialRaid);

                    var rBattleEvent = Event as BattleEvent;
                    if (rBattleEvent != null)
                    {
                        rBattleEvent.EnemyAerialRaid = EnemyAerialRaid;
                        EnemyAerialRaid = null;
                    }
                }
                catch (Exception e)
                {
                    Logger.Write(LoggingLevel.Error, string.Format(StringResources.Instance.Main.Log_Exception_API_ParseException, e.Message));
                }
            }
        }
Example #15
0
 public void RemoveRewardEvent(RewardEvent rewardEvent) => _db.RewardEvents.Remove(rewardEvent);
Example #16
0
 public void AddRewardEvent(RewardEvent rewardEvent) => _db.RewardEvents.Add(rewardEvent);