public void probe(ItemStack specimen, IInventory inventory, int startSlot, int slotCount) { if (status != Status.PLAYING) { return; } IIndividual individual = AlleleManager.alleleRegistry.getIndividual(specimen); if (individual == null) { return; } if (bountyLevel > 1) { bountyLevel--; } IAlleleSpecies species = individual.getGenome().getPrimary(); gameBoard.hideProbedTokens(); int revealCount = getSampleSize(slotCount); for (int i = 0; i < revealCount; i++) { ItemStack sample = inventory.decrStackSize(startSlot + i, 1); if (!sample.isEmpty()) { if (rand.nextFloat() < species.getResearchSuitability(sample)) { gameBoard.probe(); } } } lastUpdate = System.currentTimeMillis(); }
@Override public boolean canSlotAccept(int slotIndex, ItemStack itemStack) { if (slotIndex >= SLOT_INPUT_1 && slotIndex < SLOT_INPUT_1 + tile.getGame().getSampleSize(SLOTS_INPUT_COUNT)) { ItemStack specimen = getStackInSlot(SLOT_ANALYZE); if (specimen.isEmpty()) { return false; } IIndividual individual = AlleleManager.alleleRegistry.getIndividual(specimen); return individual != null && individual.getGenome().getPrimary().getResearchSuitability(itemStack) > 0; } return slotIndex == SLOT_ANALYZE && (AlleleManager.alleleRegistry.isIndividual(itemStack) || GeneticsUtil.getGeneticEquivalent(itemStack) != null); }