| 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 |  | } |