Atlantis 3.0 Developer's Kit

Last Change: August 10, 1996

The information in this file is meant to aid in the writing of utility programs for Atlantis 3.0. It is probably not of interest to players; I have tried to omit any information that is not publicly available.


Report Format

The following attempts to completely describe the format that reports come in. I can't make any guarantee that I haven't left anything out, though.

As a general note, Atlantis generally prints output on a line by line format. If the line stretches for more than 72 (I think) characters, it is cut off and continued onto further lines, with a 2 space indentation.

Report Header

The subject will go in the mail headers, and other stuff will probably end up put below it by the mailer. There may be more warnings and notes between the Account balance and Faction Status.

Subject: Atlantis 3.0 Report (Turn 144)

Atlantis Report For:
Test Faction (7) (War 1, Trade 1, Magic 3)
December, Year 12

Account balance: $1.00

Note: The Atlantis Times is not being sent to you.

Warning: Your balance is paid for less than four more turns. Please
  make arrangements with the Gamemaster to extend your balance if you
  wish to keep playing.

Faction Status:
Tax Regions: 0 (10)
Trade Regions: 0 (10)
Mages: 3 (3)

Turn notices

Next, there are 5 sections detailing various notes on the last turn. These section are optional (they will be omitted if there are no relevant notes), but always appear in the same order. Below are the 5 sections, with a sample of each.

Errors during turn:
Unit (383): CAST: Target region is an ocean.

Battles during turn:
Unit (380) attacks Unit (396) in plain (40,24) in Zaalsehuur!

Attackers:
Unit (380), leader [LEAD], 2 horses [HORS].
Unit (383), leader [LEAD].
Unit (95), 200 nomads [NOMA], 200 horses [HORS], combat 2.
Unit (378), leader [LEAD], horse [HORS].

Defenders:
Unit (376), 100 nomads [NOMA].
Unit (396), leader [LEAD].
Unit (397), leader [LEAD].

Unit (380) gets a free round of attacks.
Unit (396) loses 102.

Unit (396) is routed!
Total Casualties:
Unit (396) loses 102.
Unit (380) loses 0.

Spoils: 30263 silver [SILV].

Events during turn:
Unit (383): Earns 1 silver working.

Skill reports:

farming [FARM] 2: No skill report.

fishing [FISH] 1: A unit with this skill may use the  PRODUCE order to
  produce fish in designated regions. Fish are only available in ocean
  regions.

Item reports:
sword [SWOR], weight 1.

Attitudes

Next, there is a list of faction Attitudes, and the unclaimed silver for a faction.

Declared Attitudes (default Neutral):
Hostile : none.
Unfriendly : none.
Neutral : none.
Friendly : Another Faction (70), A long faction name that wraps over
  to the next line (72).
Ally : none.

Unclaimed silver: 609.

Region Headers

The next part of a report has a list of regions that the faction can see. At the top of each region, the following header appears. Note that some of the lines are optional, and may not appear in all region headers.

plain (40,24) in Zaalsehuur, 555 peasants (nomads), $2775.
------------------------------------------------------------
  The weather was clear last month; it will be monsoon season next
    month.
  Wages: $15.
  Wanted: none.
  For Sale: 111 nomads [NOMA] at $60, 22 leaders [LEAD] at $120.
  Entertainment available: $138.
  Products: 102 grain [GRAI], 34 horses [HORS].

Exits:
  North : plain (40,22) in Zaalsehuur.
  Northeast : plain (41,23) in Zaalsehuur.
  Southeast : ocean (41,25) in Atlantis Ocean.
  South : ocean (40,26) in Atlantis Ocean.
  Southwest : ocean (39,25) in Atlantis Ocean.
  Northwest : plain (39,23) in Aberdovey.

Unit and Structure Reports

Below this is list of units and structures that are in this region.

* Unit (397), Faction (9), behind, leader [LEAD]. Skills: force 
  [FORC] 1 (60). Can Study: Not a real skill [XXXX].
- Unit (95), Faction (7), behind, 500 nomads [NOMA], wool [WOOL], 7
  stone [STON].
- Unit (378), Faction (7), behind, leader [LEAD], horse [HORS], 
  ivory [IVOR], plate armor [PARM].

+ Building [4] : Farm.
  - Unit (406), Faction (7), 459 nomads [NOMA].

Orders Template

Last is an optional orders template. This may have comments in it, or not, or may not be in the report at all. Comments are preceded by ;, and orders that were previously given are preceded by @.

Orders Template (Long Format):

#atlantis 9

;*** plain (40,24) in Zaalsehuur ***

unit 376
;Unit (376), 216 nomads [NOMA], 20530 silver [SILV]. Skills: mining
;  [MINI] 1 (30).
@work

#end

Header Files

This section contains excerpts from the Atlantis 3.0 header files, and give an idea of the data structures at work. Note that these structures may be abridged, to hide magical effects and such that are to be found by players as the game proceeds.

The structure for towns, villages, cities.

class TownInfo {
public:
  AString * name;
  int pop;
  int basepop;
  int activity;
};
The structure for regions.

class ARegion : public AListElem {
public:
  AString * name;
  int num;
  int type;
  int buildingseq;
  int weather;
  int gate;

  TownInfo * town;
  int race;
  int population;
  int basepopulation;
  int wages;
  int maxwages;
  int money;

  ARegion * neighbors[NDIRS];
  AList objects;
  AList hell; /* Where dead units go */
  AList farsees;
  ProductionList products;
  MarketList markets;
  int xloc,yloc,zloc;
The structure for attitudes.

class Attitude : public AListElem {
public:
  int factionnum;
  int attitude;
};
The structure for factions.

class Faction : public AListElem {
public:
  int num;
  int type[NFACTYPES];
  int lastchange;
  int lastorders;
  int unclaimed;
  AString * name;
  AString * address;
  AString * password;
  int times;
  int temformat;
  int balance;
  char exists;
  int quit;
  
  AList war_regions;
  AList trade_regions;
  
  int defaultattitude;
  AList attitudes;
  SkillList skills;
};
The structure for objects (structures).

class Object : public AListElem {
public:
  AString * name;
  AString * describe;
  int inner;
  int num;
  int type;
  int incomplete;
  int capacity;
  AList units;
};
The structure for units.

class Unit : public AListElem {
public:
  Faction * faction;
  AString * name;
  AString * describe;
  int num;
  int type;
  int alias;
  int guard;	/* Also, avoid- see enum above */
  int reveal;
  int flags;
  int taxing;
  int movepoints;
  int canattack;
  int nomove;
  SkillList skills;
  ItemList items;
  int combat;
  AList oldorders;
  int needed; /* For assessing maintenance */
  int losses;
  ARegion * advancefrom;
};