Contents
What is AltNPC2?
AltNPC2 is a character toolset for the Alternity role playing game. Its main goal is to help GMs by automating common NPC tasks during play.
Click here to open a sample character. This character is a bareem, a strong ape-like race from the Star*Drive game book called The Externals.
How AltNPC2 Helps GMs
You're the GM. The heroes have cornered the villain and his two thuggish bodyguards in an alleyway. Combat ensues. You've got to keep track of three NPCs, shouldn't be too hard, right? First up, Action Checks -- you need to roll this three times, first checking the Action Check scores for each character before you roll. Then you've got to either note down or remember the results. The villain's turn first; he fires his SMG. You have to check his SMG skill, the range modifier for this weapon, the fire mode modifier for the weapon, the target's resistance modifier. The villain hits, now you need to check the damage done. Now one of the heroes fires at a bodyguard -- it's a hit. You need to look up armour, roll the armour result, and cross off damage (don't forget secondary damage). The hit inflicted a lot of wound damage, more than half, now that bodyguard is Dazed and you need to remember to apply the right modifier from here on in.
In just two phases, so much has happened, and you've had to peer at your notes and jot down changes plenty of times. This kind of thing is easy for the players, who control only a single hero and become familiar with it over time. But for you it's confusing, it's slow, and worst of all it's prone to error.
This is where AltNPC2 comes in. Using AltNPC2, you've prepared the villian and you've prepared a thug character archetype ahead of time. The villian is a leading character so you've crafted his character in detail. The thugs, however, are mere supporting cast so for variety you've used AltNPC2 to give them a bit of randomness. Come play time and the alleyway encounter. You need the villain's character sheet. Click, it's open in your favourite web browser. You also need two thugs for the bodyguards. Click, here's the first. Looks good. Click, here's the second... oh wait, he's got a knife like the first thug, let's see if we can get him a firearm to better challenge the players. Click, ah that's better, a pistol.
Action checks? One click for each character. AltNPC2 knows how to figure out their Action Check scores and roll them, so you needn't look at anything but the result. The villian fires. You choose parameters: click to select short range, click to select burst fire mode, click to set what the target's resistance modifier is. Then click "Fire". AltNPC2 will do all the number crunching and dice rolling and tell you what the result was and what damage was done on a hit. It will even keep track of ammunition. The bodyguard is hit. You select how much damage the player did, the type of damage, and hit "Inflict Damage". AltNPC2 rolls any armour damage reduction, applies it, and then marks off stun, wound and mortal boxes. It will know that the bodyguard is now Dazed, and will automatically apply the penalty to any future checks that character will make.
With AltNPC2, you're not checking statistics, you're not crunching numbers, you're not even rolling dice. This leaves your mind free for more important things.
What does AltNPC2 automate?
Back to Top- Action Checks
- Ability Scores and resistance modifiers
- taking damage, automatically applying the following:
- secondary damage (PHB52)
- damage reduction from armour (even when multiple sets are worn) (PHB190)
- stun reduction from ranks in Armour Operation skills (PHB64)
- heavy (overflowing) damage (PHB52)
- combat attacks (ranged and melee), automating:
- penalties from weapon accuracy, range, fire mode, target resistance modifier, and anything else
- damage, including bonus damage from Strength (when applicable) (PHB40)
- ammunition left in the current magazine and spare magazines
- various fire modes (single, burst or auto)
- skill checks, including Feat checks and untrained checks
- penalties that apply to skill checks and/or action checks, including:
- Fatigue and Mortal damage (PHB53)
- Dazed optional rules (PHB51, PHB52)
- armour operation (PHB62)
- opponent resistance modifier
- anything else
What special features does AltNPC2 have?
Back to Top- AltNPC2 characters are shown on a fairly basic HTML page with JavaScript, meaning that all that's needed is a modern web browser
- AltNPC2 files can run fine from your local computer, or you can run them from a hosted location on the internet
- create an unchanging character, or a character that is randomised on creation within specified parameters
- use AltNPC2 to keep track of vehicles by removing skill check information and keeping armour and durability information
- with a tabbed browser, keep many characters handy at once, and easily see which have actions in the current phase
What can't AltNPC2 do?
Back to Top- perform the hero creation process in the Player's Handbook
Contacting the Author
Back to TopI originally developed AltNPC2 purely to make my own life easier. It was only after one of my players suggested others might find it useful did I take the effort to put it online. So, I would really be interested to hear your feedback. Even if you are using AltNPC2 without complaint, I'd love to simply know AltNPC2 is being used.
Also, if you find any glaring bugs, please tell me about them!
My email address is ua.ten.tenii@ovehcin. (Don't copy and paste that address, it's protected from spam bots. Type it out manually.)
AltNPC2 Character Library
Click here to see the library of pre-made AltNPC2 characters.
Demonstrating AltNPC2
To demonstrate AltNPC2, we'll use a sample character. You'll learn how to make your own characters later.
Click here to open a sample character. This character is a bareem, a strong ape-like race from the Star*Drive game book called The Externals.
You should see a character sheet. If you don't, take a look at the troubleshooting section.
This is a semi-randomised character. Refresh the page a few times and notice how the character changes. Feel free to reload a few times as you explore each of the sections below, to see what kinds of things change.
Description, Name, Notes and Randomness Lockdown
Back to TopAt the top of the page, you'll see some descriptive text. This is fully user-customisable, any information can be entered here. It could be used to store conversation information, special rules, or anything else.
Next, you'll see the name and notes section.

Here you can change the NPC's name and enter custom notes about him. This is useful if you have several "copies" of this character active at once -- with this character that could happen if the players meet three Ordinary Bareem Soldiers. Rename the NPC and hit "Set Name". Notice how the page title changes, along with the tab name (may depend on your browser).

Personally, I like to name the soldiers after the appearance of the miniature representing them.
As for the User Notes, this is a free text field that lets you record custom information against that individual NPC. Perhaps a Hero fires a poison dart at this NPC -- the note could remind you which NPC was poisoned and when the effects should be applied.
You can click the link under Randomisation Lockdown to toggle between a random and non-random instance of this character. This feature also allows you to save a reference to this particular NPC. There are two ways to do this:
- While you're viewing a "locked down" version of the NPC, copy the URL from your browser's address bar.
- While you're viewing a randomisable version of the NPC, right-click the link to the "locked down" version and copy the link location.
Paste the link somewhere safe. You can view it any time later and be sure you'll see that the NPC will be generated exactly the same. Note that user-adjusted data -- like damage, counters and ammunition counts -- will not be persisted.
Ability Scores Table
Back to Top
Refresh your page a few times. Notice how the Ability Scores are mostly (if not always) suitable for a soldier? That's part of the random-within-parameters features of AltNPC2. More on this when you come to create your own characters.
Also note the resistance scores. In this case they should match the Ability Scores perfectly. But it is possible to tell AltNPC2 to alter these, as would be the case for a Free Agent (PHB31).
Global Modifiers Table
Back to Top
There are three global modifiers:
- Durability. Comes about through loss of Mortal, Fatigue, and if you're using the Dazed rules (PHB51, PHB52) then Stun and Wound as well.
- Armour. Wearing armour slows a character down (PHB64).
- User-defined. Useful for things like disease, poison, intoxication, whatever.
Action Check Table
Back to Top
The contains the combat movement rates as calculated for hero characters (PHB39). This information may be wrong for more exotic creatures. If it is, a correction is a good bit of information to store the very top descriptive text.
The Action Check score and actions per round are shown. We can instruct AltNPC2 to consider all sorts of modifiers to this, such as the t'sa Action Check bonus (PHB27), or various changes to action checks brought about by achievements (PHB125).
Click the "Roll" button to get an Action Check result. Notice this changes the title of the page. If you've got a tabbed browser, you should be able to see what phases your characters are in at-a-glance.

Durability Table
Back to Top
The little boxes should be familiar to any Alternity player.
The Edit buttons let you increase or decrease any durability score by one. But that's just for tweaking. Most of the time you should use the "Injury Calculator". So, if a player informs you they've hit a bareem soldier for 5 energy wound damage, just input that and let AltNPC2 work out the details:

Go ahead and injure your character. Try to accumulate some penalties in the "Dazed" column. Then go back to "Global Modifiers" section. There should be a penalty there for "Durability". Now roll some Action Checks. They should be much worse than before, because AltNPC2 is automatically applying the penalty here.
Weapons Table
Back to Top
Your weapons table may look very different from the one shown here. That's because it's randomised. Refresh the page a few times to get a good selection of weapons.
Note that not all weapons on this table are standard Alternity fare. The plasma blaster SMG was something I created for a particular campaign. AltNPC2 has no problems accepting customised weapons.
Try out the "Fire Control" column:

If you've left your character badly wounded in the Durability section you might find his aim suffers a bit thanks to penalties from those injuries.
Shoot a few times with different weapons. Notice how the ammo decreases for weapons with ammo, and eventually prompts you to reload. Observe how AltNPC2 handles firing a weapon in auto fire mode.
Armour Table
Back to Top
The information here is used in the "Injury Calculator" part of the Durability table. It is possible to wear more than one set of armour at once (PHB190). The Injury Calculator takes multiple layers of armour into account.
The Actual AP represents how the Armour AP is offset by Armour Operations skills (PHB64).
Counters Table
Back to Top
In the sample character sheet we're looking at, this section is used to show what character is carrying, outside of weapons and armour. It's randomised, like much of the page.
You can use this section for other things though, such as Last Resort Points, or FX Energy.
Skills Table
Back to Top
Use the two buttons at the top of the table to show or hide unranked skills.
The "Skill Check" button rolls a skill check. It automatically applies things from the Global Modifiers table, so if you're still using your injured character, he may not perform so well on the skill checks.
It is possible to customise the list of available skills, even adding totally new ones. This is discussed in the FAQ section.
Making Your Own Characters
Requisite Knowledge
Back to TopI'm going to assume that you, as a reader, possess the following skills:
- ability to download, rename and copy files
- ability to edit the source code of an HTML page
- some basic HTML knowledge
- some basic programming experience (optional but useful)
Downloading and Viewing the Files
Back to TopSave the following two files to a single location, be it locally on your hard drive or on an internet server.
And then save this sample character (the bareem from above) to the same location. You can use this character as a template to edit. Make copies as many copies of this html file for as many characters as you want. You can name them whatever you want. You must keep them in the same directory as the js files, however.If you can open the html file in a browser and it works as well as the sample then you've done everything correctly.
Editing the Files
Back to TopEdit the html file to customize a character. You can edit the JavaScript (.js) files, but that's a topic for another chapter.
Below, I go over all the editable parts of a character file. Much of the process should be evident from the comments already existing in the file (text after double slashes "//"). I expand on these when necessary.
Most of what's involved in making a character in AltNPC2 is very simple JavaScript editing. However, as with all programming languages, you must be careful not to disturb the syntax. If you're careful to only change what's important (such as a true to a false or a 5 to a 6) while leaving semicolons, brackets and other stuff alone then you should be fine even if you have no programming experience. If you are feeling uncertain, I would suggest taking baby steps -- make a small change, save it, and see if it works. That way, if you ever break something, you won't have very much to look over to find the problem.
Random Versus Non-Random Characters
Back to TopAltNPC2 is capable of making random and non-random characters. Random characters have boundaries that they must fit within -- basically a non-random character is simply a random character whose boundaries are so limiting that they can only take one value.
AltNPC2 does not consider character creation rules, or sensible character design in any way when it applies randomness. They might have more broad skills than technically allowed. They might have too many or too few skills for a character of the envisioned level. They might just be badly designed -- such as a character skilled with pistols being generated with a heavy weapon. You can always re-generate badly randomised characters with a simple refresh of the page, and you should not hesitate to do so.
As for the more niggling inconsistencies, my personal philosophy is to not worry about it. Not even the Gamemaster guide worries about character creation rules when it comes to the supporting cast. Run with the oddities -- if a randomised soldier is has an unusually low Constitution, describe him to the players as weedy or weak. If he's exceptionally skilled with a rifle, maybe he's an experienced squad leader rather than a lowly grunt.
Lead villians and important NPCs generally deserve more attention than the supporting cast. I personally generate such characters by following the rules, then use AltNPC2 to make that character. When you strip out the randomness and guide AltNPC2 precisely, you adhere to the rules as much or as little as you want.
Display Values
Back to TopThroughout the character sheet code you will find variables that begin with the word display. These control whether certain sections of the character sheet is displayed. Be aware that just because you are not showing a certain section, the values in that section still apply. Not only does this mean the values have to be sensible (to allow AltNPC2 to function correctly) but that you should be careful in hiding sections which contain important information. For example, if you gave a character armour but hid the armour section, you might be confused when AltNPC2 reduces damage against him.
Descriptive Comments
Back to Top<!--- DESCRIPTIVE COMMENTS BEGIN HERE --->These are descriptive comments, in HTML. These can say whatever you like, and can be as long or as short as you like.
<!--- Can be any HTML code. --->
<h2>Ordinary Bareem Soldier</h2>
<p>Forming the bulk of most External ground forces, blah blah blah.</p>
<!--- DESCRIPTIVE COMMENTS END HERE --->
If this is an important NPC in your campaign, you could include his description, his personality, and notes on what he may do in conversation and in combat.
Ability Scores
Back to Top//////////////////////////////////////////////////////////////The Ability Score pool determines how many points the character has to spend on Ability scores. This is usually 60 for Hero characters (PHB33), though you're free to change it to whatever you like.
// ABILITY SCORES
//////////////////////////////////////////////////////////////
// Should Ability Score information be displayed for this NPC?
displayAbilityScores = true;
// How many points to spend on Ability Scores? Usually this is 60.
abilityScorePool = 60;
// Minimum/maximum Ability Scores.
// Usually tied to an NPC's race.
minStr = 9;
maxStr = 16;
minDex = 4;
maxDex = 12;
minCon = 8;
maxCon = 16;
minInt = 4;
maxInt = 13;
minWil = 4;
maxWil = 12;
minPer = 4;
maxPer = 12;
The min and max scores should be thought of as hard limits, like race (PHB33) and profession (PHB30) limits. Non-random characters can be made by setting the min and max to the same value for each Ability score.
You must assure that it is mathematically possible for your Ability Score pool to be spread amongst the limits you've set, otherwise AltNPC2 will hang.
The sample code I've used is for the bareem soldier. These are the racial limits for that race. Notice that I did not apply any minimum profession limit -- this is because while most bareem soldiers are combat specs, it wouldn't be universally so.
// Preferred Ability Scores. The higher the relativeThe preferred Ability Scores are weighted relative values that show what the random generator should "prefer" for this character, though the results are always within the "hard" boundaries of the min/max values above.
// value, the more likely that the character will have
// lots of points on that ability score.
prefStr = 11;
prefDex = 10;
prefCon = 11;
prefInt = 8;
prefWil = 9;
prefPer = 8;
The values do not represent the actual desired Ability Score. They are relative weights. A preferred Dexterity value of 10 does not mean the character wants 10 Dexterity. It only measures how likely AltNPC2 is to assign points to Dexterity. Since Intelligence has a lower weight of 8, generated characters will usually have more Dexterity than Intelligence.
If you are making a non-random character, it doesn't matter what values you enter here, provided they are not nonsensical.
This bareem sample favours Strength, Dexterity and Constitution -- perfect for soldiers. Notice that the weighted values are fairly similar -- 11 versus 8 for example. This tends to create a more well-rounded character. If I made the values more relatively extreme, such as 10 versus 1, then the character would tend towards having more polarized Ability Scores.
// Bonuses (or penalties) to Ability Scores to be appliedBonus Ability scores. You'd generally use this for things like Cybertech (PHB238) or Achievements (PHB124). This section mostly makes sense for non-random characters.
// *after* the generation process. Good for things like
// cybernetics. These bonuses can take an Ability Score
// above the maximum defined above.
bonusStr = 0;
bonusDex = 0;
bonusCon = 0;
bonusInt = 0;
bonusWil = 0;
bonusPer = 0;
// Bonuses (or penalties) to Ability Score resistance modifiers.Bonuses to resistance modifiers. Generally this is used for Free Agents who get a Resistance Bonus (PHB31). Nothing stopping you from using it for other things.
bonusStrRes = 0;
bonusDexRes = 0;
bonusIntRes = 0;
bonusWilRes = 0;
Action Check
Back to Top//////////////////////////////////////////////////////////////Regarding the Action Check increase as defined by professions (PHB30) -- animals and non-humanoid aliens often don't "play by the rules" (GMG231), so feel free to adjust this value beyond what professions would allow for.
// ACTION CHECK
//////////////////////////////////////////////////////////////
// Should action check information be displayed for this NPC?
displayActionCheck = true;
// Action check score increase from profession.
// Diplomat = 1, free agent = 2, combat spec = 3, tech op = 1
actionCheckIncreaseProfession = 3;
I chose a the combat spec value for my bareem soldier even though a minority of soldiers would not actually be combat specs (as discussed with Ability Scores).
// Certain action check bonuses.If you're making a non-random character, the probability values here should be either 0.0 or 1.0 (i.e. 0% or 100%). The Action Check increase that applies should have a value of 1 while all others have a value of 0.
// The achievement called "extra action". An extra action per round.
// Expressed as a probability, 0.25 = 25% chance to have it.
extraActionAchievementProbability = 0.1;
// The achievement called "action check bonus". A -1 step to Action Checks.
// Expressed as a probability, 0.25 = 25% chance to have it.
actionCheckBonusAchievementProbability = 0.05;
// Action check bonus from being a t'sa. A -1 step to action checks.
actionCheckBonusTsa = false;
// The achievement called "action check increase". An extra point on the
// Action Check score. This can be purchased up to 3 times. Each of the
// four possibilities (i.e. purchased zero times, one time, two times,
// three times) is given a relative weight. The variable with the highest
// relative value is the one that is most likely to be true.
actionCheckIncreaseAchievement0 = 90;
actionCheckIncreaseAchievement1 = 7;
actionCheckIncreaseAchievement2 = 2;
actionCheckIncreaseAchievement3 = 1;
You can see that my bareem soldier has a 10% of the Extra Action Achievement. As for Action Check Increases, 90% of soldiers have not bought this Achievement at all, while 7% have bought it once, 2% have bought it twice, and 1% have bought it three times. Notice how I've set the relative weights to add up to 100 -- this isn't strictly needed but it can help you better comprehend the probabilities.
Durability
Back to Top//////////////////////////////////////////////////////////////Durability is mostly determined by a character's Constitution Ability Score. In this section, we just have modifiers and tweaks to that.
// DURABILITY
//////////////////////////////////////////////////////////////
// Should durability information be displayed for this NPC?
displayDurability = true;
// Is this character affected by the dazed stun rule (PHB51)?
dazedStunVunlerable = true;
// Is this character affected by the dazed wound rule (PHB52)?
dazedWoundVunlerable = true;
// Does this character need to show Fatigue damage info?
displayFatigue = true;
// Durability bonuses. Feats, cybernetic, and some races can
// alter this.
stunBonus = 0;
woundBonus = 0;
mortalBonus = 0;
fatigueBonus = 0;
// Durability multiplier.
// Affects CON for the purposes of determining durability.
// For most races this is 1.0. For the weren it is 1.5.
durabilityMultiplier = 1.0;
My bareem soldier doesn't have any of these special things going for him.
Miscellaneous
Back to Top//////////////////////////////////////////////////////////////A few odds and sods not covered elsewhere. All pretty straightforward.
// MISCELLANEOUS
//////////////////////////////////////////////////////////////
// A global modifier for this character to start with. This
// value can be changed at any time from a drop-down box.
// This global modifier affects all action checks and skill
// checks.
// This global modifier can be used to represent things not
// taken into account by the sheet (e.g. encumberance, drugs).
// It must be between -5 and +7 inclusive.
globalModUser = 0;
// Default name for this character. Used as the page's "title".
// This can be changed by the user:
npcName = "Ordinary Bareem Soldier";
// Should the small table showing the NPC name and notes be
// displayed?
displayNameAndNotes = true;
Weapons
Back to Top////////////////////////////////////////////////////////////// // WEAPONS ////////////////////////////////////////////////////////////// // Should weapon information be displayed for this NPC? displayWeapons = true; // Weapons array. // This array can be quite big, so its probably a good idea to turn word wrap off. // Elements are listed below: // [0] = Skill ID this weapon is linked to (see altnpc2_skills.js). // If this number is invalid or is -1, then it won't // be possible to roll skill checks from the weapons // table. // [1] = Probability that the NPC has this weapon (1.0 = 100%). // [2] = Weapon name (e.g. "9mm pistol") // [3] = Type of weapon. Must be either "ranged" "melee" "thrown" or "grenade". // Heavy weapons count as "ranged". // The main difference between "thrown" and "grenade" is that only "thrown" // gets a damage bonus from strength. // [4] = Weapon's inherent accuracy modifier (e.g. 1 or -1). // [5] = Actions per round (e.g. 3). // [6] = Uses ammo (true or false). // [7] = Clip size. Only needs a value if uses ammo is true. // Use a value of 1 for items like grenades, throwing knives etc. // [8] = Rounds in a burst. For burst-only weapons, this is 1. // [9] = Min spare clips. Only needs a value if uses ammo is true. // [10] = Max spare clips. Only needs a value if uses ammo is true. // [11] = Weapon can be fired in F (single shot) mode (true or false). True for melee and thrown weapons. // [12] = Weapon can be fired in B (burst) mode (true or false). False for melee and thrown weapons. // [13] = Weapon can be fired in A (full auto) mode (true or false). False for melee and thrown weapons. // [14] = Short range, in metres. Only needs a value for "ranged" weapons. // [15] = Medium range, in metres. Only needs a value for "ranged" weapons. // [16] = Long range, in metres. Only needs a value for "ranged" weapons. // [17] = Short range modifier (e.g. 1 or -1). Only needs a value for "ranged" weapons. // [18] = Medium range modifier (e.g. 1 or -1). Only needs a value for "ranged" weapons. // [19] = Long range modifier (e.g. 1 or -1). Only needs a value for "ranged" weapons. // [20] = Damage firepower and type (e.g. "HI/O") // [21] = Ordinary damage die size (e.g. 2d6+3 would be 6). // [22] = Ordinary damage die count (e.g. 2d6+3 would be 2). // [23] = Ordinary damage die modifier (e.g. 2d6+3 would be 3). // [24] = Ordinary damage descriptor for stun, wound or mortal (e.g. "s"). // [25] = Good damage die size (e.g. 2d6+3 would be 6). // [26] = Good damage die count (e.g. 2d6+3 would be 2). // [27] = Good damage die modifier (e.g. 2d6+3 would be 3). // [28] = Good damage descriptor for stun, wound or mortal (e.g. "w"). // [29] = Amazing damage die size (e.g. 2d6+3 would be 6). // [30] = Amazing damage die count (e.g. 2d6+3 would be 2). // [31] = Amazing damage die modifier (e.g. 2d6+3 would be 3). // [32] = Amazing damage descriptor for stun, wound or mortal (e.g. "m"). // [33] = Rounds remaining. Leave this as 0, it is set at run-time. // [34] = Clips remaining. Leave this as 0, it is set at run-time. weaponsArray = [ // ID %prob Name type acc act ammo csiz r/b minc maxc Fmode Bmode Amode srng mrng lrng smod mmod lmod dtyp Osiz Ocnt Omod Odesc Gsiz Gcnt Gmod Gdesc Asiz Acnt Amod Adesc | Run-time only [ 35, 1.0, "plasma blaster SMG", "ranged", +1, 4, true, 20, 1, 1, 5, false, true, true, 15, 30, 30, -1, +1, +3, "En/O", 6, 1, 1, "w", 8, 1, 1, "w", 8, 1, 3, "w", 0,0], [ 33, 0.2, "plasma blaster pistol", "ranged", +1, 3, true, 8, 1, 0, 3, false, true, false, 8, 16, 40, -1, +1, +3, "En/O", 6, 1, 1, "w", 8, 1, 1, "w", 8, 1, 3, "w", 0,0], [ 35, 0.05, "plasma pug shotgun", "ranged", +1, 2, true, 3, 1, 0, 2, true, false, false, 6, 12, 30, -1, +1, +3, "En/G", 8, 1, 1, "w", 6, 2, 0, "w", 6, 2, 3, "w", 0,0], [ 33, 0.05, "blacklaser pistol", "ranged", -1, 3, true, 10, 1, 0, 3, true, false, false, 20, 40, 200, -1, +1, +3, "En/O", 4, 1, 2, "w", 6, 1, 2, "w", 4, 1, 0, "m", 0,0], [ 8, 0.3, "rockfoam grenade", "grenade", +1, 2, true, 1, 1, 0, 2, true, false, false, -1, -1, -1, -1, +1, +2, "LI/A", 4, 1, 0, "s", 4, 1, 1, "s", 4, 1, 2, "s", 0,0], [ 8, 0.3, "plasma grenade", "grenade", +1, 2, true, 1, 1, 0, 2, true, false, false, -1, -1, -1, -1, +1, +2, "En/G", 4, 1, 2, "w", 6, 1, 2, "w", 4, 1, 0, "m", 0,0], [ 8, 0.2, "smoke grenade", "grenade", +1, 2, true, 1, 1, 0, 2, true, false, false, -1, -1, -1, -1, +1, +2, "LI/O", 0, 0, 0, "s", 0, 0, 0, "s", 0, 0, 0, "s", 0,0], [ 13, 0.3, "combat knife", "melee", +0, 4, false,1, -1, 0, 0, true, false, false, -1, -1, -1, 0, 0, 0, "LI/O", 4, 1, 1, "w", 4, 1, 2, "w", 4, 1, 3, "w", 0,0], [ 13, 0.1, "saber", "melee", +0, 4, false,1, -1, 0, 0, true, false, false, -1, -1, -1, 0, 0, 0, "LI/O", 4, 1, 0, "w", 4, 1, 2, "w", 4, 2, 1, "w", 0,0], [ 14, 0.3, "mace", "melee", +0, 4, false,1, -1, 0, 0, true, false, false, -1, -1, -1, 0, 0, 0, "LI/O", 6, 1, 1, "s", 4, 1, 1, "w", 6, 1, 1, "w", 0,0], [ 14, 0.1, "flail", "melee", +1, 4, false,1, -1, 0, 0, true, false, false, -1, -1, -1, 0, 0, 0, "LI/O", 6, 1, 2, "s", 4, 1, 2, "w", 6, 1, 2, "w", 0,0], [ 17, 1.0, "unarmed", "melee", +0, 4, false,1, -1, 0, 0, true, false, false, -1, -1, -1, 0, 0, 0, "LI/O", 4, 1, 0, "s", 4, 1, 1, "s", 4, 1, 2, "s", 0,0] ];Here's where things get complicated. My apologies if you have to scroll sideways.
This is a table of all weapons the character might have. The comments explain most of what's going on but I'll extrapolate on some of them:
- [0] Skill ID. You can see the skills IDs further down in the character sheet.
- [14] to [19]. Despite this value not being needed for non-ranged weapons, please make sure something is entered. Use 0 (zero) to be safe.
As you can see, the weapons table happily accepts custom weapons not part of the core Alternity ruleset. However, it can't handle weapons with special properties. An example is the 12 gauge shotgun, which does double damage at close range and half damage at long range (PHB178). Another example might be a tranquiliser dart containing a poison. In such cases you will have to remember to overrule AltNPC2 where appropriate. (A good place to note down special rules is the Description section.)
My bareem soldier has quite a potential arsenal. Bear in mind that some weapons are common (such as the staple plasma blaster weapons SMG) while most are rare secondary or special weapons.
Watch out for commas at the ends of rows. Strictly speaking, there should be a comma after the close-square-bracket at the every row except the last row. Most browsers are little bit more lenient than this, though, so you might get away with a comma where it shouldn't be.
Armour
Back to Top////////////////////////////////////////////////////////////// // ARMOUR ////////////////////////////////////////////////////////////// // Should weapon information be displayed for this NPC? displayArmour = true; // Armour array. // This array can be quite big, so its probably a good idea to turn word wrap off. // Elements are listed below: // [0] = Skill ID this armour is linked to (see altnpc2_skills.js). // If this number is invalid or is -1, then it is assumed // the full AP penalty applies. // [1] = Probability that the NPC has this armour (1.0 = 100%). // [2] = Armour name (e.g. "battle vest") // [3] = Type of armour. Must be either "combat" "powered" or "none". // [4] = AP for this armour (e.g. +2) // [5] = LI damage die size (e.g. 2d6+3 would be 6). // [6] = LI damage die count (e.g. 2d6+3 would be 2). // [7] = LI damage die modifier (e.g. 2d6+3 would be 3). // [8] = HI damage die size (e.g. 2d6+3 would be 6). // [9] = HI damage die count (e.g. 2d6+3 would be 2). // [10] = HI damage die modifier (e.g. 2d6+3 would be 3). // [11] = En damage die size (e.g. 2d6+3 would be 6). // [12] = En damage die count (e.g. 2d6+3 would be 2). // [13] = En damage die modifier (e.g. 2d6+3 would be 3). armourArray = [ // ID %prob Name type AP LIsiz LInct LImod HIsiz HInct HImod Ensiz Ennct Enmod [ 3, 1.0, "assault gear, hvy", "combat", 2, 6, 1, -1, 6, 1, 0, 6, 1, -1] ];If you coped with the weapon table, the armour table should be a cinch.
Don't forget to list natural armour here!
There's no reason why you couldn't have multiple sets of armour -- AltNPC2 knows how to layer armour (PHB190).
There's also no reason why you couldn't have no armour. Simply don't have any armour rows.
Counters
Back to Top////////////////////////////////////////////////////////////// // COUNTERS ////////////////////////////////////////////////////////////// // Should counter information be displayed for this NPC? displayCounters = true; // Counters array. // Elements are listed below: // [0] = Name of this counter. // [1] = Probability of having this counter at all. (0.5 = 50% chance.) // [2] = The lowest random value the upper boundary of this counter can take. // [3] = The highest random value the upper boundary of this counter can take. // [4] = The lowest random value the counter can start at, expressed as a %. (0.2 = 20% full.) // [5] = The highest random value the counter can start at, expressed as a %. (0.8 = 80% full.) // [6] = The colour of this entry in the equipment table. // [7] = Run-time only. Set to -1. The actual upper boundary. // [8] = Run-time only. Set to -1. The actual counter value. countersArray = [ // Name %has minU maxU minS maxS colour n/a ["backpack", 0.9, 1, 1, 1.0, 1.0, "transparent",-1,-1], ["boots", 1.0, 1, 1, 1.0, 1.0, "transparent",-1,-1], ["fatigues", 1.0, 1, 1, 1.0, 1.0, "transparent",-1,-1], ["goggles, protective", 0.05, 1, 1, 1.0, 1.0, "transparent",-1,-1], ["watch", 0.50, 1, 1, 1.0, 1.0, "transparent",-1,-1], ["orbital uplink", 0.1, 1, 1, 1.0, 1.0, "transparent",-1,-1], ["personal radio", 0.95, 1, 1, 1.0, 1.0, "transparent",-1,-1], ["first aid kit", 0.10, 1, 1, 1.0, 1.0, "transparent",-1,-1], ["trauma pack I", 0.10, 1, 4, 1.0, 1.0, "transparent",-1,-1], ["toolkit", 0.05, 1, 1, 1.0, 1.0, "transparent",-1,-1], ["binoculars", 0.50, 1, 1, 1.0, 1.0, "transparent",-1,-1], ["bedroll", 0.20, 1, 1, 1.0, 1.0, "transparent",-1,-1], ["compass", 0.10, 1, 1, 1.0, 1.0, "transparent",-1,-1], ["flashlight", 0.10, 1, 1, 1.0, 1.0, "transparent",-1,-1], ["GPS receiver", 0.10, 1, 1, 1.0, 1.0, "transparent",-1,-1], ["flare", 0.10, 1, 1, 1.0, 1.0, "transparent",-1,-1] ];Counters are any value you want to keep track of that isn't explicitly covered elsewhere in AltNPC2.
I like to use it for inventory, as you can see in the sample. (Don't use it for ammunition as that information is kept in the weapons table.)
You could also use the counters table for Last Resort Points or FX Energy.
Skills
Back to Top////////////////////////////////////////////////////////////// // SKILLS ////////////////////////////////////////////////////////////// // Should skill information be displayed for this NPC? displaySkills = true; // Skills array. // Elements are listed below: // [0] = Probability of having this skill at all. Applies to both broad and // specialty skills. 0.5 = 50% chance. // [1] = For specialty skills only, the minimum number of ranks. // A character can only have a specialty skill if he has the // broad skill, and passes the [0] probability of having it all. // [2] = For specialty skills only, the maximum number of ranks. // A character can only have a specialty skill if he has the // broad skill, and passes the [0] probability of having it all. // [3] = An innate modifier to apply to all checks for this skill. // Used with things like Combat Spec's preferred weapon. // Do not include the +1 step for having zero ranks in a // skill, or for feat checks -- this is applied automatically // as need be. // [4] = Probability of having the innate modifier in [3]. // [5] = Background colour for this skill's cell in the table. // [6] = Actual ranks. Used at run-time only. Set this to zero. // [7] = Actual modifier. Used at run-time only. Set this to zero. skillsArray = [ // ID Name %has min max mod %mod colour n/a /* 0 Strength Feat Check */ [1.0, 0, 0, +1, 1.0, "transparent",0,0], /* 1 Untrained Strength Check */ [1.0, 0, 0, +1, 1.0, "transparent",0,0], /* 2 Armour Operation */ [0.9, 0, 0, 0, 1.0, "transparent",0,0], /* 3 Combat armour */ [0.9, 0, 5, 0, 1.0, "transparent",0,0], /* 4 Powered armour */ [0.0, 0, 0, 0, 1.0, "transparent",0,0], /* 5 Athletics */ [1.0, 0, 0, 0, 1.0, "transparent",0,0], /* 6 Climb */ [0.5, 0, 3, 0, 1.0, "transparent",0,0], /* 7 Jump */ [0.5, 0, 3, 0, 1.0, "transparent",0,0], /* 8 Throw */ [0.5, 0, 5, 0, 1.0, "transparent",0,0], /* 9 Heavy Weapons */ [0.2, 0, 0, 0, 1.0, "transparent",0,0], /* 10 Direct fire */ [0.5, 0, 3, 0, 1.0, "transparent",0,0], /* 11 Indirect fire */ [0.5, 0, 3, 0, 1.0, "transparent",0,0], /* 12 Melee Weapons */ [0.6, 0, 0, 0, 1.0, "transparent",0,0], /* 13 Blade */ [0.3, 0, 5, 0, 1.0, "transparent",0,0], /* 14 Bludgeon */ [0.3, 0, 5, 0, 1.0, "transparent",0,0], /* 15 Powered weapon */ [0.3, 0, 5, 0, 1.0, "transparent",0,0], /* 16 Unarmed Attack */ [0.6, 0, 0, 0, 1.0, "transparent",0,0], /* 17 Brawl */ [0.6, 0, 5, 0, 1.0, "transparent",0,0], /* 18 Power martial arts */ [0.0, 0, 0, 0, 1.0, "transparent",0,0],This is a very large table -- I've only shown the Strength section here to save on space. That said, it is pretty simple to use.
You can see that my bareem soldiers are almost always skilled in using combat armour. Many of them also have some melee weapon or unarmed skill. Even though I had a separate character sheet for bareem heavy weaponeers to distinguish them from the common soldier, you'll notice that some soldiers will be skilled with heavy weapons.
Troubleshooting and FAQ
The character sheets aren't working for me. What's wrong?Make sure your browser has JavaScript enabled. Click here for more information.
I need a tool to make characters as per the hero creation rules. AltNPC2 does not help with this. What should I use instead?
I would suggest Alternity Character Manager. I've been using it for years and have found it very useful.
Can I persist a character that I've generated using AltNPC2?
Yes. Read about this in the names and notes section.
Can I change the list of skills AltNPC2 uses?
Sure. Open altnpc2_skills.js and start editing. The comments in there should explain all you need to know. Be careful -- this will apply to all characters you keep in the same directory, so it's best to set up your skills before you've created an extensive library of characters.
Does AltNPC2 support FX?
No, not directly. However, you could edit the skills list (see above) to incorporate your FX spells and powers. Then, you could use counters to keep track of FX energy.
Why it is called AltNPC2?
It's short for "Alternity NPC 2". Yes, this is the second iteration of AltNPC.
Will there be any future versions of AltNPC2?
At the moment I am happy with AltNPC2 and have no plans to change it. I may change my mind if I come across any glaring bugs or if there's strong demand for more features.
Change Log
21 June 2010
- Added feature to "lock" random characters. (See names and notes section.)
This work is licensed under a Creative CommonsAttribution-Noncommercial 2.5 Australia License.