Way to reset talents/skill points?

#1 Edited by DJJoeJoe (1333 posts) -

Hey? 
 
SO being that I've not seen any sort of trainer that can do this, does anyone know if eventually it's possible to reset points spent? Like many games like this it's almost impossible to really know the affect stats will have on your personal play experience and needs, which is double lame when you're asked to pre-spec a few points before you're even done creating your char or seeing the first cut-scene :S 
 
If there is ultimately no way to do this officially in the game as far as visiting a trainer or some option on the menus, does anyone have any console commands that would allow setting the ranks back down to 0 so I could manually put points back in? 
 
Thanks. 
 
EDIT: An example of my view, is I grabbed the ice weapons on my mage and to see that same spell on Morrigan is disheartening. I should have at least gone down the fire path there or something, as they do not stack.

#2 Posted by Rhaknar (5939 posts) -

I heard there are no respecs

#3 Posted by ArchScabby (5809 posts) -

I might want to do this too, if it's possible.

#4 Posted by Puer (26 posts) -

It's possible, through cheats, to add some skills. But I guess you know that and you didn't use it, cause you would feel bad about it ;d.

#5 Posted by Blitzer (394 posts) -

A respec option would be helpeful. I understand it's an RPG and before MMOs you could never really do this. But in a game this long it just sucks to get to a certain point and realize that a specific tree is pretty useless. 
Hopefully they patch in something.

#6 Posted by NoXious (1353 posts) -

I found out something nifty that made me reroll when I had invested 10 hours, beyond the first level at creation you can choose not to invest anything upon level up!
So I simply choose what felt right for the first attributes, skills and spells (talents for a warrior/rogue) and then only added the attributes whenever I leveled up. Saving me a number of skills and spells to determine on a later point in the game.

Granted, this doesn't help your case where even if you knew this you 'took the wrong spell'. But having both Ice Weapons isn't bad if you ask me.
It means you can choose whoever has the better manapool to pay the upkeep. Having Cold on both mages is great,  crowd control through Frozen plus the chances of a Shatter = awesome.

#7 Posted by Maxszy (2067 posts) -

My mage has Ice damage (all four where Morrigan doesn't) as well as electricity and it works quite well. So I wouldn't worry too much, ice comes in really handy. Plus personally, I find myself using my main character much more than the others in the heat of battle so being able to freeze yourself is nice.

#8 Posted by Galbrezu (126 posts) -

No, there is no respec, having two people with cone of cold is an incredibly good combination though.

#9 Posted by Ximm (6 posts) -
Try this script I wrote...
 
 
// -----------------------------------------------------------------------------
// reset.nss
// Version 2.0
// -----------------------------------------------------------------------------
/*

    Resets the current character's attributes, skills, and talents

    Usage:

        runscript reset

*/
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------

#include "sys_autolevelup_h"
#include "sys_chargen_h"
#include "sys_rewards_h"
#include "sys_autoscale_h"

void ChangeAttributes(object oChar)
{
    int nRace = GetCreatureRacialType(oChar);
    int nClass = FloatToInt(GetCreatureProperty(oChar,PROPERTY_SIMPLE_CURRENT_CLASS));

    // save attribute points

    int oldStatTotal=FloatToInt(GetCreatureProperty(oChar,PROPERTY_ATTRIBUTE_STRENGTH))+
                   FloatToInt(GetCreatureProperty(oChar,PROPERTY_ATTRIBUTE_DEXTERITY))+
                   FloatToInt(GetCreatureProperty(oChar,PROPERTY_ATTRIBUTE_CONSTITUTION))+
                   FloatToInt(GetCreatureProperty(oChar,PROPERTY_ATTRIBUTE_WILLPOWER))+
                   FloatToInt(GetCreatureProperty(oChar,PROPERTY_ATTRIBUTE_INTELLIGENCE))+
                   FloatToInt(GetCreatureProperty(oChar,PROPERTY_ATTRIBUTE_MAGIC));
    int oldStatPoints=FloatToInt(GetCreatureProperty(oChar,PROPERTY_SIMPLE_ATTRIBUTE_POINTS));

    // intialize

    SetCreatureProperty(oChar,PROPERTY_ATTRIBUTE_STRENGTH,      CHARGEN_BASE_ATTRIBUTE_VALUE, PROPERTY_VALUE_BASE);
    SetCreatureProperty(oChar,PROPERTY_ATTRIBUTE_DEXTERITY,     CHARGEN_BASE_ATTRIBUTE_VALUE, PROPERTY_VALUE_BASE);
    SetCreatureProperty(oChar,PROPERTY_ATTRIBUTE_CONSTITUTION,  CHARGEN_BASE_ATTRIBUTE_VALUE, PROPERTY_VALUE_BASE);
    SetCreatureProperty(oChar,PROPERTY_ATTRIBUTE_WILLPOWER,     CHARGEN_BASE_ATTRIBUTE_VALUE, PROPERTY_VALUE_BASE);
    SetCreatureProperty(oChar,PROPERTY_ATTRIBUTE_INTELLIGENCE,  CHARGEN_BASE_ATTRIBUTE_VALUE, PROPERTY_VALUE_BASE);
    SetCreatureProperty(oChar,PROPERTY_ATTRIBUTE_MAGIC,         CHARGEN_BASE_ATTRIBUTE_VALUE, PROPERTY_VALUE_BASE);

    // -------------------------------------------------------------------------
    // Attributes for Race
    // -------------------------------------------------------------------------
    // Read the modifier values in
    //    - Clean this 2da mess up, there's a better structure than this.
    // -------------------------------------------------------------------------
    float fStrMod  = GetM2DAFloat(TABLE_RULES_RACES,"StrAdjust",nRace);
    float fDexMod  = GetM2DAFloat(TABLE_RULES_RACES,"DexAdjust",nRace);
    float fIntMod  = GetM2DAFloat(TABLE_RULES_RACES,"IntAdjust",nRace);
    float fWillMod = GetM2DAFloat(TABLE_RULES_RACES,"WillAdjust",nRace);
    float fConMod  = GetM2DAFloat(TABLE_RULES_RACES,"ConAdjust",nRace);
    float fMagMod  = GetM2DAFloat(TABLE_RULES_RACES,"MagAdjust",nRace);

    // -------------------------------------------------------------------------
    // Modify the creature properties based on the values
    // -------------------------------------------------------------------------

    Chargen_ModifyCreaturePropertyBase(oChar, PROPERTY_ATTRIBUTE_STRENGTH,       fStrMod);
    Chargen_ModifyCreaturePropertyBase(oChar, PROPERTY_ATTRIBUTE_DEXTERITY,      fDexMod);
    Chargen_ModifyCreaturePropertyBase(oChar, PROPERTY_ATTRIBUTE_INTELLIGENCE,   fIntMod);
    Chargen_ModifyCreaturePropertyBase(oChar, PROPERTY_ATTRIBUTE_WILLPOWER,      fWillMod);
    Chargen_ModifyCreaturePropertyBase(oChar, PROPERTY_ATTRIBUTE_CONSTITUTION,   fConMod);
    Chargen_ModifyCreaturePropertyBase(oChar, PROPERTY_ATTRIBUTE_MAGIC,          fMagMod);

    // -------------------------------------------------------------------------
    // Attributes for Class
    // -------------------------------------------------------------------------
    // Read the modifier values in
    //    - Clean this 2da mess up, there's a better structure than this.
    // -------------------------------------------------------------------------
    fStrMod  = GetM2DAFloat(TABLE_RULES_CLASSES,"StrAdjust",nClass);
    fDexMod  = GetM2DAFloat(TABLE_RULES_CLASSES,"DexAdjust",nClass);
    fIntMod  = GetM2DAFloat(TABLE_RULES_CLASSES,"IntAdjust",nClass);
    fWillMod = GetM2DAFloat(TABLE_RULES_CLASSES,"WillAdjust",nClass);
    fConMod  = GetM2DAFloat(TABLE_RULES_CLASSES,"ConAdjust",nClass);
    fMagMod  = GetM2DAFloat(TABLE_RULES_CLASSES,"MagAdjust",nClass);

    // -------------------------------------------------------------------------
    // Modify the creature properties based on the values
    // -------------------------------------------------------------------------

    Chargen_ModifyCreaturePropertyBase(oChar, PROPERTY_ATTRIBUTE_STRENGTH,      fStrMod);
    Chargen_ModifyCreaturePropertyBase(oChar, PROPERTY_ATTRIBUTE_DEXTERITY,     fDexMod);
    Chargen_ModifyCreaturePropertyBase(oChar, PROPERTY_ATTRIBUTE_INTELLIGENCE,  fIntMod);
    Chargen_ModifyCreaturePropertyBase(oChar, PROPERTY_ATTRIBUTE_WILLPOWER,     fWillMod);
    Chargen_ModifyCreaturePropertyBase(oChar, PROPERTY_ATTRIBUTE_CONSTITUTION,  fConMod);
    Chargen_ModifyCreaturePropertyBase(oChar, PROPERTY_ATTRIBUTE_MAGIC,         fMagMod);

    // -------------------------------------------------------------------------
    // Set the initial character stats based on Class (Health, Mana, etc..)
    // -------------------------------------------------------------------------
    // Initialize all stats
    // -------------------------------------------------------------------------
    SetCreatureProperty(oChar, PROPERTY_DEPLETABLE_HEALTH ,          1.0f, PROPERTY_VALUE_BASE);
    SetCreatureProperty(oChar, PROPERTY_DEPLETABLE_MANA_STAMINA ,    0.0f, PROPERTY_VALUE_BASE);
    SetCreatureProperty(oChar, PROPERTY_ATTRIBUTE_DEFENSE ,          0.0f, PROPERTY_VALUE_BASE);
    SetCreatureProperty(oChar, PROPERTY_ATTRIBUTE_ATTACK,            0.0f, PROPERTY_VALUE_BASE);
    SetCreatureProperty(oChar, PROPERTY_ATTRIBUTE_DAMAGE_BONUS,      0.0f, PROPERTY_VALUE_BASE);
    SetCreatureProperty(oChar, PROPERTY_ATTRIBUTE_FLANKING_ANGLE,  60.0f, PROPERTY_VALUE_BASE);

    // -------------------------------------------------------------------------
    // Read the modifier values in
    //    - Clean this 2da mess up, there's a better structure than this.
    // -------------------------------------------------------------------------

    float fBaseAttack = GetM2DAFloat(TABLE_RULES_CLASSES,"BaseAttack",nClass);
    float fBaseDefense = GetM2DAFloat(TABLE_RULES_CLASSES,"BaseDefense",nClass);

    Chargen_ModifyCreaturePropertyBase(oChar, PROPERTY_ATTRIBUTE_ATTACK,  fBaseAttack);
    Chargen_ModifyCreaturePropertyBase(oChar, PROPERTY_ATTRIBUTE_DEFENSE, fBaseDefense);

    float fRankModifierHealth = GetAutoScaleDataFloat(GetCreatureRank(oChar),AS_RANK_HEALTH_SCALE_FACTOR);

    //bugfix:
    if (fRankModifierHealth == 0.0f)
    {
        fRankModifierHealth = 1.0f;
    }

    // we subtract 1 as the stat is initialized at 1 to prevent the character from dying

    float fDepletableMod = GetClassDataFloat(CLASS_DATA_BASE_MANA_STAMINA, nClass) ;
    float fHealthMod = (((GetClassDataFloat(CLASS_DATA_BASE_HEALTH,nClass))    * fRankModifierHealth)) - 1.0f;
    float fDamageMod = GetClassDataFloat(CLASS_DATA_DAMAGE_BONUS, nClass);

    // -------------------------------------------------------------------------
    // Modify the creature properties based on the values
    // -------------------------------------------------------------------------
    Chargen_ModifyCreaturePropertyBase(oChar, PROPERTY_DEPLETABLE_MANA_STAMINA,  fDepletableMod );
    Chargen_ModifyCreaturePropertyBase(oChar, PROPERTY_DEPLETABLE_HEALTH,        fHealthMod );
    Chargen_ModifyCreaturePropertyBase(oChar, PROPERTY_ATTRIBUTE_DAMAGE_BONUS ,  fDamageMod );

    // -------------------------------------------------------------------------
    // Go from level 1 to character level
    // -------------------------------------------------------------------------
    int nLevelsToAdd = FloatToInt(GetCreatureProperty(oChar,PROPERTY_SIMPLE_LEVEL))-1;
    float fRankModifier = GetAutoScaleDataFloat(GetCreatureRank(oChar),AS_RANK_SCALE_FACTOR);


    fDamageMod = GetClassDataFloat(CLASS_DATA_DAMAGE_BONUS    , nClass) * nLevelsToAdd;
    fHealthMod    = (GetClassDataFloat(CLASS_DATA_HEALTH_PER_LEVEL, nClass) * fRankModifierHealth) * nLevelsToAdd ;
    float fManaMod   = GetClassDataFloat(CLASS_DATA_MANA_PER_LEVEL, nClass) * nLevelsToAdd * fRankModifier;

    Chargen_ModifyCreaturePropertyBase(oChar,PROPERTY_ATTRIBUTE_DAMAGE_BONUS, fDamageMod);
    Chargen_ModifyCreaturePropertyBase(oChar,PROPERTY_DEPLETABLE_HEALTH, fHealthMod);
    Chargen_ModifyCreaturePropertyBase(oChar,PROPERTY_DEPLETABLE_MANA_STAMINA, fManaMod);

    // -------------------------------------------------------------------------
    // Restore attribute points
    // -------------------------------------------------------------------------
    int newStatTotal=FloatToInt(GetCreatureProperty(oChar,PROPERTY_ATTRIBUTE_STRENGTH))+
                   FloatToInt(GetCreatureProperty(oChar,PROPERTY_ATTRIBUTE_DEXTERITY))+
                   FloatToInt(GetCreatureProperty(oChar,PROPERTY_ATTRIBUTE_CONSTITUTION))+
                   FloatToInt(GetCreatureProperty(oChar,PROPERTY_ATTRIBUTE_WILLPOWER))+
                   FloatToInt(GetCreatureProperty(oChar,PROPERTY_ATTRIBUTE_INTELLIGENCE))+
                   FloatToInt(GetCreatureProperty(oChar,PROPERTY_ATTRIBUTE_MAGIC));

    SetCreatureProperty(oChar,PROPERTY_SIMPLE_ATTRIBUTE_POINTS, IntToFloat(oldStatPoints+(oldStatTotal-newStatTotal)));
    DEBUG_PrintToScreen("New Attribute points: " + IntToString(oldStatPoints+(oldStatTotal-newStatTotal)));

}

void AddAbilities(object oChar)
{
    int nRace = GetCreatureRacialType(oChar);
    int nClass = FloatToInt(GetCreatureProperty(oChar,PROPERTY_SIMPLE_CURRENT_CLASS));
    int nBackground=FloatToInt(GetCreatureProperty(oChar,PROPERTY_SIMPLE_BACKGROUND));

    int nSkillPoints = FloatToInt(GetCreatureProperty(oChar,PROPERTY_SIMPLE_SKILL_POINTS));
    int nTalentPoints = FloatToInt(GetCreatureProperty(oChar,PROPERTY_SIMPLE_TALENT_POINTS));
    int nAbility;


     // -------------------------------------------------------------------------
    // Race
    // -------------------------------------------------------------------------
    // Humanoids gain the 'humanoid' trait (prereq for skills)
    nAbility = ABILITY_TALENT_TRAIT_HUMANOID;
    if (IsHumanoid(oChar) && !HasAbility(oChar,nAbility))
    {
        AddAbility(oChar,nAbility);
    }


    // -------------------------------------------------------------------------
    // Dwaves gain dwarven resistance free.
    // -------------------------------------------------------------------------
    nAbility = ABILITY_SKILL_DWARVEN_RESISTANCE;
    if ((nRace == RACE_DWARF) && (!HasAbility(oChar,nAbility)))
    {
        AddAbility(oChar,nAbility);
    }

    // -------------------------------------------------------------------------
    // 2. Ability #1
    // -------------------------------------------------------------------------
    nAbility = GetM2DAInt(TABLE_RULES_RACES,"Ability1",nRace);
    if (nAbility && !HasAbility(oChar,nAbility))
    {
        _AddAbility(oChar, nAbility);
 //       nTalentPoints--;
    }


    // -------------------------------------------------------------------------
    // 3. Ability #2
    // -------------------------------------------------------------------------
    nAbility = GetM2DAInt(TABLE_RULES_RACES,"Ability2",nRace);
    if (nAbility && !HasAbility(oChar,nAbility))
    {
        _AddAbility(oChar, nAbility);
 //       nTalentPoints--;
    }

    // -------------------------------------------------------------------------
    // 4. Grant class abilities  (hidden class talent)
    // -------------------------------------------------------------------------
    // -------------------------------------------------------------------------
    // 1. Ability #1
    // -------------------------------------------------------------------------
    nAbility = GetM2DAInt(TABLE_RULES_CLASSES,"StartingAbility1",nClass);
    if (nAbility && !HasAbility(oChar,nAbility))
    {
        _AddAbility(oChar, nAbility);
        nTalentPoints--;
    }

    // -------------------------------------------------------------------------
    // 2. Ability #2
    // -------------------------------------------------------------------------
    nAbility = GetM2DAInt(TABLE_RULES_CLASSES,"StartingAbility2",nClass);
    if (nAbility && !HasAbility(oChar,nAbility))
    {
        _AddAbility(oChar, nAbility);
        nTalentPoints--;
    }

    // -------------------------------------------------------------------------
    // Starting Skills
    // -------------------------------------------------------------------------
    if (nClass == CLASS_WARRIOR)
    {
        nAbility = 100100;
        if (!HasAbility(oChar,nAbility)) {
            _AddAbility(oChar, nAbility);
            nSkillPoints--;
        }
    }
    else if (nClass == CLASS_ROGUE)
    {
        nAbility = ABILITY_SKILL_POISON_1;
        if (!HasAbility(oChar,nAbility)) {
            _AddAbility(oChar, nAbility);
            nSkillPoints--;
        }
    }
    else if (nClass == CLASS_WIZARD)
    {
        nAbility = ABILITY_SKILL_HERBALISM_1;
        if (!HasAbility(oChar,nAbility)) {
            _AddAbility(oChar, nAbility);
            nSkillPoints--;
        }
    }

    // -------------------------------------------------------------------------
    // Give one skill for backgroud
    // -------------------------------------------------------------------------

    nAbility = 0;

    switch (nBackground)
    {
        case BACKGROUND_CITY:           nAbility = ABILITY_SKILL_PERSUADE_1;    break;
        case BACKGROUND_COMMONER:       nAbility = ABILITY_SKILL_STEALING_1;    break;
        case BACKGROUND_DALISH:         nAbility = ABILITY_SKILL_SURVIVAL_1;    break;
        case BACKGROUND_MAGI:           nAbility = ABILITY_SKILL_COMBAT_TACTICS_1;    break;
        case BACKGROUND_NOBLE:          nAbility = (!HasAbility(oChar,ABILITY_SKILL_COMBAT_TRAINING_1))?ABILITY_SKILL_COMBAT_TRAINING_1:ABILITY_SKILL_COMBAT_TRAINING_2; break;
    }

     if (nAbility && !HasAbility(oChar,nAbility))
    {
        _AddAbility (oChar, nAbility);
        nSkillPoints--;
    }

    SetCreatureProperty(oChar,PROPERTY_SIMPLE_SKILL_POINTS, IntToFloat(nSkillPoints));
    SetCreatureProperty(oChar,PROPERTY_SIMPLE_TALENT_POINTS, IntToFloat(nTalentPoints));
}

void RemoveSkillPoints(object oChar, int nTable)
{

    int nPoints = FloatToInt(GetCreatureProperty(oChar,PROPERTY_SIMPLE_SKILL_POINTS));
    int nIdx = 0;
    int nCount;

    nCount = GetM2DAInt(nTable,"SkillID",nIdx);

    for (nIdx=1; nIdx < nCount; nIdx++) // each talent in table
    {
        int nTalent;
        nTalent = GetM2DAInt(nTable,"SkillID",nIdx);     // get talent

        if (HasAbility(oChar,nTalent))      // if character has talent
        {
            RemoveAbility(oChar, nTalent);         // remove talent and refund point
            nPoints++;

        }
    }

    SetCreatureProperty(oChar,PROPERTY_SIMPLE_SKILL_POINTS, IntToFloat(nPoints));     // give points back for each skill removed

}

void RemoveTalentPoints(object oChar, int nTable)
{

    int nPoints = FloatToInt(GetCreatureProperty(oChar,PROPERTY_SIMPLE_TALENT_POINTS));
    int nIdx = 0;
    int nCount;
    nCount = GetM2DAInt(nTable,"TalentID",nIdx);

    for (nIdx=1; nIdx < nCount; nIdx++)
    {
        int nTalent;
        nTalent = GetM2DAInt(nTable,"TalentID",nIdx);

        if (HasAbility(oChar,nTalent))
        {
                RemoveAbility(oChar, nTalent);
                nPoints++;
        }
    }

    SetCreatureProperty(oChar,PROPERTY_SIMPLE_TALENT_POINTS, IntToFloat(nPoints));

}

void main()
{

    object oChar;
    oChar = OBJECT_SELF;

    //clear quickslot
    int j;
    for(j = 0; j < 20; j++)
    {
       SetQuickslot(OBJECT_SELF, j, 0);
    }

    ChangeAttributes(oChar);

    int nTable = _GetTableToUseForAL(oChar);   // set correct autoleveling table for character

    RemoveSkillPoints(oChar,nTable);
    RemoveTalentPoints(oChar,nTable);
    AddAbilities(oChar);

//    AL_DoAutoLevelUp(oChar);

    // -------------------------------------------------------------------------
    // Update various UIs
    // -------------------------------------------------------------------------
    Chargen_SetNumTactics(oChar);
    SetCanLevelUp(oChar,Chargen_HasPointsToSpend(oChar));

}
#10 Posted by Ximm (6 posts) -
You will need to download and install the Toolset to use this script. 1) run the toolset. 2) go to file->new and select script 2) Call the script reset 3)  select debug for the directory 4) Copy the text of the above post to the open file. 5) hit F7 to compile the script 6) close the toolset 6) delete the file in your my document folder \BioWare\Dragon Age\modules\Single Player\SinglePlayer.cif
 
Now you will have the compiled script in \BioWare\Dragon Age\modules\Single Player\override\toolsetexport
If you have someone that can send you the compiled script you wont have to do the above steps.
 
In order to use the script you will have to 1) create a shortcut to the \Dragon Age\bin_ship\daorigins.exe file 2) open up properties of the shortcut 3)  under target add  "-enabledeveloperconsole" (without quotes)  after the last quote 4) run the game with this shortcut 5) select the character you want to reset. 6) hit the tilde key to bring up the console 7) type in "runscript reset" and hit enter 8) hit the levelup button on your character.
 
The first version up the script I wrote didn't keep the points that you gained from books or the +1attribute items. This one doesn't lose anything. Not _all_ skills are reset however most are. If there is sufficient demand I will mod it to refund even more skills.
#11 Posted by DeriusE (2 posts) -
@Ximm said:
" You will need to download and install the Toolset to use this script. 1) run the toolset. 2) go to file->new and select script 2) Call the script reset 3)  select debug for the directory 4) Copy the text of the above post to the open file. 5) hit F7 to compile the script 6) close the toolset 6) delete the file in your my document folder \BioWare\Dragon Age\modules\Single Player\SinglePlayer.cif  Now you will have the compiled script in \BioWare\Dragon Age\modules\Single Player\override\toolsetexport If you have someone that can send you the compiled script you wont have to do the above steps. In order to use the script you will have to 1) create a shortcut to the \Dragon Age\bin_ship\daorigins.exe file 2) open up properties of the shortcut 3)  under target add  "-enabledeveloperconsole" (without quotes)  after the last quote 4) run the game with this shortcut 5) select the character you want to reset. 6) hit the tilde key to bring up the console 7) type in "runscript reset" and hit enter 8) hit the levelup button on your character.  The first version up the script I wrote didn't keep the points that you gained from books or the +1attribute items. This one doesn't lose anything. Not _all_ skills are reset however most are. If there is sufficient demand I will mod it to refund even more skills. "
Has this script been tested to ensure it doesn't break anything, or is there a good chance it will?
 
I.E. as you can see here, a lot of the scripts which are pre-created in the game can cause things to break.
#12 Posted by artureg (1 posts) -
@DeriusE:

Can you upload compiled script?

unfortunately  I have no toolset :(

#13 Edited by Ximm (6 posts) -

 I missed a step, you also have to delete the  BioWare\Dragon Age\packages\core\override directory.  Otherwise you can have characters disappear and stuff.
  

@DeriusE:


The game creators didn't mean for their scripts to be used by game players .. they aren't coded for that purpose. They could have coded them better if they were meant to be used in game.
The only things this code changes is the attributes/skills/talents. I don't see any way it could possibly break the game. It's been tested to the extent that it does what I intended it to do :P
 
@artureg:
I don't have a place to upload the compiled script to or I would. 
  
Edit: download this picture file.. strip off the .jpg extension, extract the .rar file to my documents folder at 
BioWare\Dragon Age\modules\Single Player\override\toolsetexport     
   
http://i38.tinypic.com/i563bt.jpg
#14 Edited by DeriusE (2 posts) -
@Ximm said:

"  I missed a step, you also have to delete the  BioWare\Dragon Age\packages\core\override directory.  Otherwise you can have characters disappear and stuff.
 

Yeah, I actually had some fun trying to fix that - deleting said directory didn't actually fix it for me, what fixed it was opening the Toolset, making a new module so the toolset isn't opening the main campaign and then changed the name of my single player directory under  Documents\BioWare\Dragon Age\modules.
 
Suffice to say, I'll be staying away from the Toolset for now on.
#15 Edited by Ximm (6 posts) -

Here is the new script with the ability to respec specializations.
Download this pic, add a .rar extention to the end of it and extract to my documents folder at \BioWare\Dragon Age\modules\Single Player\override\toolsetexport\ 
 
http://i45.tinypic.com/2ll0sjs.jpg

#16 Edited by Teran (877 posts) -

There is a functioning respec mod on fileplanet and the dragon age mod site.
 
As for your problem of two mages having icy weapons, that's probably for the best anyways because the only thing better than one cone of cold is two.  I would recommend having one of your mages spec either into fiery weapons or telekinetic weapons especially if you have 2+ dual wielders in the party which I would recommend always having even if you turn one of your mages into an arcane warrior.

#17 Posted by Jiggah (308 posts) -

Look on the Bioware social site for the respec mod.  It adds a vial that can be used to respec your characters.  It'll take them down the base stats for the class and allow you to redistribute attributes, talents, and skills.

#18 Posted by Ximm (6 posts) -
Yea the potion/raven one is out there also, but mine is much simpler to use imho. And there is far less likelihood of mine breaking anything.
#19 Posted by Teran (877 posts) -
@Ximm:  I've played through a fairly large chunk of the game with the raven mod with nothing broken even doing taking risks and respeccing shale.  The one thing I don't like about the mod though is it respecs the points you get from the fade into spendable points.
#20 Posted by Ximm (6 posts) -
@Teran: Yea, I don't like that it changes those points to spendable points. My script does the same, I don't know how to prevent that as I don't think there is any way to find out how many points and to what attributes were increased. Supposedly the raven mod and some other mod don't play well together. As my script is not a mod, it shoudnt interfere with any mods out there.
#21 Posted by Crocio (542 posts) -

Here's a good summary of a guy's respec experience
I'm not sure if it links to stuff you've already been talking about; I've never needed to respec. :-\

#22 Posted by Teran (877 posts) -
@Ximm: What I've been doing is just writing down all my stats unmodified by armor stat buffs and such and then when I respec I make sure to re-spend the stat points so that no stat is lower than what it was before the respec. 
 
In my opinion though respeccing is cheating because Bioware seems to have designed this game to be difficult when you have a suboptimal group.  I noticed a massive difference in my game after I respecced and the recruitable characters weren't carrying around any baggage in the form of useless talents/spells.  This is unfortunate because it seems to mean that there's a pretty low ceiling for challenge in this game... heck it's low even without respecs really because the best skills in the game rarely require you to actually go very far into a talent tree.  For example with oghren and sten you only need 3 talents in dual wielding to become a dps powerhouse compared to 2h and then there are two more that are just icing on the cake.

This edit will also create new pages on Giant Bomb for:

Beware, you are proposing to add brand new pages to the wiki along with your edits. Make sure this is what you intended. This will likely increase the time it takes for your changes to go live.

Comment and Save

Until you earn 1000 points all your submissions need to be vetted by other Giant Bomb users. This process takes no more than a few hours and we'll send you an email once approved.