with core; package ai is ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ type action is ( none, walk, talk, find ); type mind_limit is ( thirst, hunger, fatigue, solitude, ); subtype string_16 is string (1 .. 16); envy : constant natural := 2#00000001#; gluttony : constant natural := 2#00000010#; greed : constant natural := 2#00000100#; lust : constant natural := 2#00001000#; pride : constant natural := 2#00010000#; sloth : constant natural := 2#00100000#; wrath : constant natural := 2#01000000#; thirst : constant natural := 2#00000001#; hunger : constant natural := 2#00000010#; fatigue : constant natural := 2#00000100#; solitude : constant natural := 2#00001000#; health : constant natural := 2#00010000#; mana : constant natural := 2#00100000#; boredom : constant natural := 2#01000000#; agent_digit : constant natural := 4; agent_state : constant natural := 4; agent_count : constant natural := 4; type name_limit is mod 400; type clan_limit is mod 120; type data_limit is mod agent_state ** agent_digit - 1; type action_data is record base : data_limit; data : core.procedure_pointer; name : core.short_string; end record; type agent_data is record name : name_limit; clan : clan_limit; data : data_limit; soul : soul_limit; mind : mind_limit; work : action; x : natural; y : natural; end record; ------------------------------------------------------------------------------------------ procedure action_none; procedure action_walk; procedure action_talk; procedure action_find; action_array : constant array (action) of action_data := ( (4#3000#, action_none'access, "standing "), (4#3000#, action_walk'access, "walking "), (4#3000#, action_talk'access, "talking "), (4#3000#, action_find'access, "finding ") ); male_name_array : constant array (name_limit) of string_16 := ( "Unumis ", "Aardappel ", "Aaron ", "Abel ", "Abgar ", "Abiathar ", "Abijah ", "Abraham ", "Abram ", "Absolom ", "Adam ", "Adonijah ", "Ael ", "Aghasi ", "Aidan ", "Ajnak ", "Aknunbi ", "Alexan ", "Alishan ", "Alvedos ", "Aman ", "Amaras ", "Amariah ", "Amoz ", "Amozthel ", "Amurin ", "Amuu ", "Anairiah ", "Anak ", "Andranik ", "Andro ", "Anushavan ", "Ara ", "Arakel ", "Aram ", "Aramagd ", "Arayik ", "Ardelico ", "Armen ", "Arsen ", "Artem ", "Arthur ", "Asa ", "Asaph ", "Asher ", "Asnio ", "Aspet ", "Atrushan ", "Ava ", "Avag ", "Aygek ", "Azariah ", "Azat ", "Aznavur ", "Babken ", "Baelos ", "Barak ", "Barsegh ", "Baruch ", "Barunak ", "Bashkhi ", "Benaiah ", "Bildad ", "Cain ", "Calah ", "Caleb ", "Camon ", "Chenon ", "Dan ", "Daniel ", "David ", "Davtak ", "Delayahu ", "Derenik ", "Dnei ", "Dovin ", "Drastamat ", "Eahenos ", "Ebenezer ", "Eihrul ", "Elah ", "Eleazar ", "Eli ", "Eliah ", "Elihu ", "Elijah ", "Eliphaz ", "Elisha ", "Elkanah ", "Elnathan ", "Emmanuel ", "Enoch ", "Ephraim ", "Esau ", "Ethan ", "Ezekiel ", "Ezubesh ", "Faegal ", "Fairhim ", "Famnah ", "Faneon ", "Farathen ", "Feanel ", "Gabriel ", "Gale ", "Galust ", "Gamar ", "Garegin ", "Garnik ", "Geanos ", "Gegham ", "Gera ", "Gerena ", "Gershon ", "Gevorg ", "Gharip ", "Ghazaros ", "Ghevond ", "Ghukas ", "Gideon ", "Gind ", "Glak ", "Gnel ", "Gor ", "Grigor ", "Haan ", "Hacob ", "Haeden ", "Haegor ", "Haefel ", "Haffthel ", "Haffroht ", "Haggai ", "Haman ", "Hamazasp ", "Hamlik ", "Hayastan ", "Haydug ", "Hayk ", "Haykashen ", "Haykazn ", "Hazdan ", "Helden ", "Helg ", "Helnor ", "Hetum ", "Heviathan ", "Hosea ", "Hovakim ", "Hovik ", "Hovnel ", "Hovsep ", "Hrand ", "Hrayr ", "Hushai ", "Ira ", "Iradon ", "Ireanok ", "Irenadal ", "Irinei ", "Irodes ", "Isaac ", "Isaiah ", "Ishmael ", "Ishnil ", "Jacob ", "Jair ", "Janes ", "Japheth ", "Jason ", "Javan ", "Jeremiah ", "Jesiah ", "Jethera ", "Joab ", "Joash ", "Job ", "Jogunel ", "Johuna ", "Jonah ", "Jonathan ", "Jordan ", "Joseph ", "Joshua ", "Judas ", "Kaggen ", "Kagion ", "Kain ", "Kamo ", "Karapet ", "Karen ", "Karin ", "Kasas ", "Kastag ", "Kattenion ", "Kaytsak ", "Kearni ", "Kemuel ", "Kenan ", "Kenaz ", "Kerioth ", "Khacheres ", "Khad ", "Khajak ", "Khoren ", "Khosrov ", "Konstandin ", "Koryun ", "Layin ", "Lazarus ", "Leishin ", "Lemuel ", "Lenoch ", "Lenumin ", "Leon ", "Lepranik ", "Lernik ", "Levi ", "Levon ", "Liparit ", "Loris ", "Lot ", "Lucian ", "Lynth ", "Makar ", "Manasseh ", "Margar ", "Martik ", "Mashtots ", "Matthew ", "Matthias ", "Mekhak ", "Melkon ", "Mesrop ", "Michael ", "Mihran ", "Milrad ", "Minas ", "Mkhitar ", "Movses ", "Mushegh ", "Myne ", "Nadab ", "Nahum ", "Naphtali ", "Nar ", "Narek ", "Narinth ", "Nathan ", "Nathanael ", "Natten ", "Naumen ", "Navasard ", "Nazaret ", "Nehemiah ", "Nekoda ", "Nekudin ", "Neldenah ", "Nelh ", "Nepria ", "Nerses ", "Nev ", "Neven ", "Nevosh ", "Nikoghos ", "Nimuo ", "Noah ", "Norayr ", "Norik ", "Obadiah ", "Obed ", "Ogsen ", "Olaph ", "Omar ", "Onnip ", "Ornhul ", "Oshakan ", "Paghtazar ", "Oshin ", "Othniel ", "Pargev ", "Paruyr ", "Paul ", "Peto ", "Phinehas ", "Raamah ", "Renael ", "Reuben ", "Rhaman ", "Roderich ", "Rott ", "Sago ", "Sahak ", "Samson ", "Samuel ", "Sanasar ", "Sargis ", "Saro ", "Sasun ", "Saul ", "Saurkano ", "Sava ", "Savashin ", "Sedah ", "Sedrak ", "Seth ", "Sevak ", "Shaden ", "Shadrach ", "Shahan ", "Shant ", "Shara ", "Shem ", "Shnorhali ", "Simeon ", "Sion ", "Sirakan ", "Slak ", "Slaven ", "Slein ", "Solomon ", "Sora ", "Sukias ", "Tadeos ", "Tagavor ", "Tamnuhl ", "Taron ", "Tatev ", "Teneshel ", "Tenian ", "Thaddeus ", "Thomas ", "Tiamath ", "Tirayr ", "Tirazan ", "Tirit ", "Tobiah ", "Tobias ", "Tonapet ", "Tork ", "Tornik ", "Trdat ", "Tukhayr ", "Ulukai ", "Uldrel ", "Umenok ", "Umiyen ", "Unakan ", "Unearo ", "Uri ", "Uria ", "Uriah ", "Uriel ", "Uzziah ", "Vagharshak ", "Vahagn ", "Vahan ", "Vahe ", "Vahram ", "Vakhtang ", "Van ", "Vanakan ", "Vanand ", "Varag ", "Vardan ", "Vardges ", "Vareos ", "Vash ", "Vazgen ", "Vazrik ", "Veleon ", "Veleshin ", "Vigen ", "Vordi ", "Vorotan ", "Voskan ", "Vostan ", "Vrej ", "Yaan ", "Yaruga ", "Yashal ", "Ydelen ", "Yeghia ", "Yeghivard ", "Yenovk ", "Yeprem ", "Yeremia ", "Yerjanik ", "Yeznik ", "Yezr ", "Yiin ", "Zacchaeus ", "Zachariah ", "Zahn ", "Zareh ", "Zarmayr ", "Zaven ", "Zebadiah ", "Zedekiah ", "Zinthel " ); female_name_array : constant array (name_limit) of string_16 := ( "Haen ", "Abigail ", "Abishai ", "Adah ", "Adina ", "Adriel ", "Aednat ", "Aelena ", "Aghavni ", "Aghvor ", "Ai ", "Ailish ", "Alik ", "Alin ", "Amanor ", "Amanthia ", "Amaroch ", "Amenora ", "Anahit ", "Anea ", "Anelia ", "Angela ", "Angine ", "Ani ", "Anka ", "Antaram ", "Aoma ", "Aorire ", "Araksi ", "Araz ", "Arevik ", "Ariel ", "Arman ", "Armenuhi ", "Arpi ", "Arta ", "Arya ", "Atarah ", "Ayovina ", "Azatuhi ", "Azganush ", "Azniv ", "Bari ", "Bathsheba ", "Bavakan ", "Bekah ", "Beleni ", "Bersare ", "Bethel ", "Beulah ", "Byurakan ", "Calah ", "Carmel ", "Cenlea ", "Chloe ", "Clement ", "Cynthia ", "Dalar ", "Damaris ", "Daniela ", "Dapni ", "Daruhi ", "Dayana ", "Deborah ", "Delilah ", "Devana ", "Dilijan ", "Dosa ", "Ea ", "Eamara ", "Eano ", "Eden ", "Edna ", "Elint ", "Elisha ", "Eliza ", "Elizabeth ", "Elena ", "Emma ", "Erebuni ", "Esther ", "Eunice ", "Eva ", "Eve ", "Evelyn ", "Freiya ", "Gadelin ", "Garik ", "Gayane ", "Geghani ", "Gethetsik ", "Hadassah ", "Hagar ", "Hannah ", "Hasmik ", "Heghine ", "Heinon ", "Hel ", "Hermine ", "Hia ", "Hian ", "Hieshen ", "Hiina ", "Hiva ", "Hrut ", "Huldah ", "Ibel ", "Idaa ", "Idena ", "Ignath ", "Igni ", "Inatani ", "Inaa ", "Inastuni ", "Iskuhi ", "Iskuk ", "Itiona ", "Jaab ", "Jael ", "Java ", "Javshelin ", "Joanna ", "Jodi ", "Jordan ", "Jovana ", "Judeash ", "Judith ", "Juna ", "Junith ", "Juno ", "Kabvenia ", "Kac ", "Kadith ", "Kadeash ", "Kaghruhi ", "Kaiga ", "Kaigashel ", "Kaliya ", "Kami ", "Karen ", "Karine ", "Karun ", "Kasadya ", "Katarina ", "Katerine ", "Katelia ", "Kathleen ", "Kayona ", "Kerath ", "Khatun ", "Knar ", "Kora ", "Kristine ", "Labial ", "Lada ", "Lakera ", "Lala ", "Lalik ", "Lasia ", "Lea ", "Leah ", "Lekshea ", "Lelkja ", "Lena ", "Lerinael ", "Levontin ", "Lila ", "Lili ", "Lilith ", "Loashin ", "Lois ", "Lorik ", "Luna ", "Lusatsin ", "Luseres ", "Lusine ", "Lusnak ", "Lusvard ", "Lydia ", "Lyrana ", "Mane ", "Mara ", "Marah ", "Margarit ", "Mari ", "Maria ", "Mariam ", "Marine ", "Marta ", "Martha ", "Mary ", "Matlen ", "Meghedi ", "Meline ", "Menik ", "Merina ", "Michal ", "Mina ", "Miriam ", "Mishael ", "Mod ", "Molhui ", "Morava ", "Morghana ", "Mothai ", "Myra ", "Nada ", "Nain ", "Naira ", "Nane ", "Naomi ", "Narduhi ", "Narine ", "Nazani ", "Nazeli ", "Nazuk ", "Nektar ", "Nena ", "Neriah ", "Nevena ", "Nina ", "Nodelia ", "Nonein ", "Nora ", "Norinai ", "Nova ", "Nouthi ", "Nuritsa ", "Nushik ", "Obea ", "Ocaere ", "Oda ", "Odnesha ", "Odlish ", "Olia ", "Omniya ", "Oneraa ", "Ophrah ", "Orpah ", "Ovha ", "Rachel ", "Rebeshi ", "Rebekah ", "Rei ", "Reitheli ", "Rera ", "Rershia ", "Rev ", "Revesha ", "Rhei ", "Rhoda ", "Rita ", "Rorail ", "Rubel ", "Runa ", "Rupina ", "Ruth ", "Ruzan ", "Sabbash ", "Sade ", "Sadyush ", "Sai ", "Saigon ", "Saisha ", "Sanahin ", "Sanan ", "Sara ", "Sarah ", "Sarai ", "Sarine ", "Satenik ", "Seda ", "Seki ", "Selena ", "Seniya ", "Senkaya ", "Ser ", "Sevan ", "Shahanik ", "Shake ", "Shamam ", "Sharin ", "Sharmagh ", "Sharon ", "Shev ", "Shina ", "Shoghakat ", "Shoghik ", "Shonah ", "Shushan ", "Shusho ", "Silva ", "Siranush ", "Siruhi ", "Sokhak ", "Sonia ", "Sose ", "Spera ", "Sui ", "Suisei ", "Susannah ", "Tabeth ", "Tad ", "Tadeonia ", "Talin ", "Talita ", "Talitha ", "Tama ", "Tamara ", "Tamashi ", "Tamnuh ", "Tanyuha ", "Tanyushia ", "Tankagin ", "Taorin ", "Teana ", "Tenchali ", "Terah ", "Tereza ", "Tesil ", "Tharin ", "Thabetal ", "Thea ", "Theresha ", "Tiruhi ", "Tirzah ", "Titer ", "Tiubahni ", "Uahara ", "Uani ", "Ubeana ", "Udurin ", "Udeano ", "Uinhel ", "Uknia ", "Ulna ", "Uniya ", "Unoshea ", "Uriel ", "Urna ", "Usha ", "Uzenia ", "Vabash ", "Vadeni ", "Valantin ", "Vane ", "Vanuhi ", "Vaoshi ", "Vardanush ", "Vardeni ", "Varderes ", "Vehuhi ", "Veneanna ", "Venlia ", "Vera ", "Verjin ", "Voguhi ", "Voskeher ", "Vosketel ", "Voski ", "Xana ", "Xare ", "Xashana ", "Xera ", "Xereanai ", "Xev ", "Xila ", "Xunshi ", "Yb ", "Ydama ", "Yebeshia ", "Yeda ", "Yeghisabet ", "Yeghnik ", "Yeranik ", "Yeranuhi ", "Yeraz ", "Yerjanik ", "Yeva ", "Yevgine ", "Yldha ", "Yra ", "Yves ", "Zanath ", "Zanazan ", "Zapel ", "Zarah ", "Zardar ", "Zarik ", "Zaruhi ", "Zebb ", "Zemira ", "Zepyur ", "Zilpah ", "Zina ", "Zipporah ", "Zod ", "Zophea ", "Zora ", "Zuanai " ); clan_name_array : constant array (clan_limit) of string_16 := ( "Aldheln ", "Abedol ", "Adonis ", "Amelin ", "Ankonih ", "Aoshin ", "Ariel ", "Arma ", "Arthel ", "Ashal ", "Astrid ", "Avdotiya ", "Barkur ", "Bavakiel ", "Bednudan ", "Calarian ", "Chleayan ", "Cinnkhan ", "Dairin ", "Daok ", "Daudroht ", "Deakan ", "Degerynn ", "Demenokt ", "Diihakin ", "Dmitriya ", "Dnakad ", "Dnen ", "Duviel ", "Duychand ", "Eahara ", "Echinon ", "Eighelen ", "Eikyan ", "Enrichnel ", "Erenth ", "Farathenian ", "Fedonakash ", "Fendal ", "Frostgen ", "Gaelin ", "Garean ", "Greyvor ", "Gvozden ", "Hadaelio ", "Haeril ", "Haetten ", "Hein ", "Hnael ", "Hnan ", "Iakara ", "Idho ", "Imayno ", "Inroth ", "Ipolith ", "Jablan ", "Kalev ", "Kanaen ", "Karamin ", "Karthal ", "Kasidh ", "Kathal ", "Keonrynn ", "Koen ", "Korda ", "Koveln ", "Ledo ", "Lenhan ", "Levanon ", "Liyan ", "Manailo ", "Megalokhan ", "Michaelin ", "Mnerea ", "Naankiel ", "Narren ", "Naruhel ", "Nerarynn ", "Obstin ", "Odrahast ", "Oighast ", "Okad ", "Onaadhan ", "Oudhin ", "Paunkiel ", "Pavelin ", "Rashin ", "Ravinon ", "Reinan ", "Reives ", "Sauerden ", "Shanan ", "Shaymal ", "Sivinon ", "Sneath ", "Sonithel ", "Steinen ", "Svidrigail ", "Tamokhan ", "Tedeya ", "Temian ", "Tessianik ", "Tettnoch ", "Therea ", "Uathanel ", "Uberichel ", "Udun ", "Umenoran ", "Uphria ", "Vanashel ", "Varya ", "Velarynn ", "Velian ", "Verlon ", "Volash ", "Yaad ", "Yarren ", "Zeanash ", "Ziinyakh ", "Zuno " ); ------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------ procedure configure; procedure synchronize; ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ end ai;