BigEndian(); BitfieldRightToLeft();
enum <byte> BOOL { False, True=0xFF};
local int i = 0;
////////////////////////////////////////////////////////////////STR////////////////////////////////////////////////////////////////
typedef struct {
SetForeColor(cPurple);
short len;
SetForeColor(cDkPurple);
local int64 pos = FTell(); if (len) uchar Str[len];
////////////////////////////////////////////////////////////////ARRAY////////////////////////////////////////////////////////////////
typedef struct { local int64 pos = FTell();
SetForeColor(cWhite);
short ct;
SetForeColor(cDkBlue);
if (ct) short Int[ct] <format=hex>;
SetForeColor(cNone);
} ARRAY <optimize=false, read=ARRAYread>;
////////////////////////////////////////////////////////////////POP////////////////////////////////////////////////////////////////
typedef struct { short Healthy, Absent, Sick, Wounded; } POP <read=POPread>;
////////////////////////////////////////////////////////////////GODS////////////////////////////////////////////////////////////////
typedef struct { local int64 pos = FTell(); long :1, Ancestors :1, ArganArgar:1, Barntar :1, ChalanaArroy:1, Elmal :1, Ernalda :1, Eurmal :1, Humakt :1, Issaries :1, KeroFin :1, LhankorMhy:1, Malia :1, MaranGor:1, Odayla :1, Orlanth :1, TarardRiel:1, Uralda :1, Urox :1, Vinga :1, WindSpirits :1;} GODS <read=GODSread>;
////////////////////////////////////////////////////////////////RAID////////////////////////////////////////////////////////////////
typedef struct {
typedef short CLANIDX <read=CLANIDXread>; CLANIDX ClanIdx; enum <short> { Cattle=0xFFF7, Battle=0xFFFC } Type <format=hex>; typedef short DATE <read=DATEread>; DATE Date; enum <short> { disengaged, win_caught, loss_stole=0xFFFF } Result <format=hex>;} RAID <read=RAIDread>;
////////////////////////////////////////////////////////////////BALANCE////////////////////////////////////////////////////////////////
enum <short> BALANCE { War, Balanced, Peace };
////////////////////////////////////////////////////////////////TRAIT////////////////////////////////////////////////////////////////
typedef struct { local int64 pos = FTell();
// Trait=sure, trait=not sure about the name, _trait=not sure at all
long AntiAldryami:1, AntiUndead:1, _bully:1, //bully? ;war: raid feuding neighbours; diplo: we can survive alone; reorg: the ring needs me; die in rage trifles _Courageous:1, //dictatorial, tribute: contest; kallyr: toast; reorg: the ring needs me; die great adventure _confident:1, //reorg: I can...; die surprised longevity Coward:1, //tribute: avoid contest; trade: fear of ambush; magic: nervous of gods; die lost heart; blackspear search: must give blessing _17:1, //forgetful? Illator: reminds...sorry critical:1, //die admit enjoy; Einarth: anti-tribe; offend king event? crybaby:1, //tribute: can't win contest; die foolish worry; Robarth: this is my fault; farm: "we failed our ppl" _22:1, //daring?; Einarth: new isn't bad _23:1, //cites lore? _24:1, Matriarchal:1, mindless:1, //say crazy things, proverbial Miserly:1, Patriarchal:1, peaceful:1, //peaceful? skull: trade to foster harmony Pious:1, Poet:1, pragmatic:1, //tribute: don't threaten; die no trouble ProDragonewt:1, Proverbial:1, royal:1, //royal? diplo: gift neighbours to form tribe; trade: less trade, go explore (per omens); tribute: if break vow>disastrous; Einarth: hurry! Spendthrift:1, _scornful:1, //stupid? spiteful? stubborn?;lousy XXX!; tribute: "whatever" _42:1, //blackspear search: if bless->all go->forbid _43:1, //spiritual?; alliance: worship; magic: build more temple told:1, //"told you..."; war: "told you XXX were gonna raid us!" _trader:1, //trade: more treasure _tribelike:1, //alliance: tribe warmonger:1, //die outlive enemy; clan: reorg as war clan; surprise feud event _48:1;
string TRAITread (TRAIT &t) { string s;
if (t.AntiAldryami) s += "·xA"; if (t.AntiUndead) s += "·xU"; if (t._bully) s += "·?bul"; if (t._Courageous) s += "·?crg"; if (t._confident) s += "·cf"; if (t.Coward) s += "·Cw"; if (t._17) s += "·17"; if (t.critical) s += "·?crt"; if (t.crybaby) s += "·?cry"; if (t._22) s += "·22"; if (t._23) s += "·23"; if (t._24) s += "·24"; if (t.Matriarchal) s += "·Ma"; if (t.mindless) s += "·Md"; if (t.Miserly) s += "·Ms"; if (t.Patriarchal) s += "·Pa"; if (t.peaceful) s += "·Pc"; if (t.Pious) s += "·Pi"; if (t.Poet) s += "·Pt"; if (t.pragmatic) s += "·Pg"; if (t.ProDragonewt) s += "·oD"; if (t.Proverbial) s += "·Pv"; if (t.royal) s += "·R"; if (t.Spendthrift) s += "·Sp"; if (t._scornful) s += "·?sc"; if (t._42) s += "·42"; if (t._43) s += "·?tmpl"; if (t.told) s += "·to"; if (t._trader) s += "·?trd"; if (t._tribelike) s += "·?trb"; if (t.warmonger) s += "·W"; if (t._48) s += "·48"; return s = SubStr(s, 1);
////////////////////////////////////////////////////////////////LEADER////////////////////////////////////////////////////////////////
typedef struct {
SetBackColor(cDkGray);
short Age;
SetBackColor(cLtPurple);
CLANIDX ClanIdx; enum <short> { Male=1, Female } Gender; short TurnsUnavailable; //gone from tula or other reasons, cannot work BOOL Heroic; //GoodNews "heroic level" enum <short> { Home, emissary, explorer=13, caravan=16, enthralled=18, Dead } Location; //enthralled by horsespawn STR Name; char Picture[12]; GODS Religion; short Seat, Sick; typedef struct { SetForeColor(cDkBlue); LittleEndian(); double Animals, Bargaining, Combat, Custom, Leadership, Magic, Plant; BigEndian(); } SKILLS <read=SKILLSread>; SKILLS Skills; enum <short> { Alive, Dead_tmp1, Dead_tmp2, Dead_perm } State; SetBackColor(cDkRed); TRAIT Trait; SetBackColor(cLtPurple); enum <short> { craft=1, farm, heal, hunter, law, magic, noble, trader, trick, war } Type; short Wounded, YearsOnRing;
////////////////////////////////////////////////////////////////RITUAL////////////////////////////////////////////////////////////////
typedef struct {
struct { byte Divinition, Protection, SummonsOfEvil, _, _; } Ancestors; struct { byte _, _, _, _, _; } ArganArgar; struct { byte Plowsong, Vigor, _, _, _; } Barntar; struct { byte Curing, Healing, Resurrection, Hope, Mysteries; } ChalanaArroy; struct { byte Horsefriend, Shield, Steadfast, Sun, Mysteries; } Elmal; struct { byte BlessChildren, BlessCrops, Preserve, SwineBlessing, Mysteries; } Ernalda; struct { byte Bless, Curse, _, _, _; } Eurmal; struct { byte BattleLuck, Morale, Oath, Truesword, Mysteries; } Humakt; struct { byte Silvertongue, Market, SpareGrain, Trading, Mysteries; } Issaries; struct { byte MaternalWard, _, _, _, _; } KeroFin; struct { byte Divination, ClanLore, LawSpeaker, Literacy, Mysteries; } LhankorMhy; struct { byte Curing, CausePlague, Immunity, _, _; } Malia; struct { byte BlastEarth, Earthblood, _, _, _; } MaranGor; struct { byte SureShot, Tracking, FriendOfYinkin, _, _; } Odayla; struct { byte Lightning, Rain, Thunderstone, Woad, Mysteries; } Orlanth; struct { byte Watchfulness, _, _, _, _; } TarardRiel; struct { byte CalfBlessing, MilkBlessing, _, _, Mysteries; } Uralda; struct { byte Berserker, SenseChaos, SmiteChaos, _, _; } Urox; struct { byte Fyrdwomen, Pathfinder, _, _, _; } Vinga; struct { byte _, ListeningWind, SeeingWind, UnderstandingWind, _; } WindSpirits;} RITUAL <optimize=false>;
//////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////HEADER////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////
struct {
char Opal[4]; byte __, __, __, __, __, __, __, __; short Omens, //Omens or seed? __; enum <short> { Short=1, Long } Length; DATE Date; short Harvest; //1 to 7
////////////////////////////////////////////////////////////////VARS////////////////////////////////////////////////////////////////
local int VarIdx = 0;
struct {
SetForeColor(cWhite);
short ct; typedef struct { local int Idx = VarIdx++; SetForeColor(cBlue); enum <short> { Leader=0x7FF2, clan, tribe, treasure, leaders=0x7FFA, clans, tribes, treasures, neg=0xFFFF } Class <format=hex>; SetForeColor(cGray); short Value, Short; BOOL Bool; STR String; } VAR <optimize=false, read=VARread>; VAR Var[ct];
////////////////////////////////////////////////////////////////MAP////////////////////////////////////////////////////////////////
SetBackColor(cLtYellow);
struct { struct { BOOL Hex[27]; } Row[32]; } Map;
////////////////////////////////////////////////////////////////TREASURES////////////////////////////////////////////////////////////////
SetBackColor(cNone);
struct {
short Total; i = 1; typedef struct { local int Idx = i++; short Qt; } ONSALE <optimize=false, read=ONSALEread, write=ONSALEwrite>; ONSALE OnSale[120];
////////////////////////////////////////////////////////////////ARRAYS////////////////////////////////////////////////////////////////
struct { ARRAY Array[12]; } __arrays; //randomized at gamestart, all empty arrays for Tutorial and Opal
////////////////////////////////////////////////////////////////LEADERNAMES////////////////////////////////////////////////////////////////
struct { i = 0;
short females; typedef struct { local int Idx = i++; short Used; } FEMALE <optimize=false, read=FEMALEread>; if (females) FEMALE Female[females]; short males; typedef struct { local int Idx = i++ - females; short Used; } MALE <optimize=false, read=MALEread>; if (males) MALE Male[males];
////////////////////////////////////////////////////////////////CLANS////////////////////////////////////////////////////////////////
struct {
SetBackColor(cLtBlue);
short ct;
SetForeColor(cNone);
////////////////////////////////////////////////////////////////CLAN A-L////////////////////////////////////////////////////////////////
typedef struct {
SetBackColor(cLtBlue);
struct { BOOL __Exists; SetForeColor(cDkGreen); short __xAB; //short, alternates 1/0 from the first clan SetForeColor(cNone); short Barley; BOOL BasicClan; //True for the starting 26 human clans short Cattle; typedef struct { enum <short> { low=1, mid, high, pc=0xCDCD } ChiefDaring, ChiefGenerosity, ChiefGuile, ChiefPiety; } CHIEF <read=CHIEFread>; CHIEF Chief; typedef struct { short Children[15]; } CHILDREN <read=CHILDRENread>; CHILDREN Children; enum <short> { Player, Orlanthi, Foreigner } ClanClass; //guessed, affects whether borders are displayed on map CLANIDX ClanIdx; BALANCE ClanType; POP Crafters; short Cropland; enum <short> { possible, failed, joined } TribeForm; STR Description; POP Farmers; short Food; struct { short Ditch:1, Hillfort:1, Ramparts:1, StakePerimeter:1, WoodenStockade:1, StoneWall:1, WatchTower:1, ImprovedStoneWall:1; } Fortifications; short Goods; GODS GreatTemples; short Harvest; SetForeColor(cDkGreen); short __xH; //is short SetForeColor(cNone); short Horses; POP Housecarls; //Weaponthanes; //Housecarls POP Hunters; SetForeColor(cDkGreen); short __xHI[20]; //short SetForeColor(cNone); short InnerPatrol, KingIdx, KingshipReputation; SetForeColor(cDkGreen); short __xKL1; //short byte __xKL2[10]; //byte SetForeColor(cNone); struct { RAID LastRaided, LastRaidedBy; } LastRaids; SetForeColor(cDkGreen); short __xL; //LastPeace? 2=marriage alliance, 3=beaten/warned, decreases over time } AtoL;
////////////////////////////////////////////////////////////////LEADERS////////////////////////////////////////////////////////////////
struct { SetBackColor(cNone); short ct; if (ct) LEADER Leader[ct]; } Leaders;
////////////////////////////////////////////////////////////////DATA M-R////////////////////////////////////////////////////////////////
struct { SetBackColor(cLtAqua); short MaranGorEarthblood; struct { byte Children, Crops, Diplomacy, Health, Herds, Hunting, Mysteries, Quests, Trade, War, Destiny, Heroism; } Magics; enum <short> { Ancestors=1, ArganArgar, Barntar, ChalanaArroy, Elmal, Ernalda, Eurmal, Humakt, Issaries, KeroFin, LhankorMhy, Malia, MaranGor, Odayla, Orlanth, TarardRiel, Uralda, Urox, Vinga, WindSpirits } MainDeity; struct { short Clan, Farmer, Warrior; } Mood; STR Name; POP Nobles; SetForeColor(cDkGreen); short __xNO; //short SetForeColor(cNone); short OuterPatrol, Pasture, Pigs; struct { short Farmers, Oxen; } Planted; BOOL PlayerHasThralls; STR Plural; short PowerPointsMagic; struct { enum <byte> { disabled=0xFF } Plain, Fancy, Amulets, Gems, Greenware, Iron, Ivory; } Production; GODS Protection; //sacrifice to Chalana->toggles Malia struct { struct RAIDS { short ct; if (ct) RAID Raid[ct]; } Raided; RAIDS RaidedBy; } Raids; short __VictoryScore; //increase over time? increase per raid? } MtoR;
////////////////////////////////////////////////////////////////RELATIONS////////////////////////////////////////////////////////////////
SetBackColor(cLtYellow); struct { short ct; typedef struct { CLANIDX ClanIdx; short Attitude, __always0, FavorsDueUs, Alliance, Feud; BOOL Trade, Near, Neighbour; //Near=canRaid (N), Neighbour=canSeize short __SlightsTribal, TimesRaidedBy, //negative __, TimesRaided, __, Slights; struct { short __wePayTribute, Cattle, Food, Goods; } Tribute; short __FavorsTribal, __Flag; //changes whether a clan is displayed } RELATION <optimize=false, read=RELATIONread, write=RELATIONwrite>; if (ct) RELATION Relation[ct]; } Relations;
////////////////////////////////////////////////////////////////DATA R-W////////////////////////////////////////////////////////////////
i = 0; struct { SetColor(cNone,cLtAqua); short RingMemberIdx[7]; BOOL RoyalClan; short __RoyalJealousy, //=1 upon Einarth Milk-Eyes prophecy, =1/2 upon new npc tribes formation, =0 upon moot for new king Rye; struct { RITUAL Sacrifice, Known; } Rituals; struct { byte Ancestors, ArganArgar, Barntar, ChalanaArroy, Elmal, Ernalda, Eurmal, Humakt, Issaries, KeroFin, LhankorMhy, Malia, MaranGor, Odayla, Orlanth, TarardRiel, Uralda, Urox, Vinga, WindSpirits; } Sacrificed; short Sheep; GODS Shrines; short __shrine__; //shorts short __shrine__; //shorts SetColor(cNone,cLtGreen); RITUAL ShrinePermanent; SetColor(cNone,cLtAqua); GODS Temples; POP Thralls; BOOL ThrallsOkay; struct { i = 1; short ct; typedef struct { local int Idx = i++; short Qt, WearerIdx; } TREASURE <optimize=false, read=TREASUREread, write=TREASUREwrite>; if (ct) TREASURE Treasure[ct]; } Treasures; short TribeIdx, __xTW, Wildlands, Wheat; } RtoW; ARRAY Zones; //display only} Clans;
////////////////////////////////////////////////////////////////HISTORY////////////////////////////////////////////////////////////////
if (AtoL.ClanIdx==1) struct { //all data lengths confirmed SetBackColor(cNone); short GoodsProduced; enum <short> { ancestors=1, elmal, urox, odayla, ernalda, orlanth, issaries, lhankormhy, chalanaarroy, uralda } Awakened; SetForeColor(cDkGreen); short __, __; //short SetForeColor(cNone); GODS DeitiesKnown; enum <short> { Battle_of_Extinguishing_Field=1, Hundred_Day_Hunt, Jesteds_Settlement, Procession_of_Animals, Harnessed_Oxen, Hidden_Place, Marking_Bone, First_Pot, Clan_Making_Dance } EarliestEvent; DATE EmissaryLast, ExploreLast; BOOL FirstYear; struct { short Ate, Produced, Spoilage; } Food; BOOL EarthRaided; SetForeColor(cDkGreen); BOOL __bool, __bool; SetForeColor(cNone); DATE LastHunterAssign, LastCarlShortage; enum <short> { needed=1, more, lots, huge } LandClaim; DATE __LastMission; //last diplo/trade mission, not sure short __YearNow; //short enum <short> { merits=1, generous, enemies, friends } TribePolicy; SetForeColor(cDkGreen); short __; //short SetForeColor(cNone); short BabiesBorn; BALANCE ClanType; SetForeColor(cDkGreen); short __; //short DATE __DateLastTrade; //not sure SetForeColor(cNone); BOOL SeaRaided; struct { short Cattle, __food, __goods, //both always 0xCDCD, just guessing from context Horses, Pigs, Population, Sheep; } Resources; SetForeColor(cDkGreen); long __long; //long SetForeColor(cNone); DATE LastHeroQuest; struct { BOOL ChalanaArroy, Elmal, Ernalda, Humakt, Issaries, LhankorMhy, StormTribe, Orlanth, Uralda; } HeroQuest; SetForeColor(cDkGreen); BOOL __bool; SetForeColor(cNone); short MarketProfit; SetForeColor(cDkGreen); DATE __GameStart; short __; //short SetForeColor(cNone); struct { enum <short> { simple=1, full, deeper=4 } HowBegan, SwordStory, Contests, StormAge, StormTribe, Humakt, Issaries, LhankorMhy, Orlanth, JusticeBringer, ChalanaArroy, GreatDarkness, Elmal, Uralda, Ernalda; } Myth;
//local string s = SPrintf(s, "History= %i, %i", __[0], __[2]); Printf(s);
} History; } CLAN <optimize=false, read=CLANread, write=CLANwrite>; if (ct) CLAN Clan[ct] <optimize=false>;
//////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////
struct {
short __LunarWar, //=0 gamestart, =2 upon Tarsh Illastor recruit event for Lunar war __; //=-1 always
////////////////////////////////////////////////////////////////CLANNAMES////////////////////////////////////////////////////////////////
struct {
typedef struct { short Name; } CLANNAME <optimize=false, read=CLANNAMEread>; struct { short ct; if (ct) CLANNAME Clan[ct]; } ClanName; short count; byte __byte[7]; STR __array; struct { short ct; if (ct) CLANNAME Clan[ct]; } ClanPlural;
////////////////////////////////////////////////////////////////TRIBES////////////////////////////////////////////////////////////////
SetBackColor(cLtRed);
struct {
short ct; typedef struct { DATE LastElection; BOOL __hasKing; STR Name; CLANIDX RoyalClanIdx; short __short; //always0 struct { local int64 pos = FTell(); short ct; if (ct) struct { CLANIDX ClanIdx; DATE DateJoined; } Clan[ct]; } Tulas; short __short; //always0 VAR Var; } TRIBE <optimize=false, read=TRIBEread>; TRIBE Tribe[ct];
////////////////////////////////////////////////////////////////?////////////////////////////////////////////////////////////////
//struct {
typedef struct {
SetBackColor(cLtYellow);
short __[5]; //tribes related? _x1[0]==-1 until tribe formed
} __SHORT <read=SHORTread>;
__SHORT __short_5;
typedef struct {
SetBackColor(cLtPurple);
BOOL __[53];
} __BOOL <read=BOOLread>;
__BOOL __bool_53;
//SetBackColor(cNone);
//} _static; //always same value at gamestart (not randomized)
////////////////////////////////////////////////////////////////EVENTS////////////////////////////////////////////////////////////////
SetBackColor(cLtBlue);
struct {
SetForeColor(cWhite);
short ct;
SetForeColor(cNone);
typedef struct { short EventIdx; enum <short> { code, _, explore=0xFFF8, trade=0xFFFA, diplo, raid, event=0xFFFE } Mission <format=hex>; short Turns, __, LeaderIdx; CLANIDX ClanIdx; short __; struct { short Weaponthane, Weaponthane, Fyrd, Cattle, Horses, Goods, Food; enum <short> { Slowly=1, Normally, Quickly } Travel; short Treasure; } Convoy; struct { short TargetX, TargetY; enum <short> { ask_cattle_route=1, ask_food, ask_info, ask_magic, tribute, gift, alliance, peace } Goal; enum <short> { Small=1, Medium, Large, Pathfinder=15328 } Caravan; } Objective; } QUE <optimize=false, read=QUEread, write=QUEwrite>; if (ct) QUE Que[ct]; local int EventIdx = 0; typedef struct { local int Idx = EventIdx++; short Value; } EVENT <optimize=false, read=EVENTread>; SetBackColor(cLtGreen); struct { EventIdx = 0; EVENT Event[1579]; } Times; //how many times it happened? SetBackColor(cLtAqua); struct { EventIdx = 0; EVENT Event[1579]; } Years; //upon event, usually set to 0x7FFF, -1 per year
} Events;
////////////////////////////////////////////////////////////////ZONES////////////////////////////////////////////////////////////
SetBackColor(cLtYellow);
struct {
SetForeColor(cWhite);
short ct;
SetForeColor(cNone);
if (ct) short Owner[ct];
SetColor(cNone,cNone);
char Opal[4];
} Zones;
#include "KoDPinc.bt"
Powered by hypermail