//生成物品和丢到地上都会触发 //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); }
//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); }