[screeps] updated to v2.4.0

This commit is contained in:
Resi Respati
2018-06-24 16:36:49 +07:00
parent e6b8a914b6
commit a36999fbb0
3 changed files with 249 additions and 52 deletions

View File

@@ -1,4 +1,4 @@
// Type definitions for Screeps 2.3
// Type definitions for Screeps 2.4
// Project: https://github.com/screeps/screeps
// Definitions by: Marko Sulamägi <https://github.com/MarkoSulamagi>
// Nhan Ho <https://github.com/NhanHo>
@@ -252,7 +252,7 @@ declare const RESOURCE_CATALYZED_GHODIUM_ACID: "XGH2O";
declare const RESOURCE_CATALYZED_GHODIUM_ALKALIDE: "XGHO2";
declare const RESOURCES_ALL: ResourceConstant[];
declare const SUBSCRIPTION_TOKEN: string;
declare const SUBSCRIPTION_TOKEN: "token";
declare const CONTROLLER_LEVELS: {[level: number]: number};
declare const CONTROLLER_STRUCTURES: Record<BuildableStructureConstant, {[level: number]: number}>;
@@ -795,7 +795,7 @@ interface Creep extends RoomObject {
* @param target The target controller object.
* @returns Result Code: OK, ERR_NOT_OWNER, ERR_BUSY, ERR_INVALID_TARGET, ERR_FULL, ERR_NOT_IN_RANGE, ERR_NO_BODYPART, ERR_GCL_NOT_ENOUGH
*/
claimController(target: StructureController): CreepActionReturnCode | ERR_FULL | ERR_RCL_NOT_ENOUGH;
claimController(target: StructureController): CreepActionReturnCode | ERR_FULL | ERR_GCL_NOT_ENOUGH;
/**
* Dismantles any (even hostile) structure returning 50% of the energy spent on its repair.
*
@@ -1268,6 +1268,8 @@ type StoreDefinition = Partial<Record<_ResourceConstantSansEnergy, number>> & {
// energy: number;
// }
type ExitsInformation = Partial<Record<ExitKey, string>>;
interface AllLookAtTypes {
constructionSite: ConstructionSite;
creep: Creep;
@@ -1288,22 +1290,24 @@ type LookAtTypes = Partial<AllLookAtTypes>;
type LookAtResult<K extends LookConstant = LookConstant> = Pick<LookAtTypes, K> & { type: K };
type LookAtResultWithPos<K extends LookConstant = LookConstant> = LookAtResult<K> & {
x: number,
y: number,
x: number,
y: number,
};
interface LookAtResultMatrix<K extends LookConstant = LookConstant> {
[coord: number]: LookAtResultMatrix<K> | Array<LookAtResult<K>>;
[y: number]: {
[x: number]: Array<LookAtResult<K>>;
};
}
interface LookForAtAreaResultMatrix<T, K extends keyof LookAtTypes = keyof LookAtTypes> {
[x: number]: {
[y: number]: Array<LookForAtAreaResult<T, K>>;
};
[y: number]: {
[x: number]: Array<LookForAtAreaResult<T, K>>;
};
}
type LookForAtAreaResult<T, K extends keyof LookAtTypes = keyof LookAtTypes> = {type: K} & {
[P in K]: T;
[P in K]: T;
};
type LookForAtAreaResultWithPos<T, K extends keyof LookAtTypes = keyof LookAtTypes> = LookForAtAreaResult<T, K> & {x: number, y: number};
@@ -1478,6 +1482,8 @@ interface _ConstructorById<T> extends _Constructor<T> {
type Terrain = "plain" | "swamp" | "wall";
type ExitKey = "1" | "3" | "5" | "7";
// Return Codes
type ScreepsReturnCode =
@@ -1836,6 +1842,10 @@ type MineralConstant =
RESOURCE_HYDROGEN |
RESOURCE_CATALYST;
type MarketResourceConstant =
ResourceConstant |
SUBSCRIPTION_TOKEN;
type RESOURCE_ENERGY = "energy";
type RESOURCE_POWER = "power";
@@ -1884,6 +1894,8 @@ type RESOURCE_CATALYZED_ZYNTHIUM_ALKALIDE = "XZHO2";
type RESOURCE_CATALYZED_GHODIUM_ACID = "XGH2O";
type RESOURCE_CATALYZED_GHODIUM_ALKALIDE = "XGHO2";
type SUBSCRIPTION_TOKEN = "token";
type TOMBSTONE_DECAY_PER_PART = 5;
/**
* The options that can be accepted by `findRoute()` and friends.
@@ -1901,7 +1913,7 @@ interface GameMap {
* @param roomName The room name.
* @returns The exits information or null if the room not found.
*/
describeExits(roomName: string): {"1"?: string, "3"?: string, "5"?: string, "7"?: string};
describeExits(roomName: string): ExitsInformation;
/**
* Find the exit direction from the given room en route to another room.
* @param fromRoom Start room name or room object.
@@ -1912,7 +1924,7 @@ interface GameMap {
* Or one of the following Result codes:
* ERR_NO_PATH, ERR_INVALID_ARGS
*/
findExit(fromRoom: string|Room, toRoom: string|Room, opts?: RouteOptions): ScreepsReturnCode;
findExit(fromRoom: string|Room, toRoom: string|Room, opts?: RouteOptions): ExitConstant | ERR_NO_PATH | ERR_INVALID_ARGS;
/**
* Find route from the given room to another room.
* @param fromRoom Start room name or room object.
@@ -2013,7 +2025,7 @@ interface Market {
* The maximum orders count is 50 per player. You can create an order at any time with any amount,
* it will be automatically activated and deactivated depending on the resource/credits availability.
*/
createOrder(type: string, resourceType: ResourceConstant, price: number, totalAmount: number, roomName?: string): ScreepsReturnCode;
createOrder(type: string, resourceType: MarketResourceConstant, price: number, totalAmount: number, roomName?: string): ScreepsReturnCode;
/**
* Execute a trade deal from your Terminal to another player's Terminal using the specified buy/sell order.
*
@@ -2051,7 +2063,7 @@ interface Transaction {
time: number;
sender?: { username: string };
recipient?: { username: string };
resourceType: ResourceConstant;
resourceType: MarketResourceConstant;
amount: number;
from: string;
to: string;
@@ -2064,7 +2076,7 @@ interface Order {
created: number;
active?: boolean;
type: string;
resourceType: ResourceConstant;
resourceType: MarketResourceConstant;
roomName?: string;
amount: number;
remainingAmount: number;
@@ -2082,7 +2094,7 @@ interface OrderFilter {
id?: string;
created?: number;
type?: string;
resourceType?: ResourceConstant;
resourceType?: MarketResourceConstant;
roomName?: string;
amount?: number;
remainingAmount?: number;
@@ -2157,7 +2169,7 @@ interface Nuke extends RoomObject {
timeToLand: number;
}
interface NukeConstructor {
interface NukeConstructor extends _Constructor<Nuke>, _ConstructorById<Nuke> {
new (id: string): Nuke;
}
@@ -2400,7 +2412,7 @@ interface Resource<T extends ResourceConstant = ResourceConstant> extends RoomOb
resourceType: T;
}
interface ResourceConstructor {
interface ResourceConstructor extends _Constructor<Resource>, _ConstructorById<Resource> {
new (id: string): Resource;
}
@@ -2463,6 +2475,18 @@ interface RoomPosition {
* * STRUCTURE_LINK
*/
createConstructionSite(structureType: BuildableStructureConstant): ScreepsReturnCode;
/**
* Create new ConstructionSite at the specified location.
* @param structureType One of the following constants:
* * STRUCTURE_EXTENSION
* * STRUCTURE_RAMPART
* * STRUCTURE_ROAD
* * STRUCTURE_SPAWN
* * STRUCTURE_WALL
* * STRUCTURE_LINK
* @param name The name of the structure, for structures that support it (currently only spawns).
*/
createConstructionSite(structureType: STRUCTURE_SPAWN, name?: string): ScreepsReturnCode;
/**
* Create new Flag at the specified location.
* @param name The name of a new flag.
@@ -2478,31 +2502,31 @@ interface RoomPosition {
* @param opts An object containing pathfinding options (see Room.findPath), or one of the following: filter, algorithm
* @returns An instance of a RoomObject.
*/
findClosestByPath<K extends FindConstant>(type: K, opts?: FindPathOpts & { filter?: FilterFunction<K>, algorithm?: string }): FindTypes[K];
findClosestByPath<K extends FindConstant>(type: K, opts?: FindPathOpts & { filter?: FilterFunction<K>, algorithm?: string }): FindTypes[K] | null;
findClosestByPath<T extends Structure>(
type: FIND_STRUCTURES | FIND_MY_STRUCTURES | FIND_HOSTILE_STRUCTURES,
opts?: FindPathOpts & { filter?: FilterFunction<FIND_STRUCTURES>, algorithm?: string}
): T;
): T | null;
/**
* Find the object with the shortest path from the given position. Uses A* search algorithm and Dijkstra's algorithm.
* @param objects An array of RoomPositions or objects with a RoomPosition
* @param opts An object containing pathfinding options (see Room.findPath), or one of the following: filter, algorithm
* @returns One of the supplied objects
*/
findClosestByPath<T extends _HasRoomPosition | RoomPosition>(objects: T[], opts?: FindPathOpts & {filter?: any | string, algorithm?: string}): T;
findClosestByPath<T extends _HasRoomPosition | RoomPosition>(objects: T[], opts?: FindPathOpts & {filter?: any | string, algorithm?: string}): T | null;
/**
* Find the object with the shortest linear distance from the given position.
* @param type Any of the FIND_* constants.
* @param opts An object containing pathfinding options (see Room.findPath), or one of the following: filter, algorithm
*/
findClosestByRange<K extends FindConstant>(type: K, opts?: {filter: FilterFunction<K>}): FindTypes[K];
findClosestByRange<T extends Structure>(type: FIND_STRUCTURES | FIND_MY_STRUCTURES | FIND_HOSTILE_STRUCTURES, opts?: {filter: FilterFunction<FIND_STRUCTURES>}): T;
findClosestByRange<K extends FindConstant>(type: K, opts?: {filter: FilterFunction<K>}): FindTypes[K] | null;
findClosestByRange<T extends Structure>(type: FIND_STRUCTURES | FIND_MY_STRUCTURES | FIND_HOSTILE_STRUCTURES, opts?: {filter: FilterFunction<FIND_STRUCTURES>}): T | null;
/**
* Find the object with the shortest linear distance from the given position.
* @param objects An array of RoomPositions or objects with a RoomPosition.
* @param opts An object containing pathfinding options (see Room.findPath), or one of the following: filter, algorithm
*/
findClosestByRange<T extends _HasRoomPosition | RoomPosition>(objects: T[], opts?: {filter: any | string}): T;
findClosestByRange<T extends _HasRoomPosition | RoomPosition>(objects: T[], opts?: {filter: any | string}): T | null;
/**
* Find all objects in the specified linear range.
* @param type Any of the FIND_* constants.
@@ -2741,7 +2765,7 @@ interface LineStyle {
/**
* Either undefined (solid line), dashed, or dotted.Default is undefined.
*/
lineStyle?: "dashed" | "dotted";
lineStyle?: "dashed" | "dotted" | "solid";
}
interface PolyStyle {
@@ -2764,7 +2788,7 @@ interface PolyStyle {
/**
* Either undefined (solid line), dashed, or dotted.Default is undefined.
*/
lineStyle?: "dashed" | "dotted";
lineStyle?: "dashed" | "dotted" | "solid";
}
interface CircleStyle extends PolyStyle {
@@ -2871,6 +2895,23 @@ interface Room {
* @returns Result Code: OK, ERR_INVALID_TARGET, ERR_INVALID_ARGS, ERR_RCL_NOT_ENOUGH
*/
createConstructionSite(pos: RoomPosition | _HasRoomPosition, structureType: StructureConstant): ScreepsReturnCode;
/**
* Create new ConstructionSite at the specified location.
* @param x The X position.
* @param y The Y position.
* @param structureType One of the following constants: STRUCTURE_EXTENSION, STRUCTURE_RAMPART, STRUCTURE_ROAD, STRUCTURE_SPAWN, STRUCTURE_WALL, STRUCTURE_LINK
* @param name The name of the structure, for structures that support it (currently only spawns).
* @returns Result Code: OK, ERR_INVALID_TARGET, ERR_INVALID_ARGS, ERR_RCL_NOT_ENOUGH
*/
createConstructionSite(x: number, y: number, structureType: STRUCTURE_SPAWN, name?: string): ScreepsReturnCode;
/**
* Create new ConstructionSite at the specified location.
* @param pos Can be a RoomPosition object or any object containing RoomPosition.
* @param structureType One of the following constants: STRUCTURE_EXTENSION, STRUCTURE_RAMPART, STRUCTURE_ROAD, STRUCTURE_SPAWN, STRUCTURE_WALL, STRUCTURE_LINK
* @param name The name of the structure, for structures that support it (currently only spawns).
* @returns Result Code: OK, ERR_INVALID_TARGET, ERR_INVALID_ARGS, ERR_RCL_NOT_ENOUGH
*/
createConstructionSite(pos: RoomPosition | _HasRoomPosition, structureType: STRUCTURE_SPAWN, name?: string): ScreepsReturnCode;
/**
* Create new Flag at the specified location.
* @param x The X position.
@@ -2880,10 +2921,13 @@ interface Room {
* It should be unique, i.e. the Game.flags object should not contain another flag with the same name (hash key).
*
* If not defined, a random name will be generated.
*
* The maximum length is 60 characters.
* @param color The color of a new flag. Should be one of the COLOR_* constants. The default value is COLOR_WHITE.
* @param secondaryColor The secondary color of a new flag. Should be one of the COLOR_* constants. The default value is equal to color.
* @returns The name of a new flag, or one of the following error codes: ERR_NAME_EXISTS, ERR_INVALID_ARGS
*/
createFlag(x: number, y: number, name?: string, color?: ColorConstant, secondaryColor?: ColorConstant): ScreepsReturnCode;
createFlag(x: number, y: number, name?: string, color?: ColorConstant, secondaryColor?: ColorConstant): ERR_NAME_EXISTS | ERR_INVALID_ARGS | string;
/**
* Create new Flag at the specified location.
* @param pos Can be a RoomPosition object or any object containing RoomPosition.
@@ -2892,10 +2936,13 @@ interface Room {
* It should be unique, i.e. the Game.flags object should not contain another flag with the same name (hash key).
*
* If not defined, a random name will be generated.
*
* The maximum length is 60 characters.
* @param color The color of a new flag. Should be one of the COLOR_* constants. The default value is COLOR_WHITE.
* @param secondaryColor The secondary color of a new flag. Should be one of the COLOR_* constants. The default value is equal to color.
* @returns The name of a new flag, or one of the following error codes: ERR_NAME_EXISTS, ERR_INVALID_ARGS
*/
createFlag(pos: RoomPosition | { pos: RoomPosition }, name?: string, color?: ColorConstant, secondaryColor?: ColorConstant): ScreepsReturnCode;
createFlag(pos: RoomPosition | { pos: RoomPosition }, name?: string, color?: ColorConstant, secondaryColor?: ColorConstant): ERR_NAME_EXISTS | ERR_INVALID_ARGS | string;
/**
* Find all objects of the specified type in the room.
* @param type One of the following constants:
@@ -2929,7 +2976,7 @@ interface Room {
* @returns The room direction constant, one of the following: FIND_EXIT_TOP, FIND_EXIT_RIGHT, FIND_EXIT_BOTTOM, FIND_EXIT_LEFT
* Or one of the following error codes: ERR_NO_PATH, ERR_INVALID_ARGS
*/
findExitTo(room: string | Room): ScreepsReturnCode | FIND_EXIT_TOP | FIND_EXIT_RIGHT | FIND_EXIT_BOTTOM | FIND_EXIT_LEFT;
findExitTo(room: string | Room): ExitConstant | ERR_NO_PATH | ERR_INVALID_ARGS;
/**
* Find an optimal path inside the room between fromPos and toPos using A* search algorithm.
* @param fromPos The start position.
@@ -2967,7 +3014,17 @@ interface Room {
* @param asArray Set to true if you want to get the result as a plain array.
* @returns An object with all the objects in the specified area
*/
lookAtArea(top: number, left: number, bottom: number, right: number, asArray?: boolean): LookAtResultMatrix | LookAtResultWithPos[];
lookAtArea(top: number, left: number, bottom: number, right: number, asArray?: false): LookAtResultMatrix;
/**
* Get the list of objects at the specified room area. This method is more CPU efficient in comparison to multiple lookAt calls.
* @param top The top Y boundary of the area.
* @param left The left X boundary of the area.
* @param bottom The bottom Y boundary of the area.
* @param right The right X boundary of the area.
* @param asArray Set to true if you want to get the result as a plain array.
* @returns An object with all the objects in the specified area
*/
lookAtArea(top: number, left: number, bottom: number, right: number, asArray: true): LookAtResultWithPos[];
/**
* Get the objects at the given position.
* @param type One of the LOOK_* constants.
@@ -3033,7 +3090,7 @@ interface Room {
*/
}
interface RoomConstructor {
interface RoomConstructor extends _Constructor<Room> {
new (id: string): Room;
/**
* Serialize a path array into a short string representation, which is suitable to store in memory.
@@ -3167,7 +3224,7 @@ interface StructureSpawn extends OwnedStructure<STRUCTURE_SPAWN> {
* * TOUGH
* * CLAIM
* @param {string} name The name of a new creep. It must be a unique creep name, i.e. the Game.creeps object should not contain another creep with the same name (hash key).
* @param {{memory?: CreepMemory; energyStructures?: (StructureSpawn | StructureExtension)[]; dryRun?: boolean}} opts An object with additional options for the spawning process.
* @param {SpawnOptions} opts An object with additional options for the spawning process.
* @returns {ScreepsReturnCode} One of the following codes:
* ```
* OK 0 The operation has been scheduled successfully.
@@ -3179,7 +3236,7 @@ interface StructureSpawn extends OwnedStructure<STRUCTURE_SPAWN> {
* ERR_RCL_NOT_ENOUGH -14 Your Room Controller level is insufficient to use this spawn.
* ```
*/
spawnCreep(body: BodyPartConstant[], name: string, opts?: { memory?: CreepMemory, energyStructures?: Array<(StructureSpawn | StructureExtension)>, dryRun?: boolean }): ScreepsReturnCode;
spawnCreep(body: BodyPartConstant[], name: string, opts?: SpawnOptions): ScreepsReturnCode;
/**
* Destroy this spawn immediately.
@@ -3263,6 +3320,30 @@ interface Spawning {
setDirections(directions: DirectionConstant[]): ScreepsReturnCode & (OK | ERR_NOT_OWNER | ERR_INVALID_ARGS);
}
/**
* An object with additional options for the spawning process.
*/
interface SpawnOptions {
/**
* Memory of the new creep. If provided, it will be immediately stored into Memory.creeps[name].
*/
memory?: CreepMemory;
/**
* Array of spawns/extensions from which to draw energy for the spawning process.
* Structures will be used according to the array order.
*/
energyStructures?: Array<StructureSpawn | StructureExtension>;
/**
* If dryRun is <code>true</code>, the operation will only check if it is possible to create a creep.
*/
dryRun?: boolean;
/**
* Set desired directions where the creep should move when spawned.
* An array with the direction constants.
*/
directions?: DirectionConstant[];
}
interface SpawningConstructor extends _Constructor<Spawning>, _ConstructorById<Spawning> {
}
/**
@@ -3721,8 +3802,9 @@ interface StructureLab extends OwnedStructure<STRUCTURE_LAB> {
mineralAmount: number;
/**
* The type of minerals containing in the lab. Labs can contain only one mineral type at the same time.
* Null in case there is no mineral resource in the lab.
*/
mineralType: _ResourceConstantSansEnergy | undefined;
mineralType: _ResourceConstantSansEnergy | null;
/**
* The total amount of minerals the lab can contain.
*/
@@ -3856,13 +3938,15 @@ declare const StructureNuker: StructureNukerConstructor;
interface StructurePortal extends Structure<STRUCTURE_PORTAL> {
readonly prototype: StructurePortal;
/**
* The position object in the destination room.
* If this is an inter-room portal, then this property contains a RoomPosition object leading to the point in the destination room.
* If this is an inter-shard portal, then this property contains an object with shard and room string properties.
* Exact coordinates are undetermined, the creep will appear at any free spot in the destination room.
*/
destination: RoomPosition;
destination: RoomPosition | { shard: string, room: string };
/**
* The amount of game ticks when the portal disappears, or undefined when the portal is stable.
*/
ticksToDecay: number;
ticksToDecay: number | undefined;
}
interface StructurePortalConstructor extends _Constructor<StructurePortal>, _ConstructorById<StructurePortal> {
@@ -3899,15 +3983,37 @@ type AnyStructure =
StructurePortal |
StructureRoad |
StructureWall;
/**
* A remnant of dead creeps. This is a walkable structure.
* <ul>
* <li>Decay: 5 ticks per body part of the deceased creep</li>
* </ul>
*/
interface Tombstone extends RoomObject {
/** The tombstones game objects id. */
/**
* A unique object identificator.
* You can use {@link Game.getObjectById} method to retrieve an object instance by its id.
*/
id: string;
/** The tick that the creep died. */
/**
* Time of death.
*/
deathTime: number;
/**
* An object with the tombstone contents.
* Each object key is one of the RESOURCE_* constants, values are resources amounts.
* RESOURCE_ENERGY is always defined and equals to 0 when empty,
* other resources are undefined when empty.
* You can use lodash.sum to get the total amount of contents.
*/
store: StoreDefinition;
/** How many ticks until this tombstone decays */
/**
* The amount of game ticks before this tombstone decays.
*/
ticksToDecay: number;
/** The creep that died to create this tombstone */
/**
* An object containing the deceased creep.
*/
creep: Creep;
}

View File

@@ -24,6 +24,15 @@ interface CreepMemory {
lastHits: number;
}
// Typescript always uses 'string' as the type of a key inside 'for in' loops.
// In case of objects with a restricted set of properties (e.g. ResourceConstant as key in StoreDefinition)
// the type of the key should be narrowed down in order to prevent casting (key as ResourceConstant).
// This helper function provides strongly typed keys for such objects.
// See discussion (https://github.com/Microsoft/TypeScript/pull/12253) why Object.keys does not return typed keys.
function keys<T>(o: T): Array<keyof T> {
return Object.keys(o) as Array<keyof T>;
}
// Game.creeps
{
@@ -95,7 +104,7 @@ interface CreepMemory {
// Game.getObjectById(id)
{
creep.memory.sourceId = creep.pos.findClosestByRange(FIND_SOURCES).id;
creep.memory.sourceId = creep.pos.findClosestByRange(FIND_SOURCES)!.id;
const source = Game.getObjectById<Source>(creep.memory.sourceId);
}
@@ -121,6 +130,13 @@ interface CreepMemory {
{
const exits = Game.map.describeExits("W8N3");
keys(exits)
.map((exitKey) => {
const nextRoom = exits[exitKey];
const exitDir = +exitKey as ExitConstant;
const exitPos = creep.pos.findClosestByRange(exitDir);
return {nextRoom, exitPos};
});
}
// Game.map.findExit()
@@ -128,8 +144,12 @@ interface CreepMemory {
{
if (creep.room !== anotherRoomName) {
const exitDir = Game.map.findExit(creep.room, anotherRoomName);
const exit = creep.pos.findClosestByRange(exitDir as FindConstant);
creep.moveTo(exit);
if (exitDir !== ERR_NO_PATH && exitDir !== ERR_INVALID_ARGS) {
const exit = creep.pos.findClosestByRange(exitDir);
if (exit !== null) {
creep.moveTo(exit);
}
}
} else {
// go to some place in another room
}
@@ -146,7 +166,9 @@ interface CreepMemory {
if (route !== ERR_NO_PATH && route.length > 0) {
const exit = creep.pos.findClosestByRange(route[0].exit);
creep.moveTo(exit);
if (exit !== null) {
creep.moveTo(exit);
}
}
}
@@ -283,6 +305,10 @@ interface CreepMemory {
// Game.market.getOrderById(id)
const order = Game.market.getOrderById("55c34a6b5be41a0a6e80c123");
// Subscription tokens
Game.market.getAllOrders({ type: ORDER_SELL, resourceType: SUBSCRIPTION_TOKEN });
Game.market.createOrder(ORDER_BUY, SUBSCRIPTION_TOKEN, 10000000, 1);
}
// PathFinder
@@ -440,24 +466,27 @@ interface CreepMemory {
{
// Should have type Creep
const hostileCreep = creep.pos.findClosestByRange(FIND_HOSTILE_CREEPS);
creep.say(hostileCreep.name);
if (hostileCreep !== null) {
creep.say(hostileCreep.name);
}
const tower = creep.pos.findClosestByPath<StructureTower>(FIND_HOSTILE_STRUCTURES, {
filter: (structure) => {
return structure.structureType === STRUCTURE_TOWER;
}
});
tower.attack(creep);
if (tower !== null) {
tower.attack(creep);
}
const rampart = creep.pos.findClosestByRange<StructureRampart>(FIND_HOSTILE_STRUCTURES, {
filter: (structure) => {
return structure.structureType === STRUCTURE_RAMPART;
}
});
rampart.isPublic;
if (rampart !== null) {
rampart.isPublic;
}
// Should have type Creep[]
const hostileCreeps = creep.pos.findInRange(FIND_HOSTILE_CREEPS, 10);
@@ -475,6 +504,18 @@ interface CreepMemory {
// LookAt Finds
{
const matrix = room.lookAtArea(10, 10, 20, 20, false);
for (const y in matrix) {
const row = matrix[y];
for (const x in row) {
const pos = new RoomPosition(+x, +y, room.name);
const objects = row[x];
if (objects.length > 0) {
objects.map((o) => o.type);
}
}
}
const nukes = room.lookForAt(LOOK_NUKES, creep.pos);
nukes[0].launchRoomName;
@@ -493,6 +534,15 @@ interface CreepMemory {
creeps[0].creep.move(TOP);
}
// StoreDefinition
{
for (const resourceType of keys(creep.carry)) {
const amount = creep.carry[resourceType];
creep.drop(resourceType, amount);
}
}
// Advanced Structure types
{
const owned = Game.getObjectById<AnyOwnedStructure>("blah");
@@ -554,3 +604,44 @@ interface CreepMemory {
heap.total_heap_size;
}
}
// StructurePortal
{
const portals = room.find<StructurePortal>(FIND_STRUCTURES, {filter: (s) => s.structureType === STRUCTURE_PORTAL});
portals.forEach((p: StructurePortal) => {
const state = p.ticksToDecay === undefined ? 'stable' : 'unstable';
if (p.destination instanceof RoomPosition) {
Game.notify(`Found ${state} inter-room portal to ${p.destination}`);
} else {
Game.notify(`Found ${state} inter-shard portal to ${p.destination.shard} ${p.destination.room}`);
}
});
}
// ConstructionSite
{
room.createConstructionSite(10, 10, STRUCTURE_EXTENSION);
room.createConstructionSite(10, 11, STRUCTURE_SPAWN, "mySpawn");
const pos = new RoomPosition(10, 10, room.name);
room.createConstructionSite(pos, STRUCTURE_EXTENSION);
room.createConstructionSite(pos, STRUCTURE_SPAWN, "mySpawn");
pos.createConstructionSite(STRUCTURE_EXTENSION);
pos.createConstructionSite(STRUCTURE_SPAWN, "mySpawn");
}
// StructureLab
{
const lab0 = Game.getObjectById<StructureLab>("lab0");
const lab1 = Game.getObjectById<StructureLab>("lab1");
const lab2 = Game.getObjectById<StructureLab>("lab2");
if (lab0 !== null && lab1 !== null && lab2 !== null) {
if (lab1.mineralAmount >= LAB_REACTION_AMOUNT && lab2.mineralAmount >= LAB_REACTION_AMOUNT &&
lab0.mineralType === null) {
lab0.runReaction(lab1, lab2);
}
}
}

View File

@@ -20,4 +20,4 @@
"index.d.ts",
"screeps-tests.ts"
]
}
}