Larian Banner: Baldur's Gate Patch 9
Previous Thread
Next Thread
Print Thread
Joined: Jul 2014
R
apprentice
OP Offline
apprentice
R
Joined: Jul 2014
This is some stuff I've figured out while fiddling around with skill properties. Maybe it'll help some people who want to edit skills. Everything in here is referring to SkillData.txt, the actual file that gets referenced. There are a few minor naming differences between SkillData.txt and SkillData.xlsm, so don't get confused.

Anyway, here's what the properties seem to do.

Name
It's the internal name. Used when you wish to assign a skill through a script. There seems to be some magic going on here since it's easy to mod any existing skill to do anything, however adding new names that are duplicates of existing skills just gives you unusable skills.

SkillType
The SkillType. Dictates the basis of how the skill operates and the expected parameters. If you don't give it the right parameters, for instance if you change the SkillType of FlareStart to wall without adding any variables, it will crash the game when you try to use the skill. So don't do that.
The SkillTypes used in game are:
Projectile (shoots one or more projectiles i.e. Poison Dart),
ProjectileStrike (summons projectiles i.e. Hail Storm),
Target (doesn't travel a path to reach the target, i.e. Bleed),
Cone (aoe that originates from the user, i.e. DivineLight),
MultiStrike (the only MultiStrike skill is LightningStrike, I guess its defining feature is landing next to the last target you forked),
Quake (the only Quake is Earthquake, seems to be aoe effect plus surface grow centered on caster),
Storm (the only Storm is Lighting Storm, randomly effect things inside an area),
Rush (the only Rush is Battering Ram, dash that effects things on the path),
Jump (skills that teleport the user and can cause an effect where you take off, i.e. Cloak & Dagger)
Tornado (the only Tornado is Tornado, travels from the caster to a point on a random path. Lays down a surface as it goes.),
Wall (the only Wall is Ice Wall, walls grow a surface in addition to creating an area that cannot be moved into and blocks line of sight),
Boulder (the only Boulder is Boulder Dash, boulders launch a projectile that travels forward until it touches an unpathaable area where it then explodes in a surface. Can also grow nearby surfaces.)
Teleportation (skills that teleport a target and cause an effect when the target lands, i.e. Resurrect)
Path (skills that make you draw a path, i.e. Firefly)
Barf (the only Barf skill is Ooze, an enemy only skill that zombies early on in the game use. Seems to grow a surface at a targeted point.)
Rain (Rain skills create a surface, grow that surface, then apply an effect every turn for as long they live.)
Summon (summons a dude, i.e. Summon Spider)
Heal (skills that heal, i.e. Cure Wounds)
Shield (buffs that fall off if you get whacked enough)
Shout (untargeted skills that emanate from the user, i.e. Encourage. Also includes self buffs like Rage.)

Ability
Possible values are None, Offensive, Defensive, Summon, Warrior, Ranger, and Rogue. Seems to be tied in with the ability required to learn to the skill (i.e., you need Hydrosophist to learn skills with "Offensive" Ability and "Water" Element. You need Man-At-Arms to learn "Warrior" Ability and "None" Element skills. Don't know if it does anything else.

Element
Tied to the ability required to learn a skill. See Ability. Possible values are None, Fire, Water, Earth, Air, and Source.

Requirement
Allows you specify weapon requirements and stat minimums before the skill can be used.

ActionPoints
Number of actionpoints the skill uses. You can make this value negative and, although the UI will be confused, you will gain AP when using the skill.

Cooldown
Time required before the skill is back up, measured in game turns.

ChargeDuration
None of the skills in the game use this. Enemies that appear to use charge skills (like the Black Cove Spider Boss), are actually just using AI scripting. Doesn't seem to do anything, although I may not be putting in the right kind of numbers.

Damage
This is a flat number that is then scaled by your characters current level (and possibly primary stat based on ???) to determine the amount of damage a spell does. 1 is very little, 10 is a huge amount. For reference, a dagger attack is 2, a sword or axe attack is 3, and a 2-handed sword is 4. Suicide Bombers and the spell the Weaver uses to kill you when you make her mad do are 10. Dragon breath is 7.

Damage Multiplier
Unlike in the Weapons.txt DamageBoost, this number is a percent, not a modifier, so 100 is base damage. 50 is half damage and 200 is double damage. Wouldn't be surprised if this number is additive with other Damage Boosts (like Oath of Desecration), not multiplicitave.

Damage Range
Percent that indicates how wide the gap is between min damage and max damage. Doesn't change the average damage of the skill. At 0 they will be very close together, at 50, min damage will be decreased by 25% and max damage will be increased by 25%. At 200, the damage will range from 0-2 times max damage.

Damage Type
Dictates the resistance the skill hits against. Possible types are None, Slashing, Piercing, Crushing, Fire, Air, Water, Earth, Poison, and Shadow (in game this is Void). Note that 'None' doesn't appear to be used on any skills that do damage in the game and that damage type may be unresistable.

Skill Properties
Used for applying status affects and creating surfaces. Also conditional effects like Vampire Touch's healing ability.

Here are all the skill properties used in SkillData along with my best guesses as to what the parameters are (blank arguments mean it has the same parameters as the skill above it):

CreateSurface(radius, duration, type[see ValueLists.txt for available types], % chance of creating surface on a direct hit to a target)
TargetCreateSurface
Poison (chance of success, duration)
Burning
Warm
Chilled
Frozen
Knockdown
InstantKnockdown
Petrify
Petrified
Stun
Mute
Charm
Blind
Bleeding
Wet
Slowed
Diseased
Fear
Fortified
Blessed
Invisible
Cursed
Weak
Hasted
Crippled
Lucky
Raged
Invulnerable
Ignite(Chance of Success, radius, ???)
Melt
Electrify
Freeze(Chance of Success on chilled target, duration, ???, ???)
Douse(duration)/no arguments/(duration, ???, ???, ???)
Consume(chance of success, duration, skillboost[see potions.txt for available skillboosts])
Stance
Resurrect(???, percent health restored)
Unlock(Chance of Success, ???, ???, ???, ???)
Heal(Chance of Success, ???, ???, ???, ???)
SELF:OnHit:(Any SkillProperty Argument)

TargetRadius
How far away skill can be targeted.

DeathType
The animation to play when a character dies to this skill.

ExplodeRadius
The area around the target to effect.

CanTargetCharacters/CanTargetItems/CanTargetTerrain
Self Explanatory. Possible values are yes and no.

ForceTarget
Don't know. It's only set on Unlock, Charm, and Silence skills.

TargetConditions
Who can be targetted, see possible values in ValueLists.txt.

UseCharacterStats
Seems to give the skill a hit chance equal to the characters normal attack.

UseWeaponDamage
Uses the equipped weapon stats instead of Damage/DamageType/DamageMultipier/DamageRange

Icon
The little picture that appears on the hotbar.

DisplayName
Not what you think. Allows (and requires) you to point to any skill's DisplayNameRef and use that as your skill's displayed name. What a great feature.

DisplayNameRef
It's the display name, that in all liklihood, your DisplayName is pointing to. Maybe some other skill's DisplayName is pointing to it too. But probably not. Anyway, this is where you name your skill.

Description
Again not the actual description, it points to the correct DescriptionRef to use.

DescriptionRef
This is where you type the description of your skill. Unless Description is pointing somewhere else. Then this is just lonely. Use [1-9] to reference skill variables like damage or radius. You can define which variables in StatsDescriptionParams.

StatsDescription
If you thought this was where we described the stats, you haven't been reading along. Points to any skill's StatDescriptionRef.

StatsDescriptionRef
The smaller print that goes below the big print on your skill. Comes with a lot of nice formatting options. Again, you can use [1-9] to access variables from StatsDescriptionParams

StatsDescriptionParams
A semicolon seperated list of skill variables that you would like to reference in skill's description.

FXScale/PrepareAnimationInit/PrepareAnimationLoop/PrepareEffect/CastAnimation/CastTextEvent/CastEffect/TargetEffect/PreviewImpactEffect
I don't know, some kind of animation stuff for nerds.

Magic Cost
No idea what this does.

Skillbook
Name of the skillbook that teaches the skill. See options.txt for skillbook settings.

Level
Seems to set a required level to know the skill. Also seems to break things fairly quickly.

FORKING ONLY
These parameters are only used if your skill forks (branches out after hitting one target and applies its effects to other targets)

MaxForkCount
When your skill forks, the maximum number of new targets it can jump to. On Ricochet this is 1. On Infectious Flame, it's 5.

ForkLevels
Number of times your skill can fork. On Ricochet this is 5. On Infection Flame it's 1.

ForkChance
Not sure if this calculated individually for each jump if ForkLevels is greater than one.

AreaRadius
The radius to look for targets when forking.

A NOTE ON AreaRadius
AreaRadius appears on many skilltypes but is used in different ways. For area of effect skills, it tends to be the area effected. For skills that look for a nearby target after hitting (Lightning Strike, or Ricochet), it's the distance to look for a new target. For teleport skills, it's how far the target can be teleported.

PROJECTILE ONLY
Only used on skilltype "projectile"

ProjectileCount
Number of projectiles that are fired. Only 1 of the three base projectile paths (the arced one used for flares not the straight one for arrows or the squiggly one for staff of magus) will send the projectiles along different paths. The damage of the skill is divided up roughly evenly between the projectiles.

ProjectileDelay
The time between each projectile. 0 is no pause. 100 is brief pause. 250 is a long pause.

Template
The UUID of the projectile root template to use. Templates are kept in RootTemplates/projectiles.lsb and can be edited with Norbyte's editor. It may also be possible to edit them in the game editor. Templates determine the path that the projectile will take.

ChanceToPierce/MaxPierceCount
Used if you want your projectile to behave like Piercing Ice Shard. The piercing effect is a little weird since it actually seems to target wnemies within a narrow angle.

PROJECTILESTRIKE ONLY (includes everything from Projectile)

AreaRadius

StrikeCount
Number of times something drops from the sky. Note that each strike can create multiple projectiles (although none of the ones in game do).

StrikeDelay
Time between each strike.

TargetProjectiles
Don't know, it's yes for Meteor Shower and Hail Attack. No for Boulder Bash.

Angle
The angle that the strike projectiles descend from the sky on to the target area. Doesn't change the target area, just how the strike projectiles get there. 0 is a straight drop. 45 makes them fly in at a steep angle. 45 also seems to be the hard cap. It's set to 15 for all the skills in this category.

Height
How high the strike projectile starts off in the sky. Set to 10 for all the skills in this category.

SingleSource
Whether all the Strike Projectiles come from the same place. If "Yes", each one will have a slightly random angle (otherwise they'd all land in the same place).


TARGET ONLY

WeaponBones
Only used for Flurry and DaggersDrawn. Presumably it determines the number of strikes since nothing else seems to.

MULTISTRIKE ONLY

AreaRadius

MaxAttacks
Seems like ForkLevels.

NextAttackChance
Seems like it's just ForkChance.

NextAttackChanceDivider
Don't know. It's set to 1 though.

EndPosRadius
How far behind a target you end up. Not really a radius at all.

MaleImpactEffects/FemaleImpactEffects/ReappearEffect/ReappearEffectTextEvent
More stuff for nerds.

QUAKE ONLY
TotalSurfaceCells/SurfaceGrowStep/SurfaceGrowInterval/MinSurfaces/MaxSurfaces/SurfaceMinSpawnRadius/SurfaceStatusChance/SurfaceType/SurfaceLifetime
When a quake skill launches, it seems to start a random walk from the caster location with a surface. These variables control the random walk. Cool if you like random walks. I don't, so someone who cares more about this is gonna have to explain it.

AreaRadius
Only used for the initial effect, has nothing to with the random walk.

LandingEffect
Nerds.

STORM ONLY

AreaRadius

HitRadius
It's filling in for ExplodeRadius since we don't have projectiles. When the skill hits, this determines how large an area is affected.

Lifetime
How long the storm lasts.

MinHitsPerTurn/MaxHitsPerTurn
It's pretty amazing if you set both of these to 30.

HitDelay
Minimum amount of time between hits.

RUSH ONLY

HitRadius
How wide an area your dash hits.

ContinueEffect
Don't know. Probably for nerds.

JUMP ONLY

HitRadius
Filling in for AreaRadius, it determines the area your skill affects before you take off and after you land.

Damage on Jump
Whether or not your jump hurts people as you take off.

Damage on Landing
Whether or not your jump hurts people as you land.

TeleportDelay
How long your teleport lasts. It's set to 830 on all skills in thie catagory.

TeleportTextEvent/LandingEffect/TargetEffect
Neeeerds.

TORNADO ONLY

HitRadius
Apparently it's the new AreaRadius. Determines the affected area around the tornado.

RandomPoints
The default tornado is path is directly from the caster to the targetted point. Each RandomPoint will change that path by pulling it out of position, like streching out a rubber band and then pulling it down or up. The more RandomPoints you add, the more zigzaggy the tornado will tend to be.

PointsMaxOffset
How far each RandomPoint is allowed to pull the tornado. Larger numbers mean more back and forth movement as it travels toward its destination.

SurfaceType/SurfaceRadius/SurfaceLifetime/SurfaceStatusChance
Determines the kind of surface the tornado leaves behind.

WALL ONLY
Walls create a physical barrier that can be walked out of but not into. They don't push whatever they hit out of the way. Walls block line of sight.

SurfaceType/SurfaceLifetime/SurfaceStatusChance
As the wall goes up, lays down this type of surface.

MaxDistance
How far the wall goes.

GrowSpeed/GrowTimeout/SurfaceGrowStep/SurfaceGrowInterval/TotalSurfaceCells
Just like Quakes, Walls create a random walk surface. You'll never see it on the default Ice Wall, but increasing TotalSurfaceCells to 200 will give you an idea of what's going on.

BOULDER ONLY
Boulders are projectiles that travel along the ground until something stops them (usually unpathable terrain or a charcter) and then they explode. The TargetRadius is only for targetting, so long as it can, a boulder will travel forward... forever.

SurfaceRadius/SurfaceType/SurfaceStatusChance
In case you were too lazy to use CreateSurface in SkillProperties I guess.

ExplodeRadius
We're using projectiles again so ExplodeRadius is back. It determines the size of the area affected.

GrowOnSurface/GrowSpeed/RadiusMax
More random walk grow stuff. Bleh. I guess if a boulder is near enough to the right kind of surface it will make it grow.

TravelSpeed
How fast your boulder goes. If we set to this 1, we have enough time to learn that each character can only be hit by the boulder once even if they run into it multiple times.

Template
Not a projectile path. I believe this is the model UUID of our boulder but I haven't actually checked.

BARF ONLY

TotalSurfaceCells/SurfaceLifetime/SurfaceGrowInterval/SurfaceGrowStep/SurfaceStatusChance
Used to make a surface through random walk.

Range
I guess it's subbing in for TargetRadius?

TELEPORTATION ONLY

AreaRadius

HitRadius
Area of effect after teleportation.

Height/Acceleration/TeleportDelay
Cosmetic.

PATH ONLY

SurfaceType/SurfaceRadius/SurfaceLifetime/SurfaceStatusChance
Properties of the surface we're drawing.

Offset
How far before your path starts. Set it at zero and you'll get hit by whatever surface the path creates.

MaxDistance
The total length of the path.

HitRadius
Width of the path.

Height
How far above the ground your little path fairy flies.

TravelSpeed
How fast your path fairy goes.

RAIN ONLY
Rain skills apply the SkillProperties on every turn to everything within them for as long as they last. They also create an intital surface when cast.

Lifetime
How long it rains for.

SurfaceType/SurfaceLifetime/SurfaceStatusChance
I think the surface is only created on cast.

AreaRadius

TotalSurfaceCells/SurfaceGrowStep/SurfaceGrowInterval
Random walk stuff for the surface that gets created and maybe other surfaces of the same type.

SUMMON ONLY

SummonLevel
Doesn't seem to do anything.

Lifetime
-1 if you want your summon never to leave your side.

HEAL ONLY

HealAmount/HealingMultiplier
Filling in for their damage equivalents.

Lifetime

SHIELD ONLY

Bonus Damage/SkillAttributeFlags
No idea and none of the shields use them.

Lifetime
Apparantly 3 is popular here.

HitPointsPercent
Seems to be the percent of max life you can take before the shield gets knocked off. Its set to 125 for all the shields in the game.


SHOUT ONLY

AreaRadius

AddWeaponRange
If "Yes" adds your weapon range to the AreaRadius. Only Whirlwind sets this to yes.

Autocast
If "Yes", the skill will cast as soon as you select it, without targetting.

WeaponBones
Only whirlwind uses this.


ADDITIONAL NOTES
If you want to modify the level requirement for learning a skill, you have to go change it on the skillbook defintion in objects.txt

There's a "using" property that allows one skill to import another skill. I think. It might actually be a two way thing. Seems to break things you mess with it too much.

Joined: Jul 2014
stranger
Offline
stranger
Joined: Jul 2014
Great stuff. Thank you!

Does this mean that there's no way to hook in script commands to skill use? (e.g.: I cast Staff of Magus, which then fires off a script when the induction time is finished.) Or are the script references tied in with the templates somehow?


Link Copied to Clipboard
Powered by UBB.threads™ PHP Forum Software 7.7.5