Cash Pet Food issue + BRPQ minor patch
As issued by vcoc, some pet items not working properly has been patches. New BRPQ reward announcer NPC. More minor patches.
This commit is contained in:
@@ -1673,7 +1673,11 @@ public class MapleCharacter extends AbstractAnimatedMapleMapObject {
|
||||
}
|
||||
|
||||
public void gainExp(int gain, boolean show, boolean inChat) {
|
||||
gainExp(gain, 0, show, inChat, true);
|
||||
gainExp(gain, show, inChat, true);
|
||||
}
|
||||
|
||||
public void gainExp(int gain, boolean show, boolean inChat, boolean white) {
|
||||
gainExp(gain, 0, show, inChat, white);
|
||||
}
|
||||
|
||||
public void gainExp(int gain, int party, boolean show, boolean inChat, boolean white) {
|
||||
@@ -5003,10 +5007,10 @@ public class MapleCharacter extends AbstractAnimatedMapleMapObject {
|
||||
pet.saveToDb();
|
||||
Item petz = getInventory(MapleInventoryType.CASH).getItem(pet.getPosition());
|
||||
if (petz != null) {
|
||||
forceUpdateItem(petz);
|
||||
forceUpdateItem(petz);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}, 180000, 18000);
|
||||
fullnessSchedule[petSlot] = schedule;
|
||||
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
package client.inventory;
|
||||
|
||||
import com.mysql.jdbc.Statement;
|
||||
import constants.ExpTable;
|
||||
import java.awt.Point;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
@@ -32,6 +33,8 @@ import server.MapleItemInformationProvider;
|
||||
import server.movement.AbsoluteLifeMovement;
|
||||
import server.movement.LifeMovement;
|
||||
import server.movement.LifeMovementFragment;
|
||||
import client.MapleCharacter;
|
||||
import tools.MaplePacketCreator;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -155,13 +158,54 @@ public class MaplePet extends Item {
|
||||
this.closeness = closeness;
|
||||
}
|
||||
|
||||
public void gainCloseness(int x) {
|
||||
this.closeness += x;
|
||||
}
|
||||
|
||||
public byte getLevel() {
|
||||
return level;
|
||||
}
|
||||
|
||||
public void gainClosenessFullness(MapleCharacter owner, int incCloseness, int incFullness, int type) {
|
||||
byte slot = owner.getPetIndex(this);
|
||||
boolean enjoyed;
|
||||
|
||||
//will NOT increase pet's closeness if tried to feed pet with 100% fullness
|
||||
if (fullness < 100 || incFullness == 0) { //incFullness == 0: command given
|
||||
int newFullness = fullness + incFullness;
|
||||
if (newFullness > 100) newFullness = 100;
|
||||
fullness = newFullness;
|
||||
|
||||
if (incCloseness > 0 && closeness < 30000) {
|
||||
int newCloseness = closeness + incCloseness;
|
||||
if (newCloseness > 30000) newCloseness = 30000;
|
||||
|
||||
closeness = newCloseness;
|
||||
while(newCloseness >= ExpTable.getClosenessNeededForLevel(level)) {
|
||||
level += 1;
|
||||
owner.getClient().announce(MaplePacketCreator.showOwnPetLevelUp(slot));
|
||||
owner.getMap().broadcastMessage(MaplePacketCreator.showPetLevelUp(owner, slot));
|
||||
}
|
||||
}
|
||||
|
||||
enjoyed = true;
|
||||
} else {
|
||||
if (incCloseness > 0) {
|
||||
int newCloseness = closeness - 1;
|
||||
if (newCloseness < 0) newCloseness = 0;
|
||||
|
||||
closeness = newCloseness;
|
||||
if (level > 1 && newCloseness < ExpTable.getClosenessNeededForLevel(level)) {
|
||||
level -= 1;
|
||||
}
|
||||
}
|
||||
|
||||
enjoyed = false;
|
||||
}
|
||||
|
||||
owner.getMap().broadcastMessage(MaplePacketCreator.commandResponse(owner.getId(), slot, type, enjoyed));
|
||||
saveToDb();
|
||||
|
||||
Item petz = owner.getInventory(MapleInventoryType.CASH).getItem(getPosition());
|
||||
if (petz == null) return;
|
||||
owner.forceUpdateItem(petz);
|
||||
}
|
||||
|
||||
public void setLevel(byte level) {
|
||||
this.level = level;
|
||||
|
||||
@@ -54,25 +54,12 @@ public final class PetCommandHandler extends AbstractMaplePacketHandler {
|
||||
if (petCommand == null) {
|
||||
return;
|
||||
}
|
||||
boolean success = false;
|
||||
|
||||
if (Randomizer.nextInt(101) <= petCommand.getProbability()) {
|
||||
success = true;
|
||||
if (pet.getCloseness() < 30000) {
|
||||
int newCloseness = pet.getCloseness() + petCommand.getIncrease();
|
||||
if (newCloseness > 30000) {
|
||||
newCloseness = 30000;
|
||||
}
|
||||
pet.setCloseness(newCloseness);
|
||||
if (newCloseness >= ExpTable.getClosenessNeededForLevel(pet.getLevel())) {
|
||||
pet.setLevel((byte) (pet.getLevel() + 1));
|
||||
c.announce(MaplePacketCreator.showOwnPetLevelUp(chr.getPetIndex(pet)));
|
||||
chr.getMap().broadcastMessage(MaplePacketCreator.showPetLevelUp(c.getPlayer(), chr.getPetIndex(pet)));
|
||||
}
|
||||
pet.saveToDb();
|
||||
Item petz = chr.getInventory(MapleInventoryType.CASH).getItem(pet.getPosition());
|
||||
chr.forceUpdateItem(petz);
|
||||
}
|
||||
pet.gainClosenessFullness(chr, petCommand.getIncrease(), 0, command);
|
||||
}
|
||||
else {
|
||||
chr.getMap().broadcastMessage(MaplePacketCreator.commandResponse(chr.getId(), petIndex, command, false));
|
||||
}
|
||||
chr.getMap().broadcastMessage(c.getPlayer(), MaplePacketCreator.commandResponse(chr.getId(), petIndex, command, success), true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -68,51 +68,9 @@ public final class PetFoodHandler extends AbstractMaplePacketHandler {
|
||||
if (use == null || (itemId / 10000) != 212 || use.getItemId() != itemId) {
|
||||
return;
|
||||
}
|
||||
boolean gainCloseness = false;
|
||||
if (Randomizer.nextInt(101) > 50) {
|
||||
gainCloseness = true;
|
||||
}
|
||||
if (pet.getFullness() < 100) {
|
||||
int newFullness = pet.getFullness() + 30;
|
||||
if (newFullness > 100) {
|
||||
newFullness = 100;
|
||||
}
|
||||
pet.setFullness(newFullness);
|
||||
if (gainCloseness && pet.getCloseness() < 30000) {
|
||||
int newCloseness = pet.getCloseness() + 1;
|
||||
if (newCloseness > 30000) {
|
||||
newCloseness = 30000;
|
||||
}
|
||||
pet.setCloseness(newCloseness);
|
||||
if (newCloseness >= ExpTable.getClosenessNeededForLevel(pet.getLevel())) {
|
||||
pet.setLevel((byte) (pet.getLevel() + 1));
|
||||
c.announce(MaplePacketCreator.showOwnPetLevelUp(chr.getPetIndex(pet)));
|
||||
chr.getMap().broadcastMessage(MaplePacketCreator.showPetLevelUp(c.getPlayer(), chr.getPetIndex(pet)));
|
||||
}
|
||||
}
|
||||
chr.getMap().broadcastMessage(MaplePacketCreator.commandResponse(chr.getId(), slot, 0, true));
|
||||
} else {
|
||||
if (gainCloseness) {
|
||||
int newCloseness = pet.getCloseness() - 1;
|
||||
if (newCloseness < 0) {
|
||||
newCloseness = 0;
|
||||
}
|
||||
pet.setCloseness(newCloseness);
|
||||
if (pet.getLevel() > 1 && newCloseness < ExpTable.getClosenessNeededForLevel(pet.getLevel())) {
|
||||
pet.setLevel((byte) (pet.getLevel() - 1));
|
||||
}
|
||||
}
|
||||
chr.getMap().broadcastMessage(MaplePacketCreator.commandResponse(chr.getId(), slot, 0, false));
|
||||
}
|
||||
|
||||
// 50% chance to get +1 closeness
|
||||
pet.gainClosenessFullness(chr, (Randomizer.nextInt(101) <= 50) ? 1 : 0, 30, 1);
|
||||
MapleInventoryManipulator.removeFromSlot(c, MapleInventoryType.USE, pos, (short) 1, false);
|
||||
|
||||
pet.saveToDb();
|
||||
|
||||
Item petz = chr.getInventory(MapleInventoryType.CASH).getItem(pet.getPosition());
|
||||
if (petz == null){ //Not a real fix but fuck it you know?
|
||||
return;
|
||||
}
|
||||
|
||||
chr.forceUpdateItem(petz);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -66,11 +66,12 @@ public final class QuestActionHandler extends AbstractMaplePacketHandler {
|
||||
//System.out.println(slea.toString());
|
||||
int npc = slea.readInt();
|
||||
slea.readInt();
|
||||
if(quest.canComplete(player, npc)) {
|
||||
QuestScriptManager.getInstance().end(c, questid, npc);
|
||||
player.getClient().getSession().write(MaplePacketCreator.showSpecialEffect(9)); //show effect when completion
|
||||
player.getMap().broadcastMessage(player, MaplePacketCreator.showForeignEffect(player.getId(), 9));//show effect around players I guess
|
||||
}
|
||||
|
||||
if(quest.canComplete(player, npc)) {
|
||||
QuestScriptManager.getInstance().end(c, questid, npc);
|
||||
player.getClient().getSession().write(MaplePacketCreator.showSpecialEffect(9)); //show effect when completion
|
||||
player.getMap().broadcastMessage(player, MaplePacketCreator.showForeignEffect(player.getId(), 9));//show effect around players I guess
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,7 +31,6 @@ import client.inventory.Equip;
|
||||
import client.inventory.Item;
|
||||
import client.inventory.MapleInventoryType;
|
||||
import client.inventory.MaplePet;
|
||||
import constants.ExpTable;
|
||||
import constants.ItemConstants;
|
||||
|
||||
import java.sql.SQLException;
|
||||
@@ -435,22 +434,7 @@ public final class UseCashItemHandler extends AbstractMaplePacketHandler {
|
||||
MaplePet pet = player.getPet(i);
|
||||
if (pet != null) {
|
||||
if (pet.canConsume(itemId)) {
|
||||
pet.setFullness(100);
|
||||
if (pet.getCloseness() + 100 > 30000) {
|
||||
pet.setCloseness(30000);
|
||||
} else {
|
||||
pet.gainCloseness(100);
|
||||
}
|
||||
|
||||
while (pet.getCloseness() >= ExpTable.getClosenessNeededForLevel(pet.getLevel())) {
|
||||
pet.setLevel((byte) (pet.getLevel() + 1));
|
||||
byte index = player.getPetIndex(pet);
|
||||
c.announce(MaplePacketCreator.showOwnPetLevelUp(index));
|
||||
player.getMap().broadcastMessage(MaplePacketCreator.showPetLevelUp(c.getPlayer(), index));
|
||||
}
|
||||
Item item = player.getInventory(MapleInventoryType.CASH).getItem(pet.getPosition());
|
||||
player.forceUpdateItem(item);
|
||||
player.getMap().broadcastMessage(c.getPlayer(), MaplePacketCreator.commandResponse(player.getId(), i, 1, true), true);
|
||||
pet.gainClosenessFullness(player, 100, 100, 1);
|
||||
remove(c, itemId);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -21,11 +21,6 @@
|
||||
*/
|
||||
package scripting;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.SQLException;
|
||||
import java.sql.PreparedStatement;
|
||||
import tools.DatabaseConnection;
|
||||
|
||||
import java.awt.Point;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
|
||||
@@ -519,6 +519,10 @@ public class EventInstanceManager {
|
||||
return intList;
|
||||
}
|
||||
|
||||
public final void setEventRewards(List<Double> rwds, List<Double> qtys, int expGiven) {
|
||||
setEventRewards(1, rwds, qtys, expGiven);
|
||||
}
|
||||
|
||||
public final void setEventRewards(List<Double> rwds, List<Double> qtys) {
|
||||
setEventRewards(1, rwds, qtys);
|
||||
}
|
||||
|
||||
@@ -280,19 +280,7 @@ public class NPCConversationManager extends AbstractPlayerInteraction {
|
||||
|
||||
public void gainCloseness(int closeness) {
|
||||
for (MaplePet pet : getPlayer().getPets()) {
|
||||
if (pet.getCloseness() > 30000) {
|
||||
pet.setCloseness(30000);
|
||||
return;
|
||||
}
|
||||
pet.gainCloseness(closeness);
|
||||
while (pet.getCloseness() > ExpTable.getClosenessNeededForLevel(pet.getLevel())) {
|
||||
pet.setLevel((byte) (pet.getLevel() + 1));
|
||||
byte index = getPlayer().getPetIndex(pet);
|
||||
getClient().announce(MaplePacketCreator.showOwnPetLevelUp(index));
|
||||
getPlayer().getMap().broadcastMessage(getPlayer(), MaplePacketCreator.showPetLevelUp(getPlayer(), index));
|
||||
}
|
||||
Item petz = getPlayer().getInventory(MapleInventoryType.CASH).getItem(pet.getPosition());
|
||||
getPlayer().forceUpdateItem(petz);
|
||||
pet.gainClosenessFullness(getPlayer(), closeness, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1171,6 +1171,8 @@ public class MapleMap {
|
||||
monster.setMap(this);
|
||||
Point spos = new Point(pos.x, pos.y - 1);
|
||||
spos = calcPointBelow(spos);
|
||||
if(spos == null) return;
|
||||
|
||||
spos.y--;
|
||||
monster.setPosition(spos);
|
||||
if (mapid < 925020000 || mapid > 925030000) {
|
||||
|
||||
@@ -223,7 +223,7 @@ public class MapleQuest {
|
||||
a.run(c, selection);
|
||||
}
|
||||
|
||||
c.getClient().getSession().write(MaplePacketCreator.showForeignEffect(9)); // Quest completion
|
||||
c.getClient().getSession().write(MaplePacketCreator.showSpecialEffect(9)); // Quest completion
|
||||
c.getMap().broadcastMessage(c, MaplePacketCreator.showForeignEffect(c.getId(), 9), false); //use 9 instead of 12 for both
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user