public static MyCubeGrid GetLootboxGrid(Vector3 position, KothConfig config) { if (MyAPIGateway.Entities.GetEntityById(config.LootboxGridEntityId) != null) { if (MyAPIGateway.Entities.GetEntityById(config.LootboxGridEntityId) is MyCubeGrid grid) { return(grid); } } BoundingSphereD sphere = new BoundingSphereD(position, config.CaptureRadiusInMetre + 5000); foreach (MyCubeGrid grid in MyAPIGateway.Entities.GetEntitiesInSphere(ref sphere).OfType <MyCubeGrid>()) { IMyFaction fac = FacUtils.GetPlayersFaction(FacUtils.GetOwner(grid)); if (fac != null && fac.Tag.Equals(config.KothBuildingOwner)) { Sandbox.ModAPI.IMyGridTerminalSystem gridTerminalSys = MyAPIGateway.TerminalActionsHelper.GetTerminalSystemForGrid(grid); Sandbox.ModAPI.IMyTerminalBlock block = gridTerminalSys.GetBlockWithName(config.LootBoxTerminalName); if (block != null) { return(grid); } } } return(null); }
public static void SpawnCores(MyCubeGrid grid, KothConfig config) { if (grid != null) { Sandbox.ModAPI.IMyGridTerminalSystem gridTerminalSys = MyAPIGateway.TerminalActionsHelper.GetTerminalSystemForGrid(grid); MyDefinitionId rewardItem = getRewardItem(config); Sandbox.ModAPI.IMyTerminalBlock block = gridTerminalSys.GetBlockWithName(config.LootBoxTerminalName); if (block != null && rewardItem != null) { Log.Info("Should spawn item"); MyItemType itemType = new MyInventoryItemFilter(rewardItem.TypeId + "/" + rewardItem.SubtypeName).ItemType; block.GetInventory().AddItems((MyFixedPoint)config.RewardAmount, (MyObjectBuilder_PhysicalObject)MyObjectBuilderSerializer.CreateNewObject(rewardItem)); } else { Log.Info("Cant spawn item"); } return; } }