diff --git a/src/com/projectkorra/projectkorra/PKListener.java b/src/com/projectkorra/projectkorra/PKListener.java index aa4d0f48..c9680afe 100644 --- a/src/com/projectkorra/projectkorra/PKListener.java +++ b/src/com/projectkorra/projectkorra/PKListener.java @@ -64,6 +64,7 @@ import com.projectkorra.projectkorra.firebending.Combustion; import com.projectkorra.projectkorra.firebending.FireBlast; import com.projectkorra.projectkorra.firebending.FireBlastCharged; import com.projectkorra.projectkorra.firebending.FireBurst; +import com.projectkorra.projectkorra.firebending.FireCombo; import com.projectkorra.projectkorra.firebending.FireDamageTimer; import com.projectkorra.projectkorra.firebending.FireJet; import com.projectkorra.projectkorra.firebending.FireShield; @@ -508,6 +509,46 @@ public class PKListener implements Listener { event.getDrops().addAll(newdrops); MetalClips.getEntityClipsCount().remove(event.getEntity()); } + for (FireCombo fc : CoreAbility.getAbilities(event.getEntity().getKiller(), FireCombo.class)) { + if (!fc.getAffectedEntities().contains(event.getEntity())) continue; + List drops = event.getDrops(); + List newDrops = new ArrayList<>(); + for (int i = 0; i < drops.size(); i++) { + ItemStack cooked = drops.get(i); + Material material = drops.get(i).getType(); + switch (material) { + case RAW_BEEF: + cooked = new ItemStack(Material.COOKED_BEEF, 1); + break; + case RAW_FISH: + ItemStack salmon = new ItemStack(Material.RAW_FISH, 1, (short) 1); + if (drops.get(i).getDurability() == salmon.getDurability()) { + cooked = new ItemStack(Material.COOKED_FISH, 1, (short) 1); + } else { + cooked = new ItemStack(Material.COOKED_FISH, 1); + } + break; + case RAW_CHICKEN: + cooked = new ItemStack(Material.COOKED_CHICKEN, 1); + break; + case PORK: + cooked = new ItemStack(Material.GRILLED_PORK, 1); + break; + case MUTTON: + cooked = new ItemStack(Material.COOKED_MUTTON); + break; + case RABBIT: + cooked = new ItemStack(Material.COOKED_RABBIT); + break; + default: + break; + } + + newDrops.add(cooked); + } + event.getDrops().clear(); + event.getDrops().addAll(newDrops); + } } @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) diff --git a/src/com/projectkorra/projectkorra/firebending/FireCombo.java b/src/com/projectkorra/projectkorra/firebending/FireCombo.java index 8c1ea6b9..f5dc481e 100644 --- a/src/com/projectkorra/projectkorra/firebending/FireCombo.java +++ b/src/com/projectkorra/projectkorra/firebending/FireCombo.java @@ -177,19 +177,24 @@ public class FireCombo extends FireAbility implements ComboAbility { entity.getLocation().getWorld().playSound(entity.getLocation(), Sound.VILLAGER_HIT, 0.3f, 0.3f); if (ability.equalsIgnoreCase("FireKick")) { - GeneralMethods.damageEntity(this, entity, damage); - fstream.remove(); + if (!affectedEntities.contains(entity)) { + affectedEntities.add(entity); + GeneralMethods.damageEntity(this, entity, damage); + fstream.remove(); + } } else if (ability.equalsIgnoreCase("FireSpin")) { if (entity instanceof Player) { if (Commands.invincible.contains(((Player) entity).getName())) { return; } } - - double newKnockback = bPlayer.isAvatarState() ? knockback + 0.5 : knockback; - GeneralMethods.damageEntity(this, entity, damage); - entity.setVelocity(direction.normalize().multiply(newKnockback)); - fstream.remove(); + if (!affectedEntities.contains(entity)) { + affectedEntities.add(entity); + double newKnockback = bPlayer.isAvatarState() ? knockback + 0.5 : knockback; + GeneralMethods.damageEntity(this, entity, damage); + entity.setVelocity(direction.normalize().multiply(newKnockback)); + fstream.remove(); + } } else if (ability.equalsIgnoreCase("JetBlaze")) { if (!affectedEntities.contains(entity)) { affectedEntities.add(entity);