-
Notifications
You must be signed in to change notification settings - Fork 92
/
SkillSystem.event
173 lines (144 loc) · 6.59 KB
/
SkillSystem.event
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
//Skill System replacing favouritism stat
#include repointbuffer.event
// #include "FE8-Weapon Rank on Levelup/FE8-Weapon Rank on Levelup EA.txt"
PUSH //let 203e884 + charnum*10 = skill area (bytes 1,2,3,4 NOT 0 tho)
//This was done through trial and error....
//PROBLEM: skills 1 and 2 get kept along with loss count
/*
ORG $a44c8 //bwl
BYTE $70 $47
ORG $a4534 //bwl
BYTE $70 $47
ORG $a41c8 //seems to be saving/loading
BYTE $70 $47
ORG $a421c //same here
BYTE $70 $47 */
ORG $a474c
BYTE $70 $47
ORG $a478c
BYTE $70 $47
ORG $a4a34
BYTE $70 $47
// ORG $a4cfc //breaks at credits
// BYTE $70 $47
ORG $a464c //only save 1 byte when dying (as opposed to 3)
BYTE 1
ORG $a4140
SHORT 0 //nop the 0x200000
// now managed via InitLevelUpSkillPopup (see SkillPopups.event, Engine Hacks/Popups.event and Engine Hacks/PopupRework) -Stan
// ORG $76018
// jumpToHack(SkillLearner)
// now managed by Icon Rework (see Engine Hacks/IconRework) -Stan
// ORG $3730
// jumpToHack(AlternateIconPopup)
// now managed by Popup Rework (see Engine Hacks/Popups.event and Engine Hacks/PopupRework) -Stan
// ORG $75d64
// jumpToHack(AnimsOnPopupHack)
ORG $17ef4
jumpToHack(HookUnitLoading)
ORG $2B3EC
jumpToHack(Rerun_Battle_Calcs)
ORG $22862
BL(Unset_Attack_Flag) //this is in masterhackinstaller
ORG $18680
jumpToHack(Unset_Attack_Flag_2)
POP
ALIGN 4
Skill_Getter: // gets a list of skills
#incbin "asm/GetSkills.dmp"
POIN PersonalSkillTable
POIN ClassSkillTable
POIN (GetInitialSkillList|1)
SkillTesterOriginal: //does unit have X skill?
#incbin skillTester.dmp
POIN Skill_Getter
POIN ItemTable
SkillTester: //does enemy have Nihil? if so, does Nihil negate X skill?
#incbin nihilTester.dmp
POIN SkillTesterOriginal
WORD NihilID
POIN Skill_Getter
POIN NegatedSkills
POIN SkillTester
WORD CatchEmAllID
NegatedSkills: //comment or uncomment skills to your liking, this should come with an updated list of skills that work with nihil and are meant to
//Confirmed working and grouped by type for easier adding/removing from the NegatedSkills list
//please note that I have only tested one or two skills of each group so if there is any issue with any of them please let me know
BYTE VantageID VantagePlusID DesperationID WrathID//if hp < 50%
BYTE SwordbreakerID LancebreakerID AxebreakerID BowbreakerID TomebreakerID//breaker
BYTE SwordfaireID LancefaireID AxefaireID BowfaireID TomefaireID//faire
BYTE DuelistsBlowID DeathBlowID DartingBlowID WardingBlowID CertainBlowID ArmoredBlowID//blow
BYTE ElbowRoomID NaturalCoverID//terrain dependant
BYTE QuickDrawID//when initiating attack
BYTE StrongRiposteID PatienceID PursuitID//when under attack
BYTE CounterID CounterMagicID//counter
BYTE SureShotID IgnisID ColossusID ImpaleID PaviseID AegisID AstraID SolID LunaID AetherID AdeptID LethalityID//Astra and friends aka Stat(/2)% activation
BYTE SolidarityID MaleficAuraID VoiceOfPeaceID IntimidateID AnathemaID//auras that affect the one that makes them
BYTE LifetakerID GaleforceID DespoilID//after defeating enemy
BYTE SavageBlowID//after combat, prevents activating but not effects if it was already activated
BYTE SealStrID SealSklID SealSpdID SealLukID SealDefID SealResID//seal
BYTE CritUpID WaryFighterID FrenzyID MiracleID LifeAndDeathID TantivyID FocusID FieryBloodID WindDiscipleID HawkeyeID LightWeightID KillingMachineID CriticalForceID ChivalryID PragmaticID OpportunistID TrampleID //other combat skills
BYTE MoonbowID//charge up skills, I don't really know how they work so I don't know if this prevents them from getting charge or lossing it or not, it does prevent moonbow from triggering
BYTE DownWithArchID
BYTE LuckySevenID OddRhythmID EvenRhythmID QuickBurnID SlowBurnID//turn based boosts
BYTE BracingStanceID DartingStanceID FierceStanceID KestrelStanceID MirrorStanceID ReadyStanceID SteadyStanceID SturdyStanceID SwiftStanceID WardingStanceID SpectrumStanceID // Stance skills (add stats if under attack)
BYTE ExpertiseID
BYTE SlayerID NullifyID //effectiveness stuff
BYTE BlackMagicID
/*
//NOT WORKING (or they should not be affected by nihil)
BYTE ProvokeID//this is kinda it's own thing really (works)
BYTE MercyID LungeID GambleID CaptureID//commands, not working, if you want to you can make a test for nihil in the target routine and make it not a valid target if they have nihil
BYTE ShoveID SmiteID//commands that do not initiate a fight, same as above but I felt they should be another group
BYTE StaffSavantID BowRangeUpID//range skills, not working, if you really want to you can edit the targeting routine to make an enemy with nihil untargetable if they are outside the range you would have without the skill
BYTE RallyStrID RallyMagID RallySklID RallySpdID RallyLukID RallyDefID RallyResID RallyMovID RallySpectrumID//not even tested, they have no reason to be negated
BYTE SpurStrID SpurMagID SpurSpdID SpurDefID SpurResID//spur, same as rally
BYTE UpWithArchID DemoiselleID GentilhommeID InspirationID CharmID AmaterasuID CamaraderieID LilysPoiseID BondID//auras that don't affect the one that makes them, so same as rally
BYTE DisciplineID ParagonID ArmsthriftID CantoPlusID//after battle, probably not working and probably shouldn't be nullified anyway
BYTE CelerityID ReliefID LockTouchID LiveToServeID NihilID PersonalityID NiceThighsID SummonID DanceID CunningID DragonsBloodID AcrobatID PassID CantoID RenewalID//other, can't be affected
BYTE RightfulArchID RightfulKingID RightfulGodID//Rightful skills shouldn't really be checked by nihil since any skill that's going to be affected by them should already be nullified
//TO DO:
BYTE SaviorID//works, but changes are not displayed in the pre-battle numbers (they ARE updated when the combat begins tho)
BYTE ForeignPrincessID
*/
BYTE 0x00//terminator
ALIGN 4
ALIGN 4
SkillDescGetter: //given skill number, get description text ID
#incbin skillDescGetter.dmp
POIN SkillDescTable
POIN Skill_Getter
WORD SS_SkillsDefaultRText
ALIGN 4
SkillAdder: //given chardata in r0, skill in r1, add skill if possible
#incbin addSkill.dmp
ALIGN 4
HookUnitLoading:
#incbin "asm/HookUnitLoading.dmp"
POIN (AutoloadSkills|1)
// POIN (Skill_Getter|1)
// POIN ChargeupTable
ALIGN 4
AutoloadSkills:
// TODO: maybe merge with HookUnitLoading?
#incbin "asm/AutoloadSkills.dmp"
POIN (GetInitialSkillList|1)
POIN (SkillAdder|1)
ALIGN 4
GetInitialSkillList:
#incbin "asm/GetInitialSkillList.dmp"
POIN (GetUnitLevelSkills|1)
ALIGN 4
GetUnitLevelSkills:
#incbin "asm/GetUnitLevelSkills.dmp"
POIN ClassLevelUpSkillTable
POIN CharLevelUpSkillTable
RTextLoop:
#incbin "rtextloop.dmp"
POIN Skill_Getter
Rerun_Battle_Calcs:
#incbin "Rerun_Battle_Calcs.dmp"
Unset_Attack_Flag_2:
#incbin "clearAttackFlag.dmp"
#include "SkillPopups.event"
#include "HPHealing.event"