41 lines
1.8 KiB
Java
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.");
|
|
}
|
|
}
|
|
|
|
}
|