242 lines
8.6 KiB
JavaScript
242 lines
8.6 KiB
JavaScript
const MainPlayerPacket = require("../Packets/MainPlayer");
|
|
const ObtainedDesignsPacket = require("../Packets/ObtainedDesigns");
|
|
const PropertyChangedPacket = require("../Packets/PropertyChanged");
|
|
const AttackInformationPacket = require("../Packets/AttackInformation");
|
|
const AttackerInformationPacket = require("../Packets/AttackerInformation");
|
|
const QuestsPacket = require("../Packets/Quests");
|
|
const QuestsCompletedAmountPacket = require("../Packets/QuestsCompletedAmount");
|
|
const CannonballsPacket = require("../Packets/Cannonballs");
|
|
const HarpoonsPacket = require("../Packets/Harpoons");
|
|
const ItemsPacket = require("../Packets/Items");
|
|
const EquipmentCapacitiesMaximumPacket = require("../Packets/EquipmentCapacitiesMaximum");
|
|
const StatusPointsPacket = require("../Packets/StatusPoints");
|
|
const EconomyPacket = require("../Packets/Economy");
|
|
const ActiveStatusEffectsPacket = require("../Packets/ActiveStatusEffects");
|
|
const EquipmentsPacket = require("../Packets/Equipments");
|
|
const GuildMemberNewPacket = require("../Packets/GuildMemberNew");
|
|
const WorldMapGuildEntryPacket = require("../Packets/WorldMapGuildEntry");
|
|
const RankThresholdPointsPacket = require("../Packets/RankThresholdPoints");
|
|
const RankPointPacket = require("../Packets/RankPoint");
|
|
const GuildDataMemberChangedPacket = require("../Packets/GuildDataMemberChanged");
|
|
const ShopEntryPacket = require("../Packets/ShopEntry");
|
|
|
|
const Entity = require("../Game/Entity");
|
|
|
|
const Game = require("../Game/Game");
|
|
const { guildIslands } = Game;
|
|
|
|
const packet_58 = require("../Packets/packet_58");
|
|
const packet_57 = require("../Packets/packet_57");
|
|
|
|
const BASE_SHOP = require("../Data/shop");
|
|
const { SHOP, SHOP_ENTRIES_BUY } = BASE_SHOP;
|
|
|
|
const leaderboards = require("../Data/leaderboard");
|
|
|
|
module.exports = async function (ws, message, player) {
|
|
if (player.isAvailable) return;
|
|
|
|
player.hasUnexpectedlyLeft = false;
|
|
|
|
const connectingPlayer = player.getProperties();
|
|
const connectingPlayerPacket = MainPlayerPacket(connectingPlayer);
|
|
player.map.registerIndividualNetworkPacket(player.id, connectingPlayerPacket);
|
|
|
|
const designIDs = player.inventory.getDesignIDs();
|
|
const designsPacket = ObtainedDesignsPacket(designIDs);
|
|
|
|
const questPacketInitialized = QuestsPacket.init();
|
|
Object.values(player.quests.list).forEach(quest => {
|
|
const questPacket = {
|
|
id: quest.id,
|
|
progression: quest.getProgression(),
|
|
currentComplete: quest.currentComplete
|
|
};
|
|
|
|
questPacketInitialized.update(questPacket);
|
|
});
|
|
|
|
const sightPacket = PropertyChangedPacket({
|
|
typeID: 1,
|
|
value: player.sight / 12
|
|
});
|
|
|
|
const questsCompletedAmountPacket = QuestsCompletedAmountPacket(player.quests.completedQuestsAmount);
|
|
|
|
const ammunitionPacket = CannonballsPacket({
|
|
ammunition: player.inventory.getAmmunitions(),
|
|
selected: player.inventory.selectedAmmunition
|
|
});
|
|
|
|
const harpoonPacket = HarpoonsPacket({
|
|
harpoon: player.inventory.getHarpoons(),
|
|
selected: player.inventory.selectedHarpoon
|
|
});
|
|
|
|
const items = player.inventory.getItems();
|
|
const itemPacket = ItemsPacket(items);
|
|
|
|
const resourceSharedLimiter = player.inventory.resourceSharedLimiter;
|
|
const maximumEquipmentCapacities = [resourceSharedLimiter.cannon.quantity.maximum, resourceSharedLimiter.harpooner.quantity.maximum, resourceSharedLimiter.sail.quantity.maximum, resourceSharedLimiter.pirate.quantity.maximum];
|
|
const propertiesPacket = EquipmentCapacitiesMaximumPacket(maximumEquipmentCapacities);
|
|
|
|
const statusPointsPacket = StatusPointsPacket({ statusPoints: player.statusPoints });
|
|
|
|
const economy = player.inventory.getEconomy();
|
|
const currencyPacket = EconomyPacket(economy);
|
|
|
|
const activeStatusEffectsPacket = ActiveStatusEffectsPacket(player.activeStatusEffects);
|
|
|
|
/*
|
|
const asd = await gameRedis.keys("*");
|
|
asd.forEach(key => {
|
|
const data = gameRedis.getAsync(key);
|
|
|
|
});*/
|
|
|
|
/*
|
|
const playerIrrelevantEntries = !global.unavailablePlayerShopEntries[player.id] ? [] : Object.keys(global.unavailablePlayerShopEntries[player.id]);
|
|
const globalIrrelevantEntries = Object.keys(global.unavailableGlobalShopEntries);
|
|
const irrelevantShopEntries = [];
|
|
const shopEntryIDTracker = {};
|
|
|
|
playerIrrelevantEntries.forEach(id => {
|
|
if (!shopEntryIDTracker[id]) irrelevantShopEntries.push(id);
|
|
shopEntryIDTracker[id] = true;
|
|
});
|
|
|
|
globalIrrelevantEntries.forEach(id => {
|
|
if (!shopEntryIDTracker[id]) irrelevantShopEntries.push(id);
|
|
shopEntryIDTracker[id] = true;
|
|
});
|
|
*/
|
|
const irrelevantShopEntriesPacket = packet_58([]);
|
|
|
|
const cannons = player.inventory.getCannons();
|
|
const harpooners = player.inventory.getHarpooners();
|
|
|
|
const equipmentsPacket = EquipmentsPacket.init(cannons.length + harpooners.length);
|
|
cannons.forEach(c => equipmentsPacket.update(c.getProperties()));
|
|
harpooners.forEach(h => equipmentsPacket.update(h.getProperties()));
|
|
|
|
const packets = [statusPointsPacket, designsPacket, sightPacket, equipmentsPacket.get(), questsCompletedAmountPacket, questPacketInitialized.get(), itemPacket, ammunitionPacket, harpoonPacket, propertiesPacket, currencyPacket, activeStatusEffectsPacket, irrelevantShopEntriesPacket];
|
|
|
|
/*
|
|
const currentDate = new Date();
|
|
const currentMonth = currentDate.getMonth() + 1;
|
|
const currentDay = currentDate.getDay() - 1;
|
|
|
|
const currentLoginReward = loginReward[currentMonth][currentDay];
|
|
if (currentLoginReward) {
|
|
const loginReward = new Reward({
|
|
distributionType: 2,
|
|
baseReward: currentLoginReward
|
|
});
|
|
|
|
setTimeout(() => loginReward.single(1, player.inventory, rewards => rewardCallback({ isRegular: true, authorID: player.id, rewards })));
|
|
};
|
|
*/
|
|
|
|
if (player.guild.id) {
|
|
const guildMemberNew = {
|
|
playerID: player.id,
|
|
tag: player.guild.tag
|
|
};
|
|
|
|
const guildMemberNewPacket = GuildMemberNewPacket(guildMemberNew);
|
|
packets.push(guildMemberNewPacket);
|
|
|
|
const guildDataMemberChanged = {
|
|
id: player.id,
|
|
isOnline: true
|
|
};
|
|
|
|
const guildDataMemberChangedPacket = GuildDataMemberChangedPacket(guildDataMemberChanged);
|
|
const topic = Game.getTopic(player.guild.topic);
|
|
|
|
topic.push(guildDataMemberChangedPacket);
|
|
};
|
|
|
|
/* const mapped = {
|
|
5: 2
|
|
};
|
|
|
|
for (categoryID in SHOP) {
|
|
const category = SHOP[categoryID];
|
|
|
|
for (itemID in category) {
|
|
const entry = category[itemID];
|
|
const isEntryAvailable = entry.isAvailable(player);
|
|
if (!isEntryAvailable) continue;
|
|
|
|
const irrelevantShopEntry = {
|
|
id: itemID,
|
|
shopCategoryID: mapped[categoryID]
|
|
};
|
|
|
|
const packet = packet_57(irrelevantShopEntry);
|
|
packets.push(packet);
|
|
};
|
|
};*/
|
|
|
|
player.ready();
|
|
|
|
if (player.isAlive) {
|
|
if (player.target) {
|
|
const attackInformationPacket = AttackInformationPacket({
|
|
authorTypeID: player.target.typeID,
|
|
authorID: player.target.id
|
|
});
|
|
|
|
const attackerPacket = AttackerInformationPacket({
|
|
authorTypeID: player.target.typeID,
|
|
authorID: player.target.id,
|
|
isTarget: true,
|
|
source: 1
|
|
});
|
|
|
|
packets.push(attackInformationPacket, attackerPacket);
|
|
};
|
|
|
|
player.attackers.forEach(attacker => {
|
|
const attackerPacket = AttackerInformationPacket({
|
|
authorTypeID: Entity.getType(attacker.attackerEntry) + 1,
|
|
authorID: attacker.attackerEntry,
|
|
isTarget: false,
|
|
source: 1
|
|
});
|
|
|
|
packets.push(attackerPacket);
|
|
});
|
|
};
|
|
|
|
guildIslands.forEach(g => {
|
|
const worldMapGuildEntryPacketData = {
|
|
locationMapID: g.locationMapID,
|
|
index: g.index,
|
|
bufferTag: g.guild.tag
|
|
};
|
|
console.info("bufferTag", g.guild.tag)
|
|
const worldMapGuildEntryPacket = WorldMapGuildEntryPacket(worldMapGuildEntryPacketData);
|
|
packets.push(worldMapGuildEntryPacket);
|
|
});
|
|
|
|
for (let i = 0, length = player.rankingPoints.length; i < length; i++) {
|
|
const { id, amount } = player.rankingPoints[i];
|
|
|
|
const rankPoint = {
|
|
rankTypeID: id,
|
|
value: amount
|
|
};
|
|
|
|
const rankPointPacket = RankPointPacket(rankPoint);
|
|
packets.push(rankPointPacket);
|
|
};
|
|
|
|
SHOP.forEach(shopEntry => {
|
|
const shopEntryPacket = ShopEntryPacket(shopEntry);
|
|
packets.push(shopEntryPacket);
|
|
});
|
|
|
|
player.map.registerIndividualNetworkPacket(player.id, packets);
|
|
}; |