with core; package ai is ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ type action is ( none, walk, talk, find ); subtype string_16 is string (1 .. 16); type name_limit is mod 400; type clan_limit is mod 120; type data_limit is mod 256; -- CONCIOUSNESS -- UNCONCIOUSNESS -- COLLECTIVE UNCONCIOUSNESS -- -- somatic / psychic -- -- leave legacy -- -- outlaw - liberation -- -- magician - power -- -- hero - mastery -- pursue connection -- -- lover - intimacy -- -- jester - enjoyment -- -- everyman - belonging -- provide structure -- -- caregiver - service -- -- ruler - control -- -- creator - innovation -- explore spirituality -- -- innocent - safety -- -- sage - understanding -- -- explorer - freedom -- -- I -- Anima/Animus -- Shadow -- Persona -- -- Trickster ? type action_data is record base : data_limit; data : core.procedure_pointer; name : core.short_string; end record; type actor_data is record name : name_limit; clan : clan_limit; soul : data_limit; mind : data_limit; work : action; x : natural; y : natural; end record; ------------------------------------------------------------------------------------------ procedure action_none; procedure action_walk; procedure action_talk; procedure action_find; ------------------------------------------------------------------------------------------ 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_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 " ); actor_digit : constant natural := 8; actor_state : constant natural := 2; actor_count : constant natural := 4; envy : constant data_limit := 2#00000001#; gluttony : constant data_limit := 2#00000010#; greed : constant data_limit := 2#00000100#; lust : constant data_limit := 2#00001000#; pride : constant data_limit := 2#00010000#; sloth : constant data_limit := 2#00100000#; wrath : constant data_limit := 2#01000000#; thirst : constant data_limit := 2#00000001#; hunger : constant data_limit := 2#00000010#; fatigue : constant data_limit := 2#00000100#; solitude : constant data_limit := 2#00001000#; health : constant data_limit := 2#00010000#; joy : constant data_limit := 2#00100000#; boredom : constant data_limit := 2#01000000#; action_array : constant array (action) of action_data := ( (2#00000000#, action_none'access, "standing "), (2#00000000#, action_walk'access, "walking "), (2#00000000#, action_talk'access, "talking "), (2#00000000#, action_find'access, "finding ") ); actor : array (1 .. actor_count) of actor_data := ( (0, 0, 3, 3, talk, 0, 0), -- Ignore others => (0, 0, 1, 1, walk, 0, 0) ); active : natural := 1; ------------------------------------------------------------------------------------------ function actor_is_envious return boolean; -- wtf function actor_is_glutton return boolean; -- wtf function actor_is_greedy return boolean; -- wtf function actor_is_slutty return boolean; -- wtf function actor_is_proud return boolean; -- wtf function actor_is_lazy return boolean; -- wtf function actor_is_angry return boolean; -- wtf function actor_is_thirsty return boolean; function actor_is_hungry return boolean; function actor_is_tired return boolean; -- wtf function actor_is_lonely return boolean; function actor_is_healthy return boolean; function actor_is_happy return boolean; -- wtf function actor_is_bored return boolean; -- wtf procedure configure; procedure synchronize; procedure review; procedure view_actor_state (index : in integer); ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ end ai;