@@ -2,7 +2,7 @@ | |||
-- | |||
-- GNU General Public Licence (version 3 or later) | |||
with core, ui, ai; | |||
with core, ui; | |||
package body ai is | |||
@@ -30,78 +30,6 @@ package body ai is | |||
procedure action_talk is begin null; end action_talk; | |||
procedure action_find is begin null; end action_find; | |||
------------------------------------------------------------------------------------------ | |||
procedure serialize (i : in natural) is | |||
begin | |||
--~if actor_is_bored (i) and actor_is_healthy (i) and not actor_is_hungry (i) then | |||
null; | |||
--~end if; | |||
end serialize; | |||
------------------------------------------------------------------------------------------ | |||
procedure configure is | |||
begin | |||
core.echo (core.failure, "No AI yet folk!"); | |||
end configure; | |||
------------------------------------------------------------------------------------------ | |||
procedure synchronize is | |||
begin | |||
null; | |||
end synchronize; | |||
------------------------------------------------------------------------------------------ | |||
procedure review is | |||
--~width : integer := 600; | |||
--~height : integer := 300; | |||
--~offset : integer := 32; | |||
--~x : integer := (core.window_width - width) / 2; | |||
--~y : integer := (core.window_height - height) / 2; | |||
begin | |||
--~ui.draw_tiny_menu (x, y, width, height); | |||
--~for index in 1 .. actor_count loop | |||
--~core.write ("Bot" & index'image, x + offset + 0, y * index + offset, ui.glyphs (ui.active)); | |||
--~core.write ("T =" & actor_is_thirsty (index)'image, x + offset + 120, y * index + offset, ui.glyphs (ui.active)); | |||
--~core.write ("H =" & actor_is_hungry (index)'image, x + offset + 240, y * index + offset, ui.glyphs (ui.active)); | |||
--~end loop; | |||
null; | |||
end review; | |||
------------------------------------------------------------------------------------------ | |||
procedure view_actor_state (index : in integer) is | |||
width : integer := 320; | |||
height : integer := 544; | |||
offset : integer := 32; | |||
x : integer := (core.window_width - width) / 2; | |||
y : integer := (core.window_height - height) / 2; | |||
begin | |||
ui.draw_tiny_menu (x, y, width, height); | |||
-- | |||
active := index; | |||
-- | |||
ui.write (male_name_array (actor (index).name), x + offset, y + offset); | |||
-- | |||
ui.write ("Envious = " & actor_is_envious'image, x + offset, y + offset + 32); | |||
ui.write ("Glutton = " & actor_is_glutton'image, x + offset, y + offset + 64); | |||
ui.write ("Greedy = " & actor_is_greedy'image, x + offset, y + offset + 96); | |||
ui.write ("Slutty = " & actor_is_slutty'image, x + offset, y + offset + 128); | |||
ui.write ("Proud = " & actor_is_proud'image, x + offset, y + offset + 160); | |||
ui.write ("Lazy = " & actor_is_lazy'image, x + offset, y + offset + 192); | |||
ui.write ("Angry = " & actor_is_angry'image, x + offset, y + offset + 224); | |||
ui.write ("Thirsty = " & actor_is_thirsty'image, x + offset, y + offset + 256); | |||
ui.write ("Hungry = " & actor_is_hungry'image, x + offset, y + offset + 288); | |||
ui.write ("Tired = " & actor_is_tired'image, x + offset, y + offset + 320); | |||
ui.write ("Lonely = " & actor_is_lonely'image, x + offset, y + offset + 352); | |||
ui.write ("Healthy = " & actor_is_healthy'image, x + offset, y + offset + 384); | |||
ui.write ("Happy = " & actor_is_happy'image, x + offset, y + offset + 416); | |||
ui.write ("Bored = " & actor_is_bored'image, x + offset, y + offset + 448); | |||
end view_actor_state; | |||
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | |||
end ai; |
@@ -12,42 +12,6 @@ package ai 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.pointer; | |||
@@ -71,132 +35,6 @@ package ai is | |||
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; | |||
@@ -248,12 +86,6 @@ package ai is | |||
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; |
@@ -2,7 +2,7 @@ | |||
-- | |||
-- GNU General Public Licence (version 3 or later) | |||
with core, ui, attribute; | |||
with core, ui; | |||
package body attribute is | |||
@@ -2,7 +2,7 @@ | |||
-- | |||
-- GNU General Public Licence (version 3 or later) | |||
with core, ui, faction, chad; | |||
with core, ui, faction; | |||
package body chad is | |||
@@ -2,7 +2,7 @@ | |||
-- | |||
-- GNU General Public Licence (version 3 or later) | |||
with core, effect, resource, faction, construction; | |||
with core, effect, resource, faction; | |||
package body construction is | |||
@@ -2,7 +2,7 @@ | |||
-- | |||
-- GNU General Public Licence (version 3 or later) | |||
with core, ray; | |||
with ray; | |||
package body core is | |||
@@ -2,7 +2,7 @@ | |||
-- | |||
-- GNU General Public Licence (version 3 or later) | |||
with core, deity; | |||
with core; | |||
package body deity is | |||
@@ -9,8 +9,6 @@ package deity is | |||
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | |||
type enumeration is ( | |||
svarog, dabog, svetovid, gozag, ru, xom, | |||
sheigarath, ornhul, khuganagoth, vel_sheina, deigehen, geazhul | |||
); | |||
------------------------------------------------------------------------------------------ | |||
@@ -25,18 +23,6 @@ package deity is | |||
count : constant natural := enumeration'pos (enumeration'last) + 1; | |||
trait : constant array (enumeration) of information := ( | |||
("Svarog the Lawful ", 3), -- Serbia | |||
("Dabog the Lonely ", -3), | |||
("Svetovid the Awakened ", 0), | |||
("Gozag the Impoverished ", 0), -- DCSS | |||
("Ru the Forgotten ", -3), | |||
("Xom the Chaotical ", 3), | |||
("Sheigarath the Dark ", -3), -- Gea | |||
("Ornhul the Frozen ", 0), | |||
("Khuganagoth the Hungry ", -3), | |||
("Vel-Sheina the Joyful ", 3), | |||
("Deigehen the Chained ", 0), | |||
("Geazhul the Awakened ", 3) | |||
); | |||
------------------------------------------------------------------------------------------ | |||
@@ -2,7 +2,7 @@ | |||
-- | |||
-- GNU General Public Licence (version 3 or later) | |||
with core, effect; | |||
with core; | |||
package body effect is | |||
@@ -2,7 +2,7 @@ | |||
-- | |||
-- GNU General Public Licence (version 3 or later) | |||
with core, attribute, skill, resource, faction; | |||
with core, attribute, skill, resource; | |||
package body faction is | |||
@@ -2,7 +2,7 @@ | |||
-- | |||
-- GNU General Public Licence (version 3 or later) | |||
with core, item; | |||
with core; | |||
package body item is | |||
@@ -2,7 +2,7 @@ | |||
-- | |||
-- GNU General Public Licence (version 3 or later) | |||
with core, ui, effect, magic; | |||
with core, ui, effect; | |||
package body magic is | |||
@@ -46,28 +46,6 @@ package body magic is | |||
ui.draw_icon_menu (trait (index).text, x, y, view_width + 2 * offset, view_height + 2 * offset); | |||
end view; | |||
------------------------------------------------------------------------------------------ | |||
procedure menu (x, y : in integer; center : in boolean) is | |||
offset : constant integer := 16; | |||
width : constant integer := 168 * 8 + 2 * offset; | |||
height : constant integer := 12 * core.icon + 2 * offset; | |||
move_x : constant integer := (if center then (core.window_width - width) / 2 else x); | |||
move_y : constant integer := (if center then (core.window_height - height) / 2 else y); | |||
-- | |||
next : array (0 .. 7) of integer := (others => 0); | |||
begin | |||
ui.draw_tiny_menu (move_x, move_y, width, height); | |||
ui.draw_title_bar (move_x, move_y, width, "Magic Abilities"); | |||
-- | |||
for index in enumeration loop | |||
icon (index, move_x + offset + school'pos (trait (index).kind) * 168, move_y + offset + next (school'pos (trait (index).kind)) * core.icon); | |||
ui.write (trait (index).name, move_x + offset + school'pos (trait (index).kind) * 168 + core.icon, move_y + offset + next (school'pos (trait (index).kind)) * core.icon); | |||
-- | |||
next (school'pos (trait (index).kind)) := next (school'pos (trait (index).kind)) + 1; | |||
end loop; | |||
end menu; | |||
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | |||
end magic; |
@@ -59,8 +59,6 @@ package magic is | |||
procedure icon (index : in enumeration; x, y : in integer); | |||
procedure view (index : in enumeration; x, y : in integer); | |||
procedure menu (x, y : in integer; center : in boolean); | |||
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | |||
end magic; |
@@ -4,7 +4,8 @@ | |||
pragma ada_2012; | |||
with core, ui, effect, attribute, skill, resource, faction, might, magic, item, unit, construction, chad, world, ai; | |||
--~with core, ui, effect, attribute, skill, resource, faction, might, magic, item, unit, construction, chad, deity, world, ai; | |||
with core, ui, effect, attribute, skill, resource, faction, item, unit, construction, chad, world; | |||
procedure main is | |||
@@ -125,7 +126,7 @@ begin | |||
construction.configure; | |||
chad.configure; | |||
world.configure; | |||
ai.configure; | |||
--~ai.configure; | |||
world.make (world.swamp, 120, 60); | |||
@@ -2,7 +2,7 @@ | |||
-- | |||
-- GNU General Public Licence (version 3 or later) | |||
with core, ui, effect, might; | |||
with core, ui, effect; | |||
package body might is | |||
@@ -46,28 +46,6 @@ package body might is | |||
ui.draw_icon_menu (trait (index).text, x, y, view_width + 2 * offset, view_height + 2 * offset); | |||
end view; | |||
------------------------------------------------------------------------------------------ | |||
procedure menu (x, y : in integer; center : in boolean) is | |||
offset : constant integer := 16; | |||
width : constant integer := 168 * 8 + 2 * offset; | |||
height : constant integer := 12 * core.icon + 2 * offset; | |||
move_x : constant integer := (if center then (core.window_width - width) / 2 else x); | |||
move_y : constant integer := (if center then (core.window_height - height) / 2 else y); | |||
-- | |||
next : array (0 .. 7) of integer := (others => 0); | |||
begin | |||
ui.draw_tiny_menu (move_x, move_y, width, height); | |||
ui.draw_title_bar (move_x, move_y, width, "Might Abilities"); | |||
-- | |||
for index in enumeration loop | |||
icon (index, move_x + offset + school'pos (trait (index).kind) * 168, move_y + offset + next (school'pos (trait (index).kind)) * core.icon); | |||
ui.write (trait (index).name, move_x + offset + school'pos (trait (index).kind) * 168 + core.icon, move_y + offset + next (school'pos (trait (index).kind)) * core.icon); | |||
-- | |||
next (school'pos (trait (index).kind)) := next (school'pos (trait (index).kind)) + 1; | |||
end loop; | |||
end menu; | |||
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | |||
end might; |
@@ -9,33 +9,9 @@ package might is | |||
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | |||
type school is ( | |||
neutral, archery, defense, economy, education, logistics, | |||
offense, tactics | |||
); | |||
type enumeration is ( | |||
-- Neutral | |||
-- Archery | |||
cover, evasive_maneuvers, focused_fire, magic_ammunition, piercing_bolt, precision, | |||
retreat, taunt, | |||
-- Defense | |||
charismatic_leader, counterstrike, double_counterstrike, resilience, revenge, shield_of_the_virtue, | |||
stand_your_ground_mass, stand_your_ground, toughness, | |||
-- Economy | |||
banker, destroyer, leadership, lumber, manager, merchant, | |||
miner, plunderer, snatch, | |||
-- Education | |||
alchemist, architect, ballistics, chosen_one, diplomacy, economist, | |||
general, mentor, siege_master, | |||
-- Logistics | |||
explorer, navigation, observer, orientation, pathfinder, scout, | |||
spy, trust_the_plan, | |||
-- Offense | |||
assailant, battle_march, cleave, flawless_attack, giant_slayer, heroic_charge, | |||
parry, pressed_attack, rampage, | |||
-- Tactics | |||
ambush, commander, crippling_traps, diving_attack, heroism_mass, heroism, | |||
intimidation, reinforcements | |||
); | |||
------------------------------------------------------------------------------------------ | |||
@@ -55,66 +31,6 @@ package might is | |||
count : constant natural := enumeration'pos (enumeration'last) + 1; | |||
trait : constant array (enumeration) of information := ( | |||
("Cover ", archery, 0, effect.none, "Provides temporary protection from enemy attacks. "), | |||
("Evasive Maneuvers ", archery, 0, effect.none, "Allows the user to dodge and avoid incoming attacks more effectively. "), | |||
("Focused Fire ", archery, 0, effect.none, "Increases accuracy and damage output towards a single target. "), | |||
("Magic Ammunition ", archery, 0, effect.none, "Enchants projectiles with magical properties for more effectiveness. "), | |||
("Piercing Bolt ", archery, 0, effect.none, "Ability to penetrate enemy defenses and deal damage directly. "), | |||
("Precision ", archery, 0, effect.none, "Enhances accuracy and critical hit chance. "), | |||
("Retreat ", archery, 0, effect.none, "Allows the user to disengage from combat safely. "), | |||
("Taunt ", archery, 0, effect.none, "Draws enemy aggression towards the user, redirecting their attacks. "), | |||
("Charismatic Leader ", defense, 0, effect.none, "Boosts the morale and efficiency of allies in the vicinity. "), | |||
("Counterstrike ", defense, 0, effect.none, "Automatically retaliates against incoming attacks with a counter-attack."), | |||
("Double Counterstrike ", defense, 0, effect.none, "Further enhances the counter-attacking ability, allowing for more hits. "), | |||
("Resilience ", defense, 0, effect.none, "Provides increased resistance to status effects and damage. "), | |||
("Revenge ", defense, 0, effect.none, "Empowers the user after taking damage, increasing their offense. "), | |||
("Shield Of The Virtue ", defense, 0, effect.none, "Provides a powerful defensive barrier to protect the user and allies. "), | |||
("Stand Your Ground Mass ", defense, 0, effect.none, "Grants a defensive buff to multiple allied units within a large radius. "), | |||
("Stand Your Ground ", defense, 0, effect.none, "Enhances the user's defenses and resilience against incoming attacks. "), | |||
("Toughness ", defense, 0, effect.none, "Increases overall durability and reduces incoming damage. "), | |||
("Banker ", economy, 0, effect.none, "Generates additional in-game currency or resources over time. "), | |||
("Destroyer ", economy, 0, effect.none, "Deals massive damage to enemies or structures. "), | |||
("Leadership ", economy, 0, effect.none, "Boosts the effectiveness and performance of allied units. "), | |||
("Lumber ", economy, 0, effect.none, "Increases resource gathering efficiency for wood or similar materials. "), | |||
("Manager ", economy, 0, effect.none, "Improves resource management and production within the user's faction. "), | |||
("Merchant ", economy, 0, effect.none, "Enables better trading opportunities and increased profit from commerce."), | |||
("Miner ", economy, 0, effect.none, "Enhances resource gathering efficiency for minerals or ore. "), | |||
("Plunderer ", economy, 0, effect.none, "Steals resources or valuable items from enemies upon defeating them. "), | |||
("Snatch ", economy, 0, effect.none, "Allows the user to quickly grab and steal an item or resource. "), | |||
("Alchemist ", education, 0, effect.none, "Enables the user to create and utilize powerful potions or poisons. "), | |||
("Architect ", education, 0, effect.none, "Improves construction speed and efficiency for buildings and structures."), | |||
("Ballistics ", education, 0, effect.none, "Enhances ranged attacks and projectile-based abilities. "), | |||
("Chosen One ", education, 0, effect.none, "Empowers the user with random unique and potent abilities. "), | |||
("Diplomacy ", education, 0, effect.none, "Strengthens diplomatic relations and opportunities with other factions. "), | |||
("Economist ", education, 0, effect.none, "Boosts resource management and economic prowess within the domain. "), | |||
("General ", education, 0, effect.none, "Provides strategic advantages and boosts the effectiveness of troops. "), | |||
("Mentor ", education, 0, effect.none, "Offers guidance to allied units, enhancing their performance. "), | |||
("Siege Master ", education, 0, effect.none, "Specializes in siege warfare, increasing the range of siege machines. "), | |||
("Explorer ", logistics, 0, effect.none, "Improves scouting abilities and grants bonuses to discovering. "), | |||
("Navigation ", logistics, 0, effect.none, "Enhances movement speed or efficiency across different terrains. "), | |||
("Observer ", logistics, 0, effect.none, "Grants vision over specific areas or units, providing information. "), | |||
("Orientation ", logistics, 0, effect.none, "Improves unit positioning and formation effectiveness in battle. "), | |||
("Pathfinder ", logistics, 0, effect.none, "Provides bonuses to traversing difficult terrain or finding paths. "), | |||
("Scout ", logistics, 0, effect.none, "Excels at reconnaissance and gathering intelligence on enemy movements. "), | |||
("Spy ", logistics, 0, effect.none, "Infiltrates enemy territory to perform sabotage operations. "), | |||
("Trust The Plan ", logistics, 0, effect.none, "Grants advantages when following predetermined strategies or tactics. "), | |||
("Assailant ", offense, 0, effect.none, "Enhances offensive capabilities and increases damage dealt in fighting. "), | |||
("Battle March ", offense, 0, effect.none, "Boosts movement speed and combat prowess for the troops on the front. "), | |||
("Cleave ", offense, 0, effect.none, "Allows attacks to hit multiple foes or deal area-of-effect damage. "), | |||
("Flawless Attack ", offense, 0, effect.none, "Enhances precision and accuracy of attacks, maximizing damage output. "), | |||
("Giant Slayer ", offense, 0, effect.none, "Provides bonuses and advantages when engaging larger or stronger foes. "), | |||
("Heroic Charge ", offense, 0, effect.none, "Allows for a powerful and impactful offensive maneuver against enemies. "), | |||
("Parry ", offense, 0, effect.none, "Enables the user to block or deflect incoming attacks, reducing damage. "), | |||
("Pressed Attack ", offense, 0, effect.none, "Boosts the intensity and frequency of offensive strikes during combat. "), | |||
("Rampage ", offense, 0, effect.none, "Triggers a frenzied state, increasing attack power and speed shortly. "), | |||
("Ambush ", tactics, 0, effect.none, "Enables surprise attacks on enemy units for increased effectiveness. "), | |||
("Commander ", tactics, 0, effect.none, "Enhances leadership abilities and buffs allied units under the command. "), | |||
("Crippling Traps ", tactics, 0, effect.none, "Utilizes various traps and devices to hinder or debilitate enemies. "), | |||
("Diving Attack ", tactics, 0, effect.none, "Initiates a swift and decisive aerial assault from above. "), | |||
("Heroism Mass ", tactics, 0, effect.none, "Inspires and empowers multiple units simultaneously with a morale boost."), | |||
("Heroism ", tactics, 0, effect.none, "Bolsters morale and combat effectiveness of individual units. "), | |||
("Intimidation ", tactics, 0, effect.none, "Strikes fear into enemies, reducing their morale and courage. "), | |||
("Reinforcements ", tactics, 0, effect.none, "Calls in additional troops or support units to bolster the forces. ") | |||
); | |||
------------------------------------------------------------------------------------------ | |||
@@ -124,8 +40,6 @@ package might is | |||
procedure icon (index : in enumeration; x, y : in integer); | |||
procedure view (index : in enumeration; x, y : in integer); | |||
procedure menu (x, y : in integer; center : in boolean); | |||
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | |||
end might; |
@@ -2,7 +2,7 @@ | |||
-- | |||
-- GNU General Public Licence (version 3 or later) | |||
with core, ui, resource; | |||
with core, ui; | |||
package body resource is | |||
@@ -2,7 +2,7 @@ | |||
-- | |||
-- GNU General Public Licence (version 3 or later) | |||
with core, ui, skill; | |||
with core, ui; | |||
package body skill is | |||
@@ -2,7 +2,7 @@ | |||
-- | |||
-- GNU General Public Licence (version 3 or later) | |||
with core, ui; | |||
with core; | |||
package body ui is | |||
@@ -2,7 +2,7 @@ | |||
-- | |||
-- GNU General Public Licence (version 3 or later) | |||
with core, ui, effect, attribute, faction, unit; | |||
with core, ui, effect, attribute, faction; | |||
package body unit is | |||
@@ -57,27 +57,6 @@ package body unit is | |||
------------------------------------------------------------------------------------------ | |||
procedure menu (x, y : in integer; center : in boolean) is | |||
offset : constant integer := 16; | |||
width : constant integer := 168 * faction.count + 2 * offset; | |||
height : constant integer := 14 * core.icon + 2 * offset; | |||
move_x : constant integer := (if center then (core.window_width - width) / 2 else x); | |||
move_y : constant integer := (if center then (core.window_height - height) / 2 else y); | |||
move : integer := 0; | |||
begin | |||
ui.draw_tiny_menu (move_x, move_y, width, height); | |||
ui.draw_title_bar (move_x, move_y, width, "Units"); | |||
-- | |||
for index in enumeration loop | |||
move := faction.enumeration'pos (trait (index).kind) * 168; | |||
-- | |||
icon (index, move_x + offset + move, move_y + offset + (enumeration'pos (index) mod 14) * core.icon); | |||
ui.write (trait (index).name, move_x + offset + move + core.icon, move_y + offset + (enumeration'pos (index) mod 14) * core.icon); | |||
end loop; | |||
end menu; | |||
------------------------------------------------------------------------------------------ | |||
procedure stat (index : in enumeration; x, y : in integer; center : in boolean) is | |||
offset : constant integer := 16; | |||
width : constant integer := 10 + offset + 6 * (sprite (index).width + 8); | |||
@@ -47,8 +47,6 @@ package unit is | |||
procedure icon (index : in enumeration; x, y : in integer); | |||
procedure view (index : in enumeration; x, y : in integer); | |||
procedure menu (x, y : in integer; center : in boolean); | |||
procedure stat (index : in enumeration; x, y : in integer; center : in boolean); | |||
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | |||
@@ -2,7 +2,7 @@ | |||
-- | |||
-- GNU General Public Licence (version 3 or later) | |||
with core, ui, resource, item, unit, construction, world; | |||
with core, ui, resource, item, unit, construction; | |||
package body world is | |||