Sign up Calendar Latest Topics

  Author   Comment  

Posts: 163
Reply with quote  #1 
I'm trying to understand some of the details of how the taunt block works in Artemis (as of versions 2.7.0 and 2.7.1, if this is at all important).

The tags hullrace, ID, and name I get (I think) as they seem to be pretty straight forward. But when it comes to the keys, I'm not sure I understand what each of them does and how they affect the game. Taunt immunities and texts are also pretty straight forward.

So far I have found the following keys, or keywords, along with descriptions of what I THINK they do:
  • player - denotes playable faction. What functionality does this key have if player-controlled ships can ignore taunts altogether?
  • friendly - friendly non-player-controlled faction. As they are non-player-controlled, ships of this faction can be insulted, I guess. How do friendly ships react to being insulted?
  • enemy - non-player-controlled enemy faction; all enemy factions have this key.
  • standard - I have only seen this key used in conjuction with the enemy key; I assume it denotes the faction that constitutes the primary enemy force.
  • support - I have only seen this key used in conjunction with the enemy key; I assume it denotes all factions that support the standard enemy faction
  • loner - denotes factions that will not form fleets but rather hunt alone.
  • whalelover - they love space whales; do they get pissed off if you hurt and/or kill space whales?
  • whalehater - they hate space whales. What else does it do?
  • biomech - I assume they denote the faction that the game will use the growth and reproduction mechanics on.
  • hasspecials - gain random but powerful special abilities.
  • jumpmaster - I have no idea what this tag does.
Someone please correct and expand on my descritions wherever needed.

Are there other tags not list here? If so, what are they and what do they do?
Dave Thaler

Posts: 503
Reply with quote  #2 
That's the known list.  Some documentation is currently on the Artemis protocol doc page here.

(I'm thinking it should, however, move to the wiki where people who don't care to know protocol details can find it.)

Posts: 163
Reply with quote  #3 
Originally Posted by Dave Thaler
That's the known list.  Some documentation is currently on the Artemis protocol doc page here.

Oh, awesome. Thanks for the link! [smile]

Posts: 3,008
Reply with quote  #4 
Although taunts are the main thing defined in the raceKeys blocks, as hinted by their name, the main thing these blocks are doing is defining the various races or factions. Each ship defined in vesselData has two important values, race, and hull. All ships of the same race are grouped under their raceKey, and those values defined in that block apply to all ships of that race.

On short, all Kraliens share the same taunts, they don't vary by individual ship. The same is true of the Arvonians, Torgoth, Skaraans, BioMechs and even the TSN (including the allied Terran ships) Ximni and Pirates.

Note that the taunts are defined for all races because it is possible to create a player ship in a script under the control of the AI. (The same goes for "friendly" ships) In this case, you would see and be able to use the taunts for the TSN, Ximni or Pirates on those ships. I don't remember if the enemy fleets in PvP can be taunted by the other side, but if they can, that's another place where you can use the taunts for the player races or the Terran NPC ships.

The various race keys are not associated with taunts, but rather the faction's behavior in the game. Obviously, "player" and "friendly" define the available player ships and the faction used for the allied NPC ships in the game. As noted in the link Dave posted, the third key "enemy" denotes the other side in the game, and all three keys MUST be defined in the raceKeys blocks or the game will crash. It is possible to define a faction that is neither "player", "friendly" nor "enemy", and this race will simply never appear in the normal modes of the game. It (and its ships) can only appear in scripts.

The linked protocols also implies that "standard", "support" or "loner" must be similar defined in the raceKeys for the game to work, but in fact I have determined that the required values are "standard", "support", "hasspecials" and "biomech". All other keys appear to be optional. You need the first three keys so the enemies can be generated in the standard game, and the "biomech" key is obviously needed if you set the game to include "Monsters".

Here's what I have found for the various keys:

  • player - As noted, this side will consist of player ships, and ONLY player ships. Taunts come into play in scripts and if the ship shows up as part of the fleet in PvP, as noted above.
  • friendly - This is the side of the allied AI controlled ships and bases. Players cannot taunt ships on their own side, but again, the taunts can come into play in scripts or PvP.
  • enemy - Defines the "second" side, the enemies. Note that the sideValue of enemies is 1, while the players and their allies are sideValue 2. In scripts, you can use sideValue to create 3 or more different AI sides which will all fight each other.
  • standard - Interestingly, while only the Kraliens have this key in the current game, the code is written so that if there are two or more races with the "standard" key, a single fleet will be made up of ONLY that side. So you could create a new enemy race, call it "standard", and all fleets would be made up of mainly Kraliens or this new race, but not both.
  • support - The support key denotes a race that will provide one or two enemies to a fleet, but the rest will be of the "standard" type. Right now the Torgoth and Arvonians are the support races, and provide capital ships and carriers to the fleets, respectively.
  • loner - As you guessed, this key denotes enemies that do not form into fleets, but instead operate on their own. The Skaraans and BioMechs both fit this key, even though BioMechs are technically monsters and aren't part of the invasion force. However, I suspect this key doesn't do anything, because the loner behavior is built into the fleetValue parameter, and only "hasspecials" is an enemy that is created without a fleetValue. IIRC, if you define a race as "loner" and not "hasspecials" or "biomech", it won't appear in the game.
  • whalelover - This obviously applies to the Arvonians, who are known to love space whales, but there's been some speculation about what it does. It's assumed if a Torgoth attacks a whale, an Arvonian will defend it if nearby. In a recent post, however, Mike confirmed that if you the player attack a space whale, an Arvonian will refuse to surrender until you are destroyed.
  • whalehater - This key applies to Torgoth and (presumably) makes them attack whales. It is not known if they hunt other monsters for trophies, but it would be neat if they did.
  • biomech - This defines the BioMech faction. As noted above, if this key doesn't exist, the game will crash if you try to add monsters.
  • hasspecials - This defines the special abilities for the Skaraan faction. Note that you can add specials to ANY race. You can add hasspecials to Kraliens, Torgoth, or Arvonians, and they will start Warping and Teleporting around the map, doing High Energy Turns, and shooting down your torpedos. 😃 If you define the race as "standard" or "support" as well, it will group up in fleets, although it can complicate fleet handling if one ship has Warp or Teleport and other ships don't.
  • jumpmaster - Note this is the one tag that applies to the PLAYER factions, not the enemies. It activates the Combat Jump interface, allowing the Ximni and Pirates to use Combat Jump when they select Jump Drive. It also reduces the time of normal jumps, although IIRC the blackout period is not changed. Note that the efficiency of Jump Drive for Ximni ships is built into the ship, NOT a result of this key. (Pirates actually are less efficient with Jump Drive, although they have the faster windup and Combat Jump)

An unspecified tag is "Pirate", which is pulled from the actual name of the race, not any tags. This determines whether a ship of that faction is restricted from docking until it kills an enemy, and is treated like a pirate in the dialog. I am not sure why this isn't a race tag, but it works the same way, since both raceTags and race names are combined when a script is trying to identify a given race or hull during creation.

Note that while there is a "player" key for the various ship hulls, this is not the same as the raceKeys. If you'd like a list of hullKeys, here they are:
  • player - Defines a player ship. Ships with this tag (and not with "singleseat") will appear in the list of ships in the Ship Customization Screen.
  • carrier (when applied to a player ship) - This denotes a carrier ship which carries single seat craft. Player ships that are carriers will have a carrierload definition, and player ships that are not carriers have a single slot for a shuttle.
  • singleseat (when applied to a player ship) - Specifies a fighter or shuttle. Presumably, this tag suppresses the display of the ship in the ship list and instead makes it an option that can be selected for the fighter bay.
  • fighter - Denotes a fighter. Fighters can be loaded on carriers, but not on other player ships types. Eventually there will also be a key for "bomber", but that hasn't been defined yet, and for now bombers actually have the "fighter" key.
  • shuttle - Denotes a shuttle. A shuttle can be selected for the first slot in the fighter bay, and optionally in other slots for a carrier. The difference in performance between fighters and shuttles is due to how they are defined. These tags basically determine how you can set the loadout.
  • base - Defines a base station. Bases of the "friendly" race are friendly bases, while bases defined for the enemy races are enemy bases. Note bases can be made to switch sides in scripts, so this just defines how bases act in the standard game modes.
  • small - This is a generic key that specifies a small ship for that race. It does NOT effect how often this type appears in the game, as that's set by fleetCommonality. However, in a script you can use the key "small" to make sure you only get the smallest ship for each race. Or "small medium" to exclude the largest type. This is helpful for mods which changes the ship and race names, but keep these generic keys.
  • medium - Like small, this generic key specifies a moderately strong ship for that race.
  • large - Specifies the largest ship for that race.
  • carrier (when applied to a non-player ship or base) - Specifies an ai ship (or base) which will launch fighters. Note that the enemy race that uses this tag MUST be declared "support". "standard" enemies cannot be carriers. "Friendly" and "player" races CAN use this tag, and they will summon fighters defined for that same race. If you create a "player" ship as an AI controlled ship in a script, it WILL summon fighters if it has the "carrier" tag defined. So this serves double duty on player ships.
  • singleseat (when applied to a non-player ship) - Specifies the fighters that a "carrier" will launch. Again, when a "player" ship is created as an AI, it will summon the fighters that are defined for that race. (Note this means shuttles may be launched. I'll have to verify that.)
  • warship - This key appears to be a generic key for the "friendly" race, allowing either an Escort or Destroyer to be created in a script. (Excluding transports) It doesn't appear to have any in-game effect. It might effect how the AI is programmed for the ship, but it's more likely this depends on whether the ship has beams.
  • science - Uniquely identifies the Science Vessel. Could potentially effect the dialog when this ship is hailed.
  • cargo - Uniquely identifies the Bulk Cargo transport.
  • luxury - Uniquely identifies the Luxury Liner.
  • transport - Identifies the transport.
  • asteroideater - Identifies a BioMech stage that feeds on asteroids to grow. Not sure if this actually affects the game, or is just a generic tag for scripting. Note there are two "asteroideater" BioMechs, which are differentiated with the "small" or "medium" tag.
  • anomalyeater - Identifies a BioMech stage that feeds on anomalies to grow. Again, there are two BioMechs with the "large" tag, and they are differentiated with this tag and the next.
  • sentient - Identifies a BioMech of the final stage.

Posts: 3,008
Reply with quote  #5 
I'll add that taunts were first added to the hullRace block in 2.0. In the 1.x versions of Artemis, the taunts were presumably hardcoded and could not be changed. Player and friendly ships might not have had taunts at that time. (There was no PvP mode and 2.0 introduced the idea of friendly and enemy ships being interchangeable, depending on which side you are on)
Mike Substelny

Avatar / Picture

Posts: 2,404
Reply with quote  #6 
Ryley did a great job of explaining these. At this moment I can only think of a couple of things to clarify and those only involve scripted missions:

If a race is defined as "hasspecials" then every ship spawned with that race tag will be assigned random elite abilities. This has an effect in mission scripts. If your script spawns a hasspecials ship it will come pre-loaded with elite abilities. If your script needs to customize the ability loadout you should turn on the abilities you want and turn off the ones you don't want. Your script must do this one line at a time. Note that your script can add elite abilities to any ship of any other race and you don't need to worry about turning off the abilities you don't want.

Unless Thom made a change I haven't noticed, the BioMech life cycle, including eating asteroids and anomalies or reproducing, is part of the "Story Captain" function. Story Captains are the little adventures crews can experience in an Seige Mode game, like "Help! We're out of energy!" or "We have taken control of this ship! Don't come near us or we'll blow it up!" Story Captains do not function in mission scripts, so BioMechs in your mission scripts will not eat asteroids or anomalies and will not reproduce.

"The Admiralty had demanded six ships; the economists offered four; and we finally compromised on eight."
- Winston Churchill

Posts: 3,008
Reply with quote  #7 
Originally Posted by Mike Substelny

Unless Thom made a change I haven't noticed, the BioMech life cycle, including eating asteroids and anomalies or reproducing, is part of the "Story Captain" function. Story Captains are the little adventures crews can experience in an Seige Mode game, like "Help! We're out of energy!" or "We have taken control of this ship! Don't come near us or we'll blow it up!" Story Captains do not function in mission scripts, so BioMechs in your mission scripts will not eat asteroids or anomalies and will not reproduce.

True enough, although setting BioMechs to sideValue 3, giving them an appropriate brain stack (hunt players and AI ships if they get too close) and setting them to randomly move from asteroid field to asteroid field will cause them to act like they did prior to the life cycle being completed.

A bit more code would be needed to make Stage 3's hunt anomalies and Stage 4's breed, but I'm pretty sure it can be done. The same goes with the aggression behavior, although you won't be able to change the BioMech's color.


Posts: 163
Reply with quote  #8 
Thanks for the thorough replies, guys. Much appreciated! [smile]
Previous Topic | Next Topic

Quick Navigation:

Easily create a Forum Website with Website Toolbox.