• Welcome to Final Fantasy Hacktics. Please login or sign up.
 
April 16, 2024, 06:56:27 pm

News:

Use of ePSXe before 2.0 is highly discouraged. Mednafen, RetroArch, and Duckstation are recommended for playing/testing, pSX is recommended for debugging.


Gender Specific Jobs

Started by ShadowSkyle, May 15, 2012, 05:04:04 am

ShadowSkyle

May 15, 2012, 05:04:04 am Last Edit: May 15, 2012, 05:10:00 am by ShadowSkyle
Hello everyone. I am in the process of making a new patch when I came across this problem. I've set Bard/Dancer as early level classes, and branched off from there.

(Using the original classes for ease of understanding, and possibly because it might be a problem with the base class)

Calculator class requires Chemist Lvl 3/Dancer Lvl 3.
Male unit gets to Chemist Lvl 3.
Calculator job unlocks for him.
Female unit needs to wait until they also get Dancer Lvl 3.

Being that I DON'T want male units to have access to the Calculator class, this is a problem. Any solutions?

Edit: This is happening for all of my gender-specific jobs. Opposite gender is disregarding Bard/Dancer requirements.

Pickle Girl Fanboy

There is no IF in determining job class prerequisites.  The AND is implied if several job classes are listed as prerequisites.

This is a good idea for a hack, I'd like to have it, especially if it's built into one of the spreadsheet hacks.  I don't know how much effort it'd take to make an IF(gender=male/female/monster, then require xyz job class level N).

RavenOfRazgriz

The Opposite Gender is always considered as having Job Level 8 in the Job they can't use.  Eg, male Chemist is already a Job Level 8 Dancer, female Chemist is already a Job Level 8 Bard.

While I recall a means of doing this innately, I've forgotten it and I remember it having display bugs, so I recommend you use RAD's version of the Job Wheel to make your Gender-divided Job Wheel happen.  I recommend keeping it to the original number of Jobs regardless of the fact RAD can go up to 34 though (35 is false advertising Pokeytax!) because the ENTD won't acknowledge the "new" Jobs that get added, and actively adding them can get kinda messy.

Quote from: Pickle Girl Fanboy on May 15, 2012, 04:55:09 pm
There is no IF in determining job class prerequisites.  The AND is implied if several job classes are listed as prerequisites.


What the fuck are you talking about?

Quote from: Pickle Girl Fanboy on May 15, 2012, 04:55:09 pmThis is a good idea for a hack, I'd like to have it, especially if it's built into one of the spreadsheet hacks.  I don't know how much effort it'd take to make an IF(gender=male/female/monster, then require xyz job class level N).


RAD? :V

Pickle Girl Fanboy

As in the functions IF and AND.  And I didn't know RAD was so advanced.

ShadowSkyle

May 15, 2012, 10:25:35 pm #4 Last Edit: May 15, 2012, 11:36:20 pm by ShadowSkyle
Well, I did get it working through RAD3. However, now I have run into an issue where my custom characters (using the ASM hack to allow jobs 3A/3B to use unit/wldface 08/09) now display different faces (but only in battle). Job 3A is displaying Ramza's face, and 3B is displaying Lede's face...sigh...it's always something. This is only happening in battle. Sprites are fine. Faces are fine in formation menu.

Edit: This glitch doesn't even carry over into battle. It's only on the battle formation screen where you select which units will enter the battle.

Glain

I think there may be some overlap between what RAD patches and what that unit/wldface hack patches... so those hacks may not be compatible.

EDIT - Although it is a bit weird. The part that isn't working is specifically the attack.out part, but I don't know what RAD would change there vs. what that hack changes that would be any different from what happens with the rest of it (world.bin)... but there could be something overlapping there.
  • Modding version: Other/Unknown

ShadowSkyle

Well, here is the xml code. Hopefully the error can be found.

There's several sections for ATTACKOUT, but one in specific states "<!-- Put the pre-battle screen sprite/portrait values here. -->
<Location file="EVENT_ATTACK_OUT" offset="16CEC">
<!-- Put the pre-battle screen sprite/portrait values here. -->
1B1B1C1C
23232424
2B2B2C2C
1F1F2020
21212222
23232424
25252626
27272828
29292A2A
2B2B2C2C
2D2D2E2E
2F2F3030
31313232
33333434
35353636
37373838
39393A3A
3B3B3C3C
3B3B3C3C
3D3D3E3E
</Location>


And here's the entire xml code
<?xml version="1.0" encoding="utf-8" ?>
<Patches>
<Patch name="RAD 3: Job Wheel Expansion">
<Location file="WORLD_WORLD_BIN" offset="42670">
9A230508
25102002
00000000
</Location>
<Location file="WORLD_WORLD_BIN" offset="68e68">
1580163C
F094D626
E4FFBD27
1400BFAF
0400A2AF
0800A4AF
0C00A6AF
1000A7AF
6ABC030C
6E000434
1580043C
608F82A0
1400BF8F
0400A28F
0800A48F
0C00A68F
1000A78F
1C00BD27
00000334
0000908E
00000000
79001022
20800302
20887600
3A001092
00003192
0F001532
0F003332
2AA8B302
38001514
02811000
02891100
F9FF1114
00000000
09007028
EFFF1014
01006324
0000908E
0A00C392
B5001092
04000310
00000000
2A180302
2A000310
00000000
0000908E
0B00C392
B4001092
04000310
0F001032
2A180302
22000310
00000000
0000908E
0C00C392
72001092
04000310
00000000
00000000
1A000310
00000000
0D00C392
00001034
2A187000
15000310
00000000
0E00C392
00000000
03000310
2A180302
0F000310
00000000
0000908E
0F00C392
24001092
00000000
06007014
00810200
02831000
7BE31022
02001010
00000000
00406324
01005226
000043A4
02004224
1000D626
1580153C
7097B526
2AA8D502
B7FF1514
00000000
FFFF1534
000055A4
CF890408
21104002
</Location>
<Location file="WORLD_WORLD_BIN" offset="39cb4">
64842284
</Location>
<Location file="WORLD_WORLD_BIN" offset="3a3c4">
64841026
</Location>
<Location file="WORLD_WORLD_BIN" offset="42808">
00004490
</Location>
<Location file="WORLD_WORLD_BIN" offset="423B8">
FF008430
1580023C
21104400
00914290
00000000
00000000
00000000
00000000
00140200
0800E003
03140200
</Location>
<Location file="WORLD_WORLD_BIN" offset="69100">
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000001
02030405
06070809
0A0B0C0D
0E0F1011
12130000
</Location>
<Location file="BATTLE_BIN" offset="F4D00">
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000001
02030405
06070809
0A0B0C0D
0E0F1011
12130000
</Location>
<Location file="BATTLE_BIN" offset="117A28">
1680023C
20104500
00BD4290
00000000
0000C2AC
00000000
00000000
</Location>
<Location file="BATTLE_BIN" offset="F4D60">
FFFFFFFF
FF000102
03040506
0708090A
0B0C0D0E
0F101112
13FFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFF00
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
FFFFFFFF
</Location>
<Location file="BATTLE_BIN" offset="11A8E4">
B800A993
1680023C
20104900
60BD4590
00000000
1300A22C
02000210
00000000
4F060608
B800A293
</Location>
<Location file="WORLD_WORLD_BIN" offset="69160">
900050001800280096396400
a80050001800280097396400
6000780018002800163a6400
7800780018002800173a6400
3000a00018002800963a6400
4800a00018002800973a6400
0000780018002800d6396400
1800780018002800d7396400
3000780018002800143a6400
4800780018002800153a6400
6000780018002800163a6400
7800780018002800173a6400
9000780018002800543a6400
a800780018002800553a6400
c000780018002800563a6400
d800780018002800573a6400
0000a00018002800943a6400
1800a00018002800953a6400
3000a00018002800963a6400
4800a00018002800973a6400
6000a00018002800d43a6400
7800a00018002800d53a6400
9000a00018002800d63a6400
a800a00018002800d73a6400
c000a00018002800143b6400
d800a00018002800153b6400
0000c80018002800163b6400
1800c80018002800173b6400
3000c80018002800543b6400
4800c80018002800553b6400
6000c80018002800563b6400
7800c80018002800573b6400
9000c80018002800943b6400
a800c80018002800953b6400
c000c80018002800963b6400
d800c80018002800973b6400
c000c80018002800963b6400
d800c80018002800973b6400
0000000018002800d43b6500
1800000018002800d53b6500
</Location>
<Location file="WORLD_WORLD_BIN" offset="69340">
80808080
80808080
80808080
80808080
80808080
80008080
80808080
80808080
80808080
80808080
80808080
80808080
80808080
80808080
80808080
80808080
80808080
80808080
80801415
16171819
1A1B1C1D
1E1F2021
22232425
26278080
</Location>
<Location file="WORLD_WORLD_BIN" offset="693A0">
1580013C
20082300
40932190
80000234
05002214
1980023C
20104300
34DE4190
07000010
00000000
02000510
40080100
01002120
1580023C
20104100
C0944190
40100100
20082200
80080100
1980043C
44DA8420
20202400
4E960408
00000000
</Location>
<Location file="WORLD_WORLD_BIN" offset="458BC">
E8240508
00000000
00000000
</Location>
<Location file="WORLD_WORLD_BIN" offset="69410">
4F505152
53545556
5758595A
5B5C5D5E
5F606162
30313233
34353637
38393A3B
3C3D3E3F
40414142
</Location>
<Location file="WORLD_WORLD_BIN" offset="2CAF0">
10250508
</Location>
<Location file="WORLD_WORLD_BIN" offset="2CB1C">
10250508
</Location>
<Location file="WORLD_WORLD_BIN" offset="69440">
02000292
1580033C
20186200
40936390
1580023C
20186200
10946390
00000592
80180300
0100A530
40280500
20106500
DE320408
00000000
</Location>
<Location file="BATTLE_BIN" offset="F4E10">
80808080
80808080
80808080
80808080
80808080
80008080
80808080
80808080
80808080
80808080
80808080
80808080
80808080
80808080
80808080
80808080
80808080
80808080
80801415
16171819
1A1B1C1D
1E1F2021
22232425
26278080
</Location>
<Location file="BATTLE_BIN" offset="F4E70">
4F505152
53545556
5758595A
5B5C5D5E
5F606162
30313233
34353637
38393A3B
3C3D3E3F
40414142
</Location>
<Location file="BATTLE_BIN" offset="F4F20">
4F505152
53545556
5758595A
5B5C5D5E
5F606162
30313233
34353637
38393A3B
3C3D3E3F
40414142
</Location>
<Location file="BATTLE_BIN" offset="F4EA0">
02000292
1680033C
20186200
10BE6390
1680023C
20186200
70BE6390
00000592
80180300
0100A530
40280500
20106500
D6210708
00000000
</Location>
<Location file="BATTLE_BIN" offset="F4EE0">
02000292
1680033C
20186200
10BE6390
1680023C
20186200
20BF6390
00000592
80180300
0100A530
40280500
20106500
A8200708
00000000
</Location>
<Location file="EVENT_ATTACK_OUT" offset="96CC">
A86F0508
</Location>
<Location file="EVENT_ATTACK_OUT" offset="96F8">
A86F0508
</Location>
<Location file="EVENT_ATTACK_OUT" offset="9214">
B86F0508
</Location>
<Location file="EVENT_ATTACK_OUT" offset="9240">
B86F0508
</Location>
<Location file="BATTLE_BIN" offset="F4F48">
4F505152
53545556
5758595A
5B5C5D5E
5F606162
30313233
34353637
38393A3B
3C3D3E3F
40414142
</Location>
<Location file="BATTLE_BIN" offset="F4F70">
03008290
1680033C
20186200
10BE6390
1680023C
00008590
40180300
0100A530
20186500
20186200
80C16290
00000000
6A780108
00000000
</Location>
<Location file="SCUS_942_21" offset="4E958">
DC6F0508
00000000
</Location>
<Location file="SCUS_942_21" offset="4E974">
DC6F0508
00000000
</Location>
<Location file="EVENT_ATTACK_OUT" offset="16BB0">
00000000
01010202
03037878
79790404
7A7A7B7B
7C7C7D7D
05050606
7E7E0707
7F7F0D0D
09090A0A
0B0B0C0C
13130D0D
81810E0E
0F0F8282
10108383
17171111
85851212
13138686
87878888
89898A8A
12120E0E
14148B8B
15158D8D
8E8E1414
15158C8C
16160000
17170000
00000000
00000000
8D8D8E8E
8F8F0000
90900000
91910000
00009292
00009393
00000000
18180000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
19191A1A
1B1B1C1C
1D1D1E1E
1F1F2020
21212222
23232424
25252626
27272828
29292A2A
2B2B2C2C
2D2D2E2E
2F2F3030
31313232
33333434
35353636
37373838
39393A3A
3B3B3C3C
3D3D3E3E
3F3F4040
41414242
43434444
45454646
47474848
49494A4A
4B4B4C4C
4D4D4E4E
4F4F5050
00005151
52520000
00000000
</Location>
<Location file="EVENT_ATTACK_OUT" offset="16CEC">
<!-- Put the pre-battle screen sprite/portrait values here. -->
1B1B1C1C
23232424
2B2B2C2C
1F1F2020
21212222
23232424
25252626
27272828
29292A2A
2B2B2C2C
2D2D2E2E
2F2F3030
31313232
33333434
35353636
37373838
39393A3A
3B3B3C3C
3B3B3C3C
3D3D3E3E
</Location>
<Location file="EVENT_ATTACK_OUT" offset="92AC">
B15B2790
</Location>
<Location file="EVENT_ATTACK_OUT" offset="9764">
B05B2590
</Location>










<Location file="SCUS_942_21" offset="4E5AC">
1680023C
20106200
00BD5090
00000000
00000000
00000000
</Location>
<Location file="BATTLE_BIN" offset="F5000">
01010101
01010101
01010101
01010101
01010101
01010101
01010101
01010101
01010101
01010101
01010101
01010101
01010101
01010101
01010101
01010101
01010101
01010101
01010101
01010101
01010101
01010101
01010101
01010101
02020202
02020202
02020202
02020202
02020202
02020202
02020202
02020202
02020202
02020202
02020202
02020202
02020202
02020202
02020202
02020202
02020202
02020202
02020202
02020202
02020202
02020202
02020202
02020202
03030303
03030303
03030303
03030303
03030303
03030303
03030303
03030303
03030303
03030303
03030303
03030303
03030303
03030303
03030303
03030303
03030303
03030303
03030303
03030303
03030303
03030303
03030303
03030303
04040404
04040404
04040404
04040404
04040404
04040404
04040404
04040404
04040404
04040404
04040404
04040404
04040404
04040404
04040404
04040404
04040404
04040404
04040404
04040404
04040404
04040404
04040404
04040404
</Location>
<Location file="SCUS_942_21" offset="4E944">
06004014
</Location>
<Location file="SCUS_942_21" offset="4E960">
EC6F0508
00000000
</Location>
<Location file="BATTLE_BIN" offset="F4FB0">
01000224
0C006210
2010C000
02000224
09006210
6000C224
03000224
06006210
C000C224
04000224
03006210
2001C224
6A780108
20106000
1680063C
2010C200
00C04290
6A780108
00000000
</Location>
<Location file="WORLD_WORLD_BIN" offset="69480">
02000292
1580033C
20186200
40936390
1580023C
20186200
10946390
00000592
80180300
0100A530
40280500
20106500
C2240408
00000000
</Location>
<Location file="WORLD_WORLD_BIN" offset="29280">
20250508
</Location>
<Location file="WORLD_WORLD_BIN" offset="292AC">
20250508
</Location>
<Location file="WORLD_WORLD_BIN" offset="74C4C">
1B001C0023002400
2B002C001F002000
2100220023002400
2500260027002800
29002A002B002C00
2D002E002F003000
3100320033003400
3500360037003800
39003A003B003C00
3B003C003D003E00
</Location>
<Location file="WORLD_WORLD_BIN" offset="AA9F4">
<!-- Put the Formation screen portrait values here. -->
1B001C0023002400
2B002C001F002000
2100220023002400
2500260027002800
29002A002B002C00
2D002E002F003000
3100320033003400
3500360037003800
39003A003B003C00
3B003C003D003E00
</Location>
<Location file="WORLD_WORLD_BIN" offset="694C0">
<!-- Put the Formation screen sprite values here. -->
1A1B2223
2A2B1E1F
20212223
24252627
28292A2B
2C2D2E2F
30313233
34353637
38393A3B
3A3B3C3D
</Location>
<Location file="BATTLE_BIN" offset="F5180">
<!-- Put the Battle screen sprite values here. -->
62636A6B
72736667
68696A6B
6C6D6E6F
70717273
74757677
78797A7B
7C7D7E7F
80818283
82838485
60616263
64656667
68696A6B
6C6D6E6F
70717273
74757677
78797A7B
7C7D7E7F
80818283
82838485
</Location>
<Location file="WORLD_WORLD_BIN" offset="694F0">
<!-- Put the RAD codes here. -->
0000000000000000011000000000004A
0000000000000000000000000000004B
5000000000000000000000000000004C
3000000000000000000000000000004D
5320000000000000020000000000004E
0500000000000000005000000000004F
03000000000000000300000000000050
33030000000000000300000000000051
05000300000000003050000000000052
33040000000000000200000000000053
44000000000000000000000000000054
03000030000000000400000000000055
33030000000000000030000000000056
53430000002000000020000000000057
53430000002000000200000000000058
33040000000000000020000000000059
0300000000000000003000000000005A
0300000000000000010000000000005B
0300000000000000001000000000005C
8866000000400000000000000000005D
00000000000000000110000000000015
00000000000000000110000000000015
00000000000000000110000000000015
00000000000000000110000000000015
00000000000000000110000000000015
00000000000000000110000000000015
00000000000000000110000000000015
00000000000000000110000000000015
00000000000000000110000000000015
00000000000000000110000000000015
00000000000000000110000000000015
00000000000000000110000000000015
00000000000000000110000000000015
00000000000000000110000000000015
00000000000000000110000000000015
00000000000000000110000000000015
00000000000000000110000000000015
00000000000000000110000000000015
00000000000000000110000000000015
00000000000000000110000000000015
</Location>
<Location file="WORLD_WORLD_BIN" offset="42CD0">
1C260508
00000000
</Location>
<Location file="WORLD_WORLD_BIN" offset="69870">
00911100
1580023C
20105200
FF945290
368B0408
00941200
</Location>
<Location file="WORLD_WORLD_BIN" offset="42cdc">
2800222A
</Location>
</Patch>
</Patches>

ShadowSkyle

May 16, 2012, 10:29:41 pm #7 Last Edit: May 16, 2012, 11:08:43 pm by ShadowSkyle
Another issue arrived in RAD3. Even though I have all but the original generic jobs locked (by assigning a 1 to Bard and Dancer), suddenly one of my characters was able to access a whole lot of Astrologist jobs?!?!

Edit: Fixed this by making the prerequisites for unused classes 8 Bard/8 Dancer. However, now she has 2 squire classes...

Edit: This job only appears after completing a proposition. She did not gain JP off of the proposition (nor did any of my other characters). I'm thinking this is an error that also has to do with the ASM hack where special characters can do propositions. (The character in question is not a special character, but the two she goes on the proposition with are) When I send her on the proposition with generic classes, neither gain JP, but she does not get the random class addition, either. Going to try re-making the file without using that ASM and see what happens...

Update: Still not learning JP from jobs...odd. Though she's no longer getting a duplicate class, but that was the case as long as I didn't send her off with any special characters....Thoughts, anyone?

Glain

RAD and the unit/wldface hack are definitely changing the same line of attack.out. It's actually the segment that begins at 16BB0 in RAD that conflicts. You could try patching the unit/wldface hack after RAD... however, I believe the problem is that RAD actually changes where the game looks for pre-battle screen sprite/portrait values (to that segment at 16CEC that you posted). You could try altering that to include the 080009 that's in the other hack somewhere in that mess, wherever your job ID would be in the mix. It should be two bytes per job. I've never worked with RAD before, though, so I'm not too sure on whether this would work.
  • Modding version: Other/Unknown

Desocupado

Given your results theres another way to implement this idea:
1 - Remove all units with base class Bard/Dancer (and/or all spill over xp)
2 - Give Male-only classes a Dancer requirement (and Bard for female-only)
3 - Make dancer/bard not accessible (If the class require job levels in itself will it be not accessible?)
  • Modding version: PSX

ShadowSkyle

But then I'd lose classes. :( And with the already diminished amount of jobs allowed for males and females, that would hurt. But my problem isn't with the jobs. I have an issue with the portraits of my implemented unique characters during the pre-battle screen (a minor nuisance which can be overlooked), Propositions not giving JP and messing up things if I allow special characters to do propositions, and my newest problem that the Fur Shop is not appearing. Aside from these 3 issues, the game works like a charm. Oh...actually, there is one more issue. The 4 Dances I left in the game...at least one of them (Last Dance [others not tested] does not do what it's supposed to (Acts like a basic attack with the message pop-up "Madlemgen." Nothing about the ability is changed inside of FFTPatcher, so this is VERY odd)

ShadowSkyle

Ok, so I've fixed some problems, found workarounds for others, and am baffled by a couple.

First, the Fur Shop issue, about it not showing up. This was simply stupidity on my part. I completely forgot that it doesn't appear until the third chapter, and not the second. *Resolved*

Second, Dance...While I still don't understand how or why this happened, Dancing abilities do not work as they should (No, I haven't played with them at all in FFTPatcher). When I try to use a dance ability, it comes up with some random target area (Usually just one square away, though it seems to be based on the last action I took with that character). It also seems to repeat that last action. Workaround: if I press right on the D-pad while highlighting the ability (bringing me to the AT list), then go back and select the desired Dance ability, it works as intended. *Workaround, although I'd like to fix it*

Third, Sing...The songs don't always show the name of the ability, but at least they seem to work fine. *Don't care, but would be nice to fix it*

Fourth, portraits in pre-battle menu for custom characters do not show the appropriate portrait. I know the cause, and intend to play around with it after more important issues are resolved. *Don't care, but would be nice to fix it*

Finally, Propositions do not give JP. No idea what's causing this, and it's really hurt the game. Since I took Gained-JP out, this would have been the only option to bypass undesired jobs quickly. No longer being an option, I've temporarily given all jobs innate Gained-JP Up. *Top Priority*