翔鹰帝国网|帝国时代论坛|帝国时代系列|神话时代
 找回密码
 注册翔鹰会员(昵称)
搜索
查看: 463|回复: 0

[交流] 转自内部AI岛屿运输船进攻代码

[复制链接]

14

主题

0

精华

1165

积分

伯爵

耕战
100
鹰币
320
天龙币
0
回帖
30
附庸关系0
 楼主| 发表于 2020-7-19 15:10:56 | 显示全部楼层 |阅读模式
本帖最后由 wangzhen 于 2022-5-27 09:41 编辑

#load-if-defined MIGRATION-MAP;移民
(defconst migration-style 1)
(defconst migration-position position-center);地图中心
(defconst instant-dock 0)
#else
#load-if-defined PACIFIC-ISLANDS-MAP;太平洋岛屿地图
(defconst migration-style 1)
(defconst migration-position position-center);地图中心
(defconst instant-dock 0)
#else
#load-if-defined HAMBURGER-MAP;汉堡包地图
(defconst migration-style 1)
(defconst migration-position position-border);边缘
(defconst instant-dock 0)
#else
#load-if-defined NILE-DELTA-MAP;尼罗河三角洲地图
(defconst migration-style 1)
#load-if-defined UP-PLAYER-1
(defconst migration-position position-zero);地图最左
#else
#load-if-defined UP-PLAYER-2
(defconst migration-position position-zero);地图最左
#else
#load-if-defined UP-PLAYER-5
(defconst migration-position position-zero);地图最左
#else
#load-if-defined UP-PLAYER-6
(defconst migration-position position-zero);地图最左
#else
(defconst migration-position position-map-size);地图最右
#end-if
#end-if
#end-if
#end-if
(defconst instant-dock 0); 1
#else
#load-if-defined REAL-WORLD-WORLD-MAP;真实世界
(defconst migration-style 1)
(defconst migration-position position-center);地图中心
(defconst instant-dock 0)
#else
(defconst migration-style 0)
(defconst migration-position position-mirror);镜像
(defconst instant-dock 0)
#end-if
#end-if
#end-if
#end-if
#end-if

#load-if-defined REAL-WORLD-WORLD-MAP;真实世界 世界地图
(defrule
        (game-time < 360)
        (up-compare-goal starting-zone g:== migration-zone)
=>
        (up-get-point migration-position migration-point-x)
        (up-bound-precise-point migration-point-x 0 c: 4)
        (up-get-point-zone migration-point-x migration-zone)

;;;;;

;按玩家人数设定位置
#load-if-defined UP-PLAYER-1
(defrule
        (game-time < 360)
=>
        (set-goal saved-point-x 308)
        (set-goal saved-point-y 412))
#end-if
#load-if-defined UP-PLAYER-2
(defrule
        (game-time < 360)
=>
        (set-goal saved-point-x 375)
        (set-goal saved-point-y 230))
#end-if
#load-if-defined UP-PLAYER-3
(defrule
        (game-time < 360)
=>
        (set-goal saved-point-x 355)
        (set-goal saved-point-y 305))
#end-if
#load-if-defined UP-PLAYER-4
(defrule
        (game-time < 360)
=>
        (set-goal saved-point-x 200)
        (set-goal saved-point-y 280))
#end-if
#load-if-defined UP-PLAYER-5
(defrule
        (game-time < 360)
=>
        (set-goal saved-point-x 290)
        (set-goal saved-point-y 220))
#end-if
#load-if-defined UP-PLAYER-6
(defrule
        (game-time < 360)
=>
        (set-goal saved-point-x 125)
        (set-goal saved-point-y 75))
#end-if
#load-if-defined UP-PLAYER-7
(defrule
        (game-time < 360)
=>
        (set-goal saved-point-x 170)
        (set-goal saved-point-y 65))
#end-if
#load-if-defined UP-PLAYER-8
(defrule
        (game-time < 360)
=>
        (set-goal saved-point-x 120)
        (set-goal saved-point-y 180))
#end-if
(defrule
        (game-time >= 360)
=>
        (up-ungarrison c: transport-ship)
        (disable-self))
#end-if
;;;;
(defrule
        (true)
=>
        (up-full-reset-search)
        (up-filter-include -1 -1 -1 off-mainland);非主大陆
        (up-filter-status c: status-ready c: list-active);树木
        (up-find-resource c: wood c: 240)
        (up-remove-objects search-remote object-data-map-zone-id g:== starting-zone)
        (up-get-search-state local-total)
        (up-modify-goal temporary-goal2 g:= remote-total)
        (up-clean-search search-remote object-data-distance search-order-desc); asc
        (up-set-target-object search-remote c: 0)
        (up-full-reset-search)
        (up-filter-include -1 -1 -1 off-mainland)
        (up-filter-status c: status-resource c: list-active)
        (up-find-resource c: wood c: 240)
        (up-remove-objects search-remote object-data-map-zone-id g:== starting-zone)
        (up-get-search-state local-total))
(defrule
        (up-compare-goal temporary-goal2 g:< temporary-goal)
=>
        (up-modify-goal temporary-goal2 g:+ remote-total)
        (up-clean-search search-remote object-data-distance search-order-desc); asc
        (up-set-target-object search-remote c: 0)
        (up-full-reset-search)
        (up-filter-include -1 -1 -1 off-mainland)
        (up-filter-status c: status-resource c: list-active)
        (up-find-resource c: gold c: 240)
        (up-remove-objects search-remote object-data-map-zone-id g:== starting-zone)
        (up-get-search-state local-total)
        (up-modify-goal temporary-goal2 g:+ remote-total)
        (up-clean-search search-remote object-data-distance search-order-desc); asc
        (up-set-target-object search-remote c: 0)
        (up-full-reset-search)
        (up-find-resource c: stone c: 240)
        (up-filter-status c: status-resource c: list-active))
(defrule
        (up-compare-goal temporary-goal2 g:< temporary-goal)
=>
        (up-filter-include -1 -1 -1 off-mainland)
        (up-remove-objects search-remote object-data-map-zone-id g:== starting-zone)
        (up-get-search-state local-total)
        (up-modify-goal temporary-goal2 g:+ remote-total)
        (up-clean-search search-remote object-data-distance search-order-desc); asc
        (up-set-target-object search-remote c: 0)
        (up-set-target-point position-self-x)
        (up-full-reset-search)
        (up-filter-distance s: sn-safe-town-size c: -1)
        (up-filter-status c: status-ready c: list-active)
        (up-find-resource c: wood c: 240)
        (up-remove-objects search-remote object-data-map-zone-id g:== starting-zone)
        (up-get-search-state local-total)
        (up-modify-goal temporary-goal2 g:= remote-total)
        (up-clean-search search-remote object-data-distance search-order-desc)); asc
(defrule
        (up-compare-goal temporary-goal2 g:< temporary-goal)
=>
        (up-set-target-object search-remote c: 0)
        (up-full-reset-search)
        (up-filter-distance s: sn-safe-town-size c: -1)
        (up-filter-status c: status-resource c: list-active)
        (up-find-resource c: wood c: 240)
        (up-remove-objects search-remote object-data-map-zone-id g:== starting-zone)
        (up-get-search-state local-total)
        (up-modify-goal temporary-goal2 g:+ remote-total)
        (up-clean-search search-remote object-data-distance search-order-desc); asc
        (up-set-target-object search-remote c: 0)
        (up-full-reset-search)
        (up-filter-distance s: sn-safe-town-size c: -1)
        (up-filter-status c: status-resource c: list-active)
        (up-find-resource c: gold c: 240)
        (up-remove-objects search-remote object-data-map-zone-id g:== starting-zone))
(defrule
        (up-compare-goal temporary-goal2 g:< temporary-goal)
=>
        (up-get-search-state local-total)
        (up-modify-goal temporary-goal2 g:+ remote-total)
        (up-clean-search search-remote object-data-distance search-order-desc); asc
        (up-set-target-object search-remote c: 0)
        (up-full-reset-search)
        (up-find-resource c: stone c: 240)
        (up-filter-status c: status-resource c: list-active)
        (up-filter-distance s: sn-safe-town-size c: -1)
        (up-remove-objects search-remote object-data-map-zone-id g:== starting-zone)
        (up-get-search-state local-total)
        (up-modify-goal temporary-goal2 g:+ remote-total))
(defrule
        (up-compare-goal temporary-goal2 g:>= temporary-goal)
=>
        (up-clean-search search-remote object-data-distance search-order-desc); asc
        (up-set-target-object search-remote c: 0)
        (up-get-object-data object-data-map-zone-id temporary-goal3)
        (up-remove-objects search-remote object-data-map-zone-id g:!= temporary-goal3)
        (up-get-search-state local-total))
(defrule
        (up-compare-goal remote-total >= 2)
        (up-compare-goal temporary-goal2 g:>= temporary-goal)
=>
;        (up-chat-data-to-player my-player-number "temporary-goal2: %d" g: temporary-goal2)
;        (up-chat-data-to-player my-player-number "temporary-goal: %d" g: temporary-goal)
        (up-chat-data-to-player my-player-number "Found migration point: %d" g: remote-total)
        (up-set-target-object search-remote c: 0)
        (up-get-point position-object migration-point-x)
        (up-set-target-point migration-point-x)
        (up-get-point-zone migration-point-x migration-zone)); end jump

(defrule
        (game-time < 5)
        (up-point-distance point-x saved-point-x >= 1)
(or        (goal migration-zone -1)
(or        (goal migration-point-x -1)
        (goal migration-point-y -1)))
=>
        (up-copy-point migration-point-x saved-point-x);        (up-get-point migration-position migration-point-x)
        (up-bound-precise-point migration-point-x 0 c: 4)
        (up-get-point-zone migration-point-x migration-zone)
        (disable-self))


,,,,,,
(defrule
        (building-type-count town-center <= 0)
        (unit-type-count villager >= 1)
=>
        (up-full-reset-search)
        (up-find-local c: villager-class c: 1)
        (up-set-target-object search-local c: 0)
        (up-get-point position-object position-self-x)
        (up-get-point-zone position-self-x main-zone))
(defrule
        (building-type-count town-center >= 1)
=>
        (up-full-reset-search)
        (up-find-local c: town-center c: 1)
        (up-set-target-object search-local c: 0)
        (up-get-point position-object position-self-x)
        (up-get-point-zone position-self-x main-zone)
        (up-get-object-data object-data-id position-self-id)
;        (up-get-object-data object-data-no-convert temporary-goal)
;        (up-chat-data-to-player my-player-number "t-g: %d" g: temporary-goal)
        (up-modify-sn sn-safe-town-size s:= sn-maximum-town-size)
        (up-modify-sn sn-safe-town-size c:max 16); 14
        (up-modify-sn sn-safe-town-size c:min 48)); 44
(defrule
        (up-compare-goal starting-zone <= -1)
        (up-compare-goal position-self-x >= 0)
        (up-compare-goal position-self-y >= 0)
        (up-compare-goal position-self-x g:<= map-size)
        (up-compare-goal position-self-y g:<= map-size)
=>
        (up-get-point-zone position-self-x starting-zone)
;        (up-chat-data-to-self "starting-zone: %d" g: starting-zone)
;        (disable-self)

(defrule
        (game-time >= 2)
        (unit-type-count transport-ship >= 1)
        (unit-type-count villager >= 1)
        (building-type-count town-center <= 0)
=>
        (up-garrison transport-ship c: villager-class)
        (up-garrison transport-ship c: scout-cavalry-class)
        (up-garrison transport-ship c: infantry-class)
        (up-garrison transport-ship c: king-class)
        (set-goal inseln yes)
        (set-goal migration-state 1)
        (disable-self))
#end-if

(defrule
        (up-compare-const scenario-game == 1)
        (building-type-count-total town-center <= 1)
=>
        (up-jump-rule 2))
(defrule
(or        (up-compare-goal migration-state != 1)
(or        (building-available town-center)
(or        (up-research-status c: castle-age >= research-pending)
(or        (up-research-status c: feudal-age == research-pending); jic
(or        (up-research-status c: ri-loom == research-pending)
(or        (up-pending-objects c: villager >= 1)
(or        (unit-type-count villager <= 0); jic
        (unit-type-count transport-ship <= 0))))))))
=>
        (up-jump-rule 1))
(defrule
        (building-type-count town-center >= 1)
        (wood-amount >= 100); 275
(or        (up-idle-unit-count idle-type-villager g:>= villagercount)
        (and        (game-time >= 90)
                (and        (housing-headroom <= 0)
                        (population-headroom >= 1))))
        (up-compare-const sd-game != 1)
=>
        (up-full-reset-search)
        (up-find-local c: town-center c: 16)
        (up-remove-objects search-local object-data-map-zone-id g:!= starting-zone)
        (up-remove-objects search-local object-data-map-zone-id g:== migration-zone)
        (up-target-point 0 action-delete -1 -1)
        (disable-self));; end mini jump
(defrule
(or        (up-compare-goal migration-state != 1)
(or        (and        (not        (building-available town-center))
                (up-research-status c: castle-age <= research-available))
        (up-timer-status threesec == timer-running)))
=>
        (up-jump-rule 39))
(defrule
        (true);        (soldier-count >= 1)
=>
        (up-full-reset-search)
        (up-filter-include cmdid-military actionid-enter -1 -1)
        (up-find-local c: all-units-class c: 240)
        (up-target-point 0 action-stop -1 -1)
        (disable-self))
(defrule
        (true)
=>
        (up-modify-goal temporary-goal s:= sn-focus-player-number)
        (set-strategic-number sn-focus-player-number my-player-number)
        (up-get-point-zone migration-point-x migration-zone)
;        (up-send-flare migration-point-x)
        (set-goal temporary-goal2 0)
        (set-goal temporary-goal3 0)
        (set-goal temporary-goal5 0)
        (set-goal temporary-goal6 16384)
        (set-goal temporary-goal7 0)
        (up-modify-goal temporary-goal8 g:= escrow-state)
        (set-goal escrow-state with-escrow))
(defrule
        (building-type-count town-center >= 1)
=>
        (up-full-reset-search)
        (up-find-local c: villager-class g: villagercount)
        (up-remove-objects search-local object-data-map-zone-id g:!= starting-zone)
        (up-remove-objects search-local object-data-map-zone-id g:== migration-zone);
        (up-get-search-state local-total)
        (up-modify-goal temporary-goal2 g:= local-total)
        (up-find-local c: town-center c: 16)
        (up-remove-objects search-local object-data-map-zone-id g:!= starting-zone)
        (up-remove-objects search-local object-data-map-zone-id g:== migration-zone);
        (up-get-search-state local-total)
        (up-modify-goal temporary-goal3 g:= local-total)
        (up-find-remote c: town-center c: 16)
        (up-find-remote c: villager-class g: villagercount)
        (up-remove-objects search-remote object-data-map-zone-id g:!= migration-zone))
(defrule
        (building-type-count town-center >= 1)
=>
        (up-get-search-state local-total)
        (up-modify-goal temporary-goal4 g:= remote-total)
;        (up-full-reset-search)
        (up-filter-garrison c: 1 c: -1)
        (up-find-local c: transport-ship c: maxtransports)
        (up-get-search-state local-total)
;        (up-chat-data-to-player my-player-number "remote-total delete: %d" g: remote-total)
;        (up-chat-data-to-player my-player-number "local-total delete: %d" g: local-total)
;        (up-chat-data-to-player my-player-number "temporary-goal2 delete: %d" g: temporary-goal2)
;        (up-chat-data-to-player my-player-number "temporary-goal3 delete: %d" g: temporary-goal3)
;        (up-chat-data-to-player my-player-number "temporary-goal4 delete: %d" g: temporary-goal4)
;        (up-chat-data-to-player my-player-number "starting-zone delete: %d" g: starting-zone)
;        (up-chat-data-to-player my-player-number "migration-zone delete: %d" g: migration-zone)
)
(defrule
        (up-compare-goal local-total <= 0); last
        (up-compare-goal temporary-goal2 <= 0);
(or        (up-compare-goal temporary-goal3 <= 0);
        (up-compare-const sd-game == 1))
        (up-compare-goal temporary-goal4 >= 1)
        (building-type-count town-center >= 1)
=>
;        (up-chat-data-to-player my-player-number "starting-zone: %d" g: starting-zone)
;        (up-chat-data-to-player my-player-number "migration-zone: %d" g: migration-zone)
        (set-strategic-number sn-total-number-explorers 0);
        (set-strategic-number sn-number-explore-groups 0);
        (up-reset-scouts);
        (set-goal migration-state 2); 0
        (up-chat-data-to-player my-player-number "Migration-state: %d" g: migration-state)
        (up-jump-rule 1))
(defrule
        (up-compare-goal temporary-goal2 >= 1)
        (up-compare-goal temporary-goal3 g:<= temporary-goal2)
        (up-compare-goal temporary-goal4 >= 1)
        (building-type-count town-center >= 1)
        (unit-type-count-total villager >= min-number-vills)
(or        (timer-triggered one-min); back-up
(or        (housing-headroom <= 0); back-up
(or        (up-compare-goal custom-civ-pop >= up-max-civ); >
        (population >= max-civ-pop)))); >
=>
;        (chat-local-to-self "Migration: Deleting villager.")
        (up-remove-objects search-local object-data-class != villager-class)
;tf        (up-clean-search search-local object-data-action search-order-desc)
        (up-clean-search search-local object-data-carry search-order-asc)
        (up-remove-objects search-local object-data-index >= 1)
        (up-target-point 0 action-delete -1 -1))
(defrule
        (building-type-count dock >= 1)
=>
        (up-full-reset-search)
        (up-find-local c: dock c: 1)
        (up-set-target-object search-local c: 0)
        (up-get-point position-object point-x)
        (up-get-point-zone point-x temporary-goal6)
;        (up-chat-data-to-self "starting-zone: %d" g: starting-zone)
;        (up-chat-data-to-self "temporary-goal6: %d" g: temporary-goal6)
;        (up-chat-data-to-self "migration-zone: %d" g: migration-zone)
)
(defrule
        (unit-type-count transport-ship >= 1)
        (goal transport-state 2)
=>
        (up-full-reset-search)
        (up-filter-exclude -1 actionid-move -1 -1)
        (up-find-local c: transport-ship c: maxtransports)
        (up-set-target-object search-local c: 0)
        (up-get-point position-object temporary-point-x)
        (up-lerp-tiles temporary-point-x migration-point-x c: -8)
        (up-set-target-point temporary-point-x)
        (up-target-point 0 action-move -1 -1)
        (disable-self)
        (up-jump-rule 1)); don't block vills
(defrule
        (unit-type-count transport-ship >= 1)
        (goal transport-state 2)
=>
        (up-full-reset-search)
        (up-filter-include -1 actionid-move -1 -1)
        (up-filter-garrison c: -1 c: 0); 4
        (up-find-local c: transport-ship c: maxtransports)
        (up-get-search-state local-total)
        (up-chat-data-to-self "Stopping transports: %d." g: local-total)
        (up-target-point 0 action-stop -1 -1)
        (set-goal transport-state 0))
(defrule
        (unit-type-count transport-ship >= 1)
=>
;        (up-full-reset-search)
;        (up-filter-garrison c: 1 c: -1)
;        (up-find-local c: transport-ship c: maxtransports)
;        (up-set-target-object search-local c: 0)
;        (up-get-point position-object point-x)
;        (up-get-point-zone point-x temporary-goal8)
;;        (up-chat-data-to-all "temporary-goal8: %d" g: temporary-goal8)
        (up-full-reset-search)
        (up-filter-exclude -1 actionid-unload -1 -1)
        (up-find-local c: transport-ship c: maxtransports)
        (up-remove-objects search-local object-data-action == actionid-move)
        (up-get-search-state local-total)
        (up-modify-goal temporary-goal3 g:= local-total)
        (up-full-reset-search)
        (up-filter-include -1 actionid-enter -1 -1)
        (up-find-local c: villager-class g: villagercount)
        (up-remove-objects search-local object-data-map-zone-id g:!= starting-zone)
        (up-remove-objects search-local object-data-map-zone-id g:== migration-zone);
        (up-get-search-state local-total)
        (up-chat-data-to-self "local-total entering: %d" g: local-total)
        (up-modify-goal temporary-goal2 g:= local-total))
(defrule
(or        (timer-triggered two-mins)
        (and        (timer-triggered one-min)
                (up-compare-goal temporary-goal3 >= 1)))
        (up-compare-goal local-total >= 1)
        (unit-type-count transport-ship >= 1)
=>
        (up-chat-data-to-self "Resetting %d villagers with action-enter." g: local-total)
        (up-target-point 0 action-stop -1 -1)
        (up-full-reset-search))
(defrule
        (up-compare-goal local-total <= 0)
        (unit-type-count transport-ship >= 1)
=>
        (up-full-reset-search)
        (up-find-local c: villager-class g: villagercount)
        (up-remove-objects search-local object-data-map-zone-id g:!= starting-zone)
        (up-remove-objects search-local object-data-map-zone-id g:== migration-zone);
        (up-filter-garrison c: -1 c: 4)
        (up-find-remote c: transport-ship c: maxtransports)
        (up-get-search-state local-total)
;        (up-chat-data-to-self "local-total entering: %d" g: local-total)
;        (up-chat-data-to-self "remote-total entering: %d" g: remote-total)
;        (up-chat-data-to-self "sn-entering: %d" s: sn-focus-player-number)
        (up-modify-goal remote-total c:* 5)
        (up-modify-goal remote-total g:- temporary-goal2)
        (up-set-target-object search-remote c: 0)
        (up-get-object-data object-data-garrison-count temporary-goal3)
        (up-modify-goal remote-total g:- temporary-goal3)
;        (up-get-search-state local-total)
        (set-goal temporary-goal3 1))
(defrule
        (goal temporary-goal3 1)
        (up-compare-goal local-total >= 1)
        (up-compare-goal remote-total >= 1)
=>
        (up-get-point position-object point-x)
        (up-set-target-point point-x)
        (up-clean-search search-local object-data-distance search-order-asc)
        (up-remove-objects search-local object-data-index g:>= remote-total)
        (up-get-search-state local-total)
        (up-chat-data-to-self "local-total enter: %d" g: local-total)
        (up-target-objects 0 action-garrison -1 -1)
        (set-goal transport-state 1)
        (up-jump-rule 8))
(defrule
        (unit-type-count transport-ship >= 1)
(or        (up-compare-goal local-total <= 0)
        (up-compare-goal remote-total <= 0))
=>
        (up-full-reset-search)
        (up-filter-garrison c: 1 c: -1)
        (up-find-local c: transport-ship c: maxtransports)
        (up-remove-objects search-local object-data-map-zone-id g:== starting-zone)
        (up-remove-objects search-local object-data-map-zone-id g:!= migration-zone)
        (up-get-search-state local-total)
        (up-chat-data-to-self "local-total unload #1: %d" g: local-total)
        (set-goal temporary-goal5 1))
(defrule
        (up-compare-goal temporary-goal5 <= 0)
        (unit-type-count transport-ship >= 1); escrow everything else until we're done
(or        (up-compare-goal local-total <= 0); save point of where villagers entered
        (up-compare-goal remote-total <= 0)); and then unload if not moving and X tiles away
=>
        (up-full-reset-search)
        (up-filter-garrison c: 1 c: -1)
        (up-filter-exclude -1 actionid-move -1 -1)
        (up-find-local c: transport-ship c: maxtransports)
        (up-set-target-object search-local c: 0)
        (up-get-point position-object point-x)
;        (up-get-point-zone point-x temporary-goal8)
        (up-remove-objects search-local object-data-map-zone-id g:== starting-zone)
        (up-remove-objects search-local object-data-map-zone-id g:== temporary-goal6)
;        (up-chat-data-to-self "starting-zone: %d" g: starting-zone)
;        (up-chat-data-to-self "temporary-goal6: %d" g: temporary-goal6)
;        (up-chat-data-to-self "temporary-goal8: %d" g: temporary-goal8)
        (up-get-search-state local-total)
        (up-chat-data-to-self "local-total unload #2: %d" g: local-total)
        (set-goal temporary-goal5 1)); end jump
(defrule
        (goal temporary-goal5 1)
        (up-compare-goal local-total >= 1)
=>
        (up-set-target-object search-local c: 0)
        (up-get-point position-object point-x)
        (up-set-target-point point-x)
;        (up-send-flare point-x)
        (up-lerp-tiles point-x migration-point-x c: 1)
        (up-target-point 0 action-unload -1 -1)
;        (up-lerp-tiles point-x migration-point-x c: 1);
;        (up-target-point 0 action-unload -1 -1);
        (chat-local-to-self "Ungarrison.")
;        (up-ungarrison c: transport-ship)
        (set-goal transport-state 2))
(defrule
        (up-compare-goal temporary-goal2 <= 0)
(or        (up-compare-goal temporary-goal5 <= 0);
        (up-compare-goal local-total <= 0))
        (unit-type-count transport-ship >= 1)
=>
        (up-full-reset-search)
        (up-filter-garrison c: 1 c: -1)
        (up-filter-exclude -1 actionid-move -1 -1)
        (up-find-local c: transport-ship c: maxtransports)
        (up-remove-objects search-local object-data-map-zone-id g:== migration-zone)
        (up-get-search-state local-total)
        (up-chat-data-to-self "local-total move0: %d" g: local-total)
        (set-goal temporary-goal5 25))
(defrule
        (goal temporary-goal5 25)
        (up-compare-goal local-total >= 1)
        (unit-type-count transport-ship >= 1)
=>
        (up-chat-data-to-self "local-total move: %d" g: local-total)
        (up-set-target-point migration-point-x)
;        (up-send-flare migration-point-x)
        (up-target-point 0 action-move -1 -1)
        (up-jump-rule 3))
(defrule
        (unit-type-count transport-ship >= 1)
        (unit-type-count villager >= 1)
        (strategic-number sn-percent-attack-soldiers <= 0)
        (strategic-number sn-number-attack-groups <= 0)
=>
        (up-full-reset-search)
        (up-filter-garrison c: 1 c: -1)
        (up-filter-include -1 actionid-move -1 -1)
        (up-find-local c: transport-ship c: maxtransports)
        (up-remove-objects search-local object-data-map-zone-id g:== migration-zone)
        (up-remove-objects search-local object-data-index >= 1)
        (up-get-search-state local-total))
(defrule
        (up-compare-goal local-total >= 1)
        (unit-type-count transport-ship >= 1)
        (unit-type-count villager >= 1)
        (strategic-number sn-percent-attack-soldiers <= 0)
        (strategic-number sn-number-attack-groups <= 0)
=>
        (up-set-target-object search-local c: 0)
        (up-get-object-data object-data-move-x point-x)
        (up-get-object-data object-data-move-y point-y))
(defrule
        (up-point-distance point-x migration-point-x >= 1)
        (up-compare-goal local-total >= 1)
        (unit-type-count transport-ship >= 1)
        (unit-type-count villager >= 1)
        (strategic-number sn-percent-attack-soldiers <= 0)
        (strategic-number sn-number-attack-groups <= 0)
=>
        (chat-local-to-self "Trying to fix transport-ship.")
        (set-goal temporary-goal5 25)
        (up-jump-rule -4)); end jump




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册翔鹰会员(昵称)

x
回复

使用道具 举报

本版积分规则

排行榜|小黑屋|翔鹰帝国

GMT+8, 2024-11-23 16:21 , Processed in 0.103152 second(s), 26 queries , File On.

Powered by Hawk Studio  QS Security Corp.® Licensed

Copyright © 2001-2023, Hawkaoe.net All Rights Reserved

快速回复 返回顶部 返回列表