1
FF9 Tools / Re: [PSX] FF9 Blender Importer (0.2)
« on: 2024-05-25 22:22:40 »
Awesome! Good luck with that!
This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.
// In your "CommonScript.cs"
public static void TryCriticalHitAdjusted(BattleCalculator _v)
{
Int32 quarterWill = _v.Caster.Data.elem.wpr >> 2;
if (quarterWill != 0 && (Comn.random16() % quarterWill) + _v.Caster.Data.critical_rate_deal_bonus + _v.Target.Data.critical_rate_receive_bonus > Comn.random16() % 100)
{
_v.Target.HpDamage = (Int32)(_v.Target.HpDamage / 4f + Math.Min(15000, _v.Target.HpDamage) / 4f + Math.Min(10000, _v.Target.HpDamage) / 2f);
// Do the same for "_v.Target.MpDamage"; apparently you don't use "_v.Context.Attack" in your situation when the critical strike triggers
_v.Target.Flags |= CalcFlag.Critical;
}
}
And then you use "CommonScript.TryCriticalHitAdjusted(_v)" in place of "_v.TryCriticalHit()".StartThread: TargetLoop ; Chain ; Sync
LoadSFX: SFX=Iai_Strike_1 ; Target=AllTargets ; Reflect=True ; UseCamera=False
MoveToTarget: Char=Caster ; Target=AllTargets ; Distance=670 ; UseCollisionRadius=True ; Anim=MP_RUN
Turn: Char=Caster ; BaseAngle=AllTargets ; Time=4
WaitMove: Char=Caster
MoveToTarget: Char=Caster ; Target=AllTargets ; Distance=400 ; UseCollisionRadius=True ; Anim=MP_RUN_TO_ATTACK
WaitMove: Char=Caster
StartThread
Wait: Time=4
WaitSFXLoaded: SFX=Iai_Strike_1
PlaySFX: SFX=Iai_Strike_1
WaitSFXDone: SFX=Iai_Strike_1
EndThread
PlayAnimation: Char=Caster ; Anim=MP_ATTACK
WaitAnimation: Char=Caster
MoveToTarget: Char=Caster ; Target=AllTargets ; Distance=-200 ; UseCollisionRadius=True ; Time=0
MoveToTarget: Char=Caster ; Target=AllTargets ; Distance=1100 ; UseCollisionRadius=True ; Anim=MP_STEP_BACK
WaitMove: Char=Caster
EndThread
// Player sequence of SFX Iai_Strike_2
// Used by Zidane (Windfall with a dagger)
WaitAnimation: Char=Caster
Message: Text=[CastName] ; Priority=1 ; Title=True ; Reflect=True
SetupReflect: Delay=SFXLoaded
LoadSFX: SFX=Iai_Strike_1 ; Reflect=True ; UseCamera=False
PlayAnimation: Char=Caster ; Anim=MP_SET
WaitAnimation: Char=Caster
MoveToTarget: Char=Caster ; Target=AllTargets ; Distance=670 ; UseCollisionRadius=True ; Anim=MP_RUN
Turn: Char=Caster ; BaseAngle=AllTargets ; Time=4
WaitMove: Char=Caster
MoveToTarget: Char=Caster ; Target=AllTargets ; Distance=400 ; UseCollisionRadius=True ; Anim=MP_RUN_TO_ATTACK
WaitMove: Char=Caster
StartThread
Wait: Time=4
WaitSFXLoaded: SFX=Iai_Strike_1
PlaySFX: SFX=Iai_Strike_1
WaitSFXDone: SFX=Iai_Strike_1
EndThread
PlayAnimation: Char=Caster ; Anim=MP_ATTACK
WaitAnimation: Char=Caster
MoveToTarget: Char=Caster ; Target=AllTargets ; Distance=-200 ; UseCollisionRadius=True ; Time=0
MoveToTarget: Char=Caster ; Target=AllTargets ; Distance=1100 ; UseCollisionRadius=True ; Anim=MP_STEP_BACK
WaitMove: Char=Caster
MoveToTarget: Char=Caster ; Target=AllTargets ; Distance=670 ; UseCollisionRadius=True ; Anim=MP_RUN
Turn: Char=Caster ; BaseAngle=AllTargets ; Time=4
WaitMove: Char=Caster
MoveToTarget: Char=Caster ; Target=AllTargets ; Distance=400 ; UseCollisionRadius=True ; Anim=MP_RUN_TO_ATTACK
WaitMove: Char=Caster
StartThread
Wait: Time=4
WaitSFXLoaded: SFX=Iai_Strike_1
PlaySFX: SFX=Iai_Strike_1
WaitSFXDone: SFX=Iai_Strike_1
EndThread
PlayAnimation: Char=Caster ; Anim=MP_ATTACK
WaitAnimation: Char=Caster
MoveToPosition: Char=Caster ; AbsolutePosition=Default ; Anim=MP_BACK
Turn: Char=Caster ; BaseAngle=Default ; Time=4
WaitMove: Caster
PlayAnimation: Char=Caster ; Anim=Idle
WaitTurn: Char=Caster
ActivateReflect
WaitReflect
By having this file saved as "{Mod Folder}/StreamingAssets/Data/SpecialEffects/ef030/Sequence.seq", the abilities that use the spell effect "Iai Strike 2" (that you can pick in Hades Workshop) will perform a double-hit with the Iai Strike effect.>SA Global+
BattleResult [code=BonusExp] BonusExp / 2 [ /code ]
This reduces the experience gain to 50%. It basically works like the supporting ability "Level Up" but it applies without being tied to any supporting ability.Function Zidane_48
TimedTurn( Angle(2000, 850), 32 )
WaitTurn( )
SetStandAnimation( 2605 ) // Crouch
RunAnimation( 2607 ) // Idle crouching
WaitAnimation( )
SetTextVariable( 0, 300 ) // "Red Stone"
WindowSync( 0, 0, 143 ) // "[Item] is set on the stone. Take it out Leave it alone"
if ( !GetDialogChoice ) {
Wait( 10 )
RunSoundCode3( 53248, 1340, 0, -128, 125 ) // Play Sound
Wait( 10 )
}
SetStandAnimation( 200 ) // Idle
RunAnimation( 2591 ) // Stand up
if ( !GetDialogChoice ) {
RunSoundCode3( 53248, 108, 0, -128, 125 ) // Play Sound
AddItem( 300, 1 ) // Add the Red Stone key item
SetTextVariable( 0, 300 ) // "Red Stone"
if ( 1 ) {
WindowSync( 7, 0, 58 ) // " Received [Item]! "
} else {
WindowSync( 7, 0, 59 ) // Unused - " Received [Item] Card! "
}
set VARL_GenBool_2864 = 1
}
WaitAnimation( )
return
So you see, by changing the ID "300" to something else, you can change the item given at these statues. It also shows how items are given to the player so you can do something similar later on on disk 3.Function ChestA_Init
SetModel( 75, 0 ) // The model of "ChestA"
CreateObject( [COORDINATES: Chest position on the field] )
TurnInstant( [ANGLE: Chest facing angle on the field] )
SetObjectLogicalSize( 1, 40, 45 )
SetStandAnimation( 7340 ) // Dummy Close
SetWalkAnimation( 7340 ) // Dummy Close
SetRunAnimation( 7340 ) // Dummy Close
SetObjectFlags( 5 )
SetHeadFocusMask( 2, 0 )
if ( [CONDITION: Chest content already picked up] ) {
SetStandAnimation( 7338 ) // Dummy Open
} else {
SetStandAnimation( 7339 ) // Dummy Close
}
SetObjectFlags( 49 )
EnableHeadFocus( 0 )
return
3) Add a line "InitObject" next to the others in the function "Main_Init" to actually create the chest object when entering the field.Recently i got a Steam Deck, is it the mod playable in a steam deck ?It should, yes. I don't have a Steam Deck and cannot help you much in that regard, but there are tutorials on how to install the latest Memoria versions. If you succeed in doing that, then using Alternate Fantasy shouldn't be harder (at worst, you'll need to put the mod manually in the game's folder, if the Mod Manager doesn't work on the Steam Deck).
Assuming you've already got Moguri installed, go to Desktop Mode and all you have to do is put the Memoria Patcher from the embedded video's description into your FFIX folder, then add the patcher .exe as a non-Steam game. Then right-click the patcher in Steam and select Properties > Compatibility. There will be a single checkbox that says something like "Force use of a Steam Compatibility tool". Check that, and from the drop down that appears, select Proton 7. Then hit Play in Steam and it will install it.
I found the checkboxes for the launcher did not work in Steam Deck (the Moguri launcher did before), but you can still activate the settings you need by editing Memoria.ini.
Also worth noting you can go as high as 120 FPS, though Steam Deck's screen is 60hz so no need to go higher than that for it.
---‐----------
There are few minor issues to be aware of:
- The game's lack of animation blending is much more apparent at higher framerates.
- World map animations are locked at the original FPS even when increasing it, it really just makes the camera turning look smoother. If you think this looks off-putting, you can turn it off individually for the world map.
- 2D sprite VFX will still be at the original 15 FPS, they would probably need a whole mod to update the VFX through interpolation or just use brand new VFX.