Пример #1
0
        private void UpdateAntiHiddenEyeHurt(int inDelta)
        {
            if (base.IsDeadState)
            {
                return;
            }
            if (this.actorSubType != 1 && this.actorSubType != 4 && this.actorSubType != 2)
            {
                return;
            }
            GlobalConfig instance = MonoSingleton <GlobalConfig> .get_instance();

            int defenseAntiHiddenFrameInterval = instance.DefenseAntiHiddenFrameInterval;

            this.antiHiddenTimer += inDelta;
            if (this.antiHiddenTimer >= instance.DefenseAntiHiddenInterval && (ulong)this.actor.ObjID % (ulong)((long)defenseAntiHiddenFrameInterval) == (ulong)Singleton <FrameSynchr> .get_instance().CurFrameNum % (ulong)((long)defenseAntiHiddenFrameInterval))
            {
                this.antiHiddenTimer = 0;
                List <PoolObjHandle <ActorRoot> > fakeTrueEyes = Singleton <GameObjMgr> .get_instance().FakeTrueEyes;

                int count = fakeTrueEyes.get_Count();
                for (int i = 0; i < count; i++)
                {
                    PoolObjHandle <ActorRoot> poolObjHandle = fakeTrueEyes.get_Item(i);
                    if (poolObjHandle)
                    {
                        if (!this.TarEyeList_.Contains(poolObjHandle))
                        {
                            ActorRoot handle = poolObjHandle.get_handle();
                            if (handle.IsEnemyCamp(this.actor))
                            {
                                VInt3 worldLoc = new VInt3(handle.location.x, handle.location.z, 0);
                                if (Singleton <GameFowManager> .get_instance().IsSurfaceCellVisible(worldLoc, this.actor.TheActorMeta.ActorCamp) && (handle.location - this.actor.location).get_sqrMagnitudeLong2D() < this.attackDistSqr)
                                {
                                    this.TarEyeList_.Add(poolObjHandle);
                                }
                            }
                        }
                    }
                }
                int count2 = this.TarEyeList_.get_Count();
                if (count2 > 0)
                {
                    for (int j = count2 - 1; j >= 0; j--)
                    {
                        if (!fakeTrueEyes.Contains(this.TarEyeList_.get_Item(j)))
                        {
                            this.TarEyeList_.RemoveAt(j);
                        }
                    }
                }
                PoolObjHandle <ActorRoot> poolObjHandle2 = OrganWrapper.FindEyeTarget(this.TarEyeList_);
                if (poolObjHandle2)
                {
                    BufConsumer bufConsumer = new BufConsumer(instance.DefenseAntiHiddenHurtId, poolObjHandle2, this.actorPtr);
                    bufConsumer.Use();
                }
            }
        }
Пример #2
0
        public override void TriggerUpdate(PoolObjHandle <ActorRoot> src, PoolObjHandle <ActorRoot> atker, ITrigger inTrigger)
        {
            int updateUniqueId = this.UpdateUniqueId;

            if (updateUniqueId > 0)
            {
                BufConsumer bufConsumer = new BufConsumer(updateUniqueId, src, atker);
                bufConsumer.Use();
            }
        }
Пример #3
0
        public override void TriggerLeave(PoolObjHandle <ActorRoot> src, ITrigger inTrigger)
        {
            int leaveUniqueId = this.LeaveUniqueId;

            if (leaveUniqueId > 0)
            {
                BufConsumer bufConsumer = new BufConsumer(leaveUniqueId, src, new PoolObjHandle <ActorRoot>(null));
                bufConsumer.Use();
            }
            int enterUniqueId = this.EnterUniqueId;

            if (this.bStopWhenLeaving && enterUniqueId > 0 && inTrigger != null)
            {
                AreaEventTrigger areaEventTrigger = inTrigger as AreaEventTrigger;
                if (areaEventTrigger != null)
                {
                    RefParamOperator refParamOperator = areaEventTrigger._inActors.get_Item(src.handle.ObjID).refParams[this];
                    if (refParamOperator != null)
                    {
                        ListView <string> listView   = new ListView <string>();
                        GameObject[]      refObjList = this.RefObjList;
                        if (refObjList != null)
                        {
                            int num = refObjList.Length;
                            for (int i = 0; i < num; i++)
                            {
                                listView.Add(string.Format("TriggerActionBuffTar_{0}", i));
                            }
                        }
                        if (this.bSrc)
                        {
                            listView.Add("TriggerActionBuffSrc");
                        }
                        if (this.bAtker)
                        {
                            listView.Add("TriggerActionBuffAtker");
                        }
                        ListView <string> .Enumerator enumerator = listView.GetEnumerator();
                        while (enumerator.MoveNext())
                        {
                            string current = enumerator.Current;
                            if (!string.IsNullOrEmpty(current))
                            {
                                BuffFense refParamObject = refParamOperator.GetRefParamObject <BuffFense>(current);
                                if (refParamObject != null)
                                {
                                    refParamObject.Stop();
                                }
                            }
                        }
                    }
                }
            }
        }
Пример #4
0
        public override RefParamOperator TriggerEnter(PoolObjHandle <ActorRoot> src, PoolObjHandle <ActorRoot> atker, ITrigger inTrigger)
        {
            int enterUniqueId = this.EnterUniqueId;

            GameObject[]     refObjList       = this.RefObjList;
            RefParamOperator refParamOperator = new RefParamOperator();

            if (enterUniqueId > 0)
            {
                if (refObjList != null)
                {
                    int num = refObjList.Length;
                    for (int i = 0; i < num; i++)
                    {
                        GameObject gameObject = refObjList[i];
                        if (!(gameObject == null))
                        {
                            PoolObjHandle <ActorRoot> actorRoot = ActorHelper.GetActorRoot(gameObject);
                            if (actorRoot)
                            {
                                BufConsumer bufConsumer = new BufConsumer(enterUniqueId, actorRoot, actorRoot);
                                if (bufConsumer.Use())
                                {
                                    refParamOperator = new RefParamOperator();
                                    string name = string.Format("TriggerActionBuffTar_{0}", i);
                                    refParamOperator.AddRefParam(name, bufConsumer.buffSkill);
                                }
                            }
                        }
                    }
                }
                if (this.bSrc && src)
                {
                    BufConsumer bufConsumer2 = new BufConsumer(enterUniqueId, src, atker);
                    if (bufConsumer2.Use())
                    {
                        refParamOperator = new RefParamOperator();
                        refParamOperator.AddRefParam("TriggerActionBuffSrc", bufConsumer2.buffSkill);
                    }
                }
                if (this.bAtker && atker)
                {
                    BufConsumer bufConsumer3 = new BufConsumer(enterUniqueId, atker, src);
                    if (bufConsumer3.Use())
                    {
                        refParamOperator = new RefParamOperator();
                        refParamOperator.AddRefParam("TriggerActionBuffAtker", bufConsumer3.buffSkill);
                    }
                }
            }
            return(refParamOperator);
        }
Пример #5
0
        public override RefParamOperator TriggerEnter(PoolObjHandle <ActorRoot> src, PoolObjHandle <ActorRoot> atker, ITrigger inTrigger, object prm)
        {
            int enterUniqueId = base.EnterUniqueId;

            GameObject[]     refObjList = base.RefObjList;
            RefParamOperator @operator  = new RefParamOperator();

            if (enterUniqueId > 0)
            {
                if (refObjList != null)
                {
                    int length = refObjList.Length;
                    for (int i = 0; i < length; i++)
                    {
                        GameObject go = refObjList[i];
                        if (go != null)
                        {
                            PoolObjHandle <ActorRoot> actorRoot = ActorHelper.GetActorRoot(go);
                            if (actorRoot != 0)
                            {
                                BufConsumer consumer = new BufConsumer(enterUniqueId, actorRoot, actorRoot);
                                if (consumer.Use())
                                {
                                    @operator = new RefParamOperator();
                                    string name = string.Format("TriggerActionBuffTar_{0}", i);
                                    @operator.AddRefParam(name, consumer.buffSkill);
                                }
                            }
                        }
                    }
                }
                if (base.bSrc && (src != 0))
                {
                    BufConsumer consumer2 = new BufConsumer(enterUniqueId, src, atker);
                    if (consumer2.Use())
                    {
                        @operator = new RefParamOperator();
                        @operator.AddRefParam("TriggerActionBuffSrc", consumer2.buffSkill);
                    }
                }
                if (base.bAtker && (atker != 0))
                {
                    BufConsumer consumer3 = new BufConsumer(enterUniqueId, atker, src);
                    if (consumer3.Use())
                    {
                        @operator = new RefParamOperator();
                        @operator.AddRefParam("TriggerActionBuffAtker", consumer3.buffSkill);
                    }
                }
            }
            return(@operator);
        }
 public static void ApplyBuff(List <PoolObjHandle <ActorRoot> > actorList, int buffid)
 {
     if (buffid == 0)
     {
         return;
     }
     List <PoolObjHandle <ActorRoot> > .Enumerator enumerator = actorList.GetEnumerator();
     while (enumerator.MoveNext())
     {
         PoolObjHandle <ActorRoot> current = enumerator.get_Current();
         if (current.handle.IsHostCamp())
         {
             BufConsumer bufConsumer = new BufConsumer(buffid, enumerator.get_Current(), enumerator.get_Current());
             bufConsumer.Use();
         }
     }
 }
Пример #7
0
 private void SetMyselfOnFire(PoolObjHandle <ActorRoot> inActor)
 {
     if (inActor != 0)
     {
         if (this.CharmId > 0)
         {
             ShenFuInfo dataByKey = GameDataMgr.shenfuBin.GetDataByKey(this.CharmId);
             if (dataByKey != null)
             {
                 BufConsumer consumer = new BufConsumer(dataByKey.iBufId, inActor, inActor);
                 if (consumer.Use())
                 {
                     PoolObjHandle <CTailsman> inTailsman = new PoolObjHandle <CTailsman>(this);
                     STailsmanEventParam       prm        = new STailsmanEventParam(inTailsman, inActor);
                     Singleton <GameEventSys> .instance.SendEvent <STailsmanEventParam>(GameEventDef.Event_TailsmanUsed, ref prm);
                 }
             }
         }
         this.DoClearing();
     }
 }
Пример #8
0
        public static void DoSpawn(GameObject inGameObj, VInt3 bornPos, VInt3 bornDir, bool bInSeqMeta, ActorMeta[] inActorMetaList, GeoPolygon inPolygon, GameObject inDeadPoint, PursuitInfo pursuitInfo, int[] inBuffDemand, int inRandPassSkillRule, ref List <PoolObjHandle <ActorRoot> > inSpawnedList)
        {
            if (inGameObj == null || inActorMetaList == null || inActorMetaList.Length == 0 || inSpawnedList == null)
            {
                return;
            }
            List <ActorMeta> list = new List <ActorMeta>();

            if (bInSeqMeta)
            {
                list.AddRange(inActorMetaList);
            }
            else if (inActorMetaList.Length > 0)
            {
                int nMax = inActorMetaList.Length;
                int num  = (int)FrameRandom.Random((uint)nMax);
                list.Add(inActorMetaList[num]);
            }
            List <ActorMeta> .Enumerator enumerator = list.GetEnumerator();
            while (enumerator.MoveNext())
            {
                ActorMeta current = enumerator.get_Current();
                if (current.ConfigId > 0 && current.ActorType != ActorTypeDef.Invalid)
                {
                    PoolObjHandle <ActorRoot> poolObjHandle = default(PoolObjHandle <ActorRoot>);
                    if (!Singleton <GameObjMgr> .GetInstance().TryGetFromCache(ref poolObjHandle, ref current))
                    {
                        poolObjHandle = Singleton <GameObjMgr> .GetInstance().SpawnActorEx(null, ref current, bornPos, bornDir, false, true);

                        if (poolObjHandle)
                        {
                            poolObjHandle.get_handle().InitActor();
                            poolObjHandle.get_handle().PrepareFight();
                            Singleton <GameObjMgr> .get_instance().AddActor(poolObjHandle);

                            poolObjHandle.get_handle().StartFight();
                        }
                    }
                    else
                    {
                        poolObjHandle.get_handle().ReactiveActor(bornPos, bornDir);
                    }
                    if (poolObjHandle)
                    {
                        poolObjHandle.get_handle().ObjLinker.Invincible = current.Invincible;
                        poolObjHandle.get_handle().ObjLinker.CanMovable = !current.NotMovable;
                        poolObjHandle.get_handle().BornPos = bornPos;
                        if (inPolygon != null && inDeadPoint != null)
                        {
                            poolObjHandle.get_handle().ActorControl.m_rangePolygon = inPolygon;
                            poolObjHandle.get_handle().ActorControl.m_deadPointGo = inDeadPoint;
                        }
                        if (pursuitInfo != null && pursuitInfo.IsVaild())
                        {
                            MonsterWrapper monsterWrapper = poolObjHandle.get_handle().ActorControl as MonsterWrapper;
                            if (monsterWrapper != null)
                            {
                                monsterWrapper.Pursuit = pursuitInfo;
                            }
                        }
                        inSpawnedList.Add(poolObjHandle);
                        if (inBuffDemand != null)
                        {
                            for (int i = 0; i < inBuffDemand.Length; i++)
                            {
                                int         inBuffID    = inBuffDemand[i];
                                BufConsumer bufConsumer = new BufConsumer(inBuffID, poolObjHandle, poolObjHandle);
                                bufConsumer.Use();
                            }
                        }
                        if (inRandPassSkillRule > 0 && poolObjHandle.get_handle().SkillControl != null)
                        {
                            poolObjHandle.get_handle().SkillControl.InitRandomSkill(inRandPassSkillRule);
                        }
                    }
                }
            }
        }
Пример #9
0
        public void ApplyBuff(PoolObjHandle <ActorRoot> InTarget)
        {
            BufConsumer bufConsumer = new BufConsumer((int)this.BufDropInfo.dwBufID, InTarget, InTarget);

            bufConsumer.Use();
        }