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