70 lines
2.6 KiB
JavaScript
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);
|
|
};
|