So i just installed Mog mod 8.0.1, before that i had only the Memoria Mod and i modified the stealScript so I can steal with 100% accuracy all the time, but after installing the moguri mod i'm back to normal when i Steal, I guess mog only get some features from Memoria and doesn't look at the scripts? because i can only make the script work without the mog mod, i've tried to install everything like 5 times in diferent order but the result is still the same If i use Memoria Patch, Mog graphics won't work but the script does and if i install mog, the script stop working. I don't know if it's normal or not but tbh i hate the Stealing system in this game but if i can only make one work i'll go with mog and ignore stealing i guess
(i only put like 6 lines in the script if this helps)
Add the steal script to .../StreamingAssets/Scripts/Sources/Battle/ and than run the Memoria.Compiler.exe under .../Scripts/Compiler/
This worked fine for me.
I've no problems at all. The game runs almost perfect for me with the Moguri Mod! Thanks a lot to all involved individuals
Here is what I did:1. made a clean install of FF IX from steam (I play the German Version)
2. Run the Game once
3. Install Moguri 8.0.1 (2020-05-26) from the mogul mod website into the FF IX Game Folder
I've unchecked the Orchestral music because it don't loop correctly and the Garnet Font (I prefere the new one)
4. Run the Game once
5. Build my own custom sharedassets2.assets to have PSX Controller Button layout
6. check the Memoria.ini and do settings as I prefere
7. Add the 0058_StealScript.cs in the folder (.../StreamingAssets/Scripts/Sources/Battle/) and run the Memoria.Compiler.exe
8. All worked for me as intended and it is awesome (except for the known issues)
KNOWN ISSUES:
- Orchestral music: additional tracks don't loop correctly and endgame music is bugged
- Battles are too fast by default: you can change that in Memoria.ini: BattleFPS = 15
- Some 30fps FMVs play too fast and sound sometimes desyncs. End title comes too fast.
- D-pad not recognized on some controllers (workaround: disable steam overlay and force Per-Game Input Settings on)The only thing I wish is a cheat or mod to always win this **** Tetra Master Card Game... I down get it at all and I've tried a lot. This Card Game broke the game for me when I was young on the original PSX and I'm really struggling with this today. Thats no fun and the Memoria settings for Tetra Master don't help.Here is what my 0058_StealScript.cs looks like:
using System;
using Assets.Sources.Scripts.UI.Common;
using Memoria.Data;
namespace Memoria.Scripts.Battle
{
/// <summary>
/// Steal, Mug
/// </summary>
[BattleScript(Id)]
public sealed class StealScript : IBattleScript
{
public const Int32 Id = 0058;
private readonly BattleCalculator _v;
public StealScript(BattleCalculator v)
{
_v = v;
}
public void Perform()
{
BattleEnemy enemy = BattleEnemy.Find(_v.Target);
if (!HasStealableItems(enemy))
{
UiState.SetBattleFollowFormatMessage(BattleMesages.DoesNotHaveAnything);
return;
}
if (!_v.Caster.HasSupportAbility(SupportAbility2.Bandit))
{
_v.Context.HitRate = (Int16)(_v.Caster.Level + _v.Caster.Will);
_v.Context.Evade = _v.Target.Level;
if (GameRandom.Next16() % _v.Context.HitRate < GameRandom.Next16() % _v.Context.Evade)
{
UiState.SetBattleFollowFormatMessage(BattleMesages.CouldNotStealAnything);
return;
}
}
if (enemy.StealableItems[3] != Byte.MaxValue)
StealItem(enemy, 3);
else if (enemy.StealableItems[2] != Byte.MaxValue)
StealItem(enemy, 2);
else if (enemy.StealableItems[1] != Byte.MaxValue)
StealItem(enemy, 1);
else
StealItem(enemy, 0);
}
private static Boolean HasStealableItems(BattleEnemy enemy)
{
Boolean hasStealableItems = false;
for (Int16 index = 0; index < 4; ++index)
{
if (enemy.StealableItems[index] != Byte.MaxValue)
hasStealableItems = true;
}
return hasStealableItems;
}
private void StealItem(BattleEnemy enemy, Int32 itemIndex)
{
Byte itemId = enemy.StealableItems[itemIndex];
if (itemId == Byte.MaxValue)
{
UiState.SetBattleFollowFormatMessage(BattleMesages.CouldNotStealAnything);
return;
}
enemy.StealableItems[itemIndex] = Byte.MaxValue;
GameState.Thefts++;
BattleItem.AddToInventory(itemId);
UiState.SetBattleFollowFormatMessage(BattleMesages.Stole, FF9TextTool.ItemName(itemId));
if (_v.Caster.HasSupportAbility(SupportAbility2.Mug))
{
_v.Target.Flags |= CalcFlag.HpAlteration;
_v.Target.HpDamage = (Int16)(GameRandom.Next16() % (_v.Caster.Level * _v.Target.Level >> 1));
}
if (_v.Caster.HasSupportAbility(SupportAbility1.StealGil))
{
GameState.Gil += (UInt32)(GameRandom.Next16() % (1 + _v.Caster.Level * _v.Target.Level / 4));
}
}
}
}