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); } } } } } }
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); } } } } } }
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 } }