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