Beispiel #1
0
 public static void RequestInitCoordinator()
 {
     LocalAgent.InitCoordinator();
 }
Beispiel #2
0
 public static void RequestRestartWorkerAgents()
 {
     LocalAgent.RestartAgentGroup("DefaultDeployed");
 }
Beispiel #3
0
 public static bool RequestPingCoordinator()
 {
     return(LocalAgent.PingCoordinator(true));
 }
Beispiel #4
0
 public static void RequestPingRemoteAgents()
 {
     LocalAgent.PingRemoteAgents(AgentApplication.Options.AllowedRemoteAgentGroup);
 }
Beispiel #5
0
 public static void RequestRestartQAAgents()
 {
     LocalAgent.RestartAgentGroup("QATestGroup");
 }
Beispiel #6
0
    protected bool CheckAddGlobalBuff(Buff buffData, EntityParent caster, EntityParent target)
    {
        if (buffData == null)
        {
            return(false);
        }
        if (caster == null)
        {
            return(false);
        }
        if (target == null)
        {
            return(false);
        }
        if (!EntityWorld.Instance.TargetTypeFilter <EntityParent>(target, caster, buffData.globalTarget))
        {
            return(false);
        }
        if (!BattleCalculator.CalculateAddBuff(caster.BattleBaseAttrs, target.BattleBaseAttrs, (double)buffData.buffProp, 0))
        {
            return(false);
        }
        XDict <int, BuffState> buffListByEntityID = this.GetBuffListByEntityID(target.ID);

        if (buffListByEntityID == null)
        {
            return(false);
        }
        for (int i = 0; i < buffListByEntityID.Count; i++)
        {
            if (LocalAgent.GetBuffDataByID(buffListByEntityID.ElementKeyAt(i)).resist.Contains(buffData.type))
            {
                return(false);
            }
        }
        for (int j = 0; j < buffListByEntityID.Count; j++)
        {
            if (LocalAgent.GetBuffDataByID(buffListByEntityID.ElementKeyAt(j)).resistId.Contains(buffData.id))
            {
                return(false);
            }
        }
        List <int> list = new List <int>();

        for (int k = 0; k < buffListByEntityID.Count; k++)
        {
            if (LocalAgent.GetBuffDataByID(buffListByEntityID.ElementKeyAt(k)).cover.Contains(buffData.type))
            {
                list.Add(buffListByEntityID.ElementKeyAt(k));
            }
        }
        for (int l = 0; l < list.get_Count(); l++)
        {
            this.AppRemoveBuff(list.get_Item(l), target.ID);
        }
        list.Clear();
        for (int m = 0; m < buffListByEntityID.Count; m++)
        {
            if (buffData.delete.Contains(LocalAgent.GetBuffDataByID(buffListByEntityID.ElementKeyAt(m)).type))
            {
                list.Add(buffListByEntityID.ElementKeyAt(m));
            }
        }
        for (int n = 0; n < list.get_Count(); n++)
        {
            this.AppRemoveBuff(list.get_Item(n), target.ID);
        }
        if (LocalAgent.CheckBuffByTargetIDAndBuffID(target.ID, buffData.id))
        {
            int overlayModeId = buffData.overlayModeId;
            if (overlayModeId != 1 && overlayModeId != 2)
            {
                this.AppRemoveBuff(buffData.id, target.ID);
            }
        }
        return(true);
    }
 public static void InitManagers()
 {
     FPSManager.Instance.Init();
     SoundManager.CreateInstance();
     SDKManager.Instance.Init();
     NativeCallManager.Instance.Init();
     VoiceSDKManager.Instance.Init();
     PushNotificationManager.Instance.Init();
     BTLoader.Init();
     AssetManager.AssetOfTPManager.Instance.Init();
     UIQueueManager.Instance.Init();
     UIStackManager.Instance.Init();
     GuideManager.Instance.Init();
     BadWordsFilter.Instance.Init();
     NetworkManager.Instance.Init();
     LoginManager.Instance.Init();
     ReconnectManager.Instance.Init();
     EntityWorld.Instance.Init();
     MySceneManager.Instance.Init();
     AOIService.Instance.Init();
     CityManager.Instance.Init();
     InstanceManager.Init();
     GangFightManager.Instance.Init();
     BountyManager.Instance.Init();
     DungeonManager.Instance.Init();
     DefendFightManager.Instance.Init();
     SurvivalManager.Instance.Init();
     PVPManager.Instance.Init();
     ServerGMManager.Instance.Init();
     ElementInstanceManager.Instance.Init();
     WildBossManager.Instance.Init();
     SpecialFightManager.Instance.Init();
     DarkTrialManager.Instance.Init();
     FashionManager.Instance.Init();
     RadarManager.Instance.Init();
     MemCollabManager.Instance.Init();
     GodWeaponProgressManager.Instance.Init();
     SystemOpenProgressManager.Instance.Init();
     BadgeManager.Instance.Init();
     ActorVisibleManager.Instance.Init();
     NPCManager.Instance.Init();
     WildBossManager.Instance.Init();
     TaskNPCManager.Instance.Init();
     WildBossNPCManager.Instance.Init();
     HearthNPCManager.Instance.Init();
     CollectionNPCManager.Instance.Init();
     PetManager.Instance.Init();
     BackpackManager.Instance.Init();
     EnergyManager.Instance.Init();
     BoxRewardManager.Instance.Init();
     GuildManager.Instance.Init();
     TeamManager.Instance.Init();
     MultiPlayerManager.Instance.Init();
     GoldBuyManager.Instance.Init();
     ElementManager.Instance.Init();
     ChangeCareerManager.Instance.Init();
     GlobalManager.Instance.Init();
     EquipmentManager.Instance.Init();
     SignInManager.Instance.Init();
     MainTaskManager.Instance.Init();
     DailyTaskManager.Instance.Init();
     CharacterManager.Instance.Init();
     UpgradeManager.Instance.Init();
     GuildWarManager.Instance.Init();
     VIPManager.Instance.Init();
     RechargeManager.Instance.Init();
     RankingManager.Instance.Init();
     SkillUIManager.Instance.Init();
     RoleTalentManager.Instance.Init();
     TipsManager.Instance.Init();
     EliteDungeonManager.Instance.Init();
     TeamBasicManager.Instance.Init();
     WildMonsterManager.Instance.Init();
     GodSoldierManager.Instance.Init();
     GodWeaponManager.Instance.Init();
     SkillRuneManager.Instance.Init();
     GuildBossManager.Instance.Init();
     RenameManager.Instance.Init();
     HuntManager.Instance.Init();
     RankUpManager.Instance.Init();
     RankUpChangeManager.Instance.Init();
     MultiPVPManager.Instance.Init();
     TramcarManager.Instance.Init();
     GuildSkillManager.Instance.Init();
     PetTaskManager.Instance.Init();
     GuildStorageManager.Instance.Init();
     MarketManager.Instance.Init();
     LimitTimeMarketManager.Instance.Init();
     GuildMarketManager.Instance.Init();
     XMarketManager.Instance.Init();
     TransactionNPCManager.Instance.Init();
     GlobalBattleNetwork.Instance.Init();
     BattleBlackboard.Instance.Init();
     LocalInstanceHandler.Instance.Init();
     LocalBattleHandler.Instance.Init();
     LocalAgent.Intergrate(LocalInstanceHandler.Instance, LocalBattleHandler.Instance);
     BattleCalculator.Init();
     WarningGraghHandler.Init();
     BattleTimeManager.Instance.Init();
     BattleDialogManager.Instance.Init();
     ChatManager.Instance.Init();
     FriendManager.Instance.Init();
     MailManager.Instance.Init();
     TitleManager.Instance.Init();
     BroadcastManager.Instance.Init();
     BillboardManager.Instance.Init();
     FloatTextAddManager.Instance.Init();
     GemManager.Instance.Init();
     Activity7DayManager.Instance.Init();
     ActivityCenterManager.Instance.Init();
     WingManager.Instance.Init();
     ConsumeRechargeManager.Instance.Init();
     LuckDrawManager.Instance.Init();
     NoticeManager.Instance.Init();
     OperateActivityManager.Instance.Init();
     AchievementManager.Instance.Init();
     StrongerManager.Instance.Init();
     FirstPayManager.Instance.Init();
     InvestFundManager.Instance.Init();
     GrowUpPlanManager.Instance.Init();
     ActivityTossDiscountManager.Instance.Init();
     NewPeoperGiftPackageManager.Instance.Init();
     CheckPlayerInfoManager.Instance.Init();
     OffHookManager.Instance.Init();
     MushroomHitManager.Instance.Init();
     BossBookManager.Instance.Init();
     GiftExchangeManager.Instance.Init();
     DayGiftManager.Instance.Init();
     VipTasteCardManager.Instance.Init();
     AcOpenServerManager.Instance.Init();
     RedBagManager.Instance.Init();
 }
Beispiel #8
0
    protected void KillBuff(int buffID, long casterID, long targetID, int fromSkillLevel, bool isCommunicateMix)
    {
        Buff         buffDataByID = LocalAgent.GetBuffDataByID(buffID);
        EntityParent entityByID   = LocalAgent.GetEntityByID(casterID);
        EntityParent entityByID2  = LocalAgent.GetEntityByID(targetID);

        switch (buffDataByID.type)
        {
        case 1:
            LocalBattleBuffCalculatorDamageHandler.KillBuff(buffID, casterID, targetID, fromSkillLevel, isCommunicateMix);
            break;

        case 2:
            LocalBattleBuffCalculatorTreatHandler.KillBuff(buffID, casterID, targetID, fromSkillLevel, isCommunicateMix);
            break;

        case 3:
            LocalBattleBuffTauntHandler.KillBuff(buffDataByID, entityByID, entityByID2, fromSkillLevel, isCommunicateMix);
            break;

        case 4:
            LocalBattleBuffFixHandler.KillBuff(buffDataByID, entityByID, entityByID2, fromSkillLevel, isCommunicateMix);
            break;

        case 5:
            LocalBattleBuffStaticHandler.KillBuff(buffDataByID, entityByID, entityByID2, fromSkillLevel, isCommunicateMix);
            break;

        case 6:
            LocalBattleBuffShiftHandler.KillBuff(buffDataByID, entityByID, entityByID2, fromSkillLevel, isCommunicateMix);
            break;

        case 7:
            LocalBattleBuffChangeAttrsHandler.KillBuff(buffDataByID, entityByID, entityByID2, fromSkillLevel, isCommunicateMix);
            break;

        case 8:
            LocalBattleBuffSuperArmorHandler.KillBuff(buffDataByID, entityByID, entityByID2, fromSkillLevel, isCommunicateMix);
            break;

        case 9:
            LocalBattleBuffDrainHandler.KillBuff(buffID, casterID, targetID, fromSkillLevel, isCommunicateMix);
            break;

        case 10:
            LocalBattleBuffIgnoreFormulaHandler.KillBuff(buffDataByID, entityByID, entityByID2, fromSkillLevel, isCommunicateMix);
            break;

        case 11:
            LocalBattleBuffCloseRendererHandler.KillBuff(buffDataByID, entityByID, entityByID2, fromSkillLevel, isCommunicateMix);
            break;

        case 12:
            LocalBattleBuffMoveCastHandler.KillBuff(buffDataByID, entityByID, entityByID2, fromSkillLevel, isCommunicateMix);
            break;

        case 13:
            LocalBattleBuffFilterHandler.KillBuff(buffDataByID, entityByID, entityByID2, fromSkillLevel, isCommunicateMix);
            break;

        case 14:
            LocalBattleBuffDizzyHandler.KillBuff(buffDataByID, entityByID, entityByID2, fromSkillLevel, isCommunicateMix);
            break;

        case 15:
            LocalBattleBuffUnconspicuousHandler.KillBuff(buffDataByID, entityByID, entityByID2, fromSkillLevel, isCommunicateMix);
            break;

        case 16:
            LocalBattleBuffAuraHandler.KillBuff(buffDataByID, entityByID, entityByID2, fromSkillLevel, isCommunicateMix);
            break;

        case 17:
            LocalBattleBuffWeakHandler.KillBuff(buffDataByID, entityByID, entityByID2, fromSkillLevel, isCommunicateMix);
            break;

        case 18:
            LocalBattleBuffIncurableHandler.KillBuff(buffDataByID, entityByID, entityByID2, fromSkillLevel, isCommunicateMix);
            break;

        case 19:
            LocalBattleBuffCalculatorTreat2Handler.KillBuff(buffID, casterID, targetID, fromSkillLevel, isCommunicateMix);
            break;
        }
        if (buffDataByID.tempSkill > 0)
        {
            LocalBattleProtocolSimulator.SendRemoveSkill(targetID, buffDataByID.tempSkill);
        }
    }
Beispiel #9
0
    protected void HandleTriggerEffect(long casterID, int skillID, int effectID, List <EffectTargetInfo> effectTargetInfos, XPoint basePoint, int effectUniqueID, bool isAddEffect = true, bool isCommunicateMix = false)
    {
        Effect       effectDataByID = LocalAgent.GetEffectDataByID(effectID);
        EntityParent entityByID     = LocalAgent.GetEntityByID(casterID);
        List <long>  list           = new List <long>();

        for (int i = 0; i < effectTargetInfos.get_Count(); i++)
        {
            list.Add(effectTargetInfos.get_Item(i).targetId);
        }
        if (isAddEffect)
        {
            if (list.get_Count() > 0 && LocalAgent.GetEntityUsable(entityByID, isCommunicateMix))
            {
                int num = BattleCalculator.CalculateEffectCasterActPoint(entityByID.BattleBaseAttrs, (double)effectDataByID.casterPoint);
                entityByID.SetValue(GameData.AttrType.ActPoint, entityByID.TryAddValue(GameData.AttrType.ActPoint, (long)num), true);
            }
            if (isCommunicateMix && effectDataByID.type1 != 0 && effectDataByID.type1 != 1 && effectDataByID.type1 != 2)
            {
                GlobalBattleNetwork.Instance.SendClientDriveBattleEffectDamage(casterID, 0L, (!LocalAgent.GetEntityUsable(entityByID, isCommunicateMix)) ? 0L : entityByID.Hp, 0L, 0L, skillID, effectID, true, false, null, null, basePoint, new List <long>(), string.Empty, true);
            }
        }
        for (int j = 0; j < list.get_Count(); j++)
        {
            EntityParent entityByID2 = LocalAgent.GetEntityByID(list.get_Item(j));
            if (LocalAgent.GetEntityUsable(entityByID2, isCommunicateMix))
            {
                entityByID2.SetValue(GameData.AttrType.ActPoint, entityByID2.TryAddValue(GameData.AttrType.ActPoint, (long)effectDataByID.targetPoint), true);
            }
        }
        switch (effectDataByID.type1)
        {
        case 1:
            LocalBattleEffectCalculatorDamageHandler.AppDamage(effectDataByID, entityByID, list, basePoint, skillID, isAddEffect, isCommunicateMix);
            break;

        case 2:
            LocalBattleEffectCalculatorTreatHandler.AppTheat(effectDataByID, entityByID, list, basePoint, skillID, isAddEffect, isCommunicateMix);
            break;

        case 3:
            LocalBattleEffectSummonMonsterHandler.AppSummonMonster(effectDataByID, entityByID, basePoint, isCommunicateMix);
            break;

        case 4:
            LocalBattleEffectReliveHandler.AppRelive(list, isCommunicateMix);
            break;

        case 5:
            LocalBattleEffectDrainHandler.AppDrain(effectDataByID, entityByID, list, isCommunicateMix);
            break;

        case 7:
            this.AppFuse(entityByID, skillID, isCommunicateMix);
            break;

        case 8:
            LocalBattleEffectSummonPetHandler.AppSummonPet(effectDataByID, entityByID, skillID, isCommunicateMix);
            break;

        case 9:
            LocalBattleEffectPetManualSkillHandler.AppManualSkill(entityByID, list, skillID, isCommunicateMix);
            break;

        case 10:
            LocalBattleEffectBlinkHandler.AppBlink(effectDataByID, entityByID, basePoint, isCommunicateMix);
            break;

        case 11:
            LocalBattleEffectHitHandler.AppHit(effectDataByID, entityByID, list, basePoint, isAddEffect);
            break;
        }
        for (int k = 0; k < list.get_Count(); k++)
        {
            for (int l = 0; l < effectDataByID.addLoopBuff.get_Count(); l++)
            {
                this.AppAddBuff(effectDataByID.addLoopBuff.get_Item(l), entityByID, list.get_Item(k), skillID, effectDataByID.element, isCommunicateMix);
            }
            if (isAddEffect)
            {
                for (int m = 0; m < effectDataByID.addBuff.get_Count(); m++)
                {
                    this.AppAddBuff(effectDataByID.addBuff.get_Item(m), entityByID, list.get_Item(k), skillID, effectDataByID.element, isCommunicateMix);
                }
                for (int n = 0; n < effectDataByID.removeBuff.get_Count(); n++)
                {
                    this.AppRemoveBuff(effectDataByID.removeBuff.get_Item(n), list.get_Item(k));
                }
            }
            if (entityByID != null)
            {
                int skillLevelByID = entityByID.GetSkillLevelByID(skillID);
                for (int num2 = 0; num2 < effectDataByID.gradeAddLoopBuffId.get_Count(); num2++)
                {
                    if (effectDataByID.gradeAddLoopBuffId.get_Item(num2).key == skillLevelByID)
                    {
                        this.AppAddBuff(effectDataByID.gradeAddLoopBuffId.get_Item(num2).value, entityByID, list.get_Item(k), skillID, effectDataByID.element, isCommunicateMix);
                    }
                }
                if (isAddEffect)
                {
                    for (int num3 = 0; num3 < effectDataByID.gradeAddBuffId.get_Count(); num3++)
                    {
                        if (effectDataByID.gradeAddBuffId.get_Item(num3).key == skillLevelByID)
                        {
                            this.AppAddBuff(effectDataByID.gradeAddBuffId.get_Item(num3).value, entityByID, list.get_Item(k), skillID, effectDataByID.element, isCommunicateMix);
                        }
                    }
                }
            }
        }
    }
Beispiel #10
0
    protected void IntervalHandleBuff(int buffID, long targetID)
    {
        EntityParent entityByID = LocalAgent.GetEntityByID(targetID);

        if (entityByID == null)
        {
            return;
        }
        XDict <int, BuffState> buffListByEntityID = this.GetBuffListByEntityID(targetID);

        if (buffListByEntityID == null)
        {
            return;
        }
        if (buffListByEntityID.Count == 0)
        {
            return;
        }
        if (!buffListByEntityID.ContainsKey(buffID))
        {
            return;
        }
        EntityParent entityByID2 = LocalAgent.GetEntityByID(this.buffStateTable[targetID][buffID].casterID);

        if (entityByID2 == null)
        {
            return;
        }
        Buff     buffDataByID = LocalAgent.GetBuffDataByID(buffID);
        BuffType type         = (BuffType)buffDataByID.type;

        switch (type)
        {
        case BuffType.Aura:
            entityByID.GetSkillManager().ClientCastSkillByID(buffDataByID.tempSkill);
            return;

        case BuffType.Weak:
        case BuffType.Incurable:
IL_83:
            if (type == BuffType.Damage)
            {
                LocalBattleBuffCalculatorDamageHandler.IntervalBuff(buffDataByID, entityByID2, entityByID, this.buffStateTable[targetID][buffID].fromSkillID, this.buffStateTable[targetID][buffID].fromSkillLevel, this.buffStateTable[targetID][buffID].fromSkillAttrChange, this.buffStateTable[targetID][buffID].isCommunicateMix);
                return;
            }
            if (type == BuffType.Theat)
            {
                LocalBattleBuffCalculatorTreatHandler.IntervalBuff(buffDataByID, entityByID2, entityByID, this.buffStateTable[targetID][buffID].fromSkillID, this.buffStateTable[targetID][buffID].fromSkillLevel, this.buffStateTable[targetID][buffID].fromSkillAttrChange, this.buffStateTable[targetID][buffID].isCommunicateMix);
                return;
            }
            if (type != BuffType.Drain)
            {
                return;
            }
            LocalBattleBuffDrainHandler.IntervalBuff(buffDataByID, entityByID2, entityByID, this.buffStateTable[targetID][buffID].fromSkillID, this.buffStateTable[targetID][buffID].fromSkillLevel, this.buffStateTable[targetID][buffID].fromSkillAttrChange, this.buffStateTable[targetID][buffID].isCommunicateMix);
            return;

        case BuffType.Theat2:
            LocalBattleBuffCalculatorTreat2Handler.IntervalBuff(buffDataByID, entityByID2, entityByID, this.buffStateTable[targetID][buffID].fromSkillID, this.buffStateTable[targetID][buffID].fromSkillLevel, this.buffStateTable[targetID][buffID].fromSkillAttrChange, this.buffStateTable[targetID][buffID].isCommunicateMix);
            return;
        }
        goto IL_83;
    }
Beispiel #11
0
    protected bool CheckBuff(Buff buffData, EntityParent caster, EntityParent target, int fromSkillID, int elementType, bool isCommunicateMix = false)
    {
        if (buffData == null)
        {
            return(false);
        }
        if (caster == null)
        {
            return(false);
        }
        if (target == null)
        {
            return(false);
        }
        if (LocalAgent.GetSpiritIsDead(target, isCommunicateMix))
        {
            return(false);
        }
        if (!target.IsFighting)
        {
            return(false);
        }
        if (!BattleCalculator.CalculateAddBuff(caster.BattleBaseAttrs, target.BattleBaseAttrs, (double)buffData.buffProp, elementType))
        {
            return(false);
        }
        XDict <int, BuffState> buffListByEntityID = this.GetBuffListByEntityID(target.ID);

        if (buffListByEntityID == null)
        {
            return(false);
        }
        for (int i = 0; i < buffListByEntityID.Count; i++)
        {
            if (LocalAgent.GetBuffDataByID(buffListByEntityID.ElementKeyAt(i)).resist.Contains(buffData.type))
            {
                return(false);
            }
        }
        for (int j = 0; j < buffListByEntityID.Count; j++)
        {
            if (LocalAgent.GetBuffDataByID(buffListByEntityID.ElementKeyAt(j)).resistId.Contains(buffData.id))
            {
                return(false);
            }
        }
        List <int> list = new List <int>();

        for (int k = 0; k < buffListByEntityID.Count; k++)
        {
            if (LocalAgent.GetBuffDataByID(buffListByEntityID.ElementKeyAt(k)).cover.Contains(buffData.type))
            {
                list.Add(buffListByEntityID.ElementKeyAt(k));
            }
        }
        for (int l = 0; l < buffListByEntityID.Count; l++)
        {
            if (LocalAgent.GetBuffDataByID(buffListByEntityID.ElementKeyAt(l)).coverId.Contains(buffData.id))
            {
                list.Add(buffListByEntityID.ElementKeyAt(l));
            }
        }
        for (int m = 0; m < list.get_Count(); m++)
        {
            this.AppRemoveBuff(list.get_Item(m), target.ID);
        }
        list.Clear();
        for (int n = 0; n < buffListByEntityID.Count; n++)
        {
            if (buffData.delete.Contains(LocalAgent.GetBuffDataByID(buffListByEntityID.ElementKeyAt(n)).type))
            {
                list.Add(buffListByEntityID.ElementKeyAt(n));
            }
        }
        for (int num = 0; num < list.get_Count(); num++)
        {
            this.AppRemoveBuff(list.get_Item(num), target.ID);
        }
        if (LocalAgent.CheckBuffByTargetIDAndBuffID(target.ID, buffData.id))
        {
            int overlayModeId = buffData.overlayModeId;
            if (overlayModeId != 1 && overlayModeId != 2)
            {
                this.AppRemoveBuff(buffData.id, target.ID);
            }
        }
        return(true);
    }
Beispiel #12
0
 protected void AppDeFuse(long casterID)
 {
     LocalAgent.AppClearBuff(casterID);
     this.AppClearFuse(casterID, false);
 }
Beispiel #13
0
    public void AppFuse(EntityParent caster, int skillID, bool isCommunicateMix)
    {
        if (caster == null)
        {
            return;
        }
        if (caster.BattleBaseAttrs == null)
        {
            return;
        }
        XDict <int, LocalDimensionPetSpirit> petSpiritByOwnerID = LocalAgent.GetPetSpiritByOwnerID(caster.ID);

        if (petSpiritByOwnerID == null)
        {
            return;
        }
        if (petSpiritByOwnerID.Count == 0)
        {
            return;
        }
        int num = -1;

        for (int i = 0; i < petSpiritByOwnerID.Count; i++)
        {
            if (petSpiritByOwnerID.ElementValueAt(i).fuseRitualSkillInfo != null)
            {
                if (petSpiritByOwnerID.ElementValueAt(i).fuseRitualSkillInfo.skillId == skillID)
                {
                    num = petSpiritByOwnerID.ElementKeyAt(i);
                    LocalAgent.RemovePetSummonRitualSkill(caster.ID, petSpiritByOwnerID.ElementValueAt(i));
                    break;
                }
            }
        }
        List <EntityParent> values    = EntityWorld.Instance.GetEntities <EntityPet>().Values;
        EntityPet           entityPet = null;

        for (int j = 0; j < values.get_Count(); j++)
        {
            if (values.get_Item(j).IsFighting&& values.get_Item(j).OwnerListIdx == num && values.get_Item(j).OwnerID == caster.ID)
            {
                entityPet = (values.get_Item(j) as EntityPet);
                break;
            }
        }
        if (entityPet == null)
        {
            return;
        }
        FuseState fuseState = new FuseState();

        fuseState.modelID = caster.ModelID;
        fuseState.skill.Clear();
        using (Dictionary <int, int> .Enumerator enumerator = caster.GetSkillPairPart().GetEnumerator())
        {
            while (enumerator.MoveNext())
            {
                KeyValuePair <int, int> current = enumerator.get_Current();
                fuseState.skill.Add(current.get_Key(), current.get_Value());
            }
        }
        using (List <int> .Enumerator enumerator2 = caster.GetSkillSinglePart().GetEnumerator())
        {
            while (enumerator2.MoveNext())
            {
                int current2 = enumerator2.get_Current();
                fuseState.skill.AddValue(current2);
            }
        }
        fuseState.petID = entityPet.ID;
        LocalAgent.AppClearBuff(caster.ID);
        LocalAgent.AppClearBuff(entityPet.ID);
        this.SetFuseAttrs(caster, entityPet, fuseState);
        Pet pet = DataReader <Pet> .Get(entityPet.TypeID);

        for (int k = 0; k < pet.fuseSkill.get_Count(); k++)
        {
            if (pet.fuseSkill.get_Item(k).key == caster.TypeID)
            {
                List <KeyValuePair <int, int> > list = new List <KeyValuePair <int, int> >();
                list.Add(new KeyValuePair <int, int>(1, pet.fuseNormalSkill));
                list.Add(new KeyValuePair <int, int>(11, pet.fuseSkill.get_Item(k).value));
                LocalBattleProtocolSimulator.SendFit(caster.ID, entityPet.ID, pet.fuseModle, list, 1000 * (int)(entityPet.FuseTime + (caster as EntitySelf).TotalFuseTimePlus));
                caster.SetValue(GameData.AttrType.MoveSpeed, DataReader <AvatarModel> .Get(pet.fuseModle).speed, true);
                break;
            }
        }
        fuseState.timerID = TimerHeap.AddTimer((uint)(1000f * (entityPet.FuseTime + (caster as EntitySelf).TotalFuseTimePlus)), 0, delegate
        {
            this.AppDeFuse(caster.ID);
        });
        this.fuseStateTable.Add(caster.ID, fuseState);
    }
    public static void AppDamage(Effect effectData, EntityParent caster, List <long> effectTargetIDs, XPoint basePoint, int skillID, bool isAddEffect, bool isCommunicateMix)
    {
        if (!LocalAgent.GetEntityCalculatable(caster, isCommunicateMix))
        {
            return;
        }
        XDict <GameData.AttrType, long> effectCasterTempAttr = LocalBattleEffectCalculatorHandler.GetEffectCasterTempAttr(effectData, caster, skillID);
        bool flag = isAddEffect && isCommunicateMix;

        for (int i = 0; i < effectTargetIDs.get_Count(); i++)
        {
            if (LocalAgent.GetEntityCalculatable(caster, isCommunicateMix))
            {
                EntityParent entityByID = LocalAgent.GetEntityByID(effectTargetIDs.get_Item(i));
                if (LocalAgent.GetEntityCalculatable(entityByID, isCommunicateMix))
                {
                    if (!entityByID.IsUnconspicuous || effectData.forcePickup != 0)
                    {
                        if (!entityByID.IsIgnoreFormula)
                        {
                            CauseDamageEffectAnnouncer.Announce(caster, entityByID, effectData.id);
                            UnderDamageEffectAnnouncer.Announce(entityByID, caster, effectData.id);
                            BattleCalculator.DamageResult damageResult   = BattleCalculator.CalculateDamage(caster.BattleBaseAttrs, entityByID.BattleBaseAttrs, caster.IsEntitySelfType || caster.IsEntityPlayerType || caster.IsEntityPetType, entityByID.IsEntitySelfType || entityByID.IsEntityPlayerType, effectCasterTempAttr, null);
                            List <ClientDrvBuffInfo>      casterBuffInfo = null;
                            List <ClientDrvBuffInfo>      targetBuffInfo = null;
                            if (isCommunicateMix)
                            {
                                casterBuffInfo = LocalAgent.MakeClientDrvBuffInfo(caster.ID);
                                targetBuffInfo = LocalAgent.MakeClientDrvBuffInfo(effectTargetIDs.get_Item(i));
                            }
                            if (damageResult.Lifesteal > 0L && !damageResult.IsMiss && LocalAgent.GetEntityIsCurable(caster, isCommunicateMix))
                            {
                                long num = LocalAgent.GetSpiritCurHp(caster, isCommunicateMix) + damageResult.Lifesteal;
                                if (num > caster.RealHpLmt)
                                {
                                    num = caster.RealHpLmt;
                                }
                                Pos pos = null;
                                if (caster.Actor)
                                {
                                    pos   = new Pos();
                                    pos.x = caster.Actor.FixTransform.get_position().x * 100f;
                                    pos.y = caster.Actor.FixTransform.get_position().z * 100f;
                                }
                                LocalAgent.SetSpiritCurHp(caster, num, isCommunicateMix);
                                LocalBattleProtocolSimulator.SendTreat(caster.ID, (GameObjectType.ENUM)caster.WrapType, caster.ID, (GameObjectType.ENUM)caster.WrapType, BattleAction_Treat.TreatSrcType.SuckBlood, damageResult.Lifesteal, num, pos);
                            }
                            long num2 = LocalAgent.GetSpiritCurHp(entityByID, isCommunicateMix) - damageResult.Damage;
                            if (damageResult.IsMiss)
                            {
                                CauseMissAnnouncer.Announce(caster, entityByID);
                                UnderMissAnnouncer.Announce(entityByID, caster);
                            }
                            else if (num2 <= 0L)
                            {
                                num2 = 0L;
                                LocalBattleHitHandler.AppDead(effectTargetIDs.get_Item(i));
                                GlobalBattleNetwork.Instance.SendClientDrvBattleDeathNty(effectTargetIDs.get_Item(i));
                            }
                            else
                            {
                                if (damageResult.IsCrit)
                                {
                                    CauseCritAnnouncer.Announce(caster, entityByID);
                                    UnderCritAnnouncer.Announce(entityByID, caster);
                                }
                                if (damageResult.IsParry)
                                {
                                    CauseParryAnnouncer.Announce(caster, entityByID);
                                    UnderParryAnnouncer.Announce(entityByID, caster);
                                    LocalBattleHitHandler.AppParryFx(entityByID);
                                }
                                else
                                {
                                    LocalBattleHitHandler.AppHit(effectData, caster, entityByID, basePoint, isAddEffect);
                                }
                                LocalBattleHitHandler.AppHitAudio(effectData, entityByID);
                                LocalBattleHitHandler.AppWeakCalculate(caster, entityByID, effectCasterTempAttr);
                            }
                            LocalAgent.SetSpiritCurHp(entityByID, num2, isCommunicateMix);
                            List <long> list = new List <long>();
                            if (isCommunicateMix && !damageResult.IsMiss)
                            {
                                list.Add((long)damageResult.parryRandomIndex);
                                list.Add((long)damageResult.critRandomIndex);
                                list.Add((long)damageResult.damageRandomIndex);
                                GlobalBattleNetwork.Instance.SendClientDriveBattleEffectDamage(caster.ID, effectTargetIDs.get_Item(i), caster.Hp, num2, damageResult.Damage, skillID, effectData.id, flag, true, casterBuffInfo, targetBuffInfo, basePoint, list, string.Concat(new object[]
                                {
                                    caster.TryAddValue(GameData.AttrType.SkillNmlDmgScale, effectCasterTempAttr),
                                    "_",
                                    caster.TryAddValue(GameData.AttrType.SkillNmlDmgAddAmend, effectCasterTempAttr),
                                    "_",
                                    entityByID.DefMulAmend,
                                    "_",
                                    caster.TryAddValue(GameData.AttrType.SkillIgnoreDefenceHurt, effectCasterTempAttr)
                                }), false);
                            }
                            if (list.get_Count() == 3)
                            {
                            }
                            LocalBattleProtocolSimulator.SendBleed(effectTargetIDs.get_Item(i), (GameObjectType.ENUM)entityByID.WrapType, caster.ID, (GameObjectType.ENUM)caster.WrapType, BattleAction_Bleed.DmgSrcType.Attack, ElemType.ENUM.Normal, damageResult.Damage, num2, damageResult.IsCrit, damageResult.IsParry, damageResult.IsMiss);
                            if (flag)
                            {
                                flag = false;
                            }
                        }
                    }
                }
            }
        }
    }