feat: resource extractor drones #1068
@ -22,8 +22,8 @@ export const dronesController: RequestHandler = async (req, res) => {
|
|||||||
ItemId: toOid(drone._id),
|
ItemId: toOid(drone._id),
|
||||||
ItemType: drone.ItemType,
|
ItemType: drone.ItemType,
|
||||||
CurrentHP: drone.CurrentHP,
|
CurrentHP: drone.CurrentHP,
|
||||||
DamageTime: drone.DamageTime ? toMongoDate(drone.DamageTime) : undefined,
|
DamageTime: toMongoDate(drone.DamageTime!),
|
||||||
PendingDamage: drone.PendingDamage,
|
PendingDamage: drone.PendingDamage!,
|
||||||
Resources: [
|
Resources: [
|
||||||
{
|
{
|
||||||
ItemType: drone.ResourceType!,
|
ItemType: drone.ResourceType!,
|
||||||
@ -49,12 +49,13 @@ export const dronesController: RequestHandler = async (req, res) => {
|
|||||||
}
|
}
|
||||||
drone.System = parseInt(req.query.systemIndex as string);
|
drone.System = parseInt(req.query.systemIndex as string);
|
||||||
const system = ExportSystems[drone.System - 1];
|
const system = ExportSystems[drone.System - 1];
|
||||||
if (Math.random() < system.damageChance) {
|
drone.DamageTime = config.instantResourceExtractorDrones
|
||||||
drone.DamageTime = config.instantResourceExtractorDrones
|
? new Date()
|
||||||
? new Date()
|
: new Date(Date.now() + getRandomInt(3 * 3600 * 1000, 4 * 3600 * 1000));
|
||||||
: new Date(Date.now() + getRandomInt(3 * 3600 * 1000, 4 * 3600 * 1000));
|
drone.PendingDamage =
|
||||||
drone.PendingDamage = getRandomInt(system.droneDamage.minValue, system.droneDamage.maxValue);
|
Math.random() < system.damageChance
|
||||||
}
|
? getRandomInt(system.droneDamage.minValue, system.droneDamage.maxValue)
|
||||||
|
: 0;
|
||||||
const resource = getRandomWeightedReward3(system.resources, droneMeta.probabilities)!;
|
const resource = getRandomWeightedReward3(system.resources, droneMeta.probabilities)!;
|
||||||
//logger.debug(`drone rolled`, resource);
|
//logger.debug(`drone rolled`, resource);
|
||||||
drone.ResourceType = "/Lotus/" + resource.StoreItem.substring(18);
|
drone.ResourceType = "/Lotus/" + resource.StoreItem.substring(18);
|
||||||
@ -76,7 +77,7 @@ export const dronesController: RequestHandler = async (req, res) => {
|
|||||||
} else if ("collectDroneId" in req.query) {
|
} else if ("collectDroneId" in req.query) {
|
||||||
const drone = inventory.Drones.id(req.query.collectDroneId as string)!;
|
const drone = inventory.Drones.id(req.query.collectDroneId as string)!;
|
||||||
|
|
||||||
if (drone.DamageTime && new Date() >= drone.DamageTime) {
|
if (new Date() >= drone.DamageTime!) {
|
||||||
drone.CurrentHP -= drone.PendingDamage!;
|
drone.CurrentHP -= drone.PendingDamage!;
|
||||||
drone.RepairStart = new Date();
|
drone.RepairStart = new Date();
|
||||||
}
|
}
|
||||||
@ -129,8 +130,8 @@ interface IActiveDrone {
|
|||||||
ItemId: IOid;
|
ItemId: IOid;
|
||||||
ItemType: string;
|
ItemType: string;
|
||||||
CurrentHP: number;
|
CurrentHP: number;
|
||||||
DamageTime?: IMongoDate;
|
DamageTime: IMongoDate;
|
||||||
PendingDamage?: number;
|
PendingDamage: number;
|
||||||
Resources: {
|
Resources: {
|
||||||
ItemType: string;
|
ItemType: string;
|
||||||
BinTotal: number;
|
BinTotal: number;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user