// Mob combat private functions private void attemptGiveBattleWinnings( String guild, Player playerLooter, RpgMonster rpgMobDefender) { List<RpgPlayer> recipients = new ArrayList<RpgPlayer>(); double baseCash; double baseExp; double donatorBaseCash; double donatorBaseExp; double cash; double exp; double guildBonus = 1; int powerLevelPrevention = FC_Rpg.balanceConfig.getPowerLevelPrevention(); boolean checkPowerLeveling; if (rpgMobDefender.getIsBoss()) checkPowerLeveling = false; else checkPowerLeveling = (powerLevelPrevention > -1); if (guild != null) { recipients = FC_Rpg.rpgEntityManager.getNearbyPartiedRpgPlayers(playerLooter, 50); guildBonus = FC_Rpg.guildConfig.getGuildBonus(recipients.size()); } else recipients.add(FC_Rpg.rpgEntityManager.getRpgPlayer(playerLooter)); // Determine base amount of cash and experience to give. baseCash = rpgMobDefender.baseCash * FC_Rpg.eventCashMultiplier; baseExp = rpgMobDefender.baseExp * FC_Rpg.eventExpMultiplier; // Add in guild bonus if there is one. if (guildBonus > 1) { baseCash *= guildBonus; baseExp *= guildBonus; } // For slimes we reduce the gold and exp based on size. if (rpgMobDefender.getEntity() instanceof Slime) { Slime slime = (Slime) rpgMobDefender.getEntity(); int slimeSize = slime.getSize(); if (slimeSize == 2) { baseExp *= .25; baseCash *= .25; } else if (slimeSize == 1) { baseExp *= .125; baseCash *= .125; } } donatorBaseCash = baseCash * (1 + FC_Rpg.generalConfig.getDonatorLootBonusPercent()); donatorBaseExp = baseExp * (1 + FC_Rpg.generalConfig.getDonatorLootBonusPercent()); // If we check power leveling and the player isn't solo, then... if (checkPowerLeveling && recipients.size() != 1) { // Variable Declaration RpgPlayer rPlayer = FC_Rpg.rpgEntityManager.getRpgPlayer(playerLooter); // Check to see if killer is too strong to give exp. // Mob Level - Player Level = levelDifference : Positive = Mob stronger, negative = mob // weaker. if (rpgMobDefender.getLevel() - rPlayer.playerConfig.getClassLevel() > powerLevelPrevention) { rPlayer.attemptMonsterOutOfRangeNotification(); return; } else if (rpgMobDefender.getLevel() - rPlayer.playerConfig.getClassLevel() < powerLevelPrevention * -1) { MessageLib msgLib = new MessageLib(rPlayer.getPlayer()); msgLib.standardError("You annhilated the monster so brutally most loot was destroyed."); return; } } for (RpgPlayer rpgLooter : recipients) { // Set up loot amounts. if (rpgLooter.playerConfig.isDonator()) { cash = donatorBaseCash; exp = donatorBaseExp; } else { cash = baseCash; exp = baseExp; } if (rpgLooter.playerConfig.getStatusActiveRpgPlayer(SpellEffect.BONUS_EXPERIENCE.getID())) exp *= rpgLooter.playerConfig.getStatusMagnitude(SpellEffect.BONUS_EXPERIENCE.getID()); if (rpgLooter.playerConfig.getStatusActiveRpgPlayer(SpellEffect.BONUS_GOLD.getID())) exp *= rpgLooter.playerConfig.getStatusMagnitude(SpellEffect.BONUS_GOLD.getID()); rpgLooter.playerConfig.addGold(cash); rpgLooter.addClassExperience(exp, true); // Send a message to the player showing experience and loot gains. rpgLooter.attemptMonsterDeathNotification(rpgMobDefender.getLevel(), exp, cash); } }