Files
pirate-corsaire-server/Messages/GuildIslandTowerBuildMessage.js
T
2026-08-24 22:20:36 +02:00

70 lines
2.6 KiB
JavaScript

const DesignChangedPacket = require("../Packets/DesignChanged");
const PropertyChangedGeneralPacket = require("../Packets/PropertyChangedGeneral");
const HealthChangedAuthorlessPacket = require("../Packets/HealthChangedAuthorless");
const Game = require("../Game/Game");
const { players, guildIslands, packets } = Game;
module.exports = async function (ws, message, player) {
if (!player.guild.id) return;
const guildIslandID = message.getUint8(1);
const guildIsland = guildIslands.find(island => island.id === guildIslandID);
if (!guildIsland) return console.info("guildIslandTowerBuildMessage 1");
const id = message.getUint32(2);
const guildTower = guildIsland.getTower(id);
if (!guildTower) return console.info("guildIslandTowerBuildMessage 2");
const entityTypeID = message.getUint8(6);
const currentHitpointBefore = guildTower.hp.current;
const isUpgradeSuccessful = guildTower.upgrade(entityTypeID);
if (!isUpgradeSuccessful) return console.info("not successful build for tower", guildTower.id, "on guild island", guildIslandID);
console.info("Tower upgrade", guildTower.id, guildIslandID);
const designChanged = {
typeID: guildTower.typeID,
id: guildTower.id,
designID: guildTower.entityTypeID
};
const designChangedPacket = DesignChangedPacket(designChanged);
guildTower.map.registerNetworkPacket(guildTower.id, designChangedPacket);
const propertyChangedGeneral = {
typeID: guildTower.typeID,
id: guildTower.id,
propertyTypeID: 1,
value: guildTower.hp.maximum
};
const propertyChangedGeneral2 = {
typeID: guildTower.typeID,
id: guildTower.id,
propertyTypeID: 2,
value: 0
};
const propertyChangedGeneralPacket = PropertyChangedGeneralPacket(propertyChangedGeneral);
const propertyChangedGeneralPacket2 = PropertyChangedGeneralPacket(propertyChangedGeneral2);
const packets = [propertyChangedGeneralPacket, propertyChangedGeneralPacket2];
const hitpointToAdd = guildTower.hp.maximum - currentHitpointBefore;
if (hitpointToAdd) {
const healthChangedAuthorless = {
targetTypeID: guildTower.typeID,
targetID: guildTower.id,
amount: hitpointToAdd,
type: 1,
isCritical: false
};
const healthChangedAuthorlessPacket = HealthChangedAuthorlessPacket(healthChangedAuthorless);
packets.push(healthChangedAuthorlessPacket);
};
guildTower.map.registerNetworkPacket(guildTower.id, packets);
};