Although as usual in the world I've got new problems, of course .
a) Mining camps spammed like crazy in late game. Here you have my mining camp rules:
Code: Select all
(defrule
(goal g-stone-mine 1)
=>
(set-strategic-number sn-maximum-stone-drop-distance 255)
)
(defrule
(goal g-gold-mine 1)
=>
(set-strategic-number sn-maximum-gold-drop-distance 255)
)
(defrule
;(strategic-number G-AGE-STATUS >= GV-ADVANCING-TO-FEUDAL)
(goal g-stone-mine 1)
(resource-found stone)
;(or (current-age >= castle-age)
; (building-type-count-total mining-camp < 4)
;)
;(cc-players-unit-type-count 0 stone-mine > 0)
(or (dropsite-min-distance stone >= BUILDING-DROP-DISTANCE)
(building-type-count-total mining-camp == 0)
)
(dropsite-min-distance stone < 255) ; To avoid infinite stone camps with stone exhausted
(can-build mining-camp)
(up-pending-objects c: mining-camp < 1)
=>
(build mining-camp)
;(set-goal G-BUILDING 0)
)
(defrule
;(strategic-number G-AGE-STATUS >= GV-ADVANCING-TO-FEUDAL)
(goal g-gold-mine 1)
;(or (unit-type-count MALE-GOLD-MINER > 0);Male gold miner
;(unit-type-count FEMALE-GOLD-MINER > 0)) ;Female gold miner
(resource-found gold)
;(or (current-age >= castle-age)
; (building-type-count-total mining-camp < 4)
;)
;(cc-players-unit-type-count 0 gold-mine > 0)
(or (dropsite-min-distance gold >= BUILDING-DROP-DISTANCE)
(building-type-count-total mining-camp == 0)
)
(dropsite-min-distance gold < 255) ; To avoid infinite gold camps with gold exhausted
(can-build mining-camp)
(up-pending-objects c: mining-camp < 1)
=>
(build mining-camp)
;(set-goal G-BUILDING 0)
)
; More camps if dead miner. Based in Echidna's rule for extra lumber camps
(defrule
(or (unit-type-count male-dead-miner > 0)
(unit-type-count female-dead-miner > 0)
)
(or (goal g-gold-mine 1)
(goal g-stone-mine 1)
)
(building-type-count-total mining-camp < 4)
(dropsite-min-distance gold < 255) ; To avoid infinite gold camps with gold exhausted
(can-build mining-camp)
(up-pending-objects c: mining-camp < 1)
=>
(build mining-camp)
;(set-goal G-BUILDING 0)
)
Other problem is my TSA. It doesn't work because my goal g-distance-to-enemy is -1 when no enemy building detected (which is normal) but zero when they are detected, which is obviously a mistake.
Code: Select all
(defrule
(players-building-count any-enemy > 0)
=>
(up-find-player enemy find-closest g-enemy-targeted)
(up-modify-sn sn-focus-player-number g:= g-enemy-targeted)
(up-get-target-fact player-distance 0 g-distance-to-enemy)
)