i have added alex battle stats it works after i restart the game. i have not tested multiple battles but that should not be an issue. the hp updates every turn in battle
i have added the battle scripts from this post as well as stats for each character in lunar 1 and a lunar 2 table from user derp007 as well. heres the file let me now how it works plz
*
ADDED INFINITE HP/MP UNDER "BATTLE" FOR LUNAR 1
**INFINITES ONLY WORK ON LUNAR 1 I HAVE NOT EVEN OPENED LUNAR 2 YET lol**
Lunar 1+2v7.CT
*
added battle hp/mp for character slots (thats how its works i guess), current hp/mp carries over outside of combat, i will work on the rest of the characters now
Lunar 1+2v6.CT
*
Lunar 1+2v5.CT
*
----------------------------------------------------------
***doenst turn off lol i will fix***
DOENST SEEM TO WORK?? =[
Lunar 1+2v4.CT
DOENST SEEM TO WORK?? =[
*
Lunar 1+2v3.CT
Lunar 1+2v2.CT
Lunar 1+2v1.CT
I never used any of that. I simply checked current health and current mana for my character to lock it and hit + to allow it to increase but never decrease. Have not had any issues and no coding needed.
Someone here has managed to create no encounters ("no battle on touch"), but its for the Switch version. They do show the assembly instructions that achieve this, however: [Link]
Someone here has managed to create no encounters ("no battle on touch"), but its for the Switch version. They do show the assembly instructions that achieve this, however: [Link]
I have no idea what ryunjinx emulator version i need to make those switch cheats work
Here is something I put together to make is easier to use (scripted so that it will adapt to the current running version of lunar remastered)
I started off with character info based on what I found and battle xp bonus and stats for Lunar 2. (for all characters)
Then expanded it to include content from DrummerIX & Zazie (Money and inventory pointers)
- Added equipped, pockets and skills info for each character per request from zazie for Lunar 1
Also added speed update (ty Tempus35 for providing address to work backwards from)
- Included undo move in case you get stuck for some reason (CTRL Z) shortcut
I also added script that will update minimum values such as money, hp, mp and stats (including during combat)
<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
<CheatEntries>
<CheatEntry>
<Description>"Normal Movement (no slowdown in dungeons)"</Description>
<Options moDeactivateChildrenAsWell="1"/>
<LastState/>
<Color>00FF00</Color>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript>[ENABLE]
// FYI: There is a fixed reference for sprint activation and duration at lunar2.exe+5CDD250
// simply update value to 100+ and lock it. Higher the value, the longer the duration
// TY to Tempus35 for providing the reference to lunar2.exe+5CDD250. It got me to follow back to where the movement code was.
// The code I did below simply sets movement at what it is normally outside
define(rrtSpeed,lunar2.exe+B6860)
define(rrtSpeed_Match,41 B8 02 00 00 00)
assert(rrtSpeed,rrtSpeed_Match)
alloc(newmem,$100,rrtSpeed)
label(code return)
newmem:
mov rdx,02
// Do not increase any higher than 2 or you may get stuck (i tried it at 3 and got stuck in cave)
code:
db 41 B8 02 00 00 00
jmp return
rrtSpeed:
jmp newmem
nop
return:
registersymbol(rrtSpeed)
[DISABLE]
rrtSpeed:
db 41 B8 02 00 00 00
unregistersymbol(*)
dealloc(*)
</AssemblerScript>
<CheatEntries>
<CheatEntry>
<Description>"Unstick Character (Undo last recorded move) [CTRL+Z]"</Description>
<LastState/>
<Color>00FF00</Color>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript>[ENABLE]
{$lua}
if syntaxcheck then return end
-- This only works if you had moved since your last load. ** Do not save while you are stuck **
-- This references your move history (up to 255 so it seems)
local UndoMoves = 2;
local mhAddr = 'lunar2.exe+5D3AC00';
local mhVal = readBytes(mhAddr, 1,false);
if mhVal ~= nil then
mhVal = mhVal - UndoMoves;
if mhVal < 0 then
mhVal = mhVal + 256;
end
writeBytes(mhAddr, mhVal);
end
-- set timer to run once after short duration to disable current record
-- setting timers as global array so that I dont somehow have overlapping timers if it did not close properly
if timers == nil then
timers = {};
end
local function getTimer()
local tResult;
if memrec ~= nil then
local id = memrec.id;
if timers[id] == nil then
timers[id] = createTimer();
timers[id].Enabled = false;
timers[id].Interval = getFreezeTimer().Interval;
end
tResult = timers[id];
else
error('memrec was nil. This should not happen.');
end
return tResult;
end
local tTmr = getTimer();
if tTmr ~= nil then
tTmr.OnTimer = function(tStopThis)
sleep(200);
local cmr = AddressList.getMemoryRecordByID(memrec.id);
if cmr ~= nil then
cmr.Active = false;
end
tTmr.Enabled = false;
end
tTmr.Enabled = true;
end
{$asm}
[DISABLE]
{$lua}
if syntaxcheck then return end
if memrec ~= nil then
local id = memrec.id
if timers[id] ~= nil then
timers[id].Enabled = false
timers[id]:Destroy()
timers[id] = nil
end
end
{$asm}
</AssemblerScript>
<Hotkeys>
<Hotkey>
<Action>Activate</Action>
<Keys>
<Key>17</Key>
<Key>90</Key>
</Keys>
</Hotkey>
</Hotkeys>
</CheatEntry>
</CheatEntries>
</CheatEntry>
</CheatEntries>
</CheatTable>