feat: resource extractor drones #1068

Merged
Sainan merged 9 commits from drones into main 2025-03-03 05:48:47 -08:00
Showing only changes of commit f2be362d08 - Show all commits

View File

@ -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;