DragonAtma's mods: Gemfire, Romance of the Three Kingdoms II, 7th Saga, and more

Started by DragonAtma, November 30, 2020, 04:12:55 PM

Previous topic - Next topic

MysticLord


DragonAtma

Come tonight!
Come to the ogre site!
Come to OB Randomizer Lite!

Ogre Battle Randomizer Lite 0.1 is ready for release. https://www.mediafire.com/file/najyvucinsjfb62/OB+Randomizer+Lite+0_1.zip/file

Obviously, there's still a ways to go, but I've made a good amount of progress. Right now, all enemies (except the boss units) are sensibly randomized, it covers all thirty stages, and there don't seem to be any bugs. Do keep in mind that this is an early version, so you'll need a headered english version (1,573,376 bytes) named OGREBATTLE.SMC -- no, I can't provide a copy. You'll also need Python 3 and TCOD to run it. If there are any issues that I missed, let me know.

And, of course, I give Square Enix full permission to use this however they want.

EDIT: Here, have a screenshot for your enjoyment.

No, you don't have to give Usar complete units if you don't want to.
In memory of my beloved cats: Anastasia (9/30/06-9/18/17), Josephine (1/19/06-9/23/17), Polgar (4/8/07-3/22/23), and Ivan (2008-7/4/23).
My mods: Romance of the Three Kingdoms II, Gemfire, 7th Saga, and more

Red Soul

This is pretty neat. I guess a map editor would also be an incredible asset to go with this.
Imagine being able to re-create Prince of Zenobia with the SNES engine.

DragonAtma

Technically there's a minor mistake in 0.1 (Ninjas can be unit leaders, even though they shouldn't). That'll be fixed in 0.2, which will have options to let randomized leaders include nonleaders (Skeletons, Fighters, etc.) and/or large leaders (Octopus, Gryphon, etc.). There are more things I want to add, but the coding's already there!

In memory of my beloved cats: Anastasia (9/30/06-9/18/17), Josephine (1/19/06-9/23/17), Polgar (4/8/07-3/22/23), and Ivan (2008-7/4/23).
My mods: Romance of the Three Kingdoms II, Gemfire, 7th Saga, and more

Red Soul

Maybe ninjas could have a new promotion where they could, in fact, lead.

DragonAtma

Ninja masters can already lead; it's just regular ninjas that can't. Of course, a randomizer option that lets mindless undead lead a unit will not be stopped by such a minor restriction. >_>

On a side note, letting a large class lead a unit tends to causes a minor graphical glitch:


There don't seem to be any non-graphical problems, but I may (reluctantly) abandon letting large classes lead groups.
In memory of my beloved cats: Anastasia (9/30/06-9/18/17), Josephine (1/19/06-9/23/17), Polgar (4/8/07-3/22/23), and Ivan (2008-7/4/23).
My mods: Romance of the Three Kingdoms II, Gemfire, 7th Saga, and more

MysticLord

Quote from: DragonAtma on May 05, 2021, 06:33:12 PM
Ninja masters can already lead; it's just regular ninjas that can't. Of course, a randomizer option that lets mindless undead lead a unit will not be stopped by such a minor restriction. >_>

On a side note, letting a large class lead a unit tends to causes a minor graphical glitch:


There don't seem to be any non-graphical problems, but I may (reluctantly) abandon letting large classes lead groups.
Could be due to having 4 smalls and 1 large on the same team. I'd test that before I test large leaders.

DragonAtma

I did; one large and four small probably uses too many tiles and overwrites some non-class tiles, as they work fine once one of the small units is dead.

I should document how many tiles each class uses; I won't be surprised if some "too big" combos are okay.
In memory of my beloved cats: Anastasia (9/30/06-9/18/17), Josephine (1/19/06-9/23/17), Polgar (4/8/07-3/22/23), and Ivan (2008-7/4/23).
My mods: Romance of the Three Kingdoms II, Gemfire, 7th Saga, and more

Red Soul

I wonder if it's possible to expand the ROM to fit more graphics data and then repoint it.

Edit: I know you probably won't change mechanics, but it always made zero sense to me that evil units need high charisma of all things to promote.

Is there an editor of some sort I can muck around with the game with? OBEdit crashes for me.

DragonAtma

The joke's on you; I'm planning to give the randomizer an option to randomize cha/ali requirements, so some classes (maybe cherubim, maybe evil ones) won't need charisma.
In memory of my beloved cats: Anastasia (9/30/06-9/18/17), Josephine (1/19/06-9/23/17), Polgar (4/8/07-3/22/23), and Ivan (2008-7/4/23).
My mods: Romance of the Three Kingdoms II, Gemfire, 7th Saga, and more


DragonAtma

So I took a look at the tiles; unfortunately, unless I find a coder, the only way to have large classes lead a unit is to limit units so they're still size 5.

On the bright side, I'm making progress with other plans. Difficulty is implemented (it's a flat multiplier, so you can have Samurai Masters at the beginning or Wild Men at the end). Allies, bosses, and even uniques can also appear in regular units; one notorious attempt stuck a Rashidi clone in Sharom!

I'm bad at avoiding Valve Time, but I hope to have another version out soon.
In memory of my beloved cats: Anastasia (9/30/06-9/18/17), Josephine (1/19/06-9/23/17), Polgar (4/8/07-3/22/23), and Ivan (2008-7/4/23).
My mods: Romance of the Three Kingdoms II, Gemfire, 7th Saga, and more

MysticLord

@DragonAtma, do you have a discord server somewhere, or is there an OB/TO modding discord? I'm working on a spreadsheet and python script combination to edit neutrals/enemies/allies, and I'd like feedback from the people who would use it.

I just had a thought on how I could make it work easily with hacks to expand classes, formations, terrains, and tactics, so I had to go back and redo some things. Feedback from coders would help a ton.

DragonAtma

No, I don't use discord; sorry.

I also have one other annoyance to deal with: the randomizer generates enemies with default stats. So if they put a level 4 Albeleo in the Sharom stage, he still has the same 158 HP he has in vanilla. I haven't given unique enemies (Rashidi, Apros, etc.) the standard leveling they'd have if they were normal classes, but they may have the same problem. Even joinables (Canopus, Aisha, etc.) have the same issue; a level 3 Debonair has 216 HP (just like the post-Shangrila version) and absolutely slaughters your level 3 units.
In memory of my beloved cats: Anastasia (9/30/06-9/18/17), Josephine (1/19/06-9/23/17), Polgar (4/8/07-3/22/23), and Ivan (2008-7/4/23).
My mods: Romance of the Three Kingdoms II, Gemfire, 7th Saga, and more

MysticLord

Yeah you need to edit the recruitable NPCs starting stats, which IIRC are just after the stat blocks for the generic classes.

DragonAtma

Unfortunately, while that would probably work for uniques, semi-generics (Lans, Usar, etc.) don't have HP/str/agi/int gains; instead, they grab a bunch of data from the matching generic class. As a result, both a level 5 version and a level 20 version would start with identical stats.

If you look at the game, both vanilla versions of Albeleo (Balmorian Ruins and Dragon's Haven) have identical stats (level 17, 158 HP, 102/153/153 str/agi/int).
In memory of my beloved cats: Anastasia (9/30/06-9/18/17), Josephine (1/19/06-9/23/17), Polgar (4/8/07-3/22/23), and Ivan (2008-7/4/23).
My mods: Romance of the Three Kingdoms II, Gemfire, 7th Saga, and more

MysticLord

Quote from: DragonAtma on May 09, 2021, 10:31:36 AM
Unfortunately, while that would probably work for uniques, semi-generics (Lans, Usar, etc.) don't have HP/str/agi/int gains; instead, they grab a bunch of data from the matching generic class. As a result, both a level 5 version and a level 20 version would start with identical stats.

If you look at the game, both vanilla versions of Albeleo (Balmorian Ruins and Dragon's Haven) have identical stats (level 17, 158 HP, 102/153/153 str/agi/int).
Ah, I see. In that case you need to do some hacking. IIRC it's not that there's nothing at the addresses where the semi-generic stat gains would be; instead there's some other data there. Which means that there's a check, presumably for a class ID within a certain range or greater than a certain range, and then the game skips the stat gains for those classes when generating those characters.

If you can find that code, then you'll at least have something to work with.

DragonAtma

The data there is for another stat; for example, while x65 Fogel's starting HP is followed by x66 Ashe's starting HP (yes, Fogel is technically a generic with a one-name-long name list), x65 Fogel's HP growth is followed by x01 Fighter's starting Strength.

I do agree that a SNES programmer can fix that, but since I'm not a SNES programmer, someone else would have to volunteer to help.
In memory of my beloved cats: Anastasia (9/30/06-9/18/17), Josephine (1/19/06-9/23/17), Polgar (4/8/07-3/22/23), and Ivan (2008-7/4/23).
My mods: Romance of the Three Kingdoms II, Gemfire, 7th Saga, and more

MysticLord

Quote from: DragonAtma on May 09, 2021, 04:10:21 PM
The data there is for another stat; for example, while x65 Fogel's starting HP is followed by x66 Ashe's starting HP (yes, Fogel is technically a generic with a one-name-long name list), x65 Fogel's HP growth is followed by x01 Fighter's starting Strength.

I do agree that a SNES programmer can fix that, but since I'm not a SNES programmer, someone else would have to volunteer to help.
That's because Fogel is also the class used by the other dragoons. They reference him for stat growths and use their own starting stats.

DragonAtma

(May 10)
So I tinkered with the AI's brains and added three values: DIFFICULTY, UNIT_WISDOM and LEVEL_VARIETY. From the settings file:

Difficulty is a percentage used for determining classes. It does not affect what level the enemies are, only when advanced classes start appearing. If you set it to 150, level 10 enemies may be Paladins (normally they need to be level 15), level 12 enemies may be Monks (normally they need to be level 18), and so on. If you set it to 50, you won't meet Mages (level 10 requirement) before level 20, you'll never meet Monks (nobody reaches level 36), etc. Default is 100.

Unit Wisdom determines how good the AI is at putting units in the proper row. The higher the number, the better their unit design is; 0 has Usar placing characters haphazardly, while Hikash puts everyone in the correct row. 10 means everyone puts all characters in a sensible row, while -10 means even Hikash would put Doll Masters in front and Iron Golems in back.

Level Variety is how smart leaders are at evolving their units. More specifically, classes evolve between 0 and LEVEL_VARIETY levels after they could; 0 means Knights immediately stop appearing when paladins are possible, while 25 means you can see fighters at the final stage. The default value is 3, so Knights (who can become Paladins at level 15) don't completely vanish until level 18.

---

Unfortunately, the next release may not have some or all non-generic classes appear in enemy units.

-===-
(May 14)
I've been making some progress. Unfortunately, the key word is "some".

Once again, the game refuses to level up uniques, even though they have stat gains added in. Case in point, this level 4 Rashidi should have 128-ish HP, but it uses the default of 104 HP. I may need to find a coder to get anyone non-generic appearing outside the usual level.
-===-
(May 15)
Since leveling is not possible, nongenerics gets a range for where they appear. Default is from (vanilla-1) to (vanilla+3); Albeleo (level 17), for example, could appear in any slot that asks for a character form level 16 to 20. Stats don't change, so Albeleo has the same stats whether he fills in a level 16 slot or a level 20 slot. There can be some nasty units; one Antanjyl group had Ares leading, Saradin supporting, and three Tristans in front.

I should have version 0.2 out within a couple days.
In memory of my beloved cats: Anastasia (9/30/06-9/18/17), Josephine (1/19/06-9/23/17), Polgar (4/8/07-3/22/23), and Ivan (2008-7/4/23).
My mods: Romance of the Three Kingdoms II, Gemfire, 7th Saga, and more