예제 #1
0
        //生成物品和丢到地上都会触发
        //public override void PostSpawnSetup(bool respawningAfterLoad)
        //{
        //    base.PostSpawnSetup(respawningAfterLoad);
        //}



        //装备时触发
        public override void Notify_Equipped(Pawn pawn)
        {
            if (pawn != null)
            {
                voidNetTerminal = Things.VoidNetTerminal.FindTerminal(pawn);
                if (voidNetTerminal != null)
                {
                    voidNetTerminal.Online(this);
                }
            }
            base.Notify_Equipped(pawn);
        }
예제 #2
0
        //public override void Notify_UsedWeapon(Pawn pawn)
        //{

        //    base.Notify_UsedWeapon(pawn);
        //}


        /// <summary>
        /// 尝试瞄准
        /// </summary>
        /// <param name="__instance">Verb实例</param>
        /// <param name="castTarg"></param>
        /// <param name="destTarg"></param>
        /// <param name="surpriseAttack"></param>
        /// <param name="canHitNonTargetPawns"></param>
        /// <returns>是否可以瞄准</returns>
        public virtual bool TryStartCastOn(Verb __instance,
                                           LocalTargetInfo castTarg, LocalTargetInfo destTarg, bool surpriseAttack = false, bool canHitNonTargetPawns = true)
        {
            int  nt    = Find.TickManager.TicksGame;
            Pawn owner = __instance.CasterPawn;

            if (nt > checkNetTick)
            {
                checkNetTick = nt + 30;
                Things.VoidNetTerminal net = Things.VoidNetTerminal.FindTerminal(owner);
                if (net != null)
                {
                    if (voidNetTerminal == null || (voidNetTerminal != null && voidNetTerminal != net))
                    {
                        net.Online(this);
                    }
                }
                else if (voidNetTerminal != null)
                {
                    voidNetTerminal.Offline(this);
                }
            }

            if (voidNetTerminal == null)
            {
                return(false);
            }
            if (!voidNetTerminal.CanCostEnergy(EnergyEachShot))
            {
                if (nt > slientTick)
                {
                    MoteMaker.ThrowText(owner.Position.ToVector3(), owner.Map, "TerminalOutOfEnergy".Translate(), Color.yellow, 2f);
                    slientTick = nt + 1800;
                }
                return(false);
            }
            if (CompShootMode != null)
            {
                CompShootMode.PostPreStartShoot();
            }

            return(true);
        }