The Last Goblin [v0.4]
The Guile version of Goblins has been updated to be able to speakOCapN, finally allowing Guile usersto be able to easily make awesome object-capability-securepeer-to-peer programs!What's more, the Guile and Racket versions of goblin-chat have beenupdated to be able to talk to each other over the network!
The Last Goblin [v0.4]
Here we see a small demo end-to-end encrypted, peer-to-peer chatprogram written in Goblins called goblin-chat.goblin-chat was written originally as a demo project forGoblins v0.7(over two years ago!) but is still impressive for what it delivers:both the core code for users and for chatrooms totals onlyapproximately 150 single lines of code (with no mention of the networkin the core code needed; Goblins provides a network abstration such thatsuch functionality is automatic once the program is connected toOCapN).
The power provided by Goblins' core integration with OCapN being shownoff deserves underlining: thanks to the power of OCapN, once the Guileversion of goblin-chat was ported (and Racket and Guile OCapNinteroperability was hammered out more generally), the Racket andGuile versions of goblin-chat communicating with each otherjust worked!
An ambush is a type of attack in fortress mode where a small force of enemy humanoids, typically goblins, attempts a sneak attack on your fortress. While smaller in scope than a full siege, ambushes are not related to the number of dwarves in your fortress, and so can be triggered by relatively small populations.
Ambushes are not announced immediately, and the attacking units are only revealed when your fortress becomes aware of the attackers, either when they set off a cage trap or come sufficiently close to a dwarf, caravan member, or pet (they ignore wildlife). Ambushes can also be discovered manually, but not spotted, if you happen upon on an invader corpse and some goblinite in one of your traps. Once an ambush squad is detected, an ambush will generate a major announcement, the wording of which depends on the invader.
Ambushes, just like sieges, nearly always happen at the end of a season, generally in the last 10-15 days of the season. Ambushes tend to arrive with caravans but can happen any time. Note that goblins will usually ambush with more than one squad (2 to 4), each of which will trigger a separate message and also has to be detected separately. If ambushers are caught in cage traps, they will be marked as Caged Prisoner in the unit screen. These prisoners can be dragged around between cages (or tossed over tall towers) without risk of a jailbreak, unlike goblin thieves. If you abandon your fortress while an ambush is active, you will receive the message "Your strength has been broken." Finally, when the leader of an ambush is killed (or captured), but not the other units, they will stand around and "wait" for their leader; this is probably a bug.
Goblin ambushes are usually announced with the message "An ambush! Curse them!", though this is occasionally modified to "A human has sprung from ambush!" if a captured human leads the squad (human civilizations themselves do not send ambushes, only sieges). Goblin ambushes are attracted by relatively high amounts of wealth; beyond a certain threshold, the higher the wealth, the more attractive your fortress becomes as a goblin ambush target.
Goblins usually enter the map with two to four squads, each of which must be detected separately. On the sliding scale of wealth attraction goblin ambushes lie squarely between thieves/snatchers and sieges, but are infinitely more annoying; snatchers are a mere nuisance and sieges can usually be dealt with, but you might not find an ambush until it's too late to prevent them from entering your fortress and slaughtering your populace (or staying outside of it and killing off your wood cutters, or your plant gatherers, or your livestock, or your fisherdwarvers, or your ambushers, or...). Dealing with the threat of a hidden ambush is an important element in military design.
It may be preferable to avoid goblin ambushes as much as possible by holding wealth down early on, and then creating a large number of high-value objects as possible in a short period of time on the way to "siege level" fortress wealth attraction. This reduces your exposure to ambushes, but means you have to deal with sieges off the bat instead.
If you manage to sufficiently anger an elven civilization by offering their traders wood-based items or by killing them off entirely, you may front an elven ambush, announced with the message "An ambush! Curse all friends of nature!". Elven ambushes are also possible if your civilization is enemies with the elves, which occasionally happens. Elven ambushes are similar to goblin ones, except that non-ranged elven warriors are laughable fighters. Elven archers, however, are a different story...
Necromancers will also occasionally ambush your fortress, if you are in range of their tower and they opt out of a full-on siege. Necromancer ambushes consist of several necromancers, each one being detected individually; an early warning sign for a necromancer ambush is the presence of undead in non-evil biomes. These ambushes are announced with "An ambush! Drive them out!". The necromancers themselves are harmless, being regular old unarmed humanoids; however, very bad things will happen if they manage to find their way within sight of any left-over goblin sieges, corpse or refuse stockpiles, or (Armok forbid) last month's dragon invader. For this reason it is highly recommended that fortresses within sounding range of a tower internalize or atom smash all of their meat byproducts, and set standing orders to "gather refuse from outside" and clean up any meaty outdoor bits.
Kobold ambushes are triggered by a long enough string of successful kobold thieveries, and are announced with the message "An ambush! Skulking Vermin!". This usually only happens when kobold thieves manage to steal from an outdoor cache of some sort that your dwarves cannot access for some reason, possibly fallen goblinite from or during an ongoing siege. Kobold ambushes are mostly notable for being much more annoying than kobold thieves, and should not be allowed to occur.
The last argument specifies whether or not to clone instances (objects that are from a custom class or are not created by the Object constructor. This value may be true or the function use for cloning instances. 041b061a72