Exemplo n.º 1
0
void CritLoad() {
 if(!Inited) return;
 CritStruct* defaultTable=(CritStruct*)_crit_succ_eff;
 if(mode==1) {
  char section[16];
  dlogr("Setting up critical hit table using CriticalOverrides.ini", DL_CRITICALS);
  memset(critTable, 0, CritTableSize*sizeof(CritStruct));
  for(DWORD critter=0;critter<20;critter++) {
   for(DWORD part=0;part<9;part++) {
    for(DWORD crit=0;crit<6;crit++) {
     sprintf_s(section, "c_%02d_%d_%d", critter, part, crit);
     int slot1=crit+part*6+critter*9*6;
     int slot2=crit+part*6+((critter==19)?38:critter)*9*6;
     for(int i=0;i<7;i++) {
      critTable[slot2].values[i]=GetPrivateProfileIntA(section, CritNames[i], defaultTable[slot1].values[i], ".\\CriticalOverrides.ini");
#ifdef TRACE
      char logmsg[256];
      if(critTable[slot2].values[i]!=defaultTable[slot1].values[i]) {
       sprintf_s(logmsg, "Entry %s value %d changed from %d to %d", section, i, defaultTable[slot1].values[i], critTable[slot2].values[i]);
       dlogr(logmsg, DL_CRITICALS);
      }
#endif
     }
    }
   }
  }
 } else {
  dlogr("Setting up critical hit table using RP fixes", DL_CRITICALS);
  memcpy(critTable, defaultTable, 6*9*19*sizeof(CritStruct));
  memset(&critTable[6*9*19], 0, 6*9*19*sizeof(CritStruct));
  memcpy(playerCrit, (void*)_pc_crit_succ_eff, 6*9*sizeof(CritStruct));

  if(mode==3) {
   char buf[32], buf2[32], buf3[32];
   for(int critter=0;critter<CritTableCount;critter++) {
    sprintf_s(buf, "c_%02d", critter);
    int all;
    if(!(all=GetPrivateProfileIntA(buf, "Enabled", 0, ".\\CriticalOverrides.ini"))) continue;
    for(int part=0;part<9;part++) {
     if(all<2) {
      sprintf_s(buf2, "Part_%d", part);
      if(!GetPrivateProfileIntA(buf, buf2, 0, ".\\CriticalOverrides.ini")) continue;
     }

     sprintf_s(buf2, "c_%02d_%d", critter, part);
     for(int crit=0;crit<6;crit++) {
      int slot=crit+part*6+critter*9*6;
      for(int i=0;i<7;i++) {
       sprintf_s(buf3, "e%d_%s", crit, CritNames[i]);
       critTable[slot].values[i]=GetPrivateProfileIntA(buf2, buf3, critTable[slot].values[i], ".\\CriticalOverrides.ini");
      }
     }
    }
   }
  }
 }
 dlogr("Completed critical hit table", DL_CRITICALS);
}
Exemplo n.º 2
0
static void _stdcall SaveGame2() {
	char buf[MAX_PATH];
	GetSavePath(buf, "gv");

	dlog_f("Saving game: %s\r\n", DL_MAIN, buf);

	DWORD size, unused = 0;
	HANDLE h = CreateFileA(buf, GENERIC_WRITE, 0, 0, CREATE_ALWAYS, 0, 0);
	if (h != INVALID_HANDLE_VALUE) {
		SaveGlobals(h);
		WriteFile(h, &unused, 4, &size, 0);
		unused++;
		WriteFile(h, &unused, 4, &size, 0);
		PerksSave(h);
		SaveArrays(h);
		CloseHandle(h);
	} else {
		dlogr("ERROR creating sfallgv!", DL_MAIN);
		DisplayConsoleMessage(SaveSfallDataFailMsg);
		PlaySfx("IISXXXX1");
	}
	GetSavePath(buf, "fs");
	h = CreateFileA(buf, GENERIC_WRITE, 0, 0, CREATE_ALWAYS, 0, 0);
	if (h != INVALID_HANDLE_VALUE) {
		FileSystemSave(h);
	}
	CloseHandle(h);
}
Exemplo n.º 3
0
void CritInit() {
 mode=GetPrivateProfileIntA("Misc", "OverrideCriticalTable", 2, ini);
 if(mode<0||mode>3) mode=0;

 if(!mode) return;

 dlog("Initilizing critical table override.", DL_INIT);
 critTable=new CritStruct[CritTableSize];
 playerCrit=&critTable[6*9*38];
 SafeWrite32(0x423F96, (DWORD)playerCrit);
 SafeWrite32(0x423FB3, (DWORD)critTable);
 dlog(". ", DL_INIT);

 if(mode==2 || mode==3) {
  CritStruct* defaultTable=(CritStruct*)_crit_succ_eff;

  SetEntry(2,4,1,4,0);
  SetEntry(2,4,1,5,5216);
  SetEntry(2,4,1,6,5000);

  SetEntry(2,4,2,4,0);
  SetEntry(2,4,2,5,5216);
  SetEntry(2,4,2,6,5000);
 
  SetEntry(2,5,1,4,0);
  SetEntry(2,5,1,5,5216);
  SetEntry(2,5,1,6,5000);

  SetEntry(2,5,2,4,0);
  SetEntry(2,5,2,5,5216);
  SetEntry(2,5,2,6,5000);

  SetEntry(3,5,1,6,5306);

  SetEntry(4,0,4,2,-1);

  SetEntry(5,0,4,2,-1);

  SetEntry(6,4,1,4,2);

  SetEntry(6,5,1,4,2);

  SetEntry(6,5,2,6,5608);

  SetEntry(9,3,3,4,2);

  SetEntry(13,5,1,4,4);
  SetEntry(13,5,2,4,4);
  SetEntry(13,5,3,4,4);
  SetEntry(13,5,4,4,4);
  SetEntry(13,5,5,4,4);

  SetEntry(18,0,0,5,5001);
  SetEntry(18,0,1,5,5001);
  SetEntry(18,0,2,5,5001);
  SetEntry(18,0,3,5,7105);
  SetEntry(18,0,4,5,7101);
  SetEntry(18,0,4,6,7104);
  SetEntry(18,0,5,5,7101);

  SetEntry(18,1,0,5,5008);
  SetEntry(18,1,1,5,5008);
  SetEntry(18,1,2,5,5009);
  SetEntry(18,1,3,5,5009);
  SetEntry(18,1,4,5,7102);
  SetEntry(18,1,5,5,7102);
  
  SetEntry(18,2,0,5,5008);
  SetEntry(18,2,1,5,5008);
  SetEntry(18,2,2,5,5009);
  SetEntry(18,2,3,5,5009);
  SetEntry(18,2,4,5,7102);
  SetEntry(18,2,5,5,7102);

  SetEntry(18,3,4,5,7101);
  SetEntry(18,3,5,5,7101);

  SetEntry(18,4,0,5,5023);
  SetEntry(18,4,1,5,7101);
  SetEntry(18,4,1,6,7103);
  SetEntry(18,4,2,5,7101);
  SetEntry(18,4,2,6,7103);
  SetEntry(18,4,3,5,7103);
  SetEntry(18,4,4,5,7103);
  SetEntry(18,4,5,5,7103);

  SetEntry(18,5,0,5,5023);
  SetEntry(18,5,1,5,7101);
  SetEntry(18,5,1,6,7103);
  SetEntry(18,5,2,5,7101);
  SetEntry(18,5,2,6,7103);
  SetEntry(18,5,3,5,7103);
  SetEntry(18,5,4,5,7103);
  SetEntry(18,5,5,5,7103);

  SetEntry(18,6,0,5,5027);
  SetEntry(18,6,1,5,5027);
  SetEntry(18,6,2,5,5027);
  //SetEntry(18,6,2,6,0);
  SetEntry(18,6,3,5,5027);
  SetEntry(18,6,4,5,7104);
  SetEntry(18,6,5,5,7104);

  SetEntry(18,7,0,5,5033);
  SetEntry(18,7,1,5,5027);
  SetEntry(18,7,1,6,7101);
  SetEntry(18,7,2,5,7101);
  SetEntry(18,7,3,5,7101);
  SetEntry(18,7,4,5,7101);
  SetEntry(18,7,5,5,7101);
 }

 Inited=true;
 dlogr(" Done", DL_INIT);
}