PDA

View Full Version : Construct Variant: Programmed Constructs



Dove
2007-09-03, 04:02 AM
[New content in blue.]

Some time ago, I ran a one-off adventure with a pair of large stone golems in it. I had set up the golems with some specific commands--ignore anyone but casters, defend yourself if attacked, and so forth. I ruled that they followed these commands literally and mechanically, which had unexpected consequences when the players interacted with them. Everyone enjoyed the encounter immensely.

After some thought, I realized that there's a wonderful robot mythos to be drawn on here, and constructs fit it beautifully. Classic science fiction is filled with computers and robots which follow explicit programming to unexpected ends--and that makes for fun stories.

From a campaign perspective, I like this construct mod very much. It makes constructs a fundamentally different sort of enemy than others, and provides an easy way to introduce credible puzzles--something my group enjoys. The only drawback is that it is now harder to use them as mage-killing guardians.

I've run these rules in this campaign for a few sessions now, and the feedback from my players has generally been positive--but I've yet to see how it ultimately plays out.

-------------------

Introduction to modified constructs:

Construct types:

Constructs may be controlled by one of three methods:

1. They may be directly controlled. Controlled constructs respond well to arbitrary commands, but require direct supervision at all times and are helpless without someone 'driving' them. Draws on the mecha/probe mythos. Shield guardians are this sort of construct. An outside example is modern vehicles.

2. They may be programmed. Programmed constructs are clumsy to control directly. Instead, they are given an explicit set of instructions which they autonomously follow to the best of their abilities at all times. They are incapable of independant thought and prone to exploitation. Draws on the programmed robot mythos. Household servants and lone stone golem guardians of an ancient tomb are usually this sort of construct. An outside example are Asimov's Three Law robots.

3. They may be awakened. These constructs have free will, possibly constrained by prior programming. Awakened constructs are required to follow any immutable programming they posess, but where their programming is silent, they are free. Draws on the android mythos. Inevitables are this sort of construct. Outside examples are RoboCop and Commander Data.

-----------------

How Programmed Constructs Work:

A programmed construct has a set of four to eight command "slots", each of which is filled with a command. These commands are generally simple, represented as a sentence in plain English.

A programmed construct will fulfill each higher priority command slot as a top priority, to the exclusion of lower slots. However, if it is possible to accomplish both a high and a low priority goal, it will do both.

Here is an example of a construct my party faced early on in the campaign: (It was a largish stone golem which they had no chance of fighting).

Remain within thirty feet of the cave mouth. Remain at ease while peaceful Yuan-Ti are present. Destroy all living creatures. Sound the alarm if attacking or being attacked.


Without knowledge of its programming this construct is quite dangerous--it remains inert until approached closer than 30 feet, at which point it becomes agressive and alerts the entire area to intruders.

However, with knowledge of its programming, exploits become clear. It is possible to (noisily) destroy it with ranged attacks (though the hefty 10/Adamantine DR still applies). Alternatively, find a peaceful Yuan-Ti or make it believe you are one, and you can slip past unhindered.

Gory Detail On Command Slots

While generally represented in plain English, a command slot really holds a complex arcane formula dictating every detail of an action. It cannot hold an arbitrary command, and is generally limited in scope and interpretation. Constructs have no intelligence and are not capable of interpreting complex commands which require judgement, ingenuity, or even actions it has not been told how to do. All behavior must be explicitly specified in advance.

A command slot can hold behavior as broad in scope as one or at most two related "tricks" taught to animals together with trigger conditions and constraints. However, specialized constructs have underlying knowledge which allow them to perform tasks much more complex than any animal can.

At creation, a construct may be imbued with innate specialized knowledge appropriate to its tasks. For example, a construct may be given a routine to "Clean the kitchen", complete with collecting and cleaning dishes, putting away and organizing ingredients and utensils, and mopping the floor. In a sophisticated construct, this routine may work on any kitchen--but generally it only works in a given one. At any rate, despite the behavior being complex, it is the same routine every time, carried out mechanically.

Innate knowledge is set at creation and cannot be changed or improved thereafter. Most constructs are given an innate understanding of how to effectively function in combat (though the exact strategy will vary from construct to construct). Some may be given specific battle strategies, an ability to write in certain languages, or knowledge of the complex controls of specific machinery (which it may then operate flawlessly). These routines are usually quite general. It is uncommon to encounter a construct with a built-in interpretation of something usually requiring judgement--such as "guard the cave"--unless the creator is sure she wanted every cave guarded according to exactly the same strategy.

Example Commands:

Destroy all living creatures within 200 feet of the door. (Valid - Construct has an innate definition of living creature and combat, and is given a visual/tacticle definition of "the door" when the command is set.) When commanded by any guest, play whatever music is set up on the harpsichord. (Valid - assuming the construct has an innate understanding of musical notation. Of course, the musical interpretation is rather mechanical ;) ). Do whatever John tells you to. (Not valid - the construct has no way to interpret arbitrary commands.) Destroy any target John gives you, and desist on his command. (Valid)

Constructs, like most beings, are limited in perception to what they can see, hear, and feel. Trigger conditions are frequently vulnerable to exploitation through disguises and illusions. There is one exception to this: A construct has a permanent and supernatural connection to its master(s), and always knows who and where its masters are. A construct told to "find its master" cannot follow an intelligent route, but will always head in the right direction. (Note: I'm considering placing constructs under "Find The Path" with respect to their masters, but this might be a bit much. The idea is that they come when called and a clever player with a lot of construct control resources can use the lowly golem guardian to find the hiding lich. Advice on this front would be appreciated.)

Due to the clumsiness of direct control, most constructs used in warfare or as personal servants are either awakened or commanded. Programmed constructs are most commonly encountered as guardians in remote places, or servants given simple tasks.

Command slots may have the following characteristics:
They may be suppressed. These slots are treated as empty, the construct ignoring any commands they contain. Suppressed command slots show as "empty" to the scan spell. They may be mutable or immutable (set at creation). The contents of mutable command slots can be changed, but the contents of immutable Command Slots cannot be changed by any means. (This will make more sense when you see the spells.) They may be hidden (set at creation). Hidden command slots, though still active, show as "empty" to spells which scan the construct. They may be masked. Masked command slots scan as one thing, but operate as another.


A command slot may reference other command slots in a general way. For example, a valid command is "When asked, open the door for anyone protected by command #1". However, it is not possible to store a full copy of one command slot in another, and under no condition may a Command Slot change the contents of another command slot, or add to or change the construct's master(s). Constructs are capable of reading their own Hidden Command Slots, and are not aware of or fooled by masks. However, they treat Suppressed Command Slots as empty.


Gory Detail On Masked Command Slots
A masked slot has two elements: the Clear Command and the Mask.

The Clear Command represents the true contents of the Command Slot, and is a command in the usual way. It is subject to all the same constraints as other Command Slot contents, and is obeyed by the construct just like any other command.

The Mask is shown when spells like Scan Construct are used to read command slots. These spells show the Mask in the Command Slot, instead of the Clear Command, and give no indication that the Clear Command exists. The Mask has no other affect on the construct, and does not change its behavior in any way.

Due to space limitations, it is not possible to store two full commands in the same slot. Therefore, Masks are limited to a simple form. Masks may only take the form of passive constraints, and cannot be full-fledged active commands. A Mask always appears to limit a construct's actions, and never takes a form which would authorize any new activity. The plain language representation has the following form: "Do not [positive action or actions] [under condition or conditions]."

Any construct can store at most one masked Command Slot at a time.

Some examples of constraints and non-constraints:

A guardian stone golem:

Do not move farther than 30 feet from the cave mouth. (Constraint; suspicious) Do not engage in combat or movement while peaceful Yuan-Ti are present. (Constraint; suspicious) Destroy all living creatures. (Not a constraint) Sound the alarm if attacking or being attacked. (Not a constraint)



An enchanted broom:

Put yourself away and come back out when commanded. (Not a constraint) Sweep any dirty surfaces you find. (Not a constraint) Do not leave the castle.(Constraint; suspicious) Roam freely. (Not a constraint)



A mask must always forbid a positive action, and never enables it. A command such as "Do not remain silent" is not a valid mask, as it requires positive action. When Scan Construct translates arcane formulas to plain language, potential Masks are always translated beginning with the words "Do not".

Scan Construct is a translation from a complex arcane formula, so equivalent command wordings are considered the same command. Therefore, if a command can be re-worded as a Mask, this may be done without changing the apparent contents of the slot. (Metagame - All potential constraints should begin with the words "Do not," so there is no confusion. But in the case of an oversight, a command such as "Remain silent" may be covered with a Mask of "Do not make sound," and the scanning spells will not detect a difference.)

Any effect which changes the contents of a Command Slot reveals the existence of the Mask. At the caster's option, the Mask may be discarded or retained. The Clear Command is not revealed and is erased in the process of replacing the command.

Command Slot Property Summary

{table]Command Slot Property|Origin|Removed By|Scan Effects|Other Effects
Immutable|Set at creation|N/A|Scan reveals slot is immutible.|Slot contents cannot be changed by any means.
Hidden|Set at creation|N/A|Slot shown as empty. Nothing can reveal its contents.|None.
Suppressed|Suppress Command|Dispel Magic and similar|Slot shown as empty.|Construct ignores Slot contents.
Masked|Mask Command|Changing Command Slot contents.|Scan shows Mask.|None.[/table]

Command Slot Combination Table
{table]|Immutable|Hidden|Suppressed|Masked
Immutable||Scan: (Immutable) Empty.| Scan: (Immutable) Empty | Scan: (Immutible) Mask.
Hidden|Scan: (Immutable) Empty.||Scan: Empty.|Illegal (Mask Command fails).
Suppressed|Scan: (Immutable) Empty.|Scan: Empty.||Scan: Empty.
Masked|Scan: (Immutable) Mask.|Illegal (Mask Command fails)|Scan: Empty.|[/table]




------------
The Spells

Of course, the point of all of this is to have fun messing with their programming. :) Here are the spells I have written to go along with the concept:

Hide From Constructs
Abjuration
Level: Sor/Wiz 1
Components: V, S, M
Casting Time: 1 Standard Action
Range: Touch
Targets: One touched creature / level
Duration: 10 min. / level
Save: Will negates (harmless)
Spell Resistance: Yes

Constructs cannot see, hear, or smell the warded creatures. Even extraordinary or supernatural sensory capabilities, such as blindsense, blindsight, scent, and tremorsense, cannot detect or locate the warded creatures. Constructs simply act as though the warded creatures are not there.
An intelligent (awakened) construct gets a single Will saving throw. If it fails, the subject can’t see any of the warded creatures. However, if it has reason to believe unseen opponents are present, it can attempt to find or strike them.
If a warded creature touches a construct or attacks any creature, even with a spell, the spell ends for all recipients.
Material component: A bit of cloth woven of thin copper fibers.

Probe Command
Divination
Level: Sor/Wiz 2
Components: V, S, M
Casting Time: 1 Standard Action
Range: Medium (100 ft. + 10 ft./level)
Targets: One programmed construct
Duration: Instantaneous
Save: No; Special (see text)
Spell Resistance: No.

Upon casting this spell, you immediately learn the number of Command Slots the targeted construct has. You may then choose one slot from the set. Probe Command reveals the contents of that slot, provided the slot is not Suppressed, Hidden or Masked. If the Command Slot is immutable, this is revealed.
Any Suppressed or Hidden slots which are probed are shown as empty. Any Masked slot which is probed reveals the Mask, but not the Clear Command or the fact that the Command Slot is masked.
If the probed Command Slot holds a potential mask (a command beginning with "Do not"), you may attempt a caster level check (1d20 + caster level) against the Command Slot DC (10 + Construct Hit Dice + command slot priority above lowest slot). If you succeed on this check, Probe Command reveals whether the slot is Masked, and if so, reveals the the Clear Command.
The subject construct is not especially aware of the casting of this spell or that it is the target. It will take no actions against you (even if it sees you casting) unless it would do so otherwise—for example, if it had been commanded to attack anyone casting a spell.
This spell does not work on awakened constructs, constructs designed to operate under direct supervision and command, or other constructs which are not programmed.
Material Component: A pair of thin copper rods.


Scan Construct
Divination
Level: Sor/Wiz 3
Components: V, S
Casting Time: 1 Standard Action
Range: Medium (100 ft. + 10 ft./level)
Targets: One construct with commands.
Duration: Instantaneous
Save: None
Spell Resistance: No

You know the commands a single construct is currently set to obey. The exact contents of its command slots are revealed to you, so that you are capable of fully specifying the construct's behavior. This spell reveals only active and visible command slots; suppressed or hidden command slots are shown as empty.
The subject construct is not especially aware of the casting of this spell or that it is the target. It will take no actions against you (even if it sees you casting) unless it would do so otherwise—for example, if it had been commanded to attack anyone casting a spell.
This spell does not work on awakened constructs, constructs designed to operate under direct supervision and command, or other constructs which are not programmed.
Constructs designed at creation with immutable commands may still be scanned, and this spell will reveal that those commands are immutable.
If the casting time is extended to ten minutes, this spell will also reveal the full details of any innate behavior and knowledge the construct posesses.


Suppress Command
Transmutation
Level: Sor/Wiz 3
Components: S, F
Casting Time: 1 Standard Action
Range: Close (25 ft. + 5 ft./level)
Targets: One construct command slot.
Duration: Permanent
Save: No; Special (see text).
Spell Resistance: No

You suppress a single command slot, causing the construct to behave as though that command slot was empty. Any command currently in the slot or entered after this spell is cast is ignored.
To cast this spell successfully, you must succeed on a caster level check (1d20 + caster level) against the command slot (10 + Construct Hit Dice + command slot priority above lowest slot). For example, the DC for a 12 HD stone golem with 6 command slots would be 10 + 12 + 4 = 26 for its second highest priority command slot.
The construct is not especially aware of the casting of this spell or that it is the target. It will take no actions against you (even if it sees you casting) unless it would do so otherwise—for example, if it had been commanded to attack anyone casting a spell.
This spell does not work on awakened constructs, constructs designed to operate under direct supervision and command, or other constructs which are not programmed. Constructs designed at creation with immutable commands may still be targeted. Immutable commands cannot be changed, but the slot can be suppressed.
The effect of this spell is permanent. A construct’s creator may not simply re-fill the suppressed command slot, as any entered command will be ignored. However, the effect can be removed as a spell effects generally can by Dispel Magic, Break Enchantment, Greater Dispel Magic, Antimagic Field, Limited Wish, Wish, or Miracle.
A construct with no commands takes no actions, and is considered helpless.
Arcane Focus: A tiny silver net worth 25 gp.


Replace Command
Transmutation
Level: Sor/Wiz 4
Components: V, S
Casting Time: 1 Standard Action
Range: Close (25 ft. + 5 ft./level)
Targets: One mutable construct command slot.
Duration: Instantaneous
Save: No; Special (see text).
Spell Resistance: No

You replace the contents of a single command slot, erasing any previous command.
To cast this spell successfully, you must succeed on a caster level check (1d20 + caster level) against the command slot (DC 10 + Construct Hit Dice + command slot priority above lowest slot). For example, the DC for a 12 HD stone golem with 6 command slots would be 10 + 12 + 4 = 26 for its second highest priority command slot.
The construct is not especially aware of the casting of this spell or that it is the target. It will take no actions against you (even if it sees you casting) unless it would do so otherwise—for example, if it had been commanded to attack anyone casting a spell.
This spell does not work on awakened constructs, constructs designed to operate under direct supervision and command, or other constructs which are not programmed. Constructs designed at creation with immutable commands may not be targeted unless they have mutable command slots as well.
This spell has an instantaneous effect and cannot be reversed or dispelled in any way. However, this spell does not hinder a construct’s creator from changing the command as a move action (as she can usually do). A second casting of this spell can also change the command.
Material Component: A rare pearl worth 250 gp.


Mask Command
Abjuration
Level: Sor/Wiz 5
Components: V, S, M
Casting Time: 1 Standard Action
Range: Close (25 ft. + 5 ft./level)
Targets: One construct Command Slot
Duration: Instantaneous
Save: No; Special (see text)
Spell Resistance: No.

You create a Mask over the targeted Command Slot. The superficial appearance of the Command Slot is changed so that Scan Construct shows the Mask in the slot instead of the Clear Command.
This spell does not affect the behavior of the target construct in any way. It continues to obey the original contents of the Command Slot, which persist as the Clear Command.
A Mask is a permanent, non-magical change to a Command Slot. It cannot be dispelled or disjoined, nor is it suppressed in an Anti-magic field. A Mask can be removed by any effect which changes the contents of the Command Slot.
To cast this spell successfully, you must succeed on a caster level check (1d20 + caster level) against the command slot (10 + Construct Hit Dice + command slot priority above lowest slot). For example, the DC for a 12 HD stone golem with 6 command slots would be 10 + 12 + 4 = 26 for its second highest priority command slot. If this check fails, the spell is not cast, and you gain no information about what would have happened had the check succeeded.
If the targeted slot already has a Mask, the new Mask replaces the old one. You do not learn that the Command Slot was masked, nor do you learn what the Clear Command is.
If the target already has a Mask on a different Command Slot, this spell fails and you learn that the construct already has a Mask in a different Command Slot.
If a hidden Command Slot is targeted, the spell fails and you learn that the targeted Command Slot is Hidden.
A Mask must always take the form of a constraint, and cannot command any new action or activity.
Material Component: A tiny hollow figurine of a mare.

Command Construct
Transmutation
Level: Sor/Wiz 6
Components: V, S, M
Casting Time: 1 Standard Action
Range: Close (25 ft. + 5 ft./level)
Targets: One construct with mutable command slots.
Duration: 1 min. / level
Save: No; Special (see text).
Spell Resistance: No

The subject of this spell regards you as one of its masters. For the duration of this spell, as a move action, you may change the contents of any mutable command slot as a move action, provided the construct can hear you. The construct is given a supernatural ability to recognize you for the duration of the spell and knows where you are.
Constructs speak a variety of specific arcane languages; the translation of your own language to this one is automatically carried out as part of this spell. Anyone who can hear you may make a DC 25 Knowledge (Arcane) check to understand what you are telling the construct to do. (Magical effects which permit understanding languages do not work on this.)
To cast this spell successfully, you must succeed on a caster level check (1d20 + caster level) against 10 + Construct Hit Dice + Number of Command Slots. For example, the DC for a 12 HD stone golem with 6 command slots would be 10 + 12 + 6 = 28.
The construct is not especially aware of the casting of this spell or that it is the target. It will take no actions against you (even if it sees you casting) unless it would do so otherwise—for example, if it had been commanded to attack anyone casting a spell.
This spell does not work on awakened constructs, constructs designed to operate under direct supervision and command, or other constructs which are not programmed. Constructs designed at creation with immutable commands may be targeted, but you cannot change immutable commands.
All command changes are an instantaneous effect and cannot be reversed or dispelled in any way. However, this spell does not hinder a construct’s original creator from changing the command as a move action (as she can usually do), even while the spell is in effect.
Material Component: A rare pearl worth 100 gp per construct HD.


Master Construct
Transmutation
Level: Sor/Wiz 9
Components: V, S, M
Casting Time: 1 minute
Range: Close (25 ft. + 5 ft./level)
Targets: One programmed construct
Duration: Instantaneous
Save: No; Special (see text).
Spell Resistance: No

The subject of this spell permanently regards you as one of its masters. As a move action, you may change the contents of any mutable command slot, provided the construct can hear you. The construct gains a pernament supernatural connection to you and always recognizes you and and knows where you are.
Constructs speak a variety of specific arcane languages; the translation of your own language to this one is automatically carried out as part of this spell. Anyone who can hear you may make a DC 25 Knowledge (Arcane) check to understand what you are telling the construct to do. (Magical effects which permit understanding languages do not work on this.)
To cast this spell successfully, you must succeed on a caster level check (1d20 + caster level) against 10 + Construct Hit Dice + Number of Command Slots. For example, the DC for a 12 HD stone golem with 6 command slots would be 10 + 12 + 6 = 28.
The effects of this spell in no way hinder the connection between a construct and its existing masters.
This effect is permanent. Construct masters cannot be removed by any means short of Wish or Miracle.
Material Component: A magically luminescent green diamond worth 1,000 gp per construct HD.


--------------------

Commentary is appreciated. I'm running a group with these rules right now, and so far the feedback I've gotten has been quite positive. My main concern is 'sploits. I have tried very hard not to leave any, but I'm sure there are some.

Some of my own thoughts:

- The caster level check is hefty, especially since hit dice outpace CR about 1.5-2:1 on constructs. I think this is a good thing--you can't just walk up and play with the golem's programming. I'm worried this might be too punishing, but if it is (or maybe even if it's not), I'm might introduce some sort of item which gives a bonus to the check.

- The obvious thing to preclude here is the mage easily acquiring an army of golems. Between the caster level check, the cost of casting, and the limitations of direct control, I think this has been effectively closed off. You can't acquire control of them reliably unless they're way, way below your CR. For the money, you'd generally be better off building them, though you can get lucky. I'm a little worried I might have overbalanced it here, though. Only playtesting will tell.

- I love how easy this makes it to introduce logic puzzles into campaigns. It makes golems a much richer enemy, and presents a real choice of "fight" or "exploit". Exploitation has its drawbacks. Two sessions back, the party snuck into an area past a golem and then realized they had to tread very carefully sneaking out. :xykon: Good times.

-----------------

That's it. Feedback appreciated.

- Dove

Zeta Kai
2007-09-03, 08:14 AM
Wow, this is a brilliant concept & is very nicely fleshed out. I simply must use this concept the next time my players run across a golem. I had a necromancer run into similar problems managing his skeleton army, but this is even better.

My only nitpick is that Suppress Command, Replace Command, Command Construct, Master Construct seem much more like Enchantment rather than Transmutation to me. Transmutation implies that something is being physically altered, whereas Enchantment denotes the desire to change another's mind, or in this case, cognitive programming. Just a thought.

Either way, Maximum Yoinkage.

Macrovore
2007-09-03, 10:31 AM
Enchantment spells are ALL mind-affecting, which ALL constructs are immune to. I know, it's a stupid rule, but that's how it is.

Mewtarthio
2007-09-03, 11:00 AM
I like it. Of course, it does seem kind of odd that Suppress Command has a small material component while Replace Command has nothing. For the example construct you mentioned, for instance, one could suppress the command to attack all intruders for a third-level spell and 25 gp OR one could replace that command with "attack self until destroyed" for a fourth-level spell. I know the cost is pretty much token, but it just seems a bit odd. Perhaps if the CL check to replace a command had a slight boost to the DC...

By the way, what determines how many command slots a construct gets? Is it determined uniquely for each construct, based off HD, bought with gp and xp upon creation, dependent on the owners caster level, dependent on some sort of skill (UMD, Spellcraft, etc), or some combination of the above? Allowing unlimited commands is pretty exploitable: Even though the average crafter won't waste time delineating thousands of commands to make the "perfect" non-sentient construct, it's a simple matter to crowd the low-priority slots with "meaningless" commands (eg "Every twelve minutes and thirteen seconds spent without encountering a Yuan-ti or intruder, twitch axe slightly") for the sole purpose of boosting the caster level DC for reprogramming.

Also, would I be same in assuming that the spell immunity of Golems does not protect against the construct programming spells?

Construct programming spells... I wonder if it would be worth it to put these all in a new subschool. That would simplify matters for the Golems ("Spells of the Programming subschool affect Golems as normal"), and it would also allow for special construct-based bonuses to apply (like getting a CL boost on all Construct Programming spells as part of a feat, for instance).

Dove
2007-09-03, 01:09 PM
My only nitpick is that Suppress Command, Replace Command, Command Construct, Master Construct seem much more like Enchantment rather than Transmutation to me. Transmutation implies that something is being physically altered, whereas Enchantment denotes the desire to change another's mind, or in this case, cognitive programming. Just a thought.

I gave this some careful thought. Enchantment effects are generally mind-affecting, but constructs don't have minds. Moreover, enchantment effects are rarely permanent, while almost all of these changes are. The justification for transmutation is that what you're really doing is introducing a physical, permanent change to the construct--moving around its gears or rearranging its arcana or however you spin it. It just happens to look superficially like you're affecting its mind.

Though I do have an enchantment and illusion focused sorcerer in my group who loves these spells--and rightly he should.


I like it. Of course, it does seem kind of odd that Suppress Command has a small material component while Replace Command has nothing. For the example construct you mentioned, for instance, one could suppress the command to attack all intruders for a third-level spell and 25 gp OR one could replace that command with "attack self until destroyed" for a fourth-level spell. I know the cost is pretty much token, but it just seems a bit odd. Perhaps if the CL check to replace a command had a slight boost to the DC...

Neither one actually has a material component. Suppress command has a focus--but that's mostly just a little physics joke. Silver net represents a little Faraday cage--it's isolating the command slot from everything else so it can't talk to the rest of the golem. 25 gp is a pittance, but the focus is nonetheless something you have to acquire before you come on constructs unawares.

Replace command probably deserves a material cost, though. I didn't want you to be able to rewrite a construct for free. I want reprogramming a construct to cost enough that, if you're lucky, you can get a construct on the cheap, but it's generally more efficient and effective to build one from scratch. However, this means a rising cost per HD, otherwise reprogramming the lowly animated broom isn't cost-effective, which gets rapidly annoying. How does 25 gold per construct HD sound? Or maybe just a straight 250? (Awfully cheap for those big 40 HD stone golems--but then they've got magical defenses coming out their ears, not the least of which is their FORTY FREAKIN HIT DICE...)


By the way, what determines how many command slots a construct gets? Is it determined uniquely for each construct, based off HD, bought with gp and xp upon creation, dependent on the owners caster level, dependent on some sort of skill (UMD, Spellcraft, etc), or some combination of the above?

I hadn't fully fleshed this out. As a guideline, constructs generally have 4 - 8 command slots, with larger or more sophisticated constructs having more. Approaching this from a DM perspective, the real answer is 'whatever gives the sort of challenge I'm looking for.' 8 command slots is enough to place that CL check out of reach, if I want to, while 4 is punishing but not as bad, especially if the good stuff is in lower priority slots.

I had been thinking that there are costs at creation associated with the number and sophistication of the command slots. I usually give combat-oriented constructs more, and service-oriented constructs less. The same is true of immutable commands and hidden commands; these are magical defenses which it costs something to implement.


Allowing unlimited commands is pretty exploitable: Even though the average crafter won't waste time delineating thousands of commands to make the "perfect" non-sentient construct, it's a simple matter to crowd the low-priority slots with "meaningless" commands (eg "Every twelve minutes and thirteen seconds spent without encountering a Yuan-ti or intruder, twitch axe slightly") for the sole purpose of boosting the caster level DC for reprogramming.

Indeed. This isn't an issue from a DM perspective, but players are another story entirely. There should be some rising--perhaps even exponentially rising--cost for more command slots.

But meaningless commands aren't a problem. I've allowed for "empty" slots which mean "ignore this slot and move on." Of course, an empty slot could really be a suppressed slot or even a hidden slot. You never know until the thing goes postal on you (:xykon:). It seems like it's safest to suppress slots that appear empty, but what about this guy:

(Immutable)(Hidden) Don't execute command 2. (Immutable)(Hidden) Activate the magical button which destroys the world. . . . instructions for guarding the button compound go here.


He, of course, scans as this:


(Immutable) Empty. (Immutable) Empty. . . . instructions for guarding the button compound.




Also, would I be same in assuming that the spell immunity of Golems does not protect against the construct programming spells?

Correct. Magic immunity applies to spells which allow spell resistance--which is already exploitable, as there are a choice few that don't, which work on Golems (Fire seeds is a favorite at my table). None of these spells allow spell resistance.


-----------

I appreciate the feedback. If you do decide to play this, I'd appreciate learning how it went. The party I'm playing it with is all 8th level. We're having a blast spamming "scan construct", but it'll be a while before we can really playtest the big spells.

Mewtarthio
2007-09-03, 07:41 PM
I've got an idea for a feat that could fit with this... [PEACH]

Craft Sleeper Construct
Prerequesites: Spellcraft 9 ranks

A sleeper construct is a construct designed with secret programming that remains dormant until certain conditions are met. A sleeper construct is crafted as normal until it is programmed, at which point two important changes are made: First, the construct is given a secret set of instructions called the "sleeper code," and second it is taught how to access this code.

Creating the sleeper code is simple enough. Cost per line is proportional to the cost of a corresponding line of overt code, but sleeper code is more difficult to create. A set of instructions in sleeper code costs 10% more than an equally large set of instructions in overt code. Furthermore, a sleeper construct does not forget its master when the sleeper code is activated, so the code may have to be made immutable if there is a risk that the master could suborn the activated construct. Sleeper code has no effect on the price of the construct unless the buyer knows it exists (for obvious reasons). Sleeper code cannot be read with the scan construct spell nor can it be altered by any other spell that deals with construct programming; it remains inaccessable until the construct itself accesses the code.

A construct that can respond to the command "Activate sleeper code" is generally the product of shoddy workmanship. The ability to access sleeper code is instead generally hidden within elsewhere within the construct's innate knowledge. Thus, the construct's sleeper code is triggered when it attempts to perform a certain action. For example, a construct designed for combat could be taught that washing the dishes involves activating its sleeper code. A nonsensical command could also be used as a trigger, such as biting a round square. It could even be taught to activate its sleeper code as part of a combat strategy, though this is more dangerous (see below).

Once the crafter has set the trigger, he makes a Spellcraft check. The result of this check is the DC to locate the trigger; anyone who uses the scan construct spell to get details on the construct's innate behavior may make a Spellcraft check against this DC. Success indicates that the scanner has found out how to activate the sleeper code (and, likely, that it exists at all), though he gains no other details on the code. Failure indicates that the scanner sees whatever the crafter has created to hide the trigger (in the case of nonsensical commands, the command itself is usually not noticed). If the trigger is part of an unhidden command line, the DC is reduced by 5. If the trigger is part of an unhidden immutable command line, the DC is reduced by another 5 for a total reduction of 10. Once the sleeper code is activated, it replaces the construct's current programming. The original programming is usually lost, though it's possible to set up a triggering condition that will restore it. Doing so requires hiding another trigger in the code using a different Spellcraft check; scanners also get a second check to detect this trigger.

Dove
2007-09-03, 10:03 PM
That's a classic hack--the back door. A very good reason to create, not commission, your constructs. :)

I think I see what you're getting at. Here's how such a construct would run, as you originally wrote it:



At Golems'R'Us, you bought a lovely broom to sweep out your castle. Scanning it, you find it had the following program.


Put yourself away and come back out when commanded. Sweep any area you find that's dirty. Freely roam within the castle.


This programming assumes a lot of innate knowledge. A longer scan lets you look closely at the definition of "sweep":

Move two and fro pushing dirt and particulates around until they collect into a pile. Sweep this pile into the corner, out the door, or into the fireplace. (If it is night time and you hear four sharp raps on the second story window, open it.)

The part in perentheses isn't visible unless you make a DC 25 caster level check, and can't be changed even if you do find it. Your broom is a ticking time bomb for the bandit that sold it to you.



---------

Hiding a back door deep in a subroutine has great precedent in real-world hacking, but I don't think that's the way I want to do it in D&D. The reason is that I want to keep the "programming" part as simple as possible without losing the logical feel. Characters may be smart enough to create constructs that can do things modern AI programmers can only dream of. Players and DMs . . . not so much.

So I hide all of the gory, technical, algorithmic details off in the "innate knowledge" section. That way, it's out of the way where we don't have to look at it. I don't have to expose players to pathing algorithms and graph traversals and definitions of sweeping, and they don't get to look for exploits in them. I put "Go to Mulberry Street" in a command and wave my hands and say, "It's a taxi golem. It knows how." And we all get to move on to the more interesting hacking-stuff-to-bits parts of the game.

As part of the contract with the players, if I don't have to create it, I don't get to hide traps in it. The innate knowledge section had better be straightforward, boring, and predictable. Sweep better mean sweep, or players are going to want to see the definition. And I don't want to have to write one.

However, I do like the idea. I like the idea of hidden exploits and backdoors which require extreme arcane effort to dig out. That deserves some sort of incarnation. And we can get about 90% of the way there with what we already have. Take that original broom. What if we did this?


Put yourself away and come back out when commanded. (Immutable) (Hidden) If it is night time and you hear four taps on the window, open it. Sweep any area you find that's dirty. Freely roam within the castle.



It's the same program, and it scans this way:

Put yourself away and come back out when commanded. (Immutable) Empty. Sweep any area you find that's dirty. Freely roam within the castle.


Now, if the shop is selling enchanted brooms to nobles and dandies, this will probably escape detection. Heck, it's a good day when they read the owner's manual, right? We get five nobles a week who can't remember the command word to make the broom come out of its corner. Who's going to pay hundreds of gold pieces for an independant mage to scan the new broom looking for suspicious programming? The same paranoid people who scan their groceries for poison and and their spellbooks for curses. They bought it from a reputable dealer, after all!

And even if they do scan it, that slot could be just about anything. Maybe the shop needed to fill up a slot. Maybe it's a suppressed command to pour wine on request (something that was ill-advised design in the first place, and needed to be suppressed after the fact). Who knows? Who cares?

Selling brooms to paranoid mages, on the other hand, the shop might have a problem. Some evening before you go to bed, you have a prepared Scan Construct to burn, and just for kicks, you scan the broom. Just for fun. Just to see how those fools down at Golems'R'Us programmed it. And lo and behold! An ominous immutable empty slot. That can only mean hidden programming, which can only mean treachery. Go get your money back, and sue for Selling Evil Brooms.

What you're really looking for is a devious way to hide or mask commands that might fool even a high level mage. Some way to allow your second-hand golem to turn on you at a critical moment, which you can never be completely sure you've dug out. That's evil. That's devious. I like it.

I can think of two ways to accomplish that.

Let's call the first idea a false command slot. A false command slot says one thing and means another. Our broom with a false command slot might look like this:


Actual commands: Put yourself away and come back out when commanded. (Immutable) (False) If it is night time and you hear four taps on the window, open it. Sweep any area you find that's dirty. Freely roam within the castle.

Scanned:
Put yourself away and come back out when commanded. (Immutable) Remain in your corner unless you have been told you can come out. Sweep any area you find that's dirty. Freely roam within the castle.


Of course, command 2 is suspiciously immutable and redundant, but we could perhaps allay suspicion by lifting the immutability. Then we just look slightly incompetent.

Let's call the second idea an invisible command slot. It's exactly what it sounds like: it's on the list, and you can't see it. Our broom now:


Actual commands: Put yourself away and come back out when commanded. (Immutable) (Invisible) If it is night time and you hear four taps on the window, open it. Sweep any area you find that's dirty. Freely roam within the castle.

Scanned:
Put yourself away and come back out when commanded. Sweep any area you find that's dirty. Freely roam within the castle.


That seems pretty wickedly cool, now doesn't it?

Can we get there?

--------------------

This leaves us with five command-slot modifiers:

Mutable/Immutable (set at creation) Suppressed/Active (Controlled by Suppress Command / Dispel Magic) Hidden / Visible (?) False / Straightforward (?) Invisible / Visible (?)


(Actually, Hidden is now a subset of False. We could remove it as redundant, or keep it and make it the lower-level/cheaper version.)

How should we control these settings? Let's say tentatively that I'll write spells for it. Suppress Command is already countered by Dispel Magic and its like. We could add Hide Command, False Command, and Invisible Command, at appropriate levels, to set the appropriate condition. We could add a Greater Scan, which reveals the true nature of any slot you make the caster level check for. And perhaps we can introduce Show Command to let you un-hide, un-falsify, or un-invisible commands. We could even add a low level Detect Monkey Business spell (working name only) which would tell us if commands were false/hidden/invisible, and perhaps even how many--but not which ones.

Does that sound cool and fun?

Let's think about the consequences.

--------------------

On the plus side, this magnifies the logical-puzzle potential enormously. A golem with seven commands might have been an ominous puzzle if two scanned as empty. But when other commands might be lurking, what do you do? Can you work out what their contents are through experiment? Can you work out courses of action that you know are safe based on the higher priority commands it must obey?

Again on the plus side, this introduces enormous room for subterfuge and drama. Can't face the lich? Get his golem to turn on him. Can't find the pirate's treasure? Get their animated, uh, anchor-winch-thing to record everywhere they've sailed.

On the minus side, this reduces the logical basis for the puzzles. The original goal of these commands was to allow players to reason through an encounter logically. But if they can't fully know the construct's behavior, they can't reliably reason from it. Hidden slots are bad enough - you still have to try to deduce their contents, but at least you know they're there and where they are on the list. False and Invisible slots could throw the whole game. You either scan the construct six ways from Sunday, or you don't try to reason with it--just expect it to do unreasonable things.

We *might* be able to mitigate the minus by making the more devious spells fairly high level, and making a fairly low-level Detect Monkey Business. Big mages could still fool big mages if we gave it a caster level check, and adventuring parties could still reason with constructs.

And I *really* like the idea of scanning a construct, seeing four reasonable commands, and Detect Monkey Business coming back and telling you, "One of these is false.". Oooh yeah. That's cool. For me. Probably not so much for the players. >:)

I can think of a big drawback, though. If there's monkey business going on, it's obvious you're trying to hide your construct's programming from nosy mages. If that's the case, though, why not make all of the commands false or invisible? Why leave the PCs anything to work with at all? That defeats the original purpose of the system.

-----------------

I'll think on it a bit more and post an update if I decide to incorporate the idea. In the mean time, let me know what you think of that.

DanielLC
2007-09-03, 11:06 PM
You could make relatively simple commands and still have purely logical, but unnoticable, backdoors. For example:

1.If you haven't changed masters, John Doe is your master.
2.If your master says someone else is your master, they become your master.
3.Avoid obsticles.
4.If your master says "Sweep this room", sweep that room.
5.If your master says "Sweep this house", sweep that house.
6.If you are more than 1 mile away from your master for at least a week, go to your master.

This all looks good, until you find out that John Doe gave the broom to a friend of his, and it stays his friend's when he pretends to sell it to you. It might not help John break in, but he can sell the same brooms over and over again in different cities.

Finerty
2007-09-04, 11:25 AM
... It might not help John break in, but he can sell the same brooms over and over again in different cities.
Ah, yes. The old Get-Rich-Quick Broom Reselling Racket. Very popular in it's time, considered to be the scourge of civilized kingdoms everywhere.

Mewtarthio
2007-09-04, 12:54 PM
On the plus side, this magnifies the logical-puzzle potential enormously. A golem with seven commands might have been an ominous puzzle if two scanned as empty. But when other commands might be lurking, what do you do? Can you work out what their contents are through experiment? Can you work out courses of action that you know are safe based on the higher priority commands it must obey?

Again on the plus side, this introduces enormous room for subterfuge and drama. Can't face the lich? Get his golem to turn on him. Can't find the pirate's treasure? Get their animated, uh, anchor-winch-thing to record everywhere they've sailed.

On the minus side, this reduces the logical basis for the puzzles. The original goal of these commands was to allow players to reason through an encounter logically. But if they can't fully know the construct's behavior, they can't reliably reason from it. Hidden slots are bad enough - you still have to try to deduce their contents, but at least you know they're there and where they are on the list. False and Invisible slots could throw the whole game. You either scan the construct six ways from Sunday, or you don't try to reason with it--just expect it to do unreasonable things.

We *might* be able to mitigate the minus by making the more devious spells fairly high level, and making a fairly low-level Detect Monkey Business. Big mages could still fool big mages if we gave it a caster level check, and adventuring parties could still reason with constructs.

And I *really* like the idea of scanning a construct, seeing four reasonable commands, and Detect Monkey Business coming back and telling you, "One of these is false.". Oooh yeah. That's cool. For me. Probably not so much for the players. >:)

I can think of a big drawback, though. If there's monkey business going on, it's obvious you're trying to hide your construct's programming from nosy mages. If that's the case, though, why not make all of the commands false or invisible? Why leave the PCs anything to work with at all? That defeats the original purpose of the system.

Yes, I see your point. However, the downsides could be mitigated by limiting the deceptive constructs to powerful specialists. In other words, making a construct with False or Invisible commands would require feats with high prerequesites or even a PrC. If the PCs encounter a golem simply guarding a tomb, odds are they can take it at face value. People would only go through the trouble of making a deceptive construct if they felt they had something to hide (say, the immutable command "Destroy anyone who enters the cave except your master" is actually a false cover for "Destroy anyone who enters the cave including your master"). Sure, it's possible that a wealthy and powerful construct builder has programmed all his constructs with hidden tasks, but it's not very cost-effective unless he's got good reason to suspect that somebody powerful enough to suborn his constructs will show up (in which case making the key commands immutable is probably more efficient).

Incidentally, you didn't get my system quite right, but in retrospect it was too complicated anyway. Your way is simpler, and just as useful if not more so.

--------

Another problem I was thinking about is this: The logic puzzles can be simply bypassed if the party is capable of casting one of the construct programming spells. Sure, the caster check is a problem, but saying "I repeatedly cast Suppress Command, hide in a a Rope Trick for eight hourse, and then do it again" is a lot easier than coming up with a plan to take advantage of the construct's programming. Granted, it's also ridiculously boring, but you can't underestimate the power of the easy way out. It's best to make that route less appealing. Would it be a reasonable suggestion to make the construct programming spells have a range of "Touch" instead of "Close"? That way, the players at least have to figure out how to get next to the construct without dying.

--------

Lastly, I'm wondering about the intelligent constructs you mentioned in your first post:

They may be awakened. These constructs have free will, possibly constrained by prior programming. Awakened constructs are required to follow any immutable programming they posess, but where their programming is silent, they are free. Draws on the android mythos. Inevitables are this sort of construct. Outside examples are RoboCop and Commander Data.

This description implies that awakened constructs can have programming, but all the construct programming spells contain the line "This spell does not work on awakened constructs, constructs designed to operate under direct supervision and command, or other constructs which are not programmed." I think that, since an awakened construct can be programmed, it should at least be scannable. The "Suppress Command" spell is a little vague as to whether or not you can suppress an immutable slot, but if so I'd give an awakened construct a Will save to resist.

LotharBot
2007-09-04, 04:16 PM
the downsides could be mitigated by limiting the deceptive constructs to powerful specialists.

Even so, this makes the default response to golems "scan them enough times to take 20 on your caster level check. Then kill them anyway because you don't know if there's a backdoor 'sploit."

It seems like the whole point of this particular system is to turn golems into a puzzle -- the sort of thing you can defeat by analyzing the programming and clever, careful use of the various spells, even when they're way out of your league combat-wise. If they have some reasonable chance of being deceptive, that removes the too-big-to-fight golem-as-puzzle aspect of the system (because bigger golems will be more likely to have backdoors anyway.)


The logic puzzles can be simply bypassed if the party is capable of casting one of the construct programming spells.

If there's no time pressure on your adventure, perhaps so. But then, that's true of just about anything... if you can "take 20" on your checks, you can bypass most any task.


I think that, since an awakened construct can be programmed, it should at least be scannable.

I agree.

Dove
2007-09-05, 02:12 AM
You could make relatively simple commands and still have purely logical, but unnoticable, backdoors. For example:

1.If you haven't changed masters, John Doe is your master.


:smallamused: You're right, players are just perverse to try something like that.

It seems to me that it ought to go without saying that command slots can't change the contents of other command slots, and they definitely can't add or change masters. That's way, way, way outside the bounds of "one or at most two related tricks," and completely defeats several of the existing spells and mechanics. But it ought to be said, anyway, because everyone is going to try at least once. I'll add that to the original post. In bold.

I'll comment, too, that a consequence of these rules is that mastership generally isn't transferred with ownership, unless the new owner is a mage who can cast a 9th level spell. A commissioned construct could certainly be created with the client as one of its masters, but candlesticks from GolemMart aren't going to come that way. If you want 'em reprogrammed, the dealership can do it for a small fee.


Yes, I see your point. However, the downsides could be mitigated by limiting the deceptive constructs to powerful specialists. In other words, making a construct with False or Invisible commands would require feats with high prerequesites or even a PrC. If the PCs encounter a golem simply guarding a tomb, odds are they can take it at face value. People would only go through the trouble of making a deceptive construct if they felt they had something to hide (say, the immutable command "Destroy anyone who enters the cave except your master" is actually a false cover for "Destroy anyone who enters the cave including your master"). Sure, it's possible that a wealthy and powerful construct builder has programmed all his constructs with hidden tasks, but it's not very cost-effective unless he's got good reason to suspect that somebody powerful enough to suborn his constructs will show up (in which case making the key commands immutable is probably more efficient).

Yeah, I've been going around and around with LotharBot about this suggestion, offline. As cool as it is to include deviously deceptive commands, it really has the potential to destroy the whole system.

As he put it to me yesterday, anything the PCs can do to a golem to fool the villian, the villian can do to a golem to fool the PCs--and it will have a much more devastating effect on the game. If you can scan a golem and reason from its contents, then you can possibly reason around a foe instead of fighting him. But if you can't trust Scan Construct, you can't really do this. And as the golems get bigger, instead of hacking becoming a more attractive option, it becomes less so--because the PCs can less afford to guess wrong.

Really, anything that lowers the player's trust in Scan Construct weakens the mechanic we've introduced. Fighting becomes more attractive, and we defeat our own system. Even one or two hidden commands near the top of the list can make a golem unpredictable enough that dealing with it isn't worth the risk and effort. False and Invisible commands make the situation hopeless. Players just can't reliably characterize the golem's behavior well enough to be able to exploit it. We change the genre from the classical sci-fi "reason from known axioms" to bad-puzzle "guess and hope you're not surprised". I am persuaded that this does enough damage to constructs as a monster that it's not worth what you gain from constructs as a suborned ally.

No, for this mechanic to be fun, players have to be able to trust the scan spell. Or at least be able to reliably know when they can trust it.

As for your suggestion to limit the use of deceptive command slots by making them expensive, difficult to obtain, or high level, I think that could get us part of the way there. We definitely need to limit their use if we allow them. But that doesn't get us all of the way there. The reason is that when we're talking logic puzzles, we need hard and fast rules. "This villian seems to have a lot of resources so some of these commands are untrustworthy" is just way too nebulous. It destroys the mechanic for that entire dungeon, as every command becomes unacceptably suspect. We need something crystal clear and unchanging, like "Either slot #2 or slot #4 is false, but not both."

I think I have just the medicine.

Forget everything I said in my last post about new slot types and spells. Instead, take the original post, together with this mod:



PEACH

New Command Slot property: Masked. A masked slot has two elements: the Clear Command and the Mask.

The Clear Command represents the true contents of the Command Slot, and is a command in the usual way. It is subject to all the same constraints as other Command Slot contents, and is obeyed by the construct in the usual way.

The Mask is shown to spells like Scan Construct used to learn the contents of command slots. These spells show the Mask instead of the Clear Command, and give no indication that the Clear Command exists. The Mask has no other affect on the construct, and does not change its behavior.

Due to space limitations, it is not possible to store two full commands in the same slot. Therefore, Masks are limited to a simple form. Masks may only take the form of passive constraints, and cannot be full-fledged active command. A Mask always appears to limit a construct's actions, and never takes a form which would authorize any new activity. The plain language representation has the following form: "Do not [positive action or actions] [under condition or conditions]."

Examples:



Here's what the stone golem looks like:


Do not move farther than 30 feet from the cave mouth. (Constraint; suspicious) Do not engage in combat or movement while peaceful Yuan-Ti are present. (Constraint; suspicious) Destroy all living creatures. (Not a constraint) Sound the alarm if attacking or being attacked. (Not a constraint)


The infamous broom:

Put yourself away and come back out when commanded. (Not a constraint) Sweep any dirty surfaces you find. (Not a constraint) Do not leave the castle. (Constraint -- could hide our devious command) Roam freely. (Not a constraint)



A mask must always forbid a positive action. A command such as "Do not remain silent" is not a valid mask, as it requires positive action. When Scan Construct translates arcane formulas to plain language, potential Masks are always translated beginning with the words "Do not".

As Scan Construct is a translation from a complex arcane formula, the wording may vary slightly from cast to cast. If a command can be re-worded as a Mask, this may be done without arousing suspicion. For example, if Scan Construct revealed a command of "Remain Silent," this could be replaced with a mask of "Do not make sound" and an underlying Clear Command. This change is subtle enough to escape the notice of subsequent casts of Scan Construct. (Metagame: DM's, please always start potential masks with "Do not". It'll save us all headaches. But, if you make an oversight, and players want to replace a command with a mask, here's the "fluff" reason why they can.)

Any construct can store at most one masked Command Slot at a time.

Any effect which changes the contents of a Command Slot reveals the existence of the Mask. At the caster's option, the Mask may be discarded or retained. The Clear Command is not revealed and is erased in the process of replacing the command.

Hidden Command Slots may not be Masked.

A Command Slot which is both Suppressed and Masked scans as empty.

Immutable Command Slots may be masked, but the mutability or immutability of a Command Slot cannot be disguised by any means.


New Spells:


Probe Command
Abjuration
Level: Sor/Wiz 2
Components: V, S, M
Casting Time: 1 Standard Action
Range: Medium (100 ft. + 10 ft./level)
Targets: One programmed construct
Duration: Instantaneous
Save: No; Special (see text)
Spell Resistance: No.

When casting this spell, you first learn the number of Command Slots the targeted construct has. You then learn the contents of one Command Slot of your choice. If the Command Slot is immutible, this is revealed.
Any Suppressed or Hidden slots which are probed are shown as empty. Any Masked slot which is probed reveals the Mask, but not the Clear Command or the fact that the Command Slot is masked.
If the slot probed is a constraint, you may attempt a caster level check (1d20 + caster level) against the Command Slot DC (10 + Construct Hit Dice + command slot priority above lowest slot). If you succeed on this check and the Command Slot is a masked slot, Probe Command reveals both the Mask and the Clear Command.
The subject construct is not especially aware of the casting of this spell or that it is the target. It will take no actions against you (even if it sees you casting) unless it would do so otherwise—for example, if it had been commanded to attack anyone casting a spell.
This spell does not work on awakened constructs, constructs designed to operate under direct supervision and command, or other constructs which are not programmed.
Material Component: A pair of thin copper rods.

Mask Command
Abjuration
Level: Sor/Wiz 5
Components: V, S, M
Casting Time: 1 Standard Action
Range: Close (25 ft. + 5 ft./level)
Targets: One construct Command Slot
Duration: Instantaneous
Save: No; Special (see text)
Spell Resistance: No.

A Mask of your choice is created over the targeted Command Slot. The original contents of this command slot persist as the Clear Command, which the construct continues to obey. However, Probe Command and Scan Construct display the Mask in this slot, not the Clear Command.
A Mask is a permanent, non-magical change to a Command Slot. It cannot be dispelled, disjoined, or suppressed by an Anti-magic field. A Mask can be removed by any effect which changes the contents of the Command Slot.
To cast this spell successfully, you must succeed on a caster level check (1d20 + caster level) against the command slot (10 + Construct Hit Dice + command slot priority above lowest slot). For example, the DC for a 12 HD stone golem with 6 command slots would be 10 + 12 + 4 = 26 for its second highest priority command slot. If this check fails, the spell is not cast, and you gain no information about what would have happened had the check succeeded.
If the targeted slot already has a Mask, the new Mask replaces the old one. You do not learn that the Command Slot was masked, or what the Clear Command is.
If the target already has a Mask on a different Command Slot, this spell fails and you learn the reason. You learn that the targeted Command Slot is not masked, but you do not gain any other information.
If a hidden Command Slot is targeted, the spell fails and you know the reason.
This spell only changes the superficial appearance of the Command Slot to Probe Command and Scan Construct. It does not affect the construct's behavior in any way.
A Mask must always take the form of a constraint, and cannot command any new action or activity.
Material Component: A tiny hollow figurine of a mare.



Some immediate thoughts on consequences:

- We have two forms of indirection, each following a slightly different philosophy:
Hidden Command Slots are set up at creation, and no one--not even a construct's master--can read them. These are the ultimate in "Don't Scan My Golem" security, but they are visible and obvious. Anyone can enter secret instructions, and everyone knows secret programming is in play. Masked Command Slots are set up by casters, and are more insidious. They are easy to miss and require a concerted effort to uncover. It is almost impossible to program a construct without constraints in high level slots, so any of your most trusted constructs could harbor malicious commands. However, suspicious players and villians can easily check constructs, and once uncovered, Masked commands lose all potency.

These form fundamentally different philosophies, and give the DM a wide range of possible challenges and styles, appropriate for different security-minded golem owners, ranging from the sensible to the paranoid.

- It's possible to sneak a Masked Command into a golem which the players can't uncover--especially a golem with a lot of hit dice--but even if you do, they still know some commands are real. And the limitation of the condition to constraints means the players can try to empirically verify all the suspect commands.

- The limited usefulness of Masked Commands means it's unlikely every golem will have one. For starters, they're only useful against foes who scan constructs in the first place. And they require creativity to deploy effectively. Unimaginitive owners are unlikely to bother.


--------------------------


Another problem I was thinking about is this: The logic puzzles can be simply bypassed if the party is capable of casting one of the construct programming spells. Sure, the caster check is a problem, but saying "I repeatedly cast Suppress Command, hide in a a Rope Trick for eight hourse, and then do it again" is a lot easier than coming up with a plan to take advantage of the construct's programming. Granted, it's also ridiculously boring, but you can't underestimate the power of the easy way out. It's best to make that route less appealing. Would it be a reasonable suggestion to make the construct programming spells have a range of "Touch" instead of "Close"? That way, the players at least have to figure out how to get next to the construct without dying.

Suppress Command is a kill-shot in a single cast. I went into this knowing it would be that way. It's very, very hard to program a construct which can't be exploited superficially. If you get to suppress a command--even just one!--it's game over.

There are mitigating factors.

The caster level check is an obvious one; that's the construct's save. If you as a DM are worried about a construct being hacked, give it extra command slots or more hit dice--it's that simple.

Another factor is that casting a spell causes Hide From Constructs to turn off. Close range is generally well within the danger zone. I don't want to make it touch, as touching a construct also kills Hide.

A third factor is hidden slots. It may not be obvious, but the order in which you suppress slots matters, and there isn't a "safe" order. Consider the following:


(Hidden) Do not move farther than twenty feet from the door. (Hidden) Do not attack any humans. (Hidden) Destroy all living creatures.


Depending on the circumstances, suppressing either #1 or #2 could make the thing attack you--you have no way to know which. You might think it would be safe to start at the bottom, but you'd be wrong:


(Hidden) Do not go farther than 40 feet from the door. (Hidden) Do not block the path of anyone protected by #4. (Hidden) Attack anyone you have seen cast a spell. (Hidden) Do not attack any humans, elves, or fey. (Hidden) Attack all living creatures.


Human caster casts "Scan" from a distance and sees Empty, Empty, Empty, Empty, Empty. Closes tentatively to 25 feet, nothing. Casts Suppress on #5, no response. Casts suppress on #4. As soon as he gets it off, it's the golem's turn, and the caster gets smooshed. Edit: Thanks to LotharBot. That golem had a bug on the first go.

Masks make it much worse. Show all commands, but mask #2 with "Do not attack any elves." >:)

Golem hacking is effective, no doubt. Highly effective. That's the point. But it's not always easy. Oh, it's not easy at all.

---------------------------


Lastly, I'm wondering about the intelligent constructs you mentioned in your first post:
[Quote="Dove"]They may be awakened. These constructs have free will, possibly constrained by prior programming. Awakened constructs are required to follow any immutable programming they posess, but where their programming is silent, they are free. Draws on the android mythos. Inevitables are this sort of construct. Outside examples are RoboCop and Commander Data.

This description implies that awakened constructs can have programming, but all the construct programming spells contain the line "This spell does not work on awakened constructs, constructs designed to operate under direct supervision and command, or other constructs which are not programmed." I think that, since an awakened construct can be programmed, it should at least be scannable. The "Suppress Command" spell is a little vague as to whether or not you can suppress an immutable slot, but if so I'd give an awakened construct a Will save to resist.

I hadn't fleshed it out very fully, but I was imagining it would work something like this:



Awakened constructs which begin life as programmed constructs absorb any immutable commands into their consciousness. These commands no longer function as command slots in the usual sense, nor can the awakened construct accept further commands.

An awakened construct follows her immutable programming and is not consciously capable of doing otherwise (though it may do so while under the effects of confusion or insanity). She is consciously aware of her programming and may either agree with it or hate it, but in any case, she has no choice but to follow it.

A programmed construct prepared specifically for awakening which is never activated in its programmed form may include programming more sophisticated than is usually permissible. Commands requiring judgement and interpretation, such as "Uphold the law," may be immutably transcribed on the consciousness of an awakened construct.

Hidden commands are possible, although the construct will usually be able to deduce what they are when they come into effect.


I don't want those things suppressible--I want them to be burdens that NPCs and (possibly even) characters cannot escape and must bear. I'm not sure Scan and the like apply, though I could see it. I was thinking Detect Thoughts or Mind Probe would be more appropriate.

I don't know though. Do you think it would be cool for awakened constructs to retain more of the functionality of their programmed cousins?

DanielLC
2007-09-05, 04:35 PM
You mentioned my broom thing wouldn't work because it can't change its master. Here are a few other ones. I'd also like to add another thing to commands: comments. whenever you read a command, you read the comments. You can tell they are comments. They have no effect on the construct. I will represent comments by placing them between /* and */.

This one will only work if your constructs have memory.
1. If your home hasn't changed, it's where you were created.
2. If your owner hasn't changed, it's who created you. /*This isn't the same as master. It's just a person it remembers.*/
3. The last place you where for over an hour when you could see your owner is your home. /*It's a good idea to keep the broom near where you sleep.*/
4. If your owner says someone else is your owner, they are your owner.
5. Avoid obsticles
6. If your owner says "clean this room", clean the room.
7. If your owner says "clean this house", wander the house randomly, cleaning it, until he says "stop cleaning".
8. If you don't see your owner for over a week, go home.

This one will require a good path-finding algorithm.
1. If someone says "broom, come", go to that person.
2. If a door blocks your ability to complete command 1 or 4, open it, go through it, and close it.
3. If you can't obey command 2 because the door is locked, unlock it.
4. If someone says "broom, go", go to where you were when you last heard someone say "broom, come".
5. If someone says "broom, clean room", clean that room.
6. If someone says "broom, clean house", randomly wander the house, cleaning.
All the thief has to do is go to the front door at night and say "broom, come".

Here's a different one. It's based on one mentioned earlier.
1. Kill anyone who comes within 30 ft. of the door.
2. Don't kill your master.
I wonder how many people will miss that one.

I'd like to add, if you make all the commands hidden, it's probably a good Idea to have at least one empty command to make sure the adventurers are never sure they found all of the commands. Also, if masking commands is cost prohibitive, make the first command empty.

Dove
2007-09-06, 01:19 AM
I'd also like to add another thing to commands: comments. whenever you read a command, you read the comments. You can tell they are comments. They have no effect on the construct. I will represent comments by placing them between /* and */.

Sure, if you like. I'll probably not use them - Asimov is more the model I have in mind than C++.



This one will only work if your constructs have memory.
1. If your home hasn't changed, it's where you were created.
2. If your owner hasn't changed, it's who created you. /*This isn't the same as master. It's just a person it remembers.*/
3. The last place you where for over an hour when you could see your owner is your home. /*It's a good idea to keep the broom near where you sleep.*/
4. If your owner says someone else is your owner, they are your owner.
5. Avoid obsticles
6. If your owner says "clean this room", clean the room.
7. If your owner says "clean this house", wander the house randomly, cleaning it, until he says "stop cleaning".
8. If you don't see your owner for over a week, go home.


One thing to keep in mind is that these commands are represented by priority, not by procedure. This makes it very easy to accidentally create redundant commands. #1 completely masks #3 there - to see why, rewrite it:

1. If your home hasn't changed, your home is Rogar's Workshop.
3. If you are with your owner for one hour, the place where you are is your home.

The way I've stated it, a construct will obey the higher priority command to the exclusion of all lower priority commands. If it can fulfill two commands, it will do both, but if it can only do one, the lower level one gets totally snubbed.

The first time the construct spends an hour with its new master, the conditions for both #1 and #3 will be true--it's home hasn't changed, and it is with its owner for an hour. However, it's home can't be both Rogar's Workshop and Petey's Bedroom. So it follows #1 and ignores #3. Forever.

Same applies to #2 and #4.

To make this construct work the way you're thinking, try this:



If your owner designates a new owner, take that person as your new owner.
After spending an hour with your owner in a location, take that location as your new home.
If your owner says, "Stop", stop cleaning.
If your owner says, "Clean this room", clean the room he is in.
If your owner says, "Clean the house", clean the house he is in.
If you have not seen your owner for a week, go to your home and remain there.

(Innate knowledge: Clean, Household navigation, concept and memory of owner and home).


An Exploit: Disguising yourself as John (in a way that would fool a broom) would allow you to permanently steal John's broom.



This one will require a good path-finding algorithm.
1. If someone says "broom, come", go to that person.
2. If a door blocks your ability to complete command 1 or 4, open it, go through it, and close it.
3. If you can't obey command 2 because the door is locked, unlock it.
4. If someone says "broom, go", go to where you were when you last heard someone say "broom, come".
5. If someone says "broom, clean room", clean that room.
6. If someone says "broom, clean house", randomly wander the house, cleaning.
All the thief has to do is go to the front door at night and say "broom, come".


Nice. Assuming you have a lock on the front door the broom can't get to, that seems pretty well thought out. I like it.



Here's a different one. It's based on one mentioned earlier.
1. Kill anyone who comes within 30 ft. of the door.
2. Don't kill your master.
I wonder how many people will miss that one.

#1 overrides #2, so #2 might as well be empty. That's easy to miss. I did that with an earlier example, too.

It's actually a nice effect. You have to put constraints before the commands they modify, otherwise the commands simply override them, and they might as well not be there. This makes constructs fantastically hackable--it's hard to program a useful one without constraints in high slots. Where they could be replaced by masked commands. >:)



I'd like to add, if you make all the commands hidden, it's probably a good Idea to have at least one empty command to make sure the adventurers are never sure they found all of the commands. Also, if masking commands is cost prohibitive, make the first command empty.

Masking commands only takes time and spell slots, but you can only have one per golem.

I'm not sure what you mean about leaving command slots empty, though. Hidden command slots are pretty easy to detect and always show as empty--from an adventurer's point of view, they might as well be empty. Well, except that the construct does stuff. But leaving hidden slots empty won't confuse adventurers any extra.