[FE8] Skill System v1.0 - 404 skills done, more on the way

does this answer your question?

I can’t help but feel like there’s some kind of communication malfunction here.

I understand that by using the skill_lists file I can change who learns what, and when, _based on the classes that already exist in the default class table._emphasized text___But I’m not sure that it’s open to custom classes, or even monster classes from what I can see, unless I have a fundamental misunderstanding of this file.

Also, in that same file, there’s no mention of any personal skills. Bond and Aether are not personal skills, they are class skills. Yet when I load the game, characters have personal skills (Eirika with Charm, Seth with Savior). So logically it must be possible to customize these as well. I’m just not sure how it’s being determined.

Tables/fe8 nightmare modules/fe8 personal skills editor.csv

3 Likes

After testing stuff with this for a few days, I have concluded that this is simply amazing.

There were a few strange things though. The Counter skill will kill the attacker if Current HP = Damage Dealt, which I assume is unintentional. I didn’t check CounterMagic, although I wouldn’t be surprised if the same thing happens there.

Also, for whatever reason, Savior doesn’t work in the FE8_vanilla version of the Skills System, yet works perfectly fine in the original version from the OP.

yeah i’ve been fixing up bugs here and there including counter/countermagic and savior, but it happens so often i don’t make a post for it until i have something important

From some personal testing of mine, this patch doesn’t seem to currently work with Icecube’s class expansion patch? Class expansion patch

When you suspend or save, you get the same class reversion issue.

I’m trying to install the skill system into a clean FE8 ROM and I’m having an issue.

When I run the MAKE HACK_full file it seems to throw up error messages.

Any help?

what are the error messages

1 Like

I’m getting a Win32Exception when it gets to the Event Assembler part.

************** Exception Text **************
System.ComponentModel.Win32Exception (0x80004005): The specified executable is not a valid application for this OS platform.
at System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo)
at System.Diagnostics.Process.Start()
at Nintenlord.Event_Assembler.Core.Code.Preprocessors.Directives.IncludeExternal.Apply(String parameters, IDirectivePreprocessor host)
at Nintenlord.Event_Assembler.Core.Code.Preprocessors.Preprocessor.HandleDirective(String line)
at Nintenlord.Event_Assembler.Core.Code.Preprocessors.Preprocessor.Process(String line, IInputStream inputStream)
at Nintenlord.Event_Assembler.Core.Code.PreprocessingInputStream.ReadLine()
at Nintenlord.Event_Assembler.Core.Code.Language.Lexer.TokenScanner.MoveNext()
at Nintenlord.Event_Assembler.Core.Code.Language.Parser.StatementParser1.ParseMain(IScanner1 scanner, Match1& match) at Nintenlord.Parser.Parser2.Parse(IScanner1 scanner, Match1& match)
at Nintenlord.Event_Assembler.Core.Code.Language.Parser.StatementParser1.ParseMain(IScanner1 scanner, Match1& match) at Nintenlord.Parser.Parser2.Parse(IScanner1 scanner, Match1& match)
at Nintenlord.Parser.ParserCombinators.UnaryParsers.NameParser2.ParseMain(IScanner1 scanner, Match1& match) at Nintenlord.Parser.Parser2.Parse(IScanner1 scanner, Match1& match)
at Nintenlord.Parser.ParserCombinators.ManyParser2.<Enumerate>d__0.MoveNext() at System.Collections.Generic.List1…ctor(IEnumerable1 collection) at System.Linq.Enumerable.ToList[TSource](IEnumerable1 source)
at Nintenlord.Parser.ParserCombinators.RepeatingParser2.ParseMain(IScanner1 scanner, Match1& match) at Nintenlord.Parser.Parser2.Parse(IScanner1 scanner, Match1& match)
at Nintenlord.Event_Assembler.Core.Code.Language.Parser.ScopeParser1.ParseMain(IScanner1 scanner, Match1& match) at Nintenlord.Parser.Parser2.Parse(IScanner1 scanner, Match1& match)
at Nintenlord.Parser.ParserCombinators.TransformParser3.ParseMain(IScanner1 scanner, Match1& match) at Nintenlord.Parser.Parser2.Parse(IScanner1 scanner, Match1& match)
at Nintenlord.Event_Assembler.Core.Code.Language.Expression.TokenParser1.ParseMain(IScanner1 scanner, Match1& match) at Nintenlord.Parser.Parser2.Parse(IScanner1 scanner, Match1& match)
at Nintenlord.Event_Assembler.Core.Code.Language.EAExpressionAssembler.Assemble(IPositionableInputStream input, BinaryWriter output, ILog log)
at Nintenlord.Event_Assembler.Core.Program.Assemble(EACodeLanguage language, TextReader input, BinaryWriter output, ILog log)
at Nintenlord.Event_Assembler.Core.Program.Assemble(String inputFile, String outputFile, String languageName, ILog messageLog)
at Nintenlord.Event_Assembler.UserInterface.MainForm.<.ctor>b__3_1(Object sender, DoWorkEventArgs args)
at System.ComponentModel.BackgroundWorker.OnDoWork(DoWorkEventArgs e)
at System.ComponentModel.BackgroundWorker.WorkerThreadStart(Object argument)

************** Loaded Assemblies **************
mscorlib
Assembly Version: 4.0.0.0
Win32 Version: 4.6.1055.0 built by: NETFXREL2
CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll

Event assembler
Assembly Version: 1.1.0.0
Win32 Version: 1.1.0.0
CodeBase: file:///D:/romhacking/fe8skills/Event%20assembler.exe

System.Windows.Forms
Assembly Version: 4.0.0.0
Win32 Version: 4.6.1055.0 built by: NETFXREL2
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll

System
Assembly Version: 4.0.0.0
Win32 Version: 4.6.1055.0 built by: NETFXREL2
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll

System.Drawing
Assembly Version: 4.0.0.0
Win32 Version: 4.6.1055.0 built by: NETFXREL2
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll

System.Configuration
Assembly Version: 4.0.0.0
Win32 Version: 4.6.1055.0 built by: NETFXREL2
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll

System.Core
Assembly Version: 4.0.0.0
Win32 Version: 4.6.1055.0 built by: NETFXREL2
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll

System.Xml
Assembly Version: 4.0.0.0
Win32 Version: 4.6.1055.0 built by: NETFXREL2
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll

Nintenlord.Forms
Assembly Version: 1.0.0.0
Win32 Version: 1.0.0.0
CodeBase: file:///D:/romhacking/fe8skills/Nintenlord.Forms.DLL

Core
Assembly Version: 11.0.0.0
Win32 Version: 11.0
CodeBase: file:///D:/romhacking/fe8skills/Core.EXE

Nintenlord
Assembly Version: 1.0.0.0
Win32 Version: 1.0.0.0
CodeBase: file:///D:/romhacking/fe8skills/Nintenlord.DLL

Accessibility
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.17929 built by: FX45RTMREL
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/Accessibility/v4.0_4.0.0.0__b03f5f7f11d50a3a/Accessibility.dll

Honestly the best way around this is to just move classes around on the Class Table so that all of your player classes appear before 7F. Correct me if I’m wrong, but I don’t think you can go past that point, even with the patch. Enemies don’t care though.

1 Like

The patch let you go past 7F. I used it in the patches I’ve released for my own hacks.

1 Like

So I was messing around with this and I found a pretty strange bug. Not sure if this is already known or not, but somehow player units had randomly been taking stat debuffs at the start of each chapter and I wasn’t entirely sure why. After messing around with the chapter events I found that for whatever reason, the number of units placed in the initial enemy list was causing this. For example

[details=Chapter 6 Events]label32:
UNIT 0x80 0x4E 0x0 0x3D [14,9] 0b 0x0 0x0 0x0 [0x14,0x0,0x0,0x0] [0x0,0x3,0x0,0x0]
UNIT 0x80 0x4E 0x0 0x3D [15,7] 0b 0x0 0x0 0x0 [0x1C,0x14,0x0,0x0] [0x0,0x3,0x0,0x0]
UNIT 0x80 0x3F 0x0 0x35 [16,9] 0b 0x0 0x0 0x0 [0x22,0x0,0x0,0x0] [0x0,0x3,0x0,0x0]
UNIT 0x80 0x25 0x0 0x35 [18,5] 0b 0x0 0x0 0x0 [0x39,0x0,0x0,0x0] [0x0,0x3,0x0,0x0]
UNIT 0x80 0x4E 0x0 0x35 [14,11] 0b 0x0 0x0 0x0 [0x14,0x0,0x0,0x0] [0x0,0x3,0x0,0x0]
UNIT 0x80 0xF 0x0 0x35 [14,14] 0b 0x0 0x0 0x0 [0x1,0x0,0x0,0x0] [0x0,0x3,0x0,0x0]
UNIT 0x80 0x9 0x0 0x35 [16,12] 0b 0x0 0x0 0x0 [0x14,0x0,0x0,0x0] [0x0,0x3,0x0,0x0]
UNIT 0x80 0x9 0x0 0x35 [16,13] 0b 0x0 0x0 0x0 [0x14,0x0,0x0,0x0] [0x0,0x3,0x0,0x0]
UNIT 0x80 0x45 0x0 0x35 [18,9] 0b 0x0 0x0 0x0 [0x4C,0x0,0x0,0x0] [0x0,0x3,0x0,0x0]
UNIT 0x80 0x2D 0x0 0x35 [18,14] 0b 0x0 0x0 0x0 [0x45,0x0,0x0,0x0] [0x0,0x3,0x0,0x0]
UNIT 0x80 0x3F 0x0 0x35 [15,15] 0b 0x0 0x0 0x0 [0x20,0x0,0x0,0x0] [0x0,0x3,0x0,0x0]
UNIT 0x80 0xF 0x0 0x35 [15,10] 10b 0x0 0x0 0x0 [0x5,0x0,0x0,0x0] [0x0,0x3,0x0,0x0]
UNIT 0x7F 0x5 0x0 0x3D [8,1] 0b 0x0 0x0 0x0 [0x5,0x0,0x0,0x0] [0x0,0x12,0x0,0x0]
UNIT 0x80 0x5 0x0 0x35 [7,1] 0b 0x0 0x0 0x0 [0x1,0x0,0x0,0x0] [0x0,0x12,0x0,0x0]
UNIT 0x80 0x5 0x0 0x35 [11,0] 0b 0x0 0x0 0x0 [0x14,0x0,0x0,0x0] [0x0,0x12,0x0,0x0]
UNIT 0x80 0x4B 0x0 0x35 [10,0] 10b 0x0 0x0 0x0 [0x4C,0x6D,0x0,0x0] [0x0,0x12,0x0,0x0]
UNIT 0xB0 0x58 0x0 0xD [27,4] 0b 0x0 0x0 0x0 [0xAF,0x0,0x0,0x0] [0x0,0x0,0x0,0x0]
UNIT 0x4B 0x2D 0x0 0x54 [20,5] 0b 0x0 0x0 0x0 [0x45,0x0,0x0,0x0] [0x3,0x3,0x0,0x0]
UNIT 0x80 0x19 0x0 0x35 [12,4] 0b 0x0 0x0 0x0 [0x2D,0x0,0x0,0x0] [0x0,0x3,0x0,0x0]
UNIT 0xF9 0x6E 0x0 0xB [26,12] 0b 0x0 0x0 0x0 [0x0,0x0,0x0,0x0] [0x6,0x3,0x0,0x0]
UNIT 0xFA 0x71 0x0 0xB [25,13] 0b 0x0 0x0 0x0 [0x0,0x0,0x0,0x0] [0x6,0x3,0x60,0x0]
UNIT 0xFB 0x72 0x0 0xB [25,12] 0b 0x0 0x0 0x0 [0x0,0x0,0x0,0x0] [0x6,0x3,0x0,0x0]
UNIT 0x80 0x4E 0x0 0x3D [14,16] 0b 0x0 0x0 0x0 [0x14,0x0,0x0,0x0] [0x0,0x0,0x0,0x0]
UNIT 0x80 0x4E 0x0 0x3D [20,7] 0b 0x0 0x0 0x0 [0x14,0x0,0x0,0x0] [0x0,0x3,0x0,0x0]
UNIT 0x80 0x9 0x0 0x35 [21,13] 0b 0x0 0x0 0x0 [0x1B,0x1C,0x0,0x0] [0x0,0x3,0x0,0x0]
UNIT 0x80 0x4E 0x0 0x3D [19,13] 0b 0x0 0x0 0x0 [0x14,0x0,0x0,0x0] [0x0,0x3,0x0,0x0]
UNIT 0x80 0x3F 0x0 0x2D [13,6] 10b 0x0 0x0 0x0 [0x1F,0x25,0x0,0x0] [0x0,0x3,0x0,0x0]
UNIT[/details]
causes things like this

but by loading the same enemies, with some of them as Turn 1 reinforcements, everything works fine.

For the record, the only things I have done to my file, beyond relatively small event changes (adding/re-positioning enemies and stuff like that) are adding the Free Range patch (correctly displays non-default attack ranges) and Nintenlord’s AS patch. I also added several learnsets to skill_lists.event, though as far as I can tell they work perfectly fine and this is somehow tied to enemy unit lists.

1 Like

This has been found a week ago or so on the discord. It is a bug caused by the debuff system that happens when you load more than 16 units at once. You want to separate your larger unit groups into smaller ones of 16 max each to work around it. As to why it happens, idunno we’ll have to wait for colorz (made the debuff stuff) to look at it.

I plan on using this in my next project because this just looks so cool, but I want to test it in a clean FE8 ROM.[quote=“circleseverywhere, post:128, topic:2312”]
Lucky for you @MarkyJoe1990 did that for you:
[/quote]
I downloaded this to find about 1200 unorganized files after decompressing it. It seems to be every single file used to create this.[quote=“circleseverywhere, post:1, topic:2312”]
free to use and modify
[/quote]
All right. Makes sense for modification.

I sift through the files to find the UPS patch, which seems to be the only thing that could be the aforementioned easy patch.(?)
I apply it to a clean FE8 ROM and go to the prologue. Seth’s health bar works fine, so something must have happened, but scrolling over a skill icon with he info bar causes it to crash, and moving to the 4th screen after selecting a unit causes a crash. Also, it doesn’t seem that any skills activate.
I’m clearly doing something wrong. This looks really neat, but I’m just confused now.

What I’m trying to ask is how would one go about applying this into a clean ROM?

@Snakey1 rename your ROM FE8_clean and put it in the skills system folder. Run the makehack command file and you should be good to go.

So I’m not sure if this has been brought up (I imagine it has, but there’s not a list of known issues anywhere that I can see), but this hack has a tendency to generate a bit of lag every now and again from what I can tell. Of course, it’s kind of to be expected with something like this, but when I had progressed to Chapter 9A, the game became entirely unplayable.

Running my emulator at around 10x normal speed, it would still take literal seconds for me to select one single tile when trying to move a unit, literal seconds when selecting items in the menu, and literal seconds to transition into battle. Interestingly enough, whenever I selected enemy units, they didn’t seem to have this issue, as their movement range came up instantaneously as usual, and could move around at normal speed on enemy phase. I’m tempted to say that part of this is because of the number of enemies I have initially deployed on this map (~40ish), yet I had a similar amount on Chapter 8 which while laggy, was well within reason for a system overhaul this massive. Strangely, I also suffered similar lag in Chapter 6 without Fog of War, but by reapplying it the lag all but vanished in its entirety. I haven’t had as much time to mess around with this as I would have liked, but if anyone knows of a good solution to this, it would be appreciated.

Hmm… I seem to run into a couple error messages in the command prompt, and no changes are made.

‘∩╗┐cd’ is not recognized as an internal or external command,
operable program or batch file.

C:.…\Skill Test\Stuff>cd “C:.…\Skill Test\Stuff\Tables”
The system cannot find the path specified.

BIT ZIPPER WHY?
Bit Zipper decided to remove all folders in the file, so I had 1200 files floating around one file. 7 Zip handled it much better.
Anyway, I got it working. The command prompt kept giving me problems, so I assembled what looked like the master event file.
Thanks for making this @circleseverywhere. I would have never dreamed of anything like this before I saw this! You truly are a wizard.

Update: Some of you are probably familiar with my FE8 Display Growths hack. I am proud to report that (with much wailing and gnashing of teeth) it has now been implemented into the Modular Stat Screen (and by extension, the skill system) and is better than ever before.

Features:

  • Press Select to toggle between displaying stats and growths on the Personal Data page. Only works for player characters.

  • Stat names reflect the growth of that stat by color. More importantly, you’re no longer restricted to the regular text colors (grey, white, blue, yellow, and glowy-green). Two unused palette banks are now free, for a total of 10 unique options, which can also be changed (of course, you’re still welcome to use the old ones if you so like). Once again, this is also only for player units. Credit to @L95 for the pretty colors. NOTE: Debuffs use the last color.

  • Fixed growths mode! This is toggleable by a permanent event id (default is 0xB0), so you could, for instance, only apply it on hard mode.

  • Rescuing arrows and the travelling icon now show up in the right place (can be edited in ModularStatScreen.event).

  • FE5-style crusader scrolls. Based on @Venno’s growth modifiers hack (ok, it’s pretty much the same, except it doesn’t freeze the game if you get a 0-stat level-up). The growth modifiers are signed, and there’s also an option to make multiple ‘scrolls’ stack.

Crusader scrolls work as follows: Set the first bit in byte 0x22 of the item’s data. This will tell the game it’s a growth booster. Then, go to the Stat Bonuses pointer (pointed to at 0xC in item data). The first 0x8 bytes of the struct are used for actual stat bonuses, and 0x9 is reserved for a possible magic bonus, so begin at 0xA past and write your growth modifiers in the order HP, Str, Skl, Spd, Def, Res, Luk. These values are signed, so you can have negative bonuses (-128 to +127).
Example: Stat bonuses pointer is 0x8B2B000, and the scroll gives +10 hp, +10 str, 0 skl, -10 spd, +20 def, 0 res, and -20 luk. You would go to B2B00A and write 0A 0A 00 F6 14 0 EC.
NOTE: As it stands, if a player character or boss has a scroll in their inventory and autolevelling is on, the scroll(s) will affect the levels gained during autolevelling.

Everything that is modifiable can be found in Engine Hacks/MSS/Display Growths Options. Have fun!

http://i.imgur.com/d75CmMD.png
http://i.imgur.com/kAb2DBa.png

14 Likes

str/mag split when?

Those colors are great, far superior to what I was using. Bravo.

Does the green glow when it reaches 100%?