The Spatials: Galactology update for 2016-06-27

Internal development notes, very slightly cleaned up and commented a week later.

TL;DR: vital thresholds, item consumption can require cash, direct action bar in info tool, squads, mods can declare keybindings, minimal event system for station attacks.

This past week marked the end of feature development for the 7th launch, and we are now (more or less) in feature freeze mode. Only fixes and minor enhancements will be done from now until the 7th, and lots of testing. As such the week was full of new developments that set the foundations for entire new game systems and major UI pieces. Who said indies don’t crunch?

- vitals needy thresholds
	optional system for checking needy status
	instead of a fixed min value, use a min value + sated value per vital component (to allow per-entity custom)
	when it transitions under min, a needy flag for the vital is activated, and it's always needy for it
	when it transitions over max, needy flag is removed
	this allows more than a single consumption

The vital algorithm was refined again, to make needy impulses “sticky” until a threshold has been reached. There’s two camps to this, one prefers this behavior, the other doesn’t. It could be interesting to switch individual entities between sticky thresholds and single thresholds. Maybe with a “binge” character trait, once we have those?

- item consumption can require cash
	introduce optional wallets
	wallet procs to check affordability, decrease amount, keep purchases log
	resources and items already have prices
	other objects can have a price-component
	vital sm and its users now check for affordability when searching for items and objects
	vital sm and its users now debit the price from the wallet when required
- stock control must update price-component
- display prices in item info
- pallet objects for vitals: only consume the set resource, not any other
Wallet info

Entities can how hold wallets full or not so full of credits. When they do they spend them in the products that are priced, be it a lunch or some fancy clothes. Despite visitors still not being fleshed out and basically acting as testing placeholders, they have been equipped with wallets, to test this new feature, and to serve as a source of income. Get them to spend their credits!

- direct action bar in info tool
	a slim panel is drawn in the bottom position
	shows a series of buttons, depending on the aspect of the selected entity
		walk to
		work on
	actions can opt into having a modal cursor when activated
		info tool then waits for next click, then calls action with coords
		draw label over action bar when in modal mode
		make action button highlight in modal mode
		disable modal mode with esc or on tool activate deactivate
		switch modal mode when an action is switched
- harden action bar and modal info cursor wrt destroyed entities
- fix spurious error in change notification
- action: center view
Actions in action

There’s finally a GUI for giving direct orders to your officers (or to anything else that accepts them, which will be also robots in the future). It’s flexible and adapts to the current status of the entity, with its action set dynamically calculated. A very basic set of actions has also been provided. The teleport action is too powerful, but for now it’s useful for testing.

The action bar is also available in the station, with the same functionality as in planets.

- squads
	action panel has an add and remove from squad button, then it can display button for each squad member
	click on button targets the member
	timer does ligthweight check to refresh entire bar
		matching ids in hashtable
	button label shows color, hp
	button label is under observer for vulnerable component, for perfect updating
	show mini face in squad button
	single click on squad button resets multiselect to one
	shift click in squad button can do multiselect
	"all" button selects all squad
	multiselect shows all actions for all selected but no dupe actions
		on click it is invoked for all matching
- formalize attack model a bit to allow for action matching
	add one component for each attack kind
	the attack model maker adds the comp and removes any previous one
	add registry for attacks
- create squad on planet by default
- one of each class at start
- add one distinct combat skill for each class
- limit squad size
- optional passed filter for action model, to allow more fine grained matching
- add default squad for new game in station
- update planet basic tutorial to mention squads, tab, actions
Squad bar

And with more V2 parity features, Galactology now has a squad bar. This feature will evolve in the future, but for now it consists of a set of up to 6 officers you can select to be always displayed above the action bar. When you select them all with the All button or the Tab key, all the orders you give will apply to all of them.

Some attack model refactoring was also done as part of this work, with the idea of finally providing targeted attack actions, but in the end there wasn’t enough time to do a good job, so it has been postponed post-release.

- declare keybindings at mod meta level
- allow info actions to request a keybinding name
	info tool must listen for kb and trigger action on keydown when valid
- tab keybinding for "all" button
	introduce concept of ToolShell-level keybindings for tools
	tab can be pressed inside any tool anytime to quickly select the entire squad and perform actions

Mods can now ask for keybindings to be registered in the mod manifest, and they will appear in the Options screen for customization like any built-in keybinding. Mods still have indirect access to the keyboard and must register a Tool to “play nice” with the rest of the GUI. To make this a bit more flexible tools can request a screen-global keyboard listener (only for their screen, not the entire game). Use this sparingly!

- minimal station attack event AI, with plenty warning and/or lead time wrt tick 0
	add spawnable npc lists to civs
	trigger checker
	invaders
		spawn some from a hostile civ in a random spot of the station
		add teleport fx and sound
		add critical alert
		add "a raid approaches" previous to spawn
			where? need more state?
	sneakers
		spawn one npc from a hostile civ in a random spot of the station in sneak mode
	deceivers
		spawn one visitor npc that is actually an hostile in disguise
More horror

And a very fitting end for a crazy week of coding. The station events system has been inaugurated, and its first guests are angry and armed. The station can now receive visits from raid parties, sneakers that hide unless spotted by a camera, and deceivers who look like a standard visitor. All of those events end up in bullets or worse, as to be expected. This is just three events out of the two dozens we have thought about, so a lot more is coming in the future.