12 |
|
|
13 |
|
#include "Character.h" |
14 |
|
|
15 |
+ |
bool ONICALL argumentEmpty(sl_arg* arg) { |
16 |
+ |
if ((arg->type == sl_str32) && (strlen(arg->val.value_str32) == 0)) |
17 |
+ |
return true; |
18 |
+ |
return false; |
19 |
+ |
} |
20 |
|
|
21 |
|
uint16_t ONICALL bsl_int32mul(sl_callinfo* callinfo, uint32_t numargs, sl_arg args[], int* dontuse1, int* dontuse2, sl_arg* ret) |
22 |
|
{ |
97 |
|
uint16_t ONICALL bsl_getkills(sl_callinfo* callinfo, uint32_t numargs, sl_arg args[], int* dontuse1, int* dontuse2, sl_arg* ret) |
98 |
|
{ |
99 |
|
int index; |
100 |
< |
if (numargs == 0) index = 0; |
100 |
> |
if (argumentEmpty(&args[0])) index = 0; |
101 |
|
else if (args[0].type == sl_str32) index = DDrGetCharacterIndexFromName(args[0].val.value_str32); |
102 |
|
else index = args[0].val.value_int32; |
103 |
|
//killcount = ONgGameState->CharacterStorage[index].Kills; |
110 |
|
uint16_t ONICALL bsl_getdamage(sl_callinfo* callinfo, uint32_t numargs, sl_arg args[], int* dontuse1, int* dontuse2, sl_arg* ret) |
111 |
|
{ |
112 |
|
int index; |
113 |
< |
if (numargs == 0) index = 0; |
113 |
> |
if (argumentEmpty(&args[0])) index = 0; |
114 |
|
else if (args[0].type == sl_str32) index = DDrGetCharacterIndexFromName(args[0].val.value_str32); |
115 |
|
else index = args[0].val.value_int32; |
116 |
|
ret->val.value_int32 = ONgGameState->CharacterStorage[index].Damage; |
190 |
|
int index; |
191 |
|
Character* Chr; |
192 |
|
int* health; |
193 |
< |
if (numargs == 0) index = 0; |
193 |
> |
if (argumentEmpty(&args[0])) index = 0; |
194 |
|
else if (args[0].type == sl_str32) index = DDrGetCharacterIndexFromName(args[0].val.value_str32); |
195 |
|
else index = args[0].val.value_int32; |
196 |
|
Chr = ONgGameState->CharacterStorage; |
211 |
|
{ |
212 |
|
int index; |
213 |
|
Character* Chr; |
214 |
< |
if (numargs == 0) index = 0; |
214 |
> |
if (argumentEmpty(&args[0])) index = 0; |
215 |
|
else if (args[0].type == sl_str32) index = DDrGetCharacterIndexFromName(args[0].val.value_str32); |
216 |
|
else index = args[0].val.value_int32; |
217 |
|
Chr = ONgGameState->CharacterStorage ; |
218 |
|
|
214 |
– |
|
219 |
|
/* |
220 |
|
DDrConsole_PrintF("Character %s", Chr[index].Name); |
221 |
|
DDrConsole_PrintF("Spawn %s", Chr[index].ScriptSpawn); |
314 |
|
uint16_t ONICALL bsl_maxhealth(sl_callinfo* callinfo, uint32_t numargs, sl_arg args[], int* dontuse1, int* dontuse2, sl_arg* ret) |
315 |
|
{ |
316 |
|
int index; |
317 |
< |
if (numargs == 0) index = 0; |
317 |
> |
if (argumentEmpty(&args[0])) index = 0; |
318 |
|
else if (args[0].type == sl_str32) index = DDrGetCharacterIndexFromName(args[0].val.value_str32); |
319 |
|
else index = args[0].val.value_int32; |
320 |
|
if(1) { |
339 |
|
//broken |
340 |
|
|
341 |
|
int index; |
342 |
< |
if (numargs == 0) index = 0; |
342 |
> |
if (argumentEmpty(&args[0])) index = 0; |
343 |
|
else if (args[0].type == sl_str32) index = DDrGetCharacterIndexFromName(args[0].val.value_str32); |
344 |
|
else index = args[0].val.value_int32; |
345 |
|
if(1) { |
359 |
|
int index; |
360 |
|
char* name; |
361 |
|
|
362 |
< |
if (numargs == 0) index = 0; |
362 |
> |
if (argumentEmpty(&args[0])) index = 0; |
363 |
|
else if (args[0].type == sl_str32) index = DDrGetCharacterIndexFromName(args[0].val.value_str32); |
364 |
|
else index = args[0].val.value_int32; |
365 |
|
if (index == -1) { |
398 |
|
{ |
399 |
|
numargs++; |
400 |
|
} |
401 |
< |
if(numargs == 0) return 0; |
401 |
> |
if(argumentEmpty(&args[0])) return 0; |
402 |
|
if(numargs > 1 ) color.R = (char)args[1].val.value_int32; |
403 |
|
else color.R = 255; |
404 |
|
if(numargs > 2 ) color.G = (char)args[2].val.value_int32; |
696 |
|
uint16_t ONICALL cinematic_start_patch(sl_callinfo* callinfo, unsigned int numargs, sl_arg args[], int* dontuse1, int* dontuse2, sl_arg* ret) |
697 |
|
{ |
698 |
|
args[1].val.value_int32 = (double)args[1].val.value_int32 / (double)(gl->DisplayMode.Width) * (4.0 / 3.0 * (double)(gl->DisplayMode.Height)); |
699 |
+ |
// Call orig OCiCinematic_ScriptStart |
700 |
|
return ((sl_func)(OniExe + 0x000f3830))(callinfo, numargs, args, dontuse1, dontuse2, ret); |
701 |
|
} |
702 |
|
|
773 |
|
// Patch for cinematic_start to work on widescreen resolutions |
774 |
|
void SLrDaodan_Patch() |
775 |
|
{ |
776 |
+ |
// PUSH OCiCinematic_ScriptStart -> PUSH cinematic_start_patch |
777 |
|
DDrPatch_Int32((int*)(OniExe + 0x000f3755), (int)cinematic_start_patch); |
778 |
|
} |