type zerg_unit =
| unit_drone
| unit_queen
| unit_2zergling
| unit_baneling
| unit_roach
| unit_hydralisk
| unit_infestor
| unit_ultralisk
| unit_nydusWorm
| unit_overlord
| unit_overseer
| unit_mutalisk
| unit_corruptor
| unit_broodlord
| building_hatchery
| building_spinecrawler
| building_sporecrawler
| building_extractor
| building_spawningpool
| building_evolutionchamber
| building_roachwarren
| building_banelingnest
| building_lair
| building_hydraliskden
| building_infestationpit
| building_spire
| building_nydusnetwork
| building_hive
| building_greaterspire
| building_ultraliskcavern
| upgrade_meleeattacks1
| upgrade_meleeattacks2
| upgrade_meleeattacks3
| upgrade_missileattacks1
| upgrade_missileattacks2
| upgrade_missileattacks3
| upgrade_flyerattacks1
| upgrade_flyerattacks2
| upgrade_flyerattacks3
| upgrade_groundcarapace1
| upgrade_groundcarapace2
| upgrade_groundcarapace3
| upgrade_flyercarapace1
| upgrade_flyercarapace2
| upgrade_flyercarapace3
| upgrade_chitinousplating
| upgrade_centrifugalhooks
| upgrade_glialreconstitution
| upgrade_metabolicboost
| upgrade_pneumatizedcarapace
| upgrade_groovedspines
| upgrade_burrow
| upgrade_neuralparasite
| upgrade_pathogenglands
| upgrade_adrenalglands
| upgrade_tunnelingclaws
| upgrade_ventralsacs
;;
let zerg_unit_requirements = function
| unit_drone -> [ ]
| unit_queen -> [ building_spawningpool ]
| unit_2zergling -> [ building_spawningpool ]
| unit_baneling -> [ building_banelingnest ] (* plus : avoir des zerglings *)
| unit_roach -> [ building_roachwarren ]
| unit_hydralisk -> [ building_hydraliskden ]
| unit_infestor -> [ building_infestationpit ]
| unit_ultralisk -> [ building_ultraliskcavern ]
| unit_nydusWorm -> [ building_nydusnetwork ]
| unit_overlord -> [ ]
| unit_overseer -> [ building_lair ]
| unit_mutalisk -> [ building_spire ]
| unit_corruptor -> [ building_spire ]
| unit_broodlord -> [ building_greaterspire ] (* plus : avoir des corrupteurs *)
| building_hatchery -> [ ]
| building_spinecrawler -> [ building_spawningpool ]
| building_sporecrawler -> [ building_evolutionchamber ]
| building_extractor -> [ ]
| building_spawningpool -> [ building_hatchery ]
| building_evolutionchamber -> [ building_hatchery ]
| building_roachwarren -> [ building_spawningpool ]
| building_banelingnest -> [ building_spawningpool ]
| building_lair -> [ building_hatchery ; building_spawningpool ]
| building_hydraliskden -> [ building_lair ]
| building_infestationpit -> [ building_lair ]
| building_spire -> [ building_lair ]
| building_nydusnetwork -> [ building_lair ]
| building_hive -> [ building_lair ; building_infestationpit ]
| building_greaterspire -> [ building_hive ; building_spire ]
| building_ultraliskcavern -> [ building_hive ]
| upgrade_meleeattacks1 -> [ building_evolutionchamber ]
| upgrade_meleeattacks2 -> [ (*building_evolutionchamber ;*) building_lair ; upgrade_meleeattacks1 ]
| upgrade_meleeattacks3 -> [ (*building_evolutionchamber ;*) building_hive ; upgrade_meleeattacks2 ]
| upgrade_missileattacks1 -> [ building_evolutionchamber ]
| upgrade_missileattacks2 -> [ (*building_evolutionchamber ;*) building_lair ; upgrade_missileattacks1 ]
| upgrade_missileattacks3 -> [ (*building_evolutionchamber ;*) building_hive ; upgrade_missileattacks2 ]
| upgrade_flyerattacks1 -> [ building_spire ]
| upgrade_flyerattacks2 -> [ (*building_spire ; building_lair ;*) upgrade_flyerattacks1 ]
| upgrade_flyerattacks3 -> [ (*building_spire ;*) building_hive ; upgrade_flyerattacks2 ]
| upgrade_groundcarapace1 -> [ building_evolutionchamber ]
| upgrade_groundcarapace2 -> [ (*building_evolutionchamber ;*) building_lair ; upgrade_groundcarapace1 ]
| upgrade_groundcarapace3 -> [ (*building_evolutionchamber ;*) building_hive ; upgrade_groundcarapace2 ]
| upgrade_flyercarapace1 -> [ building_spire ]
| upgrade_flyercarapace2 -> [ (*building_spire ; building_lair ;*) upgrade_flyercarapace1 ]
| upgrade_flyercarapace3 -> [ (*building_spire ;*) building_hive ; upgrade_flyercarapace2 ]
| upgrade_chitinousplating -> [ building_ultraliskcavern ]
| upgrade_centrifugalhooks -> [ building_banelingnest ; building_lair ]
| upgrade_glialreconstitution -> [ building_roachwarren ; building_lair ]
| upgrade_metabolicboost -> [ building_spawningpool ]
| upgrade_pneumatizedcarapace -> [ building_lair ]
| upgrade_groovedspines -> [ building_hydraliskden ]
| upgrade_burrow -> [ building_lair ]
| upgrade_neuralparasite -> [ building_infestationpit ]
| upgrade_pathogenglands -> [ building_infestationpit ]
| upgrade_adrenalglands -> [ building_spawningpool ; building_hive ]
| upgrade_tunnelingclaws -> [ building_roachwarren ; building_lair ]
| upgrade_ventralsacs -> [ building_lair ]
;;
let zerg_unit_cost = function
(* minerai, gaz, temps, supply, larves, drones *)
| unit_drone -> 50, 0, 17, -1, 1,-1
| unit_queen -> 150, 0, 50, -2, 0, 0
| unit_2zergling -> 50, 0, 24, -1, 1, 0
| unit_baneling -> 25, 25, 20, 0, 0, 0
| unit_roach -> 75, 25, 27, -2, 1, 0
| unit_hydralisk -> 100, 50, 33, -2, 1, 0
| unit_infestor -> 100, 150, 50, -2, 1, 0
| unit_ultralisk -> 300, 300, 70, -6, 1, 0
| unit_nydusWorm -> 100, 100, 20, 0, 0, 0
| unit_overlord -> 100, 0, 25, 8, 1, 0
| unit_overseer -> 50, 100, 17, 0, 0, 0
| unit_mutalisk -> 100, 100, 33, -2, 1, 0
| unit_corruptor -> 150, 100, 40, -2, 1, 0
| unit_broodlord -> 150, 150, 34, -2, 0, 0
| building_hatchery -> 300, 0, 100, 2, 0, 1
| building_spinecrawler -> 100, 0, 50, 0, 0, 1
| building_sporecrawler -> 75, 0, 30, 0, 0, 1
| building_extractor -> 25, 0, 30, 0, 0, 1
| building_spawningpool -> 200, 0, 65, 0, 0, 1
| building_evolutionchamber -> 75, 0, 35, 0, 0, 1
| building_roachwarren -> 150, 0, 55, 0, 0, 1
| building_banelingnest -> 100, 50, 60, 0, 0, 1
| building_lair -> 150, 100, 80, 0, 0, 0
| building_hydraliskden -> 100, 100, 40, 0, 0, 1
| building_infestationpit -> 100, 100, 50, 0, 0, 1
| building_spire -> 200, 200, 100, 0, 0, 1
| building_nydusnetwork -> 150, 200, 50, 0, 0, 1
| building_hive -> 200, 150, 100, 0, 0, 0
| building_greaterspire -> 100, 150, 100, 0, 0, 0
| building_ultraliskcavern -> 150, 200, 65, 0, 0, 1
| upgrade_meleeattacks1 -> 100, 100, 160, 0, 0, 0
| upgrade_meleeattacks2 -> 150, 150, 190, 0, 0, 0
| upgrade_meleeattacks3 -> 200, 200, 220, 0, 0, 0
| upgrade_missileattacks1 -> 100, 100, 160, 0, 0, 0
| upgrade_missileattacks2 -> 150, 150, 190, 0, 0, 0
| upgrade_missileattacks3 -> 200, 200, 220, 0, 0, 0
| upgrade_flyerattacks1 -> 100, 100, 160, 0, 0, 0
| upgrade_flyerattacks2 -> 175, 100, 190, 0, 0, 0
| upgrade_flyerattacks3 -> 250, 250, 220, 0, 0, 0
| upgrade_groundcarapace1 -> 150, 150, 160, 0, 0, 0
| upgrade_groundcarapace2 -> 225, 225, 190, 0, 0, 0
| upgrade_groundcarapace3 -> 300, 300, 220, 0, 0, 0
| upgrade_flyercarapace1 -> 150, 150, 160, 0, 0, 0
| upgrade_flyercarapace2 -> 225, 225, 190, 0, 0, 0
| upgrade_flyercarapace3 -> 300, 300, 220, 0, 0, 0
| upgrade_chitinousplating -> 150, 150, 110, 0, 0, 0
| upgrade_centrifugalhooks -> 150, 150, 110, 0, 0, 0
| upgrade_glialreconstitution -> 100, 100, 110, 0, 0, 0
| upgrade_metabolicboost -> 100, 100, 110, 0, 0, 0
| upgrade_pneumatizedcarapace -> 100, 100, 60, 0, 0, 0
| upgrade_groovedspines -> 150, 150, 80, 0, 0, 0
| upgrade_burrow -> 100, 100, 100, 0, 0, 0
| upgrade_neuralparasite -> 150, 150, 110, 0, 0, 0
| upgrade_pathogenglands -> 150, 150, 80, 0, 0, 0
| upgrade_adrenalglands -> 200, 200, 130, 0, 0, 0
| upgrade_tunnelingclaws -> 150, 150, 110, 0, 0, 0
| upgrade_ventralsacs -> 200, 200, 130, 0, 0, 0
;;
Les droits inaliénables du troll :
1) le droit d'avoir raison
2) le droit d'être péremptoire
3) le droit de ne pas lire
4) le droit de ne pas répondre
5) le droit d'être de mauvaise foi
6) Autant pour moi / Faignant / Vivent Tintin et Milou