[FE8] Three-Houses style c-Skill-System template release

FE8U c-Skill-System Mokha Rebuild

Project of FE16-RE, a Skill-lite and C-HAX style FE8U SkillSystem rebuild in C.

Click here for downloading!(ver2.0)


Main Features

cSkillSys3cSkillSys1cSkillSys2

  • Three-Houses style skill & combat-art system.

  • Pick unit skills & combat-arts on prep-screen.

  • Three-Houses style level-up, battle-calc.

  • Unit Status reworked so that we can get 4 bits buff & debuff status with a modular info table.

  • CHAX style buildfile project with better quality and stability, including c-Str/Mag-Split, c-Item-System-Rework, c-Battle-System-Rework, c-Stat-Screen, Post-Action hook, etc.


How to compile

For windows user:

  • Clone repo with command git clone --recursive https://github.com/MokhaLeee/FE8U-cSkillSystem.git or update submodules with git submodule update --init --recursive after cloning, or just download each submodule inside Tools/ folder.

  • have devkitARM installed, and the DEVKITARM env variable set.

  • have python 3 installed and in your path. (the makefile should be able to find the correct python executable name. See tools.mk.

  • Download EventAssembler release, and unzip which in Tools folder.

  • Put Fire Emblem 8: Scared Stones(sha1: c25b145e37456171ada4b0d440bf88a19f4d509f) clean rom named FE8U.gba in directory.

  • Open Msys2 (which will be installed on DevkitPRO installation), or Windows terminal and get into current folder, to build rom FE-cSkillSys.gba:

sh makehack.sh all
  • Further more, you can make clean to clean build outputs.

You can directly assemble Main.event through Event Assembler, and for more details, you can see tips on StanH’s CHAX.

BTW, since I may update the repository of C-Lib from time to time, so I suggest you update each submodels any time you want to compile this through commands:

git submodule sync
git submodule update --init
git submodule update --remote

Q & A

  • Q: ERROR with switch statement when assembling C, where EA would told me Undefined identifier: _LP___gnu_thumb1_case_uqiA: Change optimize-options of gcc from Os to O1 or O2 inside make_wizardry.mk.

  • Q: ERROR: ModuleNotFoundError: No module named 'six'A: You need to install some modules for using TMX2EA. Make sure Python3 installed and get into Tools/FE-PyTools/TMX2EA folder, then,pip install -r requirements.txtJust follow to Tools/PyTools/TMS2EA/SETUP.md.

13 Likes

Skills organization notes

  • Each unit can equip no more than 5 skills.

  • Player can pick skills on Prep-Screen.

  • Each class could provide 4 equippable skills, two of them are accessable at level 1, 2 can get at level 10.

  • Unit can also get equippable skills by weapon-exp level, each level can get no more than 2 skills.

  • Each class can also give units no more than 4 default, which is not removeable, 2 of them got at level 1, 2 of them got at level 10.

  • Unit can also have no more than 2 default skills.


Skills List

Name Desc
Darting Blow If unit initiates combat, grants AS +6 during combat
Death Blow If unit initiates combat, grants Str +6 during combat
Armored Blow If unit initiates combat, grants Def +6 during combat
Fiendish Blow If unit initiates combat, grants Mag +6 during combat
Warding Blow If unit initiates combat, grants Res +6 during combat
Duelist’s Blow If unit initiates combat, grants Avo +20 during combat
Uncanny Blow If unit initiates combat, grants Hit +30 during combat
Close Counter Enables unit to counter-attack if got melee attack
Counter Attack Enables unit to counter-attack regardless of distance
Vantage When unit is defender with HP is <50%, attack first
Desperation When unit attacks with HP <50%, double attacks immediately
Riposte If unit is attacked with HP >50%, double attacks
Wary Fighter Prevents follow up attack if unit’s HP >50%
Lethality Unit may casue Lethality in critical attack, Skl%
Crit Crit rate +15%
Watchful Eye Hit rate +20%
Crit Sword Crit rate +10%, if equipped sword
Crit Axe Crit rate +10%, if equipped axe
Crit Lance Crit rate +10%, if equipped lance
Crit rate +10%, Crit rate +10%, if equipped bow
Crit B.Mag Crit rate +10%, if equipped B.Mag
Faire Sword Atk +5 if unit equips sword
Faire Lance Atk +5 if unit equips lance
Faire Axe Atk +5 if unit equips axe
Faire Bow Atk +5 if unit equips bow
Faire B.Mag Atk +5 if unit equips B.mag
Avoid+10 Avoid rate +10%
Avoid Sword Grants avoid rate +20% if unit equips sword
Sword Breaker Hit, avoid +20% if attack sowrd with lance
Axe Breaker Hit, avoid +20% if attack axe with sword
Lance Breaker Hit, avoid +20% if attack lance with axe
Bow Breaker Hit, avoid +20% if attack bow with B.mag
Tome Breaker Hit, avoid +20% if attack B.mag with bow
Defiant Crit Crit rate +50% if HP <25%
Defiant Avoid Avoid rate +30% if HP <25%
Defiant Str Pow +7 if HP <25%
Defiant Mag Mag +7 if HP <25%
Defiant Skl Skl +7 if HP <25%
Defiant Spd Spd +7 if HP <25%
Defiant Luk Luk +7 if HP <25%
Defiant Def Def +7 if HP <25%
Defiant Res Res +7 if HP <25%
Dance Unit can dance
Lock Touch Unit can use Pick command
Summon Unit can use Summon command
Supply Unit has Supply
Steal Unit can steal items
Pass Unit can get through place enimy stands
Life And Death Pow and Mag +5, Def and Res -5
Canto Unit can move again
Alert Stance If unit takes no action except Wait, grants Avo +15%
Alert Stance+ If unit takes no action except Wait, grants Avo +30%
Renewal Unit recovers up to 30% of max HP at the start of each turn
B.Mag Range +1 Increases black magic range by 1
B.Mag Range +2 Increases black magic range by 2
Bow Range +1 Increases bow range by 1
Bow Range +2 Increases bow range by 2
Stance Bracing Grants Def and Res +4 if attacked
Stance Darting Grants AS +6 if attacked
Stance Fierce Grants Atk +6 if attacked
Stance Kestrel Grants Atk and AS +4 if attacked
Stance Mirror Grants Atk and Res +4 if attacked
Stance Ready Grants AS and Def +4 if attacked
Stance Steady Grants Def +6 if attacked
Stance Sturdy Grants Atk and Def +4 if attacked
Stance Swift Grants AS and Res +4 if attacked
Stance Warding Grants Res +6 if attacked
2 Likes

Combat-Arts organization notes

  • Each unit can equip no more than 5 combat-arts.
  • Player can pick combat-arts on Prep-Screen.
  • Unit can also get equippable skills by weapon-exp level, each level can get no more than 2 skills.

Combat-Arts List

Sword:

Name Dura Mt Hit Crit Avo Range Desc
Wrath Strike 3 5 10 - - -
Wrath Strike 4 5 20 5 - - Effective against Flying enemies
Soulblade 4 2 10 - - - Magic attack + actor’s Res
Bane Of Monsters 4 6 - 10 - - Effective against monsters
Sunder 3 4 - 15 - -
Haze Slice 5 2 - - 30 -
Hexblade 3 7 10 - - - Magic attack
Finesse Blade 4 2 0 - 10 - Dmg+ actor’s Skl
Windsweep 5 3 10 - - - Enimy cannot couter
Sword Dance 2 1 - - 20 - Dmg+ actor’s charm
Assassinate 4 0 15 15 10 - Silencer rate +50%
Subdue 3 0 20 - - - Leaves foe with at least 1 HP
Foudro Strike 3 6 30 30 - - Effective against Armored enemies
Sublime Heaven 3 10 10 20 - +1 Effective against dragon
Ruptured Heaven 3 7 10 10 - +1 Effective against dragon
Heavens Fall 3 10 10 10 - +1 Effective against dragon

Lance:

Name Dura Mt Hit Crit Avo Range Desc
Tempest Lance 5 8 10 - - -
Knight kneeler 4 5 15 10 - - Effective against Cavalry enemies
Shatter Slash 3 4 10 - - - Enimy’s Def-5
Monster Piercer 4 7 - 10 - - Effective against monsters
Hit And Run 4 4 10 20 - - actor moves 1 space backwards
Swift Strikes 2 2 - - - - 2 consecutive hits
Frozen Lance 4 3 5 - - - Magic attack + actor’s Skl
Glowing Ember 4 2 - 10 - - Dmg + actor’s Def
Vengeance 4 2 - 10 - - Dmg + actor’s lost HP
Lance Jab 5 3 - 10 - - Dmg + actor’s Spd

Axe:

Name Dura Mt Hit Crit Avo Range Desc
Smash 5 3 20 20 - -
Helm Splitter 5 7 - 5 - - Effective against Armored enemies
Monster Breaker 5 9 - - - - Effective against Monsters
Focused Strike 3 - 30 - - -
Wild Abandon 5 10 -30 30 - -
Spike 5 5 15 10 - -
Diamond Axe 7 14 -20 - - -
Lightning Axe 3 4 - - - - Magic attack + actor’s Res
Armored Strike 4 3 10 - - - Dmg + actor’s Def
War-Master Strike 5 3 30 10 - - Effective against all foes
Flickering Flower 3 10 10 10 - - Enimy cannot move

Bow:

Name Dura Mt Hit Crit Avo Range Desc
Curved Shot 3 1 30 - - +1
Deadeye 5 6 - - - +3
Encloser 5 - 10 - - +1 Enimy cannot move
Heavy Draw 5 8 10 - - -
Monster Blast 4 5 - 10 - - Effective against monsters
Schism Shot 3 4 15 - - +1 Magic attack, enimy’s Res-5
Break Shot 3 4 10 - - +1 enimy’s Def-5
Waning Shot 3 4 10 - - +1 enimy’s Atk-5
P-B Volley 2 1 15 10 - 0 2 consecutive hits
Ward Arrow 3 4 15 - - +1 Enimy cannot use magic
Hunter’s Volley 2 1 15 10 - - 2 consecutive hits
Encloser+ 7 - 20 - - +2 Enimy and adjacent units cannot move
Waning Shot+ 5 - 20 - - +2 Enimy and adjacent units Atk-5
Break Shot+ 5 - 20 - - +2 Enimy and adjacent units Def-5
Ward Arrow+ 5 - 20 - - +2 Enimy and adjacent units cannot use magic
3 Likes

Wizardry Organization

  • Core Support

    • Mokha Lib: basic div & mod functions, etc.

    • Unit action

    • Unit menu

    • Expanded modular save

    • Popup rework

    • Icon display

    • Battle-unit hook

    • Load unit hook

    • Null BWL: null all entries to BWL table except load & save routines.

    • BWL Supports: put unit support RAM data into new BWL table, rather than unit struct.

    • Cahpter Init hook: Add a function hook list when start or restart chapter.

    • Common Space: a common & free space with 0x40 long and will save in Suspend data, for more details, see common-space.h

    • Random number extensions: make a sub-rng system for 3DS/FE16 style unit level up, see more in rn-ext.h

    • Negative Stat Boosts

  • Core Hacks

    • Str/mag split: a rework to split unit strength and magic power in C.

    • Status getter: modular functions to get unit status with MAG & CON & MOV getter.

    • Range getter master: modular functions to get weapon attack range.

      • Modular range getter
      • Fill-map works: c-hax to rewrite ItemRange2Mask, and FillMap functions based on decomp.
      • Draw item range string: a UI rework to properly draw item range message in help-box and unit item page of stat-screen.
      • Is item covering range: judge can weapon counter enimies by new modular range getter.
    • Level up rework

      • Modular level up (ModLU): modular functions for unit level up, to further add unit skill learning funcs, etc. Also add checks for unit magic power status level up.
      • Growth getter: modular functions to get unit status growth.
      • Auto level: add unit magic power auto-level for str/mag split.
      • Check cap: add unit magic power check-cap.
      • Level up screen: rework unit level up animes for both anime-off and anime-on and promotion cases, in C based on decomp.
      • Modular promotion getter: same as ModLU, but for unit promotion.
    • Stat screen

      • Draw left & unit * item page
      • Draw skill page inside unit page
      • Help box.
      • Function: BattleGenerateUiStats rework
      • C-style growth-based text color
    • Skill core

      • Skill tester
      • Skill fast list: make two skill fast lists in RAM space for judge unit skill faster.
      • Skill desc & name & icon-gfx etc. getter
      • Add skill etc. misc functions
      • Draw skill page
      • Skill activition anim core
    • Prep Pick Skill Screen: Equip skills in prep-screen

    • Item effect rework

      • Modular item menu usability
      • Modular item menu effect
      • Modular item action routine
      • Modular item prep-screen usability
      • Modular item prep-item effect
    • Battle system: check function battle-unwind and can unit double attack

      • Core: extend the Battle-Hit array.
      • Battle order: rework on battle-order and can-unit-double-attack judgement, introduce skill Desperation and skill Vantage
      • Battle calc: Pre-Battle calculation, Battle hit, Battle calc real
      • Battle effective: check whether unit or item effective to enimy
      • Battle forcast: reworked on BkSel
      • Battle can counter: introduced a modular check loop
      • Battle exp getter
      • Battle accuracy calc
      • Weapon equipment: remove check can-counter routine
      • Weapon tri-angle
    • Combat Art: Three-Houses style attack skills

      • Menu & TargetSelect: Unit-Menu item & Combat Art Select menu and items & Target select
      • Misc: LoadUnit combat-art, Pre-Battle Calc modular functions
      • BkSel: reworked on battle-forcast UI
      • Select-Target: rewoked on target-select core so that we can change combat-art during target-selection
    • Unit Status: a rework on unit buff & debuff status: 2 bits duration + 6 bits index

      • Blinky Icon: diy on sprite’s debuff object
      • Duration Depletion: unit duration–
      • Core: use 2 bits to ensure unit hold 4 turns duration
    • Posy Action Hook: add a blocking proc and hook loop to enable hackers inset own proc. For example, debuff anim, etc.

  • Features

    • FE16 style level up: use rn-ext system for 3DS/FE16 style level.

    • Skills installer

      • Skills Info Table
      • Various skills and their info
    • Combat-Arts installer

      • Combat-Arts Info Table
      • Various combat-arts and their info
    • Skill Activition Anims

      • Various skills anims installer
    • Map Anims

      • Some Map object effect procs (for example, debuff:gravity’s post-action effect anim, etc)
    • Unit Status Installer

      • Define vairous unit buff & debuff status informations
    • Prep-Screen Rework

    • Skill-Anim Installer

  • External Patches: other hackers’ work

    • HP bars

    • Movement arrow hack

    • Modular portrait height arrangment

    • Stat-screen eye blink

    • Fix weapon ranks

    • Windows & menu semitransparency

    • Game Start Screen: a diy H & S screen

    • Remove A: replace vanilla item’s “A or a” to " "(space character)

    • Some mokha small fixes.

5 Likes

Release ver.2.0 · MokhaLeee/FE8U-cSkillSystem (github.com)

Ver.2.0 released, added a lot of new skills, also reworked on prep-screen pick-skill routine and introduced MASTERY ride & fly & heavy, etc.

2 Likes