Award Feat
Zephirius
Member Posts: 419
Is it possible through scripting to award the PC with an active feat of my choosing. I mean it actually showing up in the GUI? Was ploughing through the script editor trying to stumble on something of value. Would you use "talent"
How would you even apply that to a PC? Somehow make it into an effect?
{
tTalent = TalentFeat(FEAT_KNOCKDOWN);
}
How would you even apply that to a PC? Somehow make it into an effect?
void FeatKnockdown(talent tTalent)
{
tTalent = TalentFeat(FEAT_KNOCKDOWN);
}
0
Comments
Feats added that way show up in the GUI character sheet.
Otherwise, Proleric stated the best way to do it.
No. I was going to try to script it from the actions taken tab. The conversation goes something like this:
"Yes professor", " "I will pay 5000 gold to learn take your lesson." lesson=New Feat.
I don't see how it can be scripted though.
Your script would look something like:
// Has all the PC_Properties functions. #include "x3_inc_skin" void main() { object oPC = GetPCSpeaker(); object oSkin = SKIN_SupportGetSkin(oPC); itemproperty ipAward = ItemPropertyBonusFeat(IP_CONST_FEAT_KNOCKDOWN); AddItemProperty(DURATION_TYPE_PERMANENT, ipAward, oSkin); // Todo: Add the take gold part. }Of course that's only a small portion of what you want to have scripted. You'll want to check the player before to see if they have enough gold, or already have the award feat, and not show the conversation option if so.As a potential interest: This is also the way to add player tool feats.
Hey serious, take a look at this script and tell me why ActionResumeConversation isn't firing. Thx
effect e1; effect e2; void main() { object oTarget; location lTarget; oTarget = GetWaypointByTag("SMELLS"); lTarget = GetLocation(oTarget); ActionPauseConversation(); //works just fine object oPC = GetPCSpeaker(); //ClearAllActions(); /*ActionMoveToObject(GetObjectByTag("BLACKBOARD")); ActionPlayAnimation(ANIMATION_FIREFORGET_READ); object oSelf = OBJECT_SELF; ActionMoveToObject(oSelf);*/ e1 = EffectDisappearAppear(lTarget); e2 = EffectVisualEffect(VFX_DUR_BLUR); DelayCommand(1.5, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, e1, OBJECT_SELF, 7.5)); ApplyEffectToObject(DURATION_TYPE_TEMPORARY, e2, OBJECT_SELF, 1.5); DelayCommand(7.7, AssignCommand(OBJECT_SELF, ClearAllActions())); ActionResumeConversation(); //broken, "so to speak"Sounds like you need to need to either keep the actions closer, or, you have to set a variable and some string conditionals. That way you can just call start conversation after the actions.
(My experience with conversations and their script functions is pretty low.)
Not what you need in this case, but very useful.