Skip to content

Instantly share code, notes, and snippets.

@bonetechnologies
Created May 19, 2015 02:04
Show Gist options
  • Save bonetechnologies/eb3d16dfc8472c9560a7 to your computer and use it in GitHub Desktop.
Save bonetechnologies/eb3d16dfc8472c9560a7 to your computer and use it in GitHub Desktop.
public void getForageForRoom(Room room, Player player) {
int countOfForagesFound = 0;
int totalForageXp = 0;
try {
for (Forage forage : room.getForages().values()) {
int foragingLevel = getLevel(gameManager.getPlayerManager().getPlayerMetadata(player.getPlayerId()).getStats().getForaging());
if (forage.getMinLevel() > foragingLevel) {
// System.out.println("Foraging level not high enough.");
return;
}
if (forage.getCoolDownTicksLeft() > 0) {
//System.out.println("Forage is still cooling down. Ticks left: " + forage.getCoolDownTicksLeft());
return;
}
forage.setCoolDownTicksLeft(forage.getCoolDownTicks());
double foragePctOfSuccess = forage.getPctOfSuccess();
int modifiedLevelForForage = getLevel(gameManager.getEquipmentManager().getPlayerStatsWithEquipment(player).getForaging());
int pctSuccessBoostForLevel = getPctSuccessBoostForLevel(modifiedLevelForForage);
//System.out.println("you get a boost of " + pctSuccessBoostForLevel);
foragePctOfSuccess = foragePctOfSuccess + pctSuccessBoostForLevel;
//System.out.println("final pct of success for forage: " + foragePctOfSuccess);
if (getRandPercent(foragePctOfSuccess)) {
gameManager.getPlayerManager().updatePlayerForageExperience(player, forage.getForageExperience());
int numberToHarvest = randInt(forage.getMinAmt(), forage.getMaxAmt());
totalForageXp += forage.getForageExperience();
for (int i = 0; i < numberToHarvest; i++) {
countOfForagesFound++;
Item item = forage.getItemType().create();
gameManager.getEntityManager().saveItem(item);
gameManager.acquireItem(player, item.getItemId());
}
gameManager.writeToRoom(room.getRoomId(), player.getPlayerName() + " foraged (" + numberToHarvest + ") " + forage.getItemType().getItemName() + "\r\n");
} else {
gameManager.getChannelUtils().write(player.getPlayerId(), "Attempt to forage " + forage.getItemType().getItemName() + " failed.\r\n");
//System.out.println("failed to obtain forage, random pctsuccess failed.");
}
}
} finally {
if (totalForageXp > 0) {
gameManager.getChannelUtils().write(player.getPlayerId(), "You gained " + Color.GREEN + "+" + totalForageXp + Color.RESET + " forage experience points." + "\r\n", true);
}
if (countOfForagesFound == 0) {
gameManager.getChannelUtils().write(player.getPlayerId(), "Nothing foraged." + "\r\n");
return;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment