WARNING: THIS SITE IS A MIRROR OF GITHUB.COM / IT CANNOT LOGIN OR REGISTER ACCOUNTS / THE CONTENTS ARE PROVIDED AS-IS / THIS SITE ASSUMES NO RESPONSIBILITY FOR ANY DISPLAYED CONTENT OR LINKS / IF YOU FOUND SOMETHING MAY NOT GOOD FOR EVERYONE, CONTACT ADMIN AT ilovescratch@foxmail.com
Skip to content

Commit 4c89a2c

Browse files
Moved IQ_SKILL_RESTRICTIONS to C
1 parent a24bde3 commit 4c89a2c

File tree

7 files changed

+94
-17
lines changed

7 files changed

+94
-17
lines changed

asm/main_rodata_020A190C.s

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -49,15 +49,3 @@ VERSION_EXCLUSIVE_MONSTERS:
4949
.byte 0x19, 0x04, 0x00, 0x01, 0x0F, 0x00, 0x00, 0x01, 0x67, 0x02, 0x00, 0x01, 0xE9, 0x01, 0x01, 0x00
5050
.byte 0x41, 0x04, 0x01, 0x00, 0xEA, 0x01, 0x01, 0x00, 0x42, 0x04, 0x01, 0x00, 0x16, 0x01, 0x01, 0x00
5151
.byte 0x09, 0x02, 0x00, 0x01, 0x96, 0x00, 0x00, 0x01
52-
.global IQ_SKILL_RESTRICTIONS
53-
IQ_SKILL_RESTRICTIONS:
54-
.byte 0x0F, 0x27, 0x04, 0x00, 0x01, 0x00, 0x02, 0x00
55-
.byte 0x04, 0x00, 0x04, 0x00, 0x06, 0x00, 0x07, 0x00, 0x08, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00
56-
.byte 0x0A, 0x00, 0x0A, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x10, 0x00
57-
.byte 0x14, 0x00, 0x09, 0x00, 0x11, 0x00, 0x06, 0x00, 0x18, 0x00, 0x19, 0x00, 0x1A, 0x00, 0x1B, 0x00
58-
.byte 0x1C, 0x00, 0x1D, 0x00, 0x1E, 0x00, 0x1F, 0x00, 0x20, 0x00, 0x21, 0x00, 0x22, 0x00, 0x23, 0x00
59-
.byte 0x24, 0x00, 0x25, 0x00, 0x26, 0x00, 0x27, 0x00, 0x28, 0x00, 0x29, 0x00, 0x2A, 0x00, 0x2B, 0x00
60-
.byte 0x2C, 0x00, 0x2D, 0x00, 0x2E, 0x00, 0x2F, 0x00, 0x30, 0x00, 0x31, 0x00, 0x32, 0x00, 0x33, 0x00
61-
.byte 0x34, 0x00, 0x35, 0x00, 0x36, 0x00, 0x37, 0x00, 0x38, 0x00, 0x39, 0x00, 0x3A, 0x00, 0x3B, 0x00
62-
.byte 0x3C, 0x00, 0x3D, 0x00, 0x3E, 0x00, 0x3F, 0x00, 0x40, 0x00, 0x41, 0x00, 0x42, 0x00, 0x43, 0x00
63-
.byte 0x44, 0x00, 0x00, 0x00

include/enums.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
#define PMDSKY_ENUMS_H
33

44
#define NUM_TACTICS TACTIC_NONE + 1
5-
#define MAX_NUM_IQ_SKILLS 25
65

76
// Tactic ID. These are usually encoded as bitvectors.
87
enum tactic_id {

include/iq_skills.h

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
11
#ifndef PMDSKY_IQ_SKILLS_H
22
#define PMDSKY_IQ_SKILLS_H
33

4+
#define NUM_IQ_SKILLS 69
5+
#define NUM_IQ_SKILLS_PER_GROUP 25
6+
#define NUM_IQ_GROUPS 16
7+
48
#include "enums.h"
59

610
// Table of 4-byte values for each IQ skill that represent the required IQ value to unlock a skill.
7-
extern const s32 IQ_SKILLS[69];
8-
extern const enum iq_skill_id IQ_GROUP_SKILLS[16][25];
11+
extern const s32 IQ_SKILLS[NUM_IQ_SKILLS];
12+
extern const enum iq_skill_id IQ_GROUP_SKILLS[NUM_IQ_GROUPS][NUM_IQ_SKILLS_PER_GROUP];
913

1014
#endif //PMDSKY_IQ_SKILLS_H

include/monster_parameters.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
#ifndef PMDSKY_MONSTER_PARAMETERS_H
2+
#define PMDSKY_MONSTER_PARAMETERS_H
3+
4+
#include "iq_skills.h"
5+
6+
// Table of 2-byte values for each IQ skill that represent a group. IQ skills in the same group can not be enabled at the same time.
7+
extern const s16 IQ_SKILL_RESTRICTIONS[NUM_IQ_SKILLS + 1];
8+
9+
#endif //PMDSKY_MONSTER_PARAMETERS_H

main.lsf

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@ Static main
108108
Object asm/main_02051788.o
109109
Object src/tactics_data.o
110110
Object asm/main_rodata_020A190C.o
111+
Object src/monster_parameters.o
111112
Object src/secondary_terrain_types.o
112113
Object asm/main_rodata_020A1BB0.o
113114
Object src/iq_skills.o

src/dungeon_pokemon_attributes_1.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
#include "dungeon_parameters_3.h"
44
#include "dungeon_parameters_4.h"
55
#include "dungeon_util_static.h"
6+
#include "iq_skills.h"
67
#include "main_02058CD8.h"
78
#include "main_02058E68.h"
89
#include "overlay_29_022FF898.h"
@@ -58,7 +59,7 @@ void UpdateIqSkills(struct monster *monster)
5859
monster->iq_skill_flags.flags[1] = 0;
5960
monster->iq_skill_flags.flags[2] = 0;
6061

61-
for (s32 i = 0; i < MAX_NUM_IQ_SKILLS; i++)
62+
for (s32 i = 0; i < NUM_IQ_SKILLS_PER_GROUP; i++)
6263
{
6364
enum iq_skill_id iq_skill = GetSpeciesIqSkill(monster->id, i);
6465
if (iq_skill == IQ_NONE_2)
@@ -93,7 +94,7 @@ void UpdateIqSkills(struct monster *monster)
9394
monster->iq_skill_flags.flags[0] = 0;
9495
monster->iq_skill_flags.flags[1] = 0;
9596
monster->iq_skill_flags.flags[2] = 0;
96-
for (s32 i = 0; i < MAX_NUM_IQ_SKILLS; i++)
97+
for (s32 i = 0; i < NUM_IQ_SKILLS_PER_GROUP; i++)
9798
{
9899
enum iq_skill_id iq_skill = GetSpeciesIqSkill(monster->id, i);
99100
if (iq_skill == IQ_NONE_2)

src/monster_parameters.c

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
#include "monster_parameters.h"
2+
3+
const s16 IQ_SKILL_RESTRICTIONS[NUM_IQ_SKILLS + 1] =
4+
{
5+
9999, // IQ_NONE
6+
4, // IQ_TYPE_ADVANTAGE_MASTER
7+
1, // IQ_ITEM_CATCHER
8+
2, // IQ_COURSE_CHECKER
9+
4, // IQ_SURE_HIT_ATTACKER
10+
4, // IQ_QUICK_DODGER
11+
6, // IQ_PP_CHECKER
12+
7, // IQ_NONTRAITOR
13+
8, // IQ_STATUS_CHECKER
14+
9, // IQ_EXP_GO_GETTER
15+
9, // IQ_EFFICIENCY_EXPERT
16+
9, // IQ_WEAK_TYPE_PICKER
17+
10, // IQ_ALL_TERRAIN_HIKER
18+
10, // IQ_ABSOLUTE_MOVER
19+
11, // IQ_TRAP_AVOIDER
20+
11, // IQ_HOUSE_AVOIDER
21+
14, // IQ_ENERGY_SAVER
22+
14, // IQ_NONSLEEPER
23+
14, // IQ_SELF_CURER
24+
16, // IQ_TRAP_SEER
25+
20, // IQ_LAVA_EVADER
26+
9, // IQ_DEDICATED_TRAVELER
27+
17, // IQ_ITEM_MASTER
28+
6, // IQ_EXCLUSIVE_MOVE_USER
29+
24, // IQ_ESCAPIST
30+
25, // IQ_LOCK_PICKER
31+
26, // IQ_STAIR_SENSOR
32+
27, // IQ_COIN_WATCHER
33+
28, // IQ_EXP_ELITE
34+
29, // IQ_SHARPSHOOTER
35+
30, // IQ_FAST_FRIEND
36+
31, // IQ_PP_SAVER
37+
32, // IQ_BODYGUARD
38+
33, // IQ_CAUTIOUS_CREEPER
39+
34, // IQ_AGGRESSOR
40+
35, // IQ_DEFENDER
41+
36, // IQ_INTIMIDATOR
42+
37, // IQ_SURVIVALIST
43+
38, // IQ_TRAP_BUSTER
44+
39, // IQ_COUNTER_HITTER
45+
40, // IQ_EXTRA_STRIKER
46+
41, // IQ_HIT_AND_RUNNER
47+
42, // IQ_PARRY_EXPERT
48+
43, // IQ_QUICK_STRIKER
49+
44, // IQ_NO_CHARGER
50+
45, // IQ_WARY_FIGHTER
51+
46, // IQ_GAP_PROBER
52+
47, // IQ_POWER_PITCHER
53+
48, // IQ_CONCENTRATOR
54+
49, // IQ_COUNTER_BASHER
55+
50, // IQ_CHEERLEADER
56+
51, // IQ_NATURE_GIFTER
57+
52, // IQ_WISE_HEALER
58+
53, // IQ_QUICK_HEALER
59+
54, // IQ_ACUTE_SNIFFER
60+
55, // IQ_DEEP_BREATHER
61+
56, // IQ_BRICK_TOUGH
62+
57, // IQ_MULTITALENT
63+
58, // IQ_TIME_TRIPPER
64+
59, // IQ_ERRATIC_PLAYER
65+
60, // IQ_PRACTICE_SWINGER
66+
61, // IQ_NO_DEFEATIST
67+
62, // IQ_HAGGLER
68+
63, // IQ_CLUTCH_PERFORMER
69+
64, // IQ_CRITICAL_DODGER
70+
65, // IQ_MAP_SURVEYOR
71+
66, // IQ_PIERCE_HURLER
72+
67, // IQ_COLLECTOR
73+
68, // IQ_TRUE_POWERIST
74+
0, // IQ_NONE_2
75+
};

0 commit comments

Comments
 (0)