//////////////// private bool CanStartInvasion(Player player, out Item fuelItem) { fuelItem = CrossDimensionalAggregatorItem.GetFuelItemFromInventory(player); if (fuelItem == null || fuelItem.IsAir) { return(false); } var myworld = ModContent.GetInstance <DynamicInvasionsWorld>(); var itemInfo = this.item.GetGlobalItem <AggregatorItemInfo>(); int fuelCost = this.GetFuelCost(); if (!itemInfo.IsInitialized) { return(false); } // Not enough fuel? if (fuelCost > fuelItem.stack) { return(false); } return(myworld.Logic.CanStartInvasion()); }
public override bool CanUseItem(Player player) { if (!DynamicInvasionsMod.Config.Enabled) { return(false); } var modworld = ModContent.GetInstance <DynamicInvasionsWorld>(); var itemInfo = this.item.GetGlobalItem <AggregatorItemInfo>(); if (!itemInfo.IsInitialized) { return(false); } if (!modworld.Logic.CanStartInvasion()) { Main.NewText("Signal disrupted by mass of surface activity.", Main.errorColor); return(false); } Item fuelItem = CrossDimensionalAggregatorItem.GetFuelItemFromInventory(player); int fuelCost = this.GetFuelCost(); bool hasFuel = fuelItem != null && !fuelItem.IsAir && fuelCost <= fuelItem.stack; if (!hasFuel) { Main.NewText("Not enough Eternia Crystals.", Main.errorColor); return(false); } return(hasFuel); }
public override void RightClick(Player player) { var config = DynamicInvasionsMod.Config; var myworld = ModContent.GetInstance <DynamicInvasionsWorld>(); if (config.CanAbortInvasions && myworld.Logic.IsInvasionHappening()) { Item fuelItem = CrossDimensionalAggregatorItem.GetFuelItemFromInventory(player); int fuelAmt = fuelItem != null && !fuelItem.IsAir ? fuelItem.stack : 0; if (config.InvasionAbortFuelCost == 0 || fuelAmt >= config.InvasionAbortFuelCost) { if (config.InvasionAbortFuelCost > 0) { ItemHelpers.ReduceStack(fuelItem, config.InvasionAbortFuelCost); } Main.NewText("Ending invasion..."); if (Main.netMode == 0) { myworld.Logic.EndInvasion(); } else if (Main.netMode == 1) { ClientPacketHandlers.SendEndInvasionRequestFromClient(); } } else { Main.NewText("You need " + config.InvasionAbortFuelCost + " Eternia Crystals to abort an invasion.", Color.Yellow); } } else { Main.NewText("No custom invasion in progress.", Color.Yellow); } }