-
Re: AntiTraits : now what the heck is happening here ?
Quote:
Originally Posted by Afro Thunder
What I find interesting is that this bug was also present in BI. It was fixed in the Bug Fixer Mod, made by Player1 I believe. I'm not meaning to bash CA or anything, but I just find it curious how this same bug is still present in Medieval II, long after a third-party mod fixed it in BI.
Wow that's LAME. Maybe I can get them to send me 20 bucks and give me access to whatever file has the antitrait hardcode in it so I can actually fix it for them. I'm certain if I could do that, it would be no more than a few lines of code...
-
Re: AntiTraits : now what the heck is happening here ?
Actually, I remember the details of the work-around that Player1 used in his BugFixer mod. It all has to do with NoGoingBackLevel. Let's take the GoodCommander line of traits, for example. This group has 5 different levels, going from Promising Commander to Legendary Commander. What Player1 did was simply add an artificial "NoGoingBackLevel 6". This solved the disappearing traits problem in BI, though I'm not sure if it will still hold true for M2.
-
Re: AntiTraits : now what the heck is happening here ?
I'll try that, see how it works out (though Sinan said the NoGoingBack were borked). Thanks for the explanation ! If that doesn't work, that'll lead us to...
the_foz : so, does your modified file work properly ? :sweatdrop: :laugh4:
-
Re: AntiTraits : now what the heck is happening here ?
I've been using it for a while now, and yes it seems to work exactly as it is intended to. The traits shift up and down as appropriate, instead of the horrid destruction of traits that occurred before. This is easy to notice when a smacked-down diplomat or princess loses only 1 point of skill, and it warms my heart each time it happens :beam:
As previously noted, it also doesn't slow my system down noticeably, so I'm calling it a big ole success. I gather from the lack of feedback, though, that no one else has tried it at all, lol. If anyone decides to, it'd be nice to have some confirmation that it is working correctly, and maybe some feedback on how it affects performance, as other people may be affected differently than I've been.
-
Re: AntiTraits : now what the heck is happening here ?
Well, rest assured most larger conversion mods will use a similar system for their traits ;)
-
Re: AntiTraits : now what the heck is happening here ?
There's no way I'll even consider start converting EB to M2TW if they don't fix this.
We already use the 'NoGoingBackLevel being higher than the last trait level' trick, but there are lots of traits where we can't have it. Gah!:wall:
-
Re: AntiTraits : now what the heck is happening here ?
I'm convinced that the only way to fix the entire mess of the VnV system is for CA to have a few guys go through the actual code itself, fixing all the quirks and bugs and errors. After that, they should re-write everything. I'm serious, looking through the vanilla VnV files reminds me of typical internal company code for ancient programs where hotfix after hotfix is applied to something broken to make it seem like it is working properly. Then the hotfixes get bugged and need more fixes...
Seeing that CA decided that there is no need to fix the VnV system (no change between 1.0 and 1.1, DESPITE many people commenting and mailing to CA pointing out e.g the ReligionStarter bug...) I wouldn't get my hopes up for any future fixes.
-
Re: AntiTraits : now what the heck is happening here ?
Bozos: You can just add negative trait points (i.e. subtract them) if you redo the whole traits system anyways.
On topic: It actually appears that the NoGoingBackLevel is bugged. If you subtract points, the trait stays there, but the actual internal trait points are lowered. That means you have to artificially take care with triggers for this, too.
The trick of setting the NoGoingBackLevel higher than the actual maximum trait level still seems to fix the AntiTraits code somehow... meh, I'd rather do it all with triggers than relying on CA's bugged code.
Edit: Just noticed that if you are at the NoGoingBackLevel and add exactly 1 point to the AntiTrait it doesn't do anything. So maybe the problem lies in the interaction between NoGoingBackLevel and AntiTraits or something like that. So if instead of using Affects bla 3 you use Affects bla 1 three times, it works fine.
-
Re: AntiTraits : now what the heck is happening here ?
Quote:
Originally Posted by alpaca
Bozos: You can just add negative trait points (i.e. subtract them) if you redo the whole traits system anyways.
Yeah, but if I understood the findings of this thread correctly (I just did a superficial reading) this would force me to have lots of new triggers to compensate for the faulty antitrait mechanics. This is just not feasible for EB. My latest version of edct is 7,399,591 bytes long already.
-
Re: AntiTraits : now what the heck is happening here ?
If you're concerned with the size, then yes this could be problematic. My currently implemented trait file with the triggers to fix anti-trait functionality is 5.24 MB, compared with the ~400k original IIRC. If you're concerned with actually having the triggers, though, I can probably work out some way to automate their generation (as I have for the vanilla traits file). In fact, it's likely if you've followed CA's format for the file even loosely that I might be able to just run it through what I already have and have it churn out correct triggers. LMK what you're thinking.
-
Re: AntiTraits : now what the heck is happening here ?
I'm definitely concerned about size. Keep in mind that unlike vanilla, we have lots of traits that have the maximum (for RTW) of 10 antitraits: this would mean an even bigger bloat.
-
Re: AntiTraits : now what the heck is happening here ?
Well maybe we'll get it fixed in the next patch. Although I don't have too much hope in that unless we can niggle the guys at CA to have a look at it lol
-
Re: AntiTraits : now what the heck is happening here ?
Seems fairly obvious to me that after vanilla RTW, they just stopped caring and about the rp / traits side. Clearly the guy who did traits for M2 didn't have the faintest idea what he was doing, there are some basic and endemic mistakes that I worked out after looking at the file for just an hour or so, but he managed to miss.
Foz, I intend to try out your app as soon as I have my fix mod finished (over the weekend). Two questions though:
How does it handle trait/anti traits which are affected by many triggers? From what I gather, it shouldn't be a problem as it fixes the problem at the trait level, rather than hotfixing triggers?
Two, any idea what the effect would be on triggers which already compensate for anti-traits not working? ie the code that is currently in my mod for agents? This is the main reason I haven't tried it out yet, I'm fairly sure it will bork that, and I'll have to spend a while going back through the files and replacing the original.
Considering the massive complexity of fixing chivalry / dread traits by hotfixing triggers by hand, however, your app looks like the best bet.
-
Re: AntiTraits : now what the heck is happening here ?
1. Well, it uses triggers to accomplish the fix, but not by modifying any of the existing ones in the file: they are generated based solely on the trait defs in the upper portion of the file. Existing triggers are copied to the new file verbatim, and existing trait defs copied only with their antitrait lines removed.
2. Triggers that already hotfix anti-trait functionality should in no way be borked by this fix. My new triggers only fire if a trait and anti-trait both have positive points at the same time (which is now allowed due to the removal of antitrait tags in the file). As the hotfixed triggers I've been seeing usually utilize the ability to give a trait negative points, they should not ever be able to cause a situation that would even make my fix triggers fire off... and if they did, you'd want the fix triggers to go off to correctly balance the traits that are tugging at each other.
As an additional note, I didn't post the file patcher yet (unless I was drunk and just can't remember doing it). Truth be told, I cobbled it together rather hastily, and have been chopping the input file apart by hand into neat input files with only particular pieces of the original in them, as I was too lazy at the time to write code to figure out where trait defs ended and triggers began, while also ignoring the random stuff in between.
If you like, you can link to your finished file when it's ready, and I'll see if I can get it processed for you and sent back so you can check it out. Outside of that, I'll have to work those things I mentioned into the code, which I'm neither really motivated to do at the moment nor having the time to accomplish due to 1. the shield bug, as well as 2. my desire to actually play the game I spend so much time troubleshooting.
-
Re: AntiTraits : now what the heck is happening here ?
Quote:
Originally Posted by the_foz_4
My new triggers only fire if a trait and anti-trait both have positive points at the same time (which is now allowed due to the removal of antitrait tags in the file).
Aaaahhhh, I suddenly understand how it works now. Excellent :beam:
Quote:
If you like, you can link to your finished file when it's ready, and I'll see if I can get it processed for you and sent back so you can check it out.
That would be wonderful. If it works, would you mind me including it in the final version of the VnV Fixes mod? Only thing I haven't managed to fix is the anti-trait code for dread & chivalry, and some of the more obscure anti-traits, as it would take so long to do the triggers by hand. Fixing those would, I think, produce a 99.9% clean traits file without other alterations which everyone could start using as a base for their mods. Huge recognition to you for the solution would, of course, be given.
Quote:
my desire to actually play the game I spend so much time troubleshooting.
I know the feeling :whip:
-
Re: AntiTraits : now what the heck is happening here ?
To be honest, the traits system is screwed even if you fix it. It has no themes, no charm, no nothing. It feels like a glue-on and doesn't add much to immersion.
I think a new system built up from scratch is needed, but that will probably be left to total conversion mods.
Nonetheless, you've made some quite nice work on this ;)
-
Re: AntiTraits : now what the heck is happening here ?
Quote:
Originally Posted by alpaca
To be honest, the traits system is screwed even if you fix it. It has no themes, no charm, no nothing. It feels like a glue-on and doesn't add much to immersion.
I think a new system built up from scratch is needed, but that will probably be left to total conversion mods.
I know - the VnV's fix is only intended to be a base. After I finish that (ie now), I'm planning a longer-term total rework mod, revamping the traits system, combining it with a popular titles mod, and adding some new features which should really make traits both powerful and immersive - give characters a real sense of, well, character.
We will be announcing it on TWCenter sometime next week.
That reminds me Alpaca - since the above obviously requires messing with some files other than the traits / ancillary files (ie for rebellion), files which may be used by other mods, I know one of your mods had an .exe program to add lines to an existing file instead of re-writing it. How difficult is that to do? Assume I have 0 actual programming knowledge and just reverse-engineer things that are already there when modding.
-
Re: AntiTraits : now what the heck is happening here ?
Quote:
Originally Posted by Sarastro
I know - the VnV's fix is only intended to be a base. After I finish that (ie now), I'm planning a longer-term total rework mod, revamping the traits system, combining it with a popular titles mod, and adding some new features which should really make traits both powerful and immersive - give characters a real sense of, well, character.
We will be announcing it on TWCenter sometime next week.
That reminds me Alpaca - since the above obviously requires messing with some files other than the traits / ancillary files (ie for rebellion), files which may be used by other mods, I know one of your mods had an .exe program to add lines to an existing file instead of re-writing it. How difficult is that to do? Assume I have 0 actual programming knowledge and just reverse-engineer things that are already there when modding.
It's not too difficult really. Spurius used a batch file to copy two files into one. Check out the file that the mod folder installer leaves in your MTW2 dir to see how it's done.
You could also use other methods, but this one is probably the easiest.
-
Re: AntiTraits : now what the heck is happening here ?
Quote:
Originally Posted by Sarastro
Aaaahhhh, I suddenly understand how it works now. Excellent :beam:
That would be wonderful. If it works, would you mind me including it in the final version of the VnV Fixes mod? Only thing I haven't managed to fix is the anti-trait code for dread & chivalry, and some of the more obscure anti-traits, as it would take so long to do the triggers by hand. Fixing those would, I think, produce a 99.9% clean traits file without other alterations which everyone could start using as a base for their mods. Huge recognition to you for the solution would, of course, be given.
I know the feeling :whip:
Glad it makes sense :smile:
Provided it works, which I expect it will (it has been for me for weeks now), you are certainly welcome to use it in your mod. Truth be told I actually sorta prefer this particular fix to be packed along with others, as it's not the sort of thing there's a huge public outcry for (probably because it's not as readily noticed as some other bugs), but still one that makes the VnV system work very differently in practice. I am of course never one to balk at credit, either! :smile:
Fair warning though, expect it to bloat the file size by a large amount. My fixed version of Kobal2fr's Cherry Vanilla traits file went from ~500k to ~5MB.
-
Re: AntiTraits : now what the heck is happening here ?
I've passed this one on for investigation to the Oz guys since - if proven true - it would be a serious issue which breaks quite a few progression mechanisms on the campaign map. Good spot...
-
Re: AntiTraits : now what the heck is happening here ?
Quote:
Originally Posted by JeromeGrasdyke
I've passed this one on for investigation to the Oz guys since - if proven true - it would be a serious issue which breaks quite a few progression mechanisms on the campaign map. Good spot...
Hey Jerome, nice to see you.
If they're at it, tell them to fix the NoGoingBackLevel, too. I think it only works if the trait goes exactly one point below the NoGoingBackLevel. Otherwise, it will keep the trait but the points go down nonetheless (i.e. if you increase it again, it'll take longer).
-
Re: AntiTraits : now what the heck is happening here ?
Quote:
Originally Posted by JeromeGrasdyke
I've passed this one on for investigation to the Oz guys since - if proven true - it would be a serious issue which breaks quite a few progression mechanisms on the campaign map. Good spot...
Huzzah...the official caveat does make me laugh though, give your QA testers a smack for not noticing it on turn one.
Thank you sir!
-
Re: AntiTraits : now what the heck is happening here ?
Heh, I was quite drunk all through the holiday and, upon sobering up, completely forgot I had been messing with antitraits. Sorry for the prolonged absence.
I'm not much of a programmer, but I threw togeather a script for this that inports the traits file, breaks it down, and sews it back togeather again. What I didn't do was adequately comment my code, or do things in the most logical or effecient mannor. If you want to make use of this you'll just have to figure out things like $BoB[$i][$j][3] always refers to a GainMessage line. Its not too complicated asside from that kind of weirdness.
Code:
#!/usr/bin/perl
open (INFILE, "export_descr_character_traits.txt") || die "Cannot open traits fie.\n"; # Using fixed filenames.
open (OUTFILE, "> export_descr_character_traits.txt.new") || die "Cannot open output file.\n"; #
@INFILE = <INFILE>; #
#
foreach $line (@INFILE) { # Read infile to an AoA. 1/
if ( $line =~ /-{5,}/) { #
$i++; #
$j = 0; #
} else { #
$line =~ s/^\s+//; # Removes leading whitespace.
chomp $line; # Removes newline symbols.
$line =~ s/\r$//; # Removes carriage returns.
$AoA[$i][$j] = $line; #
$j++ #
} #
} # /1
$a = -1; # Bad fix for a hard counter.
for $i ( 0 .. $#AoA ) { # Sorts AoA into BoB by label. 2/
$k = 0; #
for $j ( 0 .. $#{$AoA[$i]} ) {
$l = 1; # Counter for line in level.
$line = $AoA[$i][$j];
if ($line =~ m/^Trait/) {
$line =~ s/Trait\ //;
$BoB[$i][0] = $line;
}
if ($line =~ m/Characters /i) {
$line =~ s/Characters\ //;
$BoB[$i][1] = $line;
}
if ($line =~ m/^ExcludeCultures/) {
$line =~ s/ExcludeCultures\ //;
$BoB[$i][2] = $line;
}
if ($line =~ m/^NoGoingBackLevel/) {
$line =~ s/NoGoingBackLevel\ //;
$BoB[$i][3] = $line;
}
if ($line =~ m/^AntiTraits/) {
$line =~ s/AntiTraits\ //;
$BoB[$i][4] = $line;
}
if ($line =~ m/^Level/) {
$line =~ s/Level\ //;
$k++;
$BoB[$i][$k + 5][0] = $line; # Begin additional loop for
$line = $AoA[$i][$j+$l]; # repeating Level tags within
while ($line !~ m/^Level/ && ($j + $l) <= $#{$AoA[$i]}) { # each Trait block.
if ($line =~ m/^Description/) {
$line =~ s/^Description\ //;
$BoB[$i][$k + 5][1] = $line;
}
if ($line =~ m/^EffectsDescription/) {
$line =~ s/^EffectsDescription\ //;
$BoB[$i][$k + 5][2] = $line;
}
if ($line =~ m/^GainMessage/) {
$line =~ s/^GainMessage\ //;
$BoB[$i][$k + 5][3] = $line;
}
if ($line =~ m/^LoseMessage/) {
$line =~ s/^LoseMessage\ //;
$BoB[$i][$k + 5][4] = $line;
}
if ($line =~ m/^Epithet/) {
$line =~ s/^Epithet\ //;
$BoB[$i][$k + 5][5] = $line;
}
if ($line =~ m/^Threshold/) {
$line =~ s/^Threshold\ //;
$BoB[$i][$k + 5][6] = $line;
}
if ($line =~ m/^Effect/) {
$line =~ s/^Effect\ //;
$line =~ s/\ \ /\ /;
@TMP = split(/\ /, $line);
$BoB[$i][$k + 5][7]{@TMP[0]} = @TMP[1]; # Multiple effects split and
} # Sorted in array @TMP.
$l++;
$line = $AoA[$i][$j + $l];
}
}
print $BoB[0][0]; # /2
if ($line =~ m/^Trigger/) { # Sorts Triggers into CoC 3/
$a++;
$line =~ s/^Trigger\ //;
$CoC[$a][0] = $line;
}
if ($line =~ m/^WhenToTest/) {
$line =~ s/^WhenToTest\ //;
$CoC[$a][1] = $line;
}
if ($line =~ m/^Condition/) {
$line =~ s/^Condition\ //;
$m = 0;
$CoC[$a][2][0] = $line;
$m++;
}
if ($line =~ m/^and/i) {
$line =~ s/^and\ //;
$CoC[$a][2][$m] = $line;
$m++;
}
if ($line =~ m/^Affects/i) {
$line =~ s/^Affects\ //;
@TMP = split (/\ \ Chance\ \ /, $line); # Multiple Affects split.
$CoC[$a][3]{@TMP[0]} = @TMP[1]; # /3
}
}
}
print $BoB[0][0]; # Output each line more or
for $i ( 0 .. $#BoB ) { # less as it came in.
print OUTFILE ';------------------------------------------' . "\n";
if ( defined ($BoB[$i][0])) {
print OUTFILE "Trait $BoB[$i][0]\n";
}
if ( defined ($BoB[$i][1])) {
print OUTFILE "\tCharacters $BoB[$i][1]\n";
}
if ( defined ($BoB[$i][2])) {
print OUTFILE "\tExcludesCultures $BoB[$i][2]\n";
}
if ( defined ($BoB[$i][3])) {
print OUTFILE "\tNoGoingBackLevel $BoB[$i][3]\n";
}
# if ( defined ($BoB[$i][4])) {
# print OUTFILE "\t;AntiTraits $BoB[$i][4]\n";
# }
for $j ( 5 .. $#{$BoB[$i]} ) {
if ( defined ($BoB[$i][$j][0])) {
print OUTFILE "\tLevel $BoB[$i][$j][0]\n";
}
if ( defined ($BoB[$i][$j][1])) {
print OUTFILE "\t\tDescription $BoB[$i][$j][1]\n";
}
if ( defined ($BoB[$i][$j][2])) {
print OUTFILE "\t\tEffectsDescription $BoB[$i][$j][2]\n";
}
if ( defined ($BoB[$i][$j][3])) {
print OUTFILE "\t\tGainMessage $BoB[$i][$j][3]\n";
}
if ( defined ($BoB[$i][$j][4])) {
print OUTFILE "\t\tLoseMessage $BoB[$i][$j][4]\n";
}
if ( defined ($BoB[$i][$j][5])) {
print OUTFILE "\t\tEpithet $BoB[$i][$j][5]\n";
}
if ( defined ($BoB[$i][$j][6])) {
print OUTFILE "\t\tThreshold $BoB[$i][$j][6]\n";
}
print OUTFILE "\n"; # Use hash for easier sorting of
while (($key,$value) = each %{$BoB[$i][$j][7]}) { # Effects in the future.
if ($value =~ /-/) {
print OUTFILE "\t\tEffect $key $value\n";
} else {
print OUTFILE "\t\tEffect $key $value\n";
}
}
print OUTFILE "\n";
# }
}
}
for $i ( 0 .. $#CoC ) {
print OUTFILE ';------------------------------------------' . "\n";
print OUTFILE "Trigger $CoC[$i][0]\n";
print OUTFILE "\tWhenToTest $CoC[$i][1]\n\n";
print OUTFILE "\tCondition $CoC[$i][2][0]\n";
$m = 1;
while ( defined ($CoC[$i][2][$m]) ) {
print OUTFILE "\t\tand $CoC[$i][2][$m]\n";
$m++;
}
print OUTFILE "\n";
while (($key,$value) = each %{$CoC[$i][3]}) {
print OUTFILE "\tAffects $key Chance $value\n";
}
print OUTFILE "\n";
}
for $u ( 0 .. $#BoB ) {
@array = split(/, /, $BoB[$u][4]);
for $a ( 0 .. $#array ) {
$BoB[$u][0] =~ s/\s//;
$array[$a] =~ s/\s//;
$line = "$BoB[$u][0]" . " " . "$array[$a]";
foreach $element (@lines) {
if ("$element" =~ "$line") {
$line = '';
}
}
$lineb = "$array[$a]" . " " . "$BoB[$u][0]";
if ("$line" =~ m/\S/) {
push (@AntiTraits, $line);
}
push (@lines, $line);
push (@lines, $lineb);
}
}
foreach (@AntiTraits) {
@TMP = split;
for ($i = 0; $i < 9; $i++) {
print OUTFILE ';------------------------------------------' . "\n";
print OUTFILE "Trigger ANTITRAIT_$TMP[0]_Trigger$i\n";
print OUTFILE "\tWhenToTest CharacterTurnEnd\n\n";
print OUTFILE "\tCondition Trait @TMP[0] > 0\n";
print OUTFILE "\t\tand Trait @TMP[1] > 0\n\n";
print OUTFILE "\tAffects @TMP[0] -1 Chance 100\n";
print OUTFILE "\tAffects @TMP[1] -1 Chance 100\n\n";
}
}
-
Re: AntiTraits : now what the heck is happening here ?
Whew, I'm afraid my Perl is really rusty so I'll be lazy and
just ask. Is this code saving up all the AntiTraits and then
hot fixing the Triggers to test if a character possesses a non-zero
"Good Trait" then don't give him the AntiTrait but rather just
subtract 1 from his good trait? Also, does the commented out
code for $BoB$[$i][4] in the output section mean that Traits
no longer have an AntiTrait line in them?
-
Re: AntiTraits : now what the heck is happening here ?
Quote:
Originally Posted by KnightErrant
Whew, I'm afraid my Perl is really rusty so I'll be lazy and
just ask. Is this code saving up all the AntiTraits and then
hot fixing the Triggers to test if a character possesses a non-zero
"Good Trait" then don't give him the AntiTrait but rather just
subtract 1 from his good trait? Also, does the commented out
code for $BoB$[$i][4] in the output section mean that Traits
no longer have an AntiTrait line in them?
Yeah. You read it right. It breaks everything apart and stores it in specific places before piecing back 90% of it all untouched because it is cannabalized from another script I was playing with for some analysis ideas I have that are yet unfinished for motivation reasons. The chunk to print the AntiTraits is commented out to omit AntiTraits from the output. The fix is such that every turn end the game checks to see if a both the trait and the antitrait exist, then gives each a -1 until one of them no longer exists. So if you gain one point in AntiTrait the net result is -1 to Trait.
There are two bugs I havn't gotten around to fixing yet. One is that the windows newline tag I stripped isn't put back in with this code. Its an easy enough fix, I just havn't bothered. The newlines are put in, but not the windows one. The other bug is that if you gain a point in Trait not all of the AntiTraits are deincremented, only the first. I think this makes sense as gaining one point of Trait shouldn't remove 5 points of AntiTraits.
-
Re: AntiTraits : now what the heck is happening here ?
Quote:
Originally Posted by pellik
The other bug is that if you gain a point in Trait not all of the AntiTraits are deincremented, only the first. I think this makes sense as gaining one point of Trait shouldn't remove 5 points of AntiTraits.
Actually that doesn't make a lot of sense. If being morally upright makes you less likely to drink, womanize, curse, etc, then it should in fact have a negative impact on any and all of those antitraits that have points in them. At least that's how it is IRL - if I suddenly develop a sense of ethics and morality, it impacts everything in my life that doesn't agree with my new methodology, not just one select aspect of it.
Also I wanted to point out that the file I linked to on page 1 I think does almost this exact same thing - I stored up all the info, stripped the antitrait stuff out, and then generated a bunch of new triggers that do the antitrait functionality. I have it working so it checks every time an event happens though, and so it cancels 1 point from all the antitraits for each trait point. Never packed it up for people on here to use though (the file I linked is Kobal2fr's CherryVanilla VnV fixer w/ my antitrait fix added) which I guess I ought to get around to doing, lol.
-
Re: AntiTraits : now what the heck is happening here ?
After my momentary lapse of inspiration, I'm back to being myself. Not without something to show for it though: that file patcher I promised everybody last month sometime. It strips the antitrait lines from the file, and instead uses triggers that fire on any game event to remove points from a trait and all its antitraits (like the antitrait was supposed to function). Here's the patcher:
Foz's AntiTrait Fix v1.0
You can also use Kobal2fr's CherryVanilla VnV file, that I already patched (with his permission) here
For the exe that processes any given traits file, you'll need to put it in the folder that has your export_descr_character_traits.txt file, and run it. It creates newEDCT.txt that you can rename to export_descr_character_traits.txt after backing up your old one (I typically just change the old extension to .bak).
Notes:
If using the exe file, the EDCT file you intend to apply it to must be correctly formatted. The important bits are:
- The traits must come before the triggers (not sure it works any other way anyway).
- Antitraits lines must be indented the same amount CA uses (4 spaces). This is because I was lazy and checked the line for the word "Antitraits" only in the 5th through 14th character spots on each line. Most people have never touched these at all (triggers get modded usually, not traits). If any are not right, though, they get copied to the new file instead of omitted, which I imagine will prevent my fix from working for that trait. If you're worried about this, you can search the finished file for "antitraits" - you should come up with nothing at all.
Outside of those few things, it should process anything that will parse correctly on game startup. I'll probably change the bit about the indentation to be more robust soon... but for now that's how it is.
-
Re: AntiTraits : now what the heck is happening here ?
If I spent a lot of time drinking, gambling, womanizing, &c., I'm not sure a small amount of religious/ethical motivation would change all of my behavior. Most people who enguage in a variety of negative trait behavior focus on reforming one thing at a time such as a new years resolution. I don't think the road from sinner to saint is so easily walked.
Anyway, I'm not posting this program as a way to fix the trait file. Thats already done. But a program to parse and reassemble the entire trait file may prove useful to someone. Hence why I'm posting the source and not an executable.
-
Re: AntiTraits : now what the heck is happening here ?
Quote:
Originally Posted by pellik
Anyway, I'm not posting this program as a way to fix the trait file. Thats already done. But a program to parse and reassemble the entire trait file may prove useful to someone. Hence why I'm posting the source and not an executable.
Agreed, it probably will be useful to someone, good idea :smile:
-
Re: AntiTraits : now what the heck is happening here ?
Quote:
Originally Posted by Foz
You can also use Kobal2fr's CherryVanilla VnV file, that I already patched (with his permission)
here
Umm. can i know a bit more about installation. Im a bit newbie in m2tw editing. So iva installed m2tw and want to get bot vanilla's and yours fixes - what should i do?
A link to the guide (if it is alrdy present) will be appreciated.