Text-based front-end to Kirok
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.



Command line interface to kirok.

Object Manipulation

Objects have named properties and attributes. Properties are data, attributes denote behavior (implies interface) that can
also have data to further define the behavior. e.g., explosive has damage and type (fire, energy, etc.)

Object.name - refers to an Object property
Object:name - refers to an Object attribute

Prefix Shortcuts:
. - 'with' context (default root)
# - scratchpad context
$ - Catalog
: - attribute operator
% - alias expansion

objectref = [.][object. ...]object
propref = objectref.name
attributeref = objectref:attribute
attributedata = attributeref.objectref


Creating Objects
mk [from] prototype [as] [bag. ...]name [[bag. ...]name]

mk from #.Phaser1 as Enterprise.PrimaryHull.ForwardSection.Phaser1-1
mk from #.Phaser2 as Enterprise.PrimaryHull.ForwardSection.Phaser2-1
mk from #.Phaser2 as Enterprise.PrimaryHull.ForwardSection.Phaser2-2
mk #.Phaser3 Enterprise.PrimaryHull.ForwardSection.Phaser3-1
mk #.Phaser3 Enterprise.PrimaryHull.ForwardSection.Phaser3-2
mk #.Phaser3 Enterprise.PrimaryHull.ForwardSection.Phaser3-3
mk #.Phaser3 Enterprise.PrimaryHull.ForwardSection.Phaser3-4

Create a prototype Object and copy it multiple times
mktmp Catalog.Phaser1 #.Phaser1
with #.Phaser1
.facing = ABCDEF
.range = 20
: chargable
: buildable

with Enterprise.PrimaryHull.ForwardSection
cp #.phaser1 .phaser1-1
cp #.phaser2 .phaser2-1 .phaser2-2
cp #.phaser3 .phaser3-1 .phaser3-2 .phaser3-3

Set the focus to a particular bag:
with Enterprise.PrimaryHull.ForwardSection
mk Catalog.Phaser1 as .Phaser1-1
mk Catalog.Phaser2 as .Phaser2-1 .Phaser2-2
mk Catalog.Phaser3 as .Phaser3-1 .Phaser3-2 .Phaser3-3

Linking Objects
- Objects with unique names can be referenced directly

with Enterprise
ln .Battery1-1 .phaser1-1
ln .BAT1-1 .PH1-1

Items can be linked quickly if a route exists between the two:
route|rt component1 component2

If a route exists between the two components, then they are linked including any required intermediate components. 

Component classes can be used:

rt Battery Phaser1    - route any available battery to any Phaser1

A route is only created if there are available components to satisfy the route. The forcert command creates the route if 
at all possible:

rt force Battery Phaser1

To see if a route exists:

rt trace component1 component2


rt trace Battery Phaser1

1/85 : BAT1-1/50  -> COND3-2/100 -> COND2-1/100 -> COND1-5/74  -> PHA1-3/100
2/85 :                           +- COND2-2/100 -> COND1-3/100 -> PHA1-1/78
3/96*: BAT2-2/100 -> COND3-3/100 -> COND2-2/100 -> COND1-3/100 -> PHA1-1/78

Remove a component from a connection
un .BAT1-1

Deleteing Objects
rm Object [Object ..]

set object:attribute - sets attribute on object
unset object:attribute - unsets attribute on object

+ attribute - sets attribute on 'with' object
- attribute - removes attribute from 'with' object

can be chained:
with Enterprise

set Enterprise+movable-destructable

Listing Objects
ls # - list what's in the scratchpad
ls $ - list what's in the catalog
ls - list everything
ls : - lists all possible attributes
ls object: - lists all attributes on Object object

Referencing Objects
- If Object is a bag, support dot notation
- Object.Object.Object.Object

Create alias:
alias name=value
unalias name

alias lhs=Enterprise.PrimaryHull.ForwardSection
alias rhs=Enterprise.SecondayHull.EngineeringSection
rt %lhs %rhs

A system is a collection of components for a collective function. For example, a phaser bank not only requires power, 
but also a targeting computer and targeting control.

mksys is used to create a system from the required list of components, if they are available:

mksys template name [component ...]

The -force flag may be used to pull resources if not all required components are free:

mksys -force Phaser-1 PHA-1

If a specific component(s) is desired it may be specified:

mksys Phaser-1 PHA-1 .PHA1-1 .BAT3-2

Systems may disbanded with unsys:

unsys PHA-1


inflict system_name damage