Skip to content

Hime-Hina/ScreepsScripts

Repository files navigation

Screeps代码文件

本仓库是从 screeps-typescript-starter Fork过来的.

更新记录

不久前重新开了个房间, 在 shard3 E27S46

2021年5月8日

上传了本仓库, 说是Fork, 其实是先Clone了原项目, 然后后改了个名再上传的. 大部分时间在配置本地开发环境, 基本上没什么修改, 现在还只是勉强能维持房间的存在.

2021年5月25日

添加大量新东西.

  • 添加Constants

    export const ROLES_AMOUNT_PER_ROOM: { [roleName in Roles]: number; };
    export const ROLES_BODIES: RolesBodiesConfig;
    export const priorityStructureNeedToBeFilled: { [name: string]: number };
    export const priorityStructureNeedToBeRepaired: { [name: string]: number };
    export const creepsAmtAcquiredForEachRepairing: { [name: string]: number };
    export const creepsAmtAcquiredForEachFilling: { [name: string]: number };
  • 添加Creep角色: Builder, Carrier, Defender, Repairer

    • Builder: 建筑工人. 不存在ConstructionSite时, 承担Carrier的部分职责.
    • Carrier: 搬运工. 将Harvester收获的存储在Container的能量转移到Spawn, Extension, RCL附近的ContainerStorege. 当Spawn正在生成creep, 更新room.memory.targetsToFill.
    • Defender: 守卫, 以rangeAttack为主. 驻守在房间内的Rampart中, 消灭入侵的敌方.
    • Repairer: 维修工人. 从room.memory.targetsToRepair获取需要维修的建筑物, 并且room.memory.targetsToRepair会定期(200 ticks)更新.
  • 添加Tower控制逻辑

    • 优先级: attack -> heal -> repair
  • 添加全局挂载(GlobalAPI.ts), 方便在控制台中调用.

    RolesRun: { [roleName in Roles]: (creep: Creep) => void; };
    roomsInfo: IRoomsInfo | undefined;
    roleCounters: { [roleName in Roles]: number };
    GetStructToRepair: (roomName: string, idx: number) => Structure | null;
    InitRolesMem: (room: Room) => void;
    InitCarriersMem: (room: Room) => void;
    GlobalInit: () => void;
    FindTargetToRepair: (room: Room) => Structure | null;
  • 添加全局初始化(Initialize.ts), 主要初始化房间相应的Memory

  • 修改Harvester逻辑.

    在有Carrier存在的情况下, 自动收获Source并将energy存放在附近的Container; 不存在Carrier则将能量放在SpawnExtension.

  • 修改Upgrader逻辑.

    检查RCL附近是否有Container. 若有(rclContainer), 则只从其中取能量; 若无, 则从Storege, ContainerSpawn中获取能量.

  • 尽量用函数式的方式编码.

2021年5月26日

主要更新Creep角色相关逻辑.

  • 修改CreepMemory的初始化方式. 每个Role都有相应的GetMemConfigFor${Role}函数, 并在global上挂载GetRolesMemConfig: { [roleName in Roles]: IGetMemConfig }.
  • 修改Harvester的逻辑. 初始化时自动获取Source周围的Container的Id并存储在room.sources中, 默认Creep数量需求为1(只需一个Harvester维护). Harvester会自动驻留在分配到的Container上. 将要消亡时(ticksToLive <= 2), 丢出存储的能量. 若没有分配Container或者没有Carrier, 就执行一般逻辑(给SpawnExtension填充能量).
  • GlobalAPI.ts合并到Initialize.ts.
  • 将函数FindRCLContainer更换成GetRCLContainerId.