Object-Oriented Analysis of GDW's Brilliant Lances

(GDW's Game for Starship Combat for Traveller: The New Era)


General Assumptions

All Ships, etc., were designed in accordance with v1.1 of Fire, Fusion, and Steel (FFS).

Thruster Plates are permitted at Tech Level 12+.


List of Object Classes (Shows Inheritence)
Description of Object Classes

1. Team
Each player (or team of players) will be referred to as a team.
In most traditional wargames, there are two teams.

2. Marker
This is the object class for all of the cardboard counters that are placed directly on the map. (This includes any metal and/or plastic miniatures used for ships, missiles, etc.)

2.1. Bogey
This is for all Markers capable of independent movement (i.e., ships and missiles).
All bogeys have an Owner (they are owned by the team to which they are assigned).

Bogey False/No Info Partial Info Full Info
Ship "It's a bogey." The displacement and congifuration, plus the basic ship type (if basic ship type is common); e.g., a Ronin-class Scout/Escort would be identified as a 100-dt scout/courier, while a Phantom-class Decoy Ship would be identified as a 200-dt far trader. The exact ship type (unless the exact ship type is unknown); e.g., a Ronin-class Scout/Escort would be identified correctly only if the sensing ship ever encountered one before.
Task Force "It's a bogey." "It's a task force." Number of ships, relative arrangement (i.e., formation, if any), plus partial info of all ships
"Fake" Task Force "It's a bogey." Knows it's a fake. Knows it's a fake.
Missile/Drone "It's a bogey." "It's either a missile or a sensor drone." Knows whether missile or drone; knows basic origin (i.e., Imperial, Solomani, Hiver, etc.).
Salvo "It's a bogey." "It's a salvo of missiles." Number of missiles.

2.1.1. Ship
This is specifically for individual ships.
A Ship object will always be comprised of several BlackBox objects. A ship must always have at least one PowerPlant. A ship almost always has a SublightDrive. It might even have two (both HEPlaR and gravitic thruster plate, for example).

2.1.2. Missile
This is specifically for individual missiles.
Each missile has a Controller: a missile Socket; a laser-comm or maser-comm SensorCommo; or, a MFD that is equipped with a laser-comm or a maser-comm. Because missiles are relatively simple, a Missile object will be considered a discreet (whole, indivisable) unit.

2.1.3. TaskForce
This is for a task force of ships (a group of allied ships moving in the same direction and at the same velocity, under a unified command).

2.1.4. Salvo
This is for a salvo of missiles (a group of missiles moving in the same direction and at the same velocity, directed by the same MFD against the same target).

2.2. Planetoid
This is for a solid planetary body, such as a planet, an asteroid, or a comet.
It may or may not be moving, but its movement (if any) will never change.
A ship may enter into an orbit about a planet, asteroid, or comet, and may use the planetoid as cover and concealment, making it harder for enemy sensors to detect him.

2.3. EMP
This is for the electromagnetic pulse (EMP) that results from the detonation of the thermonuclear bomb that powers the nuclear-pumped-laser warhead of an anti-starship missile.
An EMP lasts for about a turn, and interferes with sensors and commo gear.

3. BlackBox
This general class of object refers to any of the components that make up a ship (basically, any of the components from Fire, Fusion, and Steel).
Note that this class is a generic class; all instances of this class must actually be of a subclass.
Each BlackBox may be PoweredUp or PoweredDown. If PoweredUp, then subtract the BlackBox's PowerUsage from the Ship's PowerAvailable. If PoweredDown, then the BlackBox cannot be used this turn.
Note that some BlackBoxes may have more than one level of PowerUsage (different Gs for a SublightDrive, overpowering a laser Socket, reduced power production for a damaged PowerPlant, etc.).

3.1. SensorCommo
These components are used by ships and missiles to establish a target lock on other Markers, whether for target identification and acquisiton (sensors) or for communications and control (commo).
Each sensor and communicator has two damage records: Internal (for damage to the actual electronics) and Surface (for damage to the antenna).

3.1.1. Broadcast
These sensors and communicators affect all valid targets within an area.

3.1.1.1. Active
(ex.: Radio, Radar, Active EMS.)
These sensors are either Active or Standby. If Active, then the sensing ship can be more easily detected by hostile (PassiveFolding or PassiveFixed) sensors. If Standby, Then the sensor cannot be used.
(For convenience, Active will be considered the same as PoweredUp, and Standby will be considered the same as PoweredDown.)

3.1.1.2. PassiveFolding
(ex.: HRT Thermal, Passive EMS.)
These sensors are either Extended or Retracted. If Extended, then the sensing ship can be more easily detected by hostile (Active) sensors. If Retracted, then the sensor cannot be used.
(For convenience, Extended will be considered the same as PoweredUp, and Retracted will be considered the same as PoweredDown.)

3.1.1.3. PassiveFixed
(ex.: HRT Thermal, Passive EMS.)
These sensors can be used at all times.

3.1.2. Pinpoint
(ex.: Laser-Comm, Maser-Comm, Ladar.)
Each of these sensors/communicators can affect only one target.

3.1.2.1. MFD
A master fire director (MFD) is used to improve the accuracy of starship weapons. It can have socket weapons "slaved" to it, enabling its crewman to replace the crewmen of the socket weapons "slaved" to it, but all such weapons must be used against the exact same target. A MFD can instead be used to control a missile salvo.

3.2. Weapon
Each weapon can be used against one (and only one) target each turn.
(Exception: See PointDefense below.)
Certain weapons (spinal, laser sockets) will have the attribute overpowerAmount. This is used to calculate the extra power used when the weapon is over-powered.
Each weapon will have one damage record: Internal.

3.2.1. Socket
This is for the standard turret and barbette socket weapons.

3.2.1.1. PointDefense
This type of weapon unique to my campaign is a socket equipped with a specialized MFD and several laser focal arrays. The dedicated MFD permits the crewman to use each of the point defense lasers against a different incoming missile; the MFD does not give the usual bonuses against DiffMods.

3.2.2. Spinal
This is used for a spinal mount (meson gun or particle accelerator) on a large naval vessel or a laser "lance" on a fighter craft.

3.3. PowerPlant
Each power plant will have one damage record: Internal. Each PowerPlant (that is functional) contributes to the Ship's PowerAvailable. (Handle this by assigning a negative value to the PowerPlant's PowerUsage equal to its power production.)

3.3.1. Solar Power Plant
This subtype of power plant has an extra damage record: Surface.

3.4. SublightDrive
Each sublight drive will have two damage records: Internal and Surface.

3.5. JumpDrive
Each jump drive will have one damage record: Internal.

3.x. AllOtherParts
This is another generic class.

3.x.1. InternalParts
(ex.: Computer, Stateroom, Low Berth, etc.)
Each will have one damage record: Internal.

3.x.2. SurfaceParts
(ex.: Airlock, Cargo Hatch, Launch Port, etc.)
Each will have one damage record: Surface.

3.x.3. KitchenSink
(ex.: ?)
Each will have two damage records: Internal and Surface.

4. Bunker
This is for static emplacements, such as a starport, orbital city, or a "deep site" meson gun. These emplacements can participate in starship combat, but they cannot move, and they frequently cannot be targeted or damaged (e.g., deep sites).
A Bunker can have one or more BlackBox objects (Weapon, CommoSensor, and PowerPlant being the most common).
A Bunker will have a TargetSizeRating (comparable to the TargetSizeRating of a Bogey). An extreme value for the TargetSizeRating means that the Bunker cannot be targeted!

5. DamageRecord
Each BlackBox will have either one or two instances of this class: Surface, Internal, or both. Each of these records has the variables Max (for maximum damage capacity) and Current (for current damage level).

6. Skill
Each skill has a name, a level, a controlling attribute, and an asset (equal to the level plus the attribute).
Skills are used to resolve skill checks.
public int skillCk(
    int diffLevel )
{
  int d20 := [random # from 1 to 20];

  int asset2ck := this.asset();
  // remember, "this" is actually "[ship].[skill]"

  if (d20 == 1) // auto. Failure
  { if (d20 <= asset2ck - 10)
    { return -1 } // Cat.Fail.
    else { return 0 } // Failure
  }
  else if (d20 == 20) // auto. Success
  { if (d20 >= asset2ck + 10)
   { return 2 } // Outst. Suc.
    else { return 1 } // Success
  }
  else if (d20 >= asset2ck)
  { return 1 } // Success
  else { return 0 } // Failure
}

Skills can be grouped into certain categories:

(Initiative/Response):

(Movement):

(Communications/Intelligence):

(Offensive Fire):

(Defensive Fire):

(Damage Control):