City & building
Queue systems
- Build-queue slots (
BuildQueueManager) = concurrent construction slots. - Production queue (
QueueDataManager) = generic per-item timer shared by farming, pasture barns, troop training, hospital healing, research.
ID encoding
Rows keyed id = base_type_id + level; base_type_id is a multiple of BuildLevelCap = 1000 — e.g. bId=10100000, lv=5 → row 10100005.
Commands
free.building.place.new(buildingId, pointId, itemUuid?, robotUuid)free.building.up.new(uuid, upLevel, gold, workerUuid, robotUuid)free.building.upgrade.finish(uuid) — free completion after timer; reply carriesserverSystemTimefor clock resync. Paid finishes usebuild.ccd./queue.ccd..queue.finish/queue.finish.batch— free collects (research, healing, rebirth hospital, T11 break; batch harvests pastures)building.camp.training(uuid, type, sLevel, sNum, itemIdas"id;count|..."string)building.camp.collect— Military Camp / Smith Shop only, not Training Base (Tactical Chip Factory10232000pairing disputed)building.production.collect— 14 confirmed building types liveworker.assign.all/worker.assign.single.building;ub.store.upgrade(bUuid, resources{}, items{})- Account-level collects (no building uuid):
lw.pve.idle.reward,visitor.operate,al.help.all,alliance.reward.allreceive, mail claiming.
Production-line buildings (ProductLineBuilds, Global/EnumType.lua)
Farmland 10201000, Iron Mine 10202000, Gold Mine 10207000, Smelter 10209000, Training Base 10210000, Material Workshop 10211000, Component Factory 10214000, Oil Well 10221000, Drone Parts Workshop 10233000, Tactical Institute 10235000, Crystal Factory 10310000 (new in 1.0.364, gated on CrystalBuyDataManager:IsOpen). Season: 761000–765000, 771000–775000, 781000–785000 (Blessing Fountain), 801000–805000, 822000–826000; S6 Spore Factories 842000–845000; week-card buildings 764000, 775000, 785000, 805000, 826000, 846000.
Not production lines (342 runs → errorCode=602026) live: Tactical Center 10143000, Armament Institute 10227000 (LW_T11_Research), Truck Stations 10138000–10141000 (cargo via train.batch.reward). Locale 602026: "Production in progress. Please wait." Success carries status=1; ProductLineManager:GetNextCollectTime returns -1 without prodST.
init fields
building_new[]:uuid, bId, lv, pId, sT, uT, state(0 normal, 1 upgrading, 2 folded, 3 paused, 5 crossing),help(0–3),lCT, unaT, pEndT, gValT, dStT, dEndT, prodST, prodT, prodET, prodExtend, prodStatus.queue_new[]:{uuid, qid, type, sT, uT, itemObj, funcUuid, para, para2, isHelped, lastHelpTime, helpNum}; builder queues add{expireTime, unlock, gift, rentPrice, rentTime}.NewQueueTypeexamples: 3 hospital, 6 science, 117 rebirth hospital, 120 T11 break.
Tick times
5 s farms/mines/Training Base; 60 s Oil Well; 1800 s Smelter/Material Workshop/Tactical Institute; 3 h Crystal Factory; hours Component/Drone factories.
Economy
12 base resources oil, metal, money, electricity, water, pvePoint, wood, people, dragonHonorScore, obsidian, flint, petroleum via push.resource.info; items via push.resource.item.update / user.get.all.resource.items. No get.storage.info — capacity is computed client-side from push.effect.change deltas.