コード例 #1
0
        private static void OnTick(object sender, EventArgs args)
        {
            if (Active && Environment.TickCount - _lastPulse > 250)
            {
                _lastPulse = Environment.TickCount;

                var hits = Physics.SphereCastAll(LocalPlayer.MainCam.transform.position, Radius, new Vector3(1f, 0f, 0f));
                if (hits != null && hits.Length > 0)
                {
                    foreach (var hit in hits)
                    {
                        if (Enabled.RepairBuildings)
                        {
                            var buildingRepair = hit.collider.GetComponent <BuildingRepair>();
                            buildingRepair?.RepairBuildingInstantly();
                        }
                        if (Enabled.KillEnemies)
                        {
                            var enemy = hit.collider.GetComponent <EnemyHealth>();
                            enemy?.SendMessage("Hit", 100);
                        }
                        if (Enabled.KillPlayers)
                        {
                            var player = hit.collider.GetComponent <CoopPlayerRemoteSetup>();
                            if (player != null)
                            {
                                KillAllPlayers.KillSinglePlayer(player);
                            }
                        }
                    }
                }
            }
        }
コード例 #2
0
        private static void OnTick(object sender, EventArgs args)
        {
            if (Active && Environment.TickCount - _lastPulse > 250)
            {
                _lastPulse = Environment.TickCount;

                var hits = Physics.SphereCastAll(LocalPlayer.MainCam.transform.position, Radius, new Vector3(1f, 0f, 0f));
                if (hits != null && hits.Length > 0)
                {
                    foreach (var hit in hits)
                    {
                        if (Enabled.RepairBuildings)
                        {
                            var entity = hit.collider.GetComponent <BoltEntity>();
                            if (entity != null && entity.isAttached && entity.StateIs <IRepairableStructure>())
                            {
                                Logger.Info("Found repairable structure!");

                                var structure = entity.GetState <IRepairableStructure>();
                                if (structure != null)
                                {
                                    Logger.Info("Got repairable structure!");

                                    var missingMaterials = structure.CalcTotalRepairMaterial() - structure.RepairMaterial;
                                    var missingLogs      = structure.CalcMissingRepairLogs() - structure.RepairLogs;

                                    if (missingMaterials > 0)
                                    {
                                        for (var i = 0; i < missingMaterials; i++)
                                        {
                                            structure.AddRepairMaterial(false);
                                        }
                                    }
                                    if (missingLogs > 0)
                                    {
                                        for (var i = 0; i < missingLogs; i++)
                                        {
                                            structure.AddRepairMaterial(true);
                                        }
                                    }
                                }
                            }
                        }
                        if (Enabled.KillEnemies)
                        {
                            var entity = hit.collider.GetComponent <BoltEntity>();
                            if (entity != null && entity.isAttached && entity.StateIs <IMutantState>())
                            {
                                try
                                {
                                    var playerHitEnemy = PlayerHitEnemy.Create(Bolt.GlobalTargets.OnlyServer);
                                    playerHitEnemy.Target           = entity;
                                    playerHitEnemy.Burn             = true;
                                    playerHitEnemy.getStealthAttack = true;
                                    playerHitEnemy.Hit        = 1000;
                                    playerHitEnemy.takeDamage = 1000;
                                    playerHitEnemy.HitAxe     = true;
                                    playerHitEnemy.Send();
                                }
                                catch (Exception)
                                {
                                    // ignored
                                }
                            }
                        }
                        if (Enabled.KillPlayers)
                        {
                            var player = hit.collider.GetComponent <CoopPlayerRemoteSetup>();
                            if (player != null)
                            {
                                KillAllPlayers.KillSinglePlayer(player);
                            }
                        }
                    }
                }
            }
        }
コード例 #3
0
ファイル: SphereAction.cs プロジェクト: nosubtext/ModAPI-Mods
 public static void ExecuteAroundPosition(Vector3 position, float radius)
 {
     try
     {
         var hits = Physics.SphereCastAll(position, radius, new Vector3(1f, 0f, 0f));
         foreach (var hit in hits)
         {
             if (Enabled.Buildings && hit.collider.GetComponent <destroyStructure>() != null)
             {
                 var structure = hit.collider.GetComponent <destroyStructure>();
                 structure.SendMessage("Hit", structure.health);
             }
             else if (Enabled.SuitCases && hit.collider.GetComponent <SuitCase>() != null)
             {
                 hit.collider.gameObject.SendMessage("Open");
                 hit.collider.gameObject.SendMessage("Open_Perform");
             }
             else if (Enabled.Trees && hit.collider.GetComponent <TreeHealth>() != null)
             {
                 hit.collider.gameObject.SendMessage("Explosion", 100f);
             }
             else if (Enabled.BluePrints && hit.collider.GetComponent <Craft_Structure>() != null)
             {
                 hit.collider.gameObject.SendMessage("CancelBlueprint");
                 hit.collider.gameObject.SendMessage("CancelBlueprintSafe");
             }
             else if (Enabled.BreakableCrates && hit.collider.GetComponent <BreakCrate>() != null)
             {
                 hit.collider.gameObject.SendMessage("Explosion");
             }
             else if (Enabled.Buildings && hit.collider.GetComponent <BuildingExplosion>() != null)
             {
                 hit.collider.gameObject.SendMessage("UnlocalizedExplode");
             }
             else if (Enabled.KillPlayers && hit.collider.GetComponent <CoopPlayerRemoteSetup>() != null)
             {
                 KillAllPlayers.KillSinglePlayer(hit.collider.GetComponent <CoopPlayerRemoteSetup>());
             }
             else if (Enabled.BreakableCrates && hit.collider.GetComponent <BreakWoodSimple>() != null)
             {
                 hit.collider.gameObject.SendMessage("Hit", 10000);
             }
             else if (Enabled.Buildings && hit.collider.GetComponent <Fire2>() != null)
             {
                 hit.collider.gameObject.SendMessage("DestroyFire");
             }
             else if (Enabled.Buildings && (hit.collider.GetComponent <BuildingHealthHitRelay>() != null ||
                                            hit.collider.GetComponent <BuildingHealthChunkHitRelay>() != null ||
                                            hit.collider.GetComponent <FoundationChunkTier>() != null ||
                                            hit.collider.GetComponent <BuildingHealth>() != null ||
                                            hit.collider.GetComponent <BreakWoodSimple>() != null) ||
                      Enabled.TreeStumps && hit.collider.GetComponent <ExplodeTreeStump>() != null)
             {
                 hit.collider.gameObject.SendMessage("LocalizedHit", new LocalizedHitData(hit.collider.gameObject.transform.position, 1000f));
             }
             else if (Enabled.Bushes && (hit.collider.GetComponent <CutSappling>() != null ||
                                         hit.collider.GetComponent <CutBush>() != null ||
                                         hit.collider.GetComponent <CutBush2>() != null ||
                                         hit.collider.GetComponent <CutEffigy>() != null ||
                                         hit.collider.GetComponent <CutStalactite>() != null))
             {
                 hit.collider.gameObject.SendMessage("CutDown");
             }
         }
     }
     catch (Exception)
     {
         // ignored
     }
 }