Jump to content


Member Since 10 Aug 2010
Offline Last Active Today, 12:50 AM

#57869 Character (Stat) Guide

Posted by bead-v on 17 July 2017 - 09:27 AM

This is a guide I started a few years back. I remember there were other things I wanted to add to it, but I don't remember what those things were anymore. It also doesn't seem like I'll be delving into this again any time soon, so I thought I'd just post it the way it is.


The stats are determined from four sources:
1) Base stats
2) Class
3) Attributes
4) Levelup


The character’s base stats [1] define the value of the stats without the application of the other sources. They do not change through levels; they remain static. They are defined in GFF files.


The character's class [2] determines how some of the character’s stats progress through levels without the player doing anything. They are defined in 2DA files.


The attributes [3] affect the character’s stats through levels and are affected by the player. Thus, the player can affect his character’s stats through attributes. The attributes are also defined in the GFF files, but they can be modified on level up.


Levelup [4] is the only way to affect some of the stats. The actual level does not matter.


What are characters for the game?


Characters are defined in so called .utc files. Each character has their own .utc file, which contains all information about this character: their name, appearance, base stats, class, equipment, powers, feats, skills ... However, the stats of the character are also modified by other files, namely the .2da files. These files are basically spreadsheets that define at what rate the stats of the characters change. The stats change at different rates for different characters, depending on their CLASS. These rates do not change during the course of the game, so the character class defines at what rates the character’s stats will change. The possible classes in TSL are:


- soldier – SLD
- scout – SCT
- scoundrel – SND
- tech specialist – TEC
- minion – MIN, not available for players


- expert droid – XPD
- combat droid – CBD


- jedi guardian – JGD
- jedi sentinel – JSN
- jedi consular – JCS
- jedi weapon master – JWM
- jedi watchman – JWA
- jedi master – JMA


- sith marauder – SMA
- sith assassin – SAS
- sith lord – SLD


However, there are still way to affect your stats during the course of the game. The way of doing this is via the attributes [3]. I will list them here just for reference, and only at the end of this tutorial will I describe fully what each of the attributes does specifically for the character.


Strength – STR
Dexterity – DEX
Constitution – CON
Intelligence – INT
Wisdom – WIS
Charisma – CHA


The attributes themselves are also a kind of stat. They have a base value [1], to which the player adds points every four levels during level up.

One thing to keep in mind is that the actual value of the attribute never matters. It’s always the modifier that you get out of it that matters. The conversion formula is the same for all attributes: a value of 8 translates to a modifier of -1, and for every 2 attribute points the modifier increases by 1. That is:

Modifier = (Attribute – 10) / 2


Thus, 12 points equal a modifier of +1.


Auto Balance


The game uses a system to automatically adjust the stats of enemies when they are spawned according to the player character. Exactly to what extent they are modified is defined in autobalance.2da. All values depend on the player level, which is determined from experience. This means that if you have enough experience for level 33, the game will consider that level even if you haven't levelled up yet.


List of stats

Vitality points
Force points
Fortitude saving throw
Reflex saving throw
Will saving throw
Skill points




The character's level is also a stat, though it is used mainly to calculate other stat's. Here is the formula.


Level = Level(Class I) + Level(Class II) + (PlayerLevel * levelmult(autobalance.2da) - 1) (only if mult > 0)


Vitality Points - VP


This is your health bar. The number is based on the “Base Hit Points” field in the .utc. This value is modified by autobalance. At levelup, you gain: 6-12 points depending on your class + CON.


VP = BaseHitPoints * (PlayerLevel * vpmult(autobalance.2da) - 1)(only if mult > 0) + HitDie(classes.2da)/Levelup + CON * Level


Mira’s max VP is 54. She is at level 6 when you meet her. When you level up, she is going to have 63 HP. She got +8 because she is a scout [2] and +1 because her CON is 12 [3].


Force Points - FP


This is the force bar. This stat works just like the health stat. “Max Force Points” is defined with the character [1]. On level up, you gain: 4-10 points depending on your class [2] + WIS [3].


FP = Max Force Points + ForceDie(classes.2da)/Levelup + WIS * Level


Defense - DEF


This characterizes how hard the character is to hit. This is basically evasion. The calculation of this stat is a bit more complicated. Like with the previous stats, there is one part of it that is defined with the character (in the .utc). This is called the Natural AC [1]. Most characters have the natural AC at 0. (G0-T0 has 2, for example.)


DEF = 10 + Natural AC [1] + Class AC (acbonus.2da) [2] + DEX [3] + (PlayerLevel * armormult(autobalance.2da) +2) (only if mult > 0)


Class AC depends on the class AND on level. The party members actually have feats that describe the class AC (Jedi: Jedi Sense, Prestige Sense, Greater Prestige Sense; Droids: Droid Upgrade; Soldiers: Mandalorian Courage), but it is not actually provided by these feats but by acbonus.2da. 


Originally, the plan was to make these class AC bonuses as actual feats, meaning that a level 1 feat would mean DEF+2, level 2 DEF+4 and level 3 DEF+6. This can be seen in that there exist two further levels of Atton’s feat and the droids’ feat. Their descriptions are still intact, but the effects are obsolete. The level 2 droid feat has actually been left with HK-47 even though it has no effect. This might be a leftover from K1.


The Handmaiden and the Disciple are currently the only ones who lack a feat describing their defense bonuses.


Attack - ATT


Attack is the opposite of DEF. When someone performs an attack, first the ATT of the attacker is compared to the DEF of the attackee, to see whether the attack HIT. Only after it has been established that the attack hit is the damage calculated. The ATT is not constant however. It does have a constant part that is added to the roll of a 20-sided die (D20). If the total ATT is greater than the DEF of the attackee, then the attack succeeds, otherwise it misses.


ATT = D20 + Level(Class I) + Level(Class II) + (PlayerLevel * tohitmult(autobalance.2da)) (only if mult > 0) + STR/DEX [3]


There are a few special cases though. If the roll of D20 is 1, then this is an AUTOMATIC MISS. This means that it misses even if the total ATT of the character is greater than the DEF of the attackee. Similarly, if the roll is 20, this is an AUTOMATIC HIT.


You may have noticed that ALL weapons have critical hit numbers in their descriptions, something like 20-20/x2. If the roll of D20 is in the critical hit scope of the weapon, and if the attack would hit (ATT > DEF), then the ATT is calculated again. This is the THREAT ROLL. If the ATT with the threat roll is greater than the opposing creature’s DEF, then the damage is doubled or even tripled in some cases, according to the weapon. Otherwise the damage is dealt normally.


The STR modifier is added if the attacker is using a melee weapon, the DEX modifier is added if the attacker is using a ranged weapon. With Finesse feats, the attacker can add the DEX modifier instead of the STR modifier if their DEX is higher than STR.


With two-handed weapons or two weapons one in each hand the situation is the following: each hand performs its own attack. The attacks are calculated in much the same way, except for the penalties: ATT -6 in the main hand, ATT -10 in the off hand. In the case of a balanced second weapon or a two-handed weapon, the main hand attack penalty is reduced by 2. The Two-Weapon Fighting feats further reduce the penalties.


Damage - DAM


Damage calculation.


DAM = WeaponDie * (PlayerLevel * damagemult(autobalance.2da) + 1) (only if mult > 0) + (1.5(if single weapon) * STR)(if melee)


The Saves


Saves characterize how good a character is at shrugging off effects. All hostile force powers can be “saved”, as well as effects such as poison, and possibly others, by the three saving throws: Fortitude, Reflex, Will.


Fortitude - FOR


With a high fortitude you are physically able to endure attacks.


FOR = Class dependent(cls_st_*.2da) + character bonus(*.utc) + (PlayerLevel * savemult) (only if mult > 0) + CON


Saves against:
- Stun, Stasis, Stasis Field
- Stun Droid, Disable Droid, Destroy Droid
- Wound, Choke, Kill
- Affliction
- Drain Life, Death Field
- Crush
- Critical Strike/Sniper Shot Stun Effect
- Power Attack/Power Blast Knockback Effect


Reflex - REF


With a high reflex you are quick enough to evade attacks.


REF = Class dependent(cls_st_*.2da) + character bonus(*.utc) + (PlayerLevel * savemult) (only if mult > 0) + DEX


Saves against:
- Push, Whirlwind, Wave


Will - WIL


With a high will your mind is powerful enough to shrug off attacks.


WIL = Class dependent(cls_st_*.2da) + character bonus(*.utc) + (PlayerLevel * savemult) (only if mult > 0) + WIS


Saves against:
- Slow
- Fear, Horror, Insanity
- Shock, Lightning, Storm
- Drain Force, Improved Drain Force, Master Drain Force
- Scream, Improved Scream, Master Scream
- Mind Trick, Confusion
- Beast Trick, Beast Confusion
- Droid Trick, Droid Confusion
- Crush Opposition


Skill points


The amount of skill points you get to spend on your skills when you level up.


The amount is: skillpointbase(classes.2da) + INT (Any bonuses to Intelligence from items are not taken into account.)




Computer use = base(*.utc)+ INT + LEVELUP
Demolitions = base(*.utc) + INT + LEVELUP
Stealth = base(*.utc) + DEX + LEVELUP
Awareness = base(*.utc) + WIS + LEVELUP
Persuade = base(*.utc) + CHA + LEVELUP
Repair = base(*.utc) + INT + LEVELUP
Security = base(*.utc) + INT + LEVELUP
Treat Injury = base(*.utc) + WIS + LEVELUP




Attributes can be modified on every fourth level (check!), no matter what the character's class is. They affect a lot of the stats described above. I will show a list below, which

shows what each attribute is good for.



Adds to ATT of characters with melee weapons. Improves POWER ATTACK's KICKBACK and CRITICAL STRIKE's STUN.
Adds to DAMAGE of characters with melee weapons. (When wielding a single one-handed weapon, a character's Strength bonus to damage is 50% greater!)



Adds to DEF.
Adds to ATT of characters with ranged weapons. Improves POWER BLAST's KICKBACK and SNIPER SHOT's STUN.
Adds to STEALTH.
Adds to REF.



Adds to FOR.
Adds to VP.
Determines IMPLANT.



Adds to number of skill points to be distributed on each level-up.



Adds to WIL.
Adds to FP.



Adds to the PERSUADE skill.
Reduces ALIGNMENT PENALTY for force powers.
Determines POTENCY of force powers.


Lighsaber Forms


Form I - Shii Cho - Determination

Attack Modifier: +1
Defense: +3
Defense vs. Current Target: -3


Form II - Makashi - Contention

Attack Modifier: +3 (vs Lighstaber)
Damage: +3
Blaster Bolt Deflection: -5
Saves vs. Force Powers: +2


Form III - Soresu - Resilience

Defense vs. Current Target: +2
Blaster Bolt Deflection: +4
Weapon Threat Range: -1


Form IV - Ataru - Aggression

Defense: -2
Defense vs. Current Target: +5
Blaster Bolt Deflection: -4
Weapon Threat Range: +1


Form V -  Shien - Perseverance

Attack Modifier: +2
Defense vs. Current Target: -5
Blaster Bolt Deflection: +2
Critical Multiplier: +1


Form VI - Niman - Moderation

Attack Modifier: +1
Defense: +1
Blaster Bolt Deflection: +1
Saves vs. Force Powers: +1


Form VII - Juyo - Ferocity

Defense: -4
Defense vs. Current Target: +2
Saves vs. Force Powers: -4
Attacks per Round: +1
Critical Hit Attack Modifier: +4


Force Forms


Force Channel

FP Regeneration: +50% (non-combat)
Force Power Damage: +3
Saves vs. Force Powers: +2


Force Affinity

FP regenerate during combat


Force Potency

Force Power Damage: + 30%
FP Cost: + 20%


Force Mastery

Force Power Duration: +50%
Opponents' Saves vs Force Powers: -2
Saves vs Force Powers: -4
FP Cost: +20%

#57262 Selkath with lightsabers

Posted by bead-v on 16 June 2017 - 10:49 PM

so you could reduce their size using this as an excuse.


Actually that's a very good idea. It always annoyed me that they look just like regular selkath and I have to use my imagination to see them as young. For me this is way more important than having them use lightsabers.

#57048 Kotor 2 story questions

Posted by bead-v on 08 June 2017 - 06:49 AM

Speaking of Goto's ship, this conversation, that I think was added by TSLRCM:


Does this make more sense to you than it appears to me? The Zhug lines sound like something that would have been said in the bounty hunter meeting at the start of NS, but here I'm stumped. I don't see why they would promise to scour the galaxy to bring the Exile to Goto's ship, when the Exile is already on Goto's ship, speaking to them. Also, Goto is nowhere to be seen. And what does that last line mean, when they open fire at you anyway afterwards?


I agree with JCarter, I think those lines were for testing purposes (or just for fun during testing). Though to me it seems that you were able to talk to the bounty hunters before initiating the Goto Meeting cutscene. The lines for the HK units are the same thing. In my version of Goto's Yacht, I've gotten rid of both those scenes.

#57011 Kotor 2 story questions

Posted by bead-v on 06 June 2017 - 11:29 PM

Now that I think of it, it might be as simple as that she wanted to sell the Exile to the Exchange for the bounty. If the Exile just met with Visquis, no bounty for Mira, so she was just inserting herself as an intermediary, thinking that if she captured the Exile and only she knew where she'd hidden him, she could dictate terms?


Still feels dumb as hell when you watch Visquis turn the lightning trap on her. But that may be hindsight bias, since we know Visquis had betrayed Goto, and Mira hadn't known that before that scene.


Well, that would make sense if there was no other way to sell the Exile to Goto – otherwise some other way would probably have been easier than walking into a place that can kill you if your suit gets breached. Also, whether Visquis works for Goto at this point or not is irrelevant, in both cases he'd want the Exile, so he'd do the same thing. Mira must have thought like you said to have gone to meet Visquis, but it justs seems very naive, which goes against Mira being otherwise portrayed as smart. Actually in LS, it's even worse because she actually warns the player that Visquis is setting up a trap. Going in like that regardless just seems stupid. It's just badly written, which is probably the result of the other Nar Shaddaa stuff being cut, but unfortunately that's what we have to work with.

#56990 End Credit Music: An Plea to Those Hoping to Resolve the Recent Issue

Posted by bead-v on 06 June 2017 - 08:21 AM

No matter how well the music is edited, it's going to sound abrupt if it changes in the middle of the beta testers or translators or whatever.


Well, it's easier to make a good mix if you can actually see what it's playing against :)


M4-78 is going to have KOTOR March, as previously discussed; for TSLRCM, in my proposal, I went with the Sith action theme


Sounds good! I'm hoping that's it then :) Any other ideas for the music can be considered for the separate mod that you suggested :)

#56966 Kotor 2 story questions

Posted by bead-v on 05 June 2017 - 08:57 AM

2. What was Mira's plan when she went to meet Visquis? What was she hoping to accomplish?


Had to think about that a lot for my Nar Shaddaa Rewrite mod (currently on hold since I'm working on modding tools).


I don't think I managed to come up with a good answer. For the light side scenario, I was changing it to the alternative scenario where the Exile and Mira both believe that Visquis holds Zez-Kai Ell. The Exile obviously has to go to save him, all Mira does is warn him of Visquis and make a deal to take them both to G0-T0 with "no pain, no fuss" after they're done in the JJT. Then I have Mira discover that Ell isn't being held by Visquis, so she follows the Exile into the JJT. But that's my interpretation, only the bold part is the original scenario that we have VOs for.


She would still do that for the DS scenario though, and I don't have a good answer to that either. Yet (hopefully).


But there's way more nonsense in that part of the story. Like, in the LS scenario, Hanharr will claim that he brought the Jedi to the JJT (like in DS), but he didn't do anything at all actually. It's stuff like that that made my go into making that mod, along with clearing the base for the GenoHaradan.

#56950 End Credit Music: An Plea to Those Hoping to Resolve the Recent Issue

Posted by bead-v on 04 June 2017 - 04:24 PM

Here's my third one:


I'm liking this one as well!


@TSLRCM_team: There's been plenty of proposals, you're bound to find something among them that works. This issue ain't worth keeping the mods off the site, so.... make TSLRCM and M4-78EP downloadable again!

#56938 End Credit Music: An Plea to Those Hoping to Resolve the Recent Issue

Posted by bead-v on 04 June 2017 - 08:11 AM

DarthVarkor's first mix seems like the simplest and most obvious thing to do (rebuilt enclave for tslrcm, hero's walk for m478). Actually, hero's walk is pretty much perfect for m478.


Here's two more suggestions for tslrcm in case you're looking for something more bombastic in the beginning.



#56757 Alien VOs

Posted by bead-v on 29 May 2017 - 05:35 PM

No, but you do need the .lip files in your .mod file. Try to think of a module with an alien you need lipsync for, then take the .lips from that module's _loc.mod.

#56455 HELP: Ebon Hawk Texture K1

Posted by bead-v on 16 May 2017 - 10:03 AM

Seriously DarthParametric, are you aiming for some kind of community award that I am unaware about? :lol:


Here's a BIG thank you on behalf of the community for helping so many people with their issues of all kinds! You really deserve some kind of medal... :P

#56451 KOTOR Remake : "Apeiron"

Posted by bead-v on 16 May 2017 - 07:22 AM

If we're going to play that game, there are also a slew of grammar errors in that screenshot as well.

In the second sentence, "Engine refresh" should be "Engine refreshes". That same sentence is also missing a comma after 80's, as it is composed of two statements.

The next sentence is also two statements yet has no comma after "Half Life". (technically the word "Half-Life" should also be hyphenated, but that's getting into pedantry)

The next sentence would either need a semicolon instead of a comma after "refresh", or it could be separated into two sentences. The next portion of the sentence would then have a comma between "Aperion" and "since".

Lastly, "it's" should be "its". (the most egregious offence in my opinion)


Hm... It seems I missed one. The phrase "in the Unreal Engine 3" is technically wrong, and should either be "in the Unreal engine" or "in Unreal Engine 3". This is because "Unreal Engine 3" is technically a proper noun.


Would you also put a comma between 'core' and 'Apeiron' in the last sentence?


I wasn't aware that the basic rule for the conjunction 'and' between independent clauses is to put the comma in front of it. Interesting... :) My language wouldn't ever put a comma in such a case, and I don't *think* any of the other languages I know would. Will have to check.

#56423 Music (Non - Star wars)

Posted by bead-v on 15 May 2017 - 03:28 PM

IIRC one of the two cellists is from my hometown :lol:

#56339 Nar Shaddaa Expansion

Posted by bead-v on 13 May 2017 - 01:29 PM

Here's some advice I'd give. If you don't want it, just ignore it :)


Make the decision about the VOs last (relatively). It's probably a good idea to make your characters aliens but keep in mind that you might be converting (some of) them to humans later. Anyway you've got a LOT of other work to do before you even get to actually finalizing the characters, which is when you will know for sure what you even need in terms of VOs, so it's pointless to think about VOs and voice actors now.


The only exception is reused VO. If you plan on doing that, and especially if it's important to the story, collect your VOs first. Mute scenes don't work very well, and animations can't save you all the time!


Also, do your story first and only move on when it's solid. It needs to be well thought out because it's not gonna help you if at some point you realize you can't pull something off and then you have to scrap a bunch of things and start over.


I wish you good luck and lots of great ideas for your mod :)

#56264 (Recruit Atris Mod) Can I get these certain scripts please?

Posted by bead-v on 10 May 2017 - 05:07 PM

If you write it like that, ClearAllEffects() is executed on the object that is the "OWNER" of the main function (the object that the script was run on).


If you know a function affects an object, and it doesn't take that object as a parameter, then you can assume it's gonna operate on the OWNER. You can use AssignCommand() to specify the OWNER if need be. In your case:

void main(){
    object oNPC = GetObjectByTag("Atton");

    AssignCommand(oNPC, ClearAllEffects());

If Atton was the owner of the script, however, your original script would work. But apparently he wasn't, so you were clearing the effects on some other object.

#56247 [TSL] Holocron at the Sith Academy

Posted by bead-v on 10 May 2017 - 10:55 AM

The issue seems to depend on a private conversation between Sith Holocron and seph6 which the rest of us don't have access to. Since only Sith Holocron and seph6 really know all the circumstances of the issue, I think it would have been better to handle this in private.


Anyway, unless Sith Holocron wants the pictures removed, the matter seems resolved, so I could see this topic being closed. There's no need for this thread to collect a bunch of opinions from people who don't know what went on behind the scenes.