ViewVC Help
View File | Revision Log | View Changeset | Root Listing
root/Oni2/Daodan/src/Patches/BSL.c
(Generate patch)

Comparing Daodan/src/Patches/BSL.c (file contents):
Revision 994 by alloc, Mon Apr 7 10:33:27 2014 UTC vs.
Revision 995 by alloc, Wed Apr 9 00:10:18 2014 UTC

# Line 12 | Line 12
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   {
# Line 92 | Line 97 | uint16_t ONICALL bsl_int32rand(sl_callin
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;
# Line 105 | Line 110 | uint16_t ONICALL bsl_getkills(sl_callinf
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;
# Line 185 | Line 190 | uint16_t ONICALL bsl_health(sl_callinfo*
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;
# Line 206 | Line 211 | uint16_t ONICALL bsl_regen(sl_callinfo*
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);
# Line 310 | Line 314 | uint16_t ONICALL bsl_location(sl_callinf
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) {
# Line 335 | Line 339 | uint16_t ONICALL bsl_getattacker(sl_call
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) {
# Line 355 | Line 359 | uint16_t ONICALL bsl_chrname(sl_callinfo
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) {
# Line 394 | Line 398 | uint16_t ONICALL bsl_dprintcolored(sl_ca
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;
# Line 692 | Line 696 | uint16_t ONICALL bsl_sprintf(sl_callinfo
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  
# Line 768 | Line 773 | void SLrDaodan_Initialize()
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   }

Diff Legend

Removed lines
+ Added lines
< Changed lines (old)
> Changed lines (new)