|
;DEFCONSTS
(defconst dark-age-dorfis 29)
(defconst dorfis-fuer-loom 12)
(defconst dorfis-fuer-lubercamp 12)
(defconst dorfis-fuer-mill 12)
(defconst dorfis-fuer-farm 15)
(defconst farms-dark-age 15)
(defconst advancing-feudal 1); goal
(defconst advancing-castle 2); goal
(defconst barrack-timer 10)
(defconst catle-age-dorfis 50)
(defconst train-military 3); goal
(defconst knights-for-attack 10)
(defconst attack-timer 11)
(defconst attack-stables 3)
(defconst ritter-fuer-sicherheit 17)
(defconst YES 1)
(defconst NO 0)
(defrule
(game-time > 3)
=>
(chat-local-to-self "++++++++ VERSION 0.3 +++++++++")
(chat-local-to-self "+ by kevituz +")
(chat-local-to-self "+++++++++++++++++++++++++++++")
(disable-self)
)
;STRATEGIC NUMBERS
(defrule
(true)
=>
(set-strategic-number sn-mill-max-distance 15)
(set-strategic-number sn-percent-enemy-sighted-response 100)
(set-strategic-number sn-enemy-sighted-response-distance 25)
(set-strategic-number sn-blot-exploration-map 0)
(set-strategic-number sn-number-explore-groups 1)
(set-strategic-number sn-maximum-explore-group-size 1)
(set-strategic-number sn-maximum-explore-group-size 1)
(set-strategic-number sn-maximum-gold-drop-distance 10)
(set-strategic-number sn-maximum-stone-drop-distance 10)
(set-strategic-number sn-maximum-hunt-drop-distance 8)
(set-strategic-number sn-food-dropsite-distance 15)
(set-strategic-number sn-task-ungrouped-soldiers 0)
(disable-self)
)
(defrule
(current-age == dark-age)
=>
(set-strategic-number sn-camp-max-distance 30)
)
(defrule
(true)
=>
(set-goal advancing-feudal NO)
(set-goal advancing-castle NO)
(set-goal train-military NO)
(log "TEST")
(disable-self)
)
;--------------------------------DARK AGE-----------------------------------
;.............Strategic Numbers
(defrule
(current-age == dark-age)
=>
(set-strategic-number sn-maximum-town-size 19)
(set-strategic-number sn-minimum-dropsite-buffer 1)
(set-strategic-number sn-minimum-boar-hunt-group-size 0)
(set-strategic-number sn-maximum-food-drop-distance 4)
(set-strategic-number sn-maximum-wood-drop-distance 10)
(set-strategic-number sn-gather-defense-units 50)
(set-strategic-number sn-retask-gather-amount 0)
(disable-self)
)
(defrule
(current-age == dark-age)
=>
(set-strategic-number sn-percent-civilian-explorers 0)
(set-strategic-number sn-percent-civilian-builders 25)
(set-strategic-number sn-percent-civilian-gatherers 75)
(set-strategic-number sn-food-gatherer-percentage 100)
(set-strategic-number sn-wood-gatherer-percentage 0)
(set-strategic-number sn-stone-gatherer-percentage 0)
(disable-self)
)
;.............Schafe
(defrule
(current-age == dark-age)
(unit-type-count-total 958 == 0); keine schafe
(game-time less-or-equal 25)
=>
(set-strategic-number sn-percent-civilian-explorers 40)
(set-strategic-number sn-percent-civilian-gatherers 60)
(set-strategic-number sn-percent-civilian-builders 0)
(chat-local-to-self "noch kein Essen gefunden...")
(disable-self)
)
(defrule
(current-age == dark-age)
(or
(unit-type-count-total 958 greater-than 1);schafe gefunden
(game-time greater-than 25)
)
=>
(set-strategic-number sn-percent-civilian-explorers 0)
(set-strategic-number sn-percent-civilian-gatherers 75)
(set-strategic-number sn-percent-civilian-builders 25)
(set-strategic-number sn-food-gatherer-percentage 100)
(set-strategic-number sn-wood-gatherer-percentage 0)
(set-strategic-number sn-stone-gatherer-percentage 0)
(chat-local-to-self "Genug Schafe gefunden! Oder keine Zeit mehr.")
(disable-self)
)
;..........Dorfis und Loom, Aufgabenverteilung
(defrule
(current-age == dark-age)
(unit-type-count-total villager < dorfis-fuer-loom)
(can-train villager)
=>
(train villager)
(chat-local-to-self "Dark Age Dorfi vor Loom")
)
(defrule
(unit-type-count-total villager >= dorfis-fuer-loom)
(can-research ri-loom)
=>
(research ri-loom)
(chat-local-to-self "Loom")
)
(defrule
(current-age == dark-age)
(research-completed ri-loom)
(unit-type-count-total villager < dark-age-dorfis)
(can-train villager )
=>
(train villager)
(chat-local-to-self "Dark Age Dorfi")
)
;+++verteilung+++
(defrule
(current-age == dark-age)
(unit-type-count-total villager == 11)
=>
(set-strategic-number sn-food-gatherer-percentage 90)
(set-strategic-number sn-wood-gatherer-percentage 10)
(set-strategic-number sn-stone-gatherer-percentage 0)
(chat-local-to-self "Mehr Holzhacker")
(disable-self)
)
(defrule
(current-age == dark-age)
(unit-type-count-total villager == 12)
=>
(set-strategic-number sn-food-gatherer-percentage 75)
(set-strategic-number sn-wood-gatherer-percentage 25)
(set-strategic-number sn-stone-gatherer-percentage 0)
(disable-self)
)
(defrule
(current-age == dark-age)
(unit-type-count-total villager == 13)
=>
(set-strategic-number sn-food-gatherer-percentage 69)
(set-strategic-number sn-wood-gatherer-percentage 31)
(set-strategic-number sn-stone-gatherer-percentage 0)
(disable-self)
)
(defrule
(current-age == dark-age)
(unit-type-count-total villager == 14)
=>
(set-strategic-number sn-food-gatherer-percentage 65)
(set-strategic-number sn-wood-gatherer-percentage 35)
(set-strategic-number sn-stone-gatherer-percentage 0)
(disable-self)
)
(defrule
(current-age == dark-age)
(unit-type-count-total villager == 15)
=>
(set-strategic-number sn-food-gatherer-percentage 60)
(set-strategic-number sn-wood-gatherer-percentage 40)
(set-strategic-number sn-stone-gatherer-percentage 0)
(disable-self)
)
(defrule
(current-age == dark-age)
(unit-type-count-total villager == 25)
=>
(set-strategic-number sn-food-gatherer-percentage 60)
(set-strategic-number sn-wood-gatherer-percentage 40)
(set-strategic-number sn-stone-gatherer-percentage 0)
(disable-self)
)
;.........................Camps, Mills, etc.
(defrule
(building-type-count-total lumber-camp less-than 1)
(unit-type-count-total villager greater-than dorfis-fuer-lubercamp)
(resource-found wood)
(can-build-with-escrow lumber-camp)
=>
(release-escrow wood)
(build lumber-camp)
(chat-local-to-self "Holzfällerlager, weil zerstört.")
)
(defrule
(current-age == dark-age)
(unit-type-count-total villager greater-or-equal dorfis-fuer-mill)
(can-build mill)
=>
(build mill)
(chat-local-to-self "Mühle")
(disable-self)
)
(defrule
(unit-type-count-total villager greater-or-equal dorfis-fuer-mill)
(can-build lumber-camp)
(dropsite-min-distance wood greater-than 5)
=>
(build lumber-camp)
(chat-local-to-self "neues Lumbercamp")
(disable-self)
)
(defrule
(current-age == dark-age)
(unit-type-count-total villager greater-or-equal dorfis-fuer-mill)
(can-build mill)
(dropsite-min-distance food greater-than 4)
=>
(build mill)
(chat-local-to-self "neue Mühle")
(disable-self)
)
(defrule
(current-age == dark-age)
(unit-type-count-total villager >= dorfis-fuer-lubercamp)
(resource-found wood)
(can-build lumber-camp)
=>
(set-strategic-number sn-camp-max-distance 10)
(chat-local-to-self " Erstes Holzfällerlager")
(build lumber-camp)
(disable-self)
)
(defrule
(goal advancing-feudal YES)
(can-build mining-camp)
(resource-found gold)
(dropsite-min-distance gold greater-than 4)
=>
(build mining-camp)
(chat-local-to-self "Goldcamp")
(set-strategic-number sn-food-gatherer-percentage 45)
(set-strategic-number sn-wood-gatherer-percentage 42)
(set-strategic-number sn-stone-gatherer-percentage 0)
(set-strategic-number sn-gold-gatherer-percentage 13)
)
(defrule
(goal advancing-feudal YES)
(timer-triggered barrack-timer)
(can-build barracks )
=>
(build barracks)
(chat-local-to-self "Kaserne")
(disable-timer barrack-timer)
)
;........................Farms
(defrule
(unit-type-count-total villager >= dorfis-fuer-farm)
=>
(set-strategic-number sn-maximum-food-drop-distance 15)
(chat-local-to-self "Increasing food drop distance")
(disable-self)
)
(defrule
(unit-type-count-total villager >= dorfis-fuer-farm)
(unit-type-count-total farm < farms-dark-age)
(can-build farm)
=>
(build farm)
(chat-local-to-self "Dark Age Farm")
)
;.......................Feudalzeit entwickeln
(defrule
(can-research feudal-age)
(unit-type-count-total villager >= dark-age-dorfis)
(building-type-count-total lumber-camp >= 1)
(building-type-count-total mill >= 1)
=>
(research feudal-age)
(chat-local-to-self "1 Feudalzeitalter")
(set-goal advancing-feudal YES)
(enable-timer barrack-timer 45)
(disable-self)
)
;------------------------------FEUDALZEIT-----------------------------------
;..............................techs
(defrule
(current-age == feudal-age)
(can-research ri-wheel-barrow)
=>
(research ri-wheel-barrow)
(chat-local-to-self "Wheel Barrow")
)
(defrule
(current-age == feudal-age)
(can-research ri-horse-collar)
=>
(research ri-horse-collar)
(chat-local-to-self "Horse Collar")
)
(defrule
(current-age == feudal-age)
(can-research ri-double-bit-axe)
=>
(research ri-double-bit-axe)
(chat-local-to-self "Double Bit Axe")
)
(defrule
(current-age == feudal-age)
(can-research ri-gold-mining)
=>
(research ri-gold-mining)
(chat-local-to-self "Gold Mining")
)
;......techs während weiterentwicklung
(defrule
(current-age == feudal-age)
(can-research ri-forging)
(goal advancing-castle YES)
=>
(research ri-forging)
(chat-local-to-self "Forging")
)
(defrule
(current-age == feudal-age)
(can-research ri-scale-mail)
(goal advancing-castle YES)
=>
(research ri-scale-mail)
(chat-local-to-self "Scale Mail")
)
(defrule
(current-age == feudal-age)
(can-research ri-scale-barding)
(goal advancing-castle YES)
=>
(research ri-scale-barding)
(chat-local-to-self "Scale Barding")
)
;..............Gebäude
(defrule
(current-age == feudal-age)
(can-build market)
(building-type-count-total market < 1)
=>
(build market)
(chat-local-to-self "Marktplatz")
)
(defrule
(current-age == feudal-age)
(can-build blacksmith)
(building-type-count-total blacksmith < 1)
=>
(build blacksmith)
(chat-local-to-self "Schmiede")
)
(defrule
(current-age == feudal-age)
(can-build stable)
(building-type-count-total stable < 2)
=>
(build stable)
(chat-local-to-self "Stall")
)
(defrule
(current-age == feudal-age)
(goal advancing-castle YES)
(can-build mining-camp)
(dropsite-min-distance stone greater-than 4)
(resource-found stone)
=>
(build mining-camp)
(chat-local-to-self "Steinlager")
(set-strategic-number sn-food-gatherer-percentage 42)
(set-strategic-number sn-wood-gatherer-percentage 42)
(set-strategic-number sn-stone-gatherer-percentage 3)
(set-strategic-number sn-gold-gatherer-percentage 13)
)
;.............Ritterzeit entwickeln
(defrule
(can-research castle-age)
=>
(research castle-age)
(set-goal advancing-castle YES)
(chat-local-to-self "1 Ritterzeit!")
(disable-timer attack-timer)
(enable-timer attack-timer 40)
)
;----------------------RITTERZEIT----------------------------
;.........Strategic Numbers
(defrule
(current-age == castle-age)
=>
(set-strategic-number sn-mill-max-distance 128)
(set-strategic-number sn-camp-max-distance 128)
)
;.........techs
(defrule
(can-research ri-hand-cart)
=>
(research ri-hand-cart)
(chat-local-to-self "Hand Cart")
)
(defrule
(can-research ri-bloodlines)
=>
(research ri-bloodlines)
(chat-local-to-self "Bloodlines")
)
(defrule
(can-research ri-husbandry)
=>
(research ri-husbandry)
(chat-local-to-self "Husbandry")
)
(defrule
(soldier-count >= ritter-fuer-sicherheit)
(can-research ri-chain-barding)
=>
(research ri-chain-barding)
(chat-local-to-self "Chain Barding")
)
(defrule
(soldier-count >= ritter-fuer-sicherheit)
(can-research ri-iron-casting)
=>
(research ri-iron-casting)
(chat-local-to-self "Iron Casting")
)
(defrule
(soldier-count >= ritter-fuer-sicherheit)
(building-type-count-total castle > 0)
(can-research ri-fletching)
=>
(research ri-fletching)
(chat-local-to-self "Fletching")
)
(defrule
(soldier-count >= ritter-fuer-sicherheit)
(building-type-count-total castle > 0)
(can-research ri-bodkin-arrow)
=>
(research ri-bodkin-arrow)
(chat-local-to-self "Bodkin Arrow")
)
(defrule
(soldier-count >= ritter-fuer-sicherheit)
(can-build university)
=>
(build university)
(chat-local-to-self "Universität")
(disable-self)
)
(defrule
(soldier-count >= ritter-fuer-sicherheit)
(building-type-count-total castle > 0)
(can-research ri-murder-holes)
=>
(research ri-murder-holes)
(chat-local-to-self "Murder Holes")
)
(defrule
(soldier-count >= ritter-fuer-sicherheit)
(building-type-count-total castle > 0)
(can-research ri-ballistics)
=>
(research ri-ballistics)
(chat-local-to-self "Ballistic")
)
;............ dorfis
(defrule
(current-age == castle-age)
(unit-type-count-total villager < catle-age-dorfis)
(can-train villager)
=>
(train villager)
(chat-local-to-self "Dorfis Castle Age")
)
;............ goals
(defrule
(research-completed ri-bloodlines)
(research-completed ri-husbandry)
(research-completed ri-forging)
(research-completed ri-scale-barding)
(research-completed ri-scale-mail)
=>
(set-goal train-military YES)
(chat-local-to-self "30 Militärproduktion beginnt!")
(set-strategic-number sn-food-gatherer-percentage 45)
(set-strategic-number sn-wood-gatherer-percentage 17)
(set-strategic-number sn-stone-gatherer-percentage 3)
(set-strategic-number sn-gold-gatherer-percentage 35)
(disable-self)
)
;...........farming
(defrule
(current-age >= castle-age)
(idle-farm-count < 1)
(can-build farm)
=>
(build farm)
(chat-local-to-self "Farm")
)
;...........militär
(defrule
(goal train-military YES)
(can-train knight-line)
=>
(train knight-line)
(chat-local-to-self "Ritter")
)
(defrule
(goal train-military YES)
(unit-type-count-total stable < attack-stables)
(can-build stable)
=>
(build stable)
(chat-local-to-self "Noch ein Stall")
)
(defrule
(can-build castle)
=>
(build castle)
(chat-local-to-self "Burg")
)
(defrule
(can-build castle)
(building-type-count-total castle > 0)
(soldier-count >= ritter-fuer-sicherheit)
=>
(build-forward castle)
(chat-local-to-self "Forward Castle")
)
;.........angriff
(defrule
(soldier-count >= knights-for-attack)
=>
(set-strategic-number sn-percent-attack-soldiers 100)
(attack-now)
(disable-timer attack-timer)
(enable-timer attack-timer 50)
)
;-------------------HANDEL---------------
(defrule
(current-age greater-or-equal castle-age)
(food-amount greater-or-equal 1000)
(gold-amount less-or-equal 500)
(can-sell-commodity food)
=>
(sell-commodity food)
(chat-local-to-self "5 Verkaufe Essen!")
)
(defrule
(current-age greater-or-equal castle-age)
(food-amount greater-or-equal 2000)
(can-sell-commodity food)
=>
(sell-commodity food)
(chat-local-to-self "5 Verkaufe Essen!")
)
(defrule
(current-age greater-or-equal castle-age)
(wood-amount greater-or-equal 500)
(gold-amount less-or-equal 500)
(can-sell-commodity wood)
=>
(sell-commodity wood)
(chat-local-to-self "5 Verkaufe Holz!")
)
(defrule
(current-age greater-or-equal castle-age)
(wood-amount greater-or-equal 2000)
(can-sell-commodity wood)
=>
(sell-commodity wood)
(chat-local-to-self "5 Verkaufe Holz!")
)
(defrule
(current-age greater-or-equal castle-age)
(gold-amount greater-or-equal 500)
(wood-amount less-or-equal 50)
(can-buy-commodity wood)
=>
(buy-commodity wood)
(chat-local-to-self "4 Kaufe Holz!")
)
(defrule
(current-age greater-or-equal castle-age)
(gold-amount greater-or-equal 500)
(food-amount less-or-equal 150)
(can-buy-commodity food)
=>
(buy-commodity food)
(chat-local-to-self "3 Kaufe Essen!")
)
;DEBUG
(defrule
(taunt-detected 1 2)
=>
(chat-local-to-self "TEST")
(enable-timer barrack-timer 45)
(set-goal advancing-castle YES)
(acknowledge-taunt 1 2)
)
(defrule
(taunt-detected 1 3)
=>
(attack-now)
(acknowledge-taunt 1 3 )
)
|