Files
sweetgum-server/src/main/java/net/server/channel/handlers/FamilySummonResponseHandler.java
2021-09-09 21:31:58 +02:00

41 lines
1.8 KiB
Java

package net.server.channel.handlers;
import client.Character;
import client.Client;
import client.FamilyEntitlement;
import client.FamilyEntry;
import config.YamlConfig;
import net.AbstractPacketHandler;
import net.packet.InPacket;
import net.server.coordinator.world.InviteCoordinator;
import net.server.coordinator.world.InviteCoordinator.InviteResult;
import net.server.coordinator.world.InviteCoordinator.InviteType;
import net.server.coordinator.world.InviteCoordinator.MapleInviteResult;
import server.maps.MapleMap;
import tools.PacketCreator;
public class FamilySummonResponseHandler extends AbstractPacketHandler {
@Override
public void handlePacket(InPacket p, Client c) {
if(!YamlConfig.config.server.USE_FAMILY_SYSTEM) return;
p.readString(); //family name
boolean accept = p.readByte() != 0;
MapleInviteResult inviteResult = InviteCoordinator.answerInvite(InviteType.FAMILY_SUMMON, c.getPlayer().getId(), c.getPlayer(), accept);
if(inviteResult.result == InviteResult.NOT_FOUND) return;
Character inviter = inviteResult.from;
FamilyEntry inviterEntry = inviter.getFamilyEntry();
if(inviterEntry == null) return;
MapleMap map = (MapleMap) inviteResult.params[0];
if(accept && inviter.getMap() == map) { //cancel if inviter has changed maps
c.getPlayer().changeMap(map, map.getPortal(0));
} else {
inviterEntry.refundEntitlement(FamilyEntitlement.SUMMON_FAMILY);
inviterEntry.gainReputation(FamilyEntitlement.SUMMON_FAMILY.getRepCost(), false); //refund rep cost if declined
inviter.sendPacket(PacketCreator.getFamilyInfo(inviterEntry));
inviter.dropMessage(5, c.getPlayer().getName() + " has denied the summon request.");
}
}
}