6 |
|
#include "inifile.h" |
7 |
|
|
8 |
|
#include "Daodan_BSL.h" |
9 |
+ |
#include "Flatline_BSL.h" |
10 |
|
#include "Daodan_Utility.h" |
11 |
|
#include "Daodan_Patch.h" |
12 |
|
#include "Daodan_Console.h" |
17 |
|
#include "dSFMT\dSFMT.h" |
18 |
|
#include "Daodan_Character.h" |
19 |
|
|
20 |
+ |
|
21 |
+ |
|
22 |
|
uint16_t ONICALL bsl_int32mul(sl_callinfo* callinfo, uint32_t numargs, sl_arg args[], int* dontuse1, int* dontuse2, sl_arg* ret) |
23 |
|
{ |
24 |
|
ret->value_int32 = args[0].value_int32 * args[1].value_int32; |
52 |
|
ret->type = sl_int32; |
53 |
|
return 0; |
54 |
|
} |
52 |
– |
|
55 |
|
uint16_t ONICALL bsl_div(sl_callinfo* callinfo, uint32_t numargs, sl_arg args[], int* dontuse1, int* dontuse2, sl_arg* ret) |
56 |
|
{ |
57 |
|
double val1; |
219 |
|
else if (args[0].type == sl_str32) index = DDrGetCharacterIndexFromName(args[0].value_str32); |
220 |
|
else index = args[0].value_int32; |
221 |
|
Character* Chr = ONgGameState + 0x1260 ; |
222 |
< |
int* health = (int)&Chr[index] + 0x144; |
223 |
< |
|
222 |
> |
int* health = (int*)Chr[index].ScriptNoPath; |
223 |
> |
|
224 |
> |
/* |
225 |
> |
DDrConsole_PrintF("Character %s", Chr[index].Name); |
226 |
> |
DDrConsole_PrintF("Spawn %s", Chr[index].ScriptSpawn); |
227 |
> |
DDrConsole_PrintF("Death %s", Chr[index].ScriptDie); |
228 |
> |
DDrConsole_PrintF("Aware %s", Chr[index].ScriptAware); |
229 |
> |
DDrConsole_PrintF("Alarm %s", Chr[index].ScriptAlarm); |
230 |
> |
DDrConsole_PrintF("Hurt %s", Chr[index].ScriptHurt); |
231 |
> |
DDrConsole_PrintF("Defeat %s", Chr[index].ScriptDefeat); |
232 |
> |
DDrConsole_PrintF("NoAmmo %s", Chr[index].ScriptNoAmmo); |
233 |
> |
DDrConsole_PrintF("NoPath %s", Chr[index].ScriptNoPath); |
234 |
> |
*/ |
235 |
|
ret->value_int32 = *health; |
236 |
|
ret->type = sl_int32; |
237 |
|
|
755 |
|
void SLrDaodan_Initalize() |
756 |
|
{ |
757 |
|
|
758 |
< |
//const char regen_patch[] = {0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90}; |
759 |
< |
//DDrPatch_Const(OniExe + 0x0011BB6D, regen_patch); |
760 |
< |
|
761 |
< |
//This one should work but doesn't. |
762 |
< |
//const char regen_patch[] ={0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x8B, 0x86, 0x44}; |
763 |
< |
//DDrPatch_Const(OniExe + 0x0011BB64, regen_patch); |
758 |
> |
|
759 |
> |
//Calculating the value of the needed offset is much more reliable when the compiler does it for you. |
760 |
> |
|
761 |
> |
//TODO: fix moonshadow. |
762 |
> |
Character * Chr = 0; |
763 |
> |
char NoPath = (char)(0x100 - (int)(Chr->ScriptNoPath)); |
764 |
> |
const char regen_patch[] = |
765 |
> |
{0x90, 0x90, 0x90, 0x90, 0x90, // mov al, _WPgRegenerationCheat |
766 |
> |
0x90, 0x90, // test al, al |
767 |
> |
0x90, 0x90, // jz short loc_51BB98 |
768 |
> |
0x8B, 0x86, NoPath}; |
769 |
> |
DDrPatch_Const(OniExe + 0x0011BB64, regen_patch); |
770 |
|
|
771 |
|
SLrConfig(); |
772 |
|
|
801 |
|
|
802 |
|
SLrScript_Command_Register_ReturnType("sprintf", "C-style sprintf.", "format:string arg1 arg2 ...", sl_str32, bsl_sprintf); |
803 |
|
|
804 |
< |
SLrScript_Command_Register_ReturnType("d_dprint", "prints to console in color", "text:string [color: r b g] [color: r b g]", sl_void, bsl_dprintcolored); |
804 |
> |
SLrScript_Command_Register_ReturnType("st", "prints to console in color", "text:string [color: r b g] [color: r b g]", sl_void, bsl_dprintcolored); |
805 |
|
|
806 |
< |
//SLrScript_Command_Register_ReturnType("d_offset", "a test", "thing:int", sl_int32, bsl_returnoffset); |
806 |
> |
//Flatline |
807 |
> |
SLrFlatline_Initialize(); |
808 |
> |
|
809 |
|
} |
810 |
|
|
811 |
|
void SLrDaodan_Patch() |