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:
ronancpl
2017-05-01 13:46:48 -03:00
parent 1d8caff63f
commit 03ab8be97d
36 changed files with 475 additions and 289 deletions

View File

@@ -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;

View File

@@ -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;

View File

@@ -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);
}
}

View File

@@ -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);
}
}

View File

@@ -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
}
}
}
}

View File

@@ -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;
}

View File

@@ -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;

View File

@@ -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);
}

View File

@@ -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);
}
}

View File

@@ -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) {

View File

@@ -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
}
}