| XxRaPiD4K3LLERxX Newbie cheater
 
 ![]() Reputation: 1 
 Joined: 08 Jan 2017
 Posts: 11
 
 
 | 
			
				|  Posted: Sun Feb 12, 2017 6:41 pm    Post subject: Final Fantasy XIII Enemy stat multiplier mod script help! |   |  
				| 
 |  
				| I'm trying to make an enemy stat script that'll allow enemy's health and stats be multiplied, but I'm having huge issues.... [This is for Final Fantasy XIII] 
 It's like what other guy did for XIII-2, he managed to do it, since I know the way he added more multipliers, I managed to add more for his CT.
 But making a multiplier for XIII is harder since I don't know how to do everything he did.
 
 Any tips on how to achieve this?
 
 I'm going to share his code, so you might get the gist of it. BTW, he's not active on steam so I can't get help from him.
 
 Activate Enemy Stat Mod:
 
  	  | Code: |  	  | [ENABLE] registersymbol(BattleMult_HP)
 alloc(BattleMult_HP,10)
 registersymbol(BattleMult_DMG)
 alloc(BattleMult_DMG,10)
 
 [DISABLE]
 unregistersymbol(BattleMult_HP)
 dealloc(BattleMult_HP)
 unregistersymbol(BattleMult_DMG)
 dealloc(BattleMult_DMG)
 | 
 
 BattleLoadBaseHP:
 
  	  | Code: |  	  | [ENABLE] 
 aobscanmodule(BattleLoadHP,ffxiii2img.exe,18 C1 E6 06 03 F7 89 04 B3 5F 5E) // should be unique
 alloc(BattleLoadHP_newmem,$1000)
 alloc(BattleLoadHP_Base,10)
 
 label(code)
 label(return)
 label(diff_moderate)
 label(diff_hard)
 label(diff_very_hard)
 label(diff_insane)
 label(diff_impossible)
 label(diff_ultimate)
 label(diff_goddess)
 label(diff_orphan)
 label(diff_guardian)
 label(diff_void)
 label(skip_modification)
 
 BattleLoadHP_newmem:
 
 code:
 cmp esi,1 //Check if Base HP is being loaded
 jne skip_modification
 cmp ebx,0 //Safety check so that we don't accidently crash the game if ebx is null
 je skip_modification
 cmp byte [ebx+1708+8],#109
 jne skip_modification
 cmp ebp,0
 je skip_modification
 mov [BattleLoadHP_Base],eax
 
 cmp [BattleMult_HP],1
 je diff_hard
 cmp [BattleMult_HP],2
 je diff_very_hard
 cmp [BattleMult_HP],3
 je diff_insane
 cmp [BattleMult_HP],4
 je diff_impossible
 cmp [BattleMult_HP],5
 je diff_ultimate
 cmp [BattleMult_HP],6
 je diff_goddess
 cmp [BattleMult_HP],7
 je diff_orphan
 cmp [BattleMult_HP],8
 je diff_guardian
 cmp [BattleMult_HP],9
 je diff_void
 
 diff_moderate:
 shl eax,1 //Multiply by 2x
 jmp skip_modification
 
 diff_hard:
 shl eax,1 //Multiply by 2x
 add eax,[BattleLoadHP_Base] //Add 1x
 jmp skip_modification
 
 diff_very_hard:
 shl eax,2 //Multiply by 4x
 jmp skip_modification
 
 diff_insane:
 shl eax,2 //Multiply by 4x
 add eax,[BattleLoadHP_Base] //Add 1x
 add eax,[BattleLoadHP_Base] //Add 1x
 jmp skip_modification
 
 diff_impossible:
 shl eax,3 //Multiply by 8x
 jmp skip_modification
 
 diff_ultimate:
 shl eax,4 //Multiply by 8x
 jmp skip_modification
 
 diff_goddess:
 shl eax,5 //Multiply by 8x
 jmp skip_modification
 
 diff_orphan:
 shl eax,5 //Multiply by 8x
 add eax,[BattleLoadHP_Base]
 jmp skip_modification
 
 diff_guardian:
 shl eax,7 //Multiply by 8x
 add eax,[BattleLoadHP_Base]
 jmp skip_modification
 
 diff_void:
 shl eax,9 //Multiply by 8x
 jmp skip_modification
 
 skip_modification:
 mov [ebx+esi*4],eax
 pop edi
 pop esi
 jmp return
 
 
 BattleLoadHP+06:
 jmp code
 return:
 registersymbol(BattleLoadHP)
 
 [DISABLE]
 
 BattleLoadHP+06:
 db 89 04 B3 5F 5E
 
 unregistersymbol(BattleLoadHP)
 dealloc(BattleLoadHP_newmem)
 dealloc(BattleLoadHP_Base)
 
 {
 // ORIGINAL CODE - INJECTION POINT: "ffxiii2img.exe"+79170
 
 "ffxiii2img.exe"+79151: 6A 00                    -  push 00
 "ffxiii2img.exe"+79153: 6A 79                    -  push 79
 "ffxiii2img.exe"+79155: 68 A0 F8 D5 00           -  push ffxiii2img.exe+95F8A0
 "ffxiii2img.exe"+7915A: E8 F1 16 2D 00           -  call ffxiii2img.exe+34A850
 "ffxiii2img.exe"+7915F: 83 C4 0C                 -  add esp,0C
 "ffxiii2img.exe"+79162: 83 FE FF                 -  cmp esi,-01
 "ffxiii2img.exe"+79165: 74 0C                    -  je ffxiii2img.exe+79173
 "ffxiii2img.exe"+79167: 8B 44 24 18              -  mov eax,[esp+18]
 "ffxiii2img.exe"+7916B: C1 E6 06                 -  shl esi,06
 "ffxiii2img.exe"+7916E: 03 F7                    -  add esi,edi
 // ---------- INJECTING HERE ----------
 "ffxiii2img.exe"+79170: 89 04 B3                 -  mov [ebx+esi*4],eax
 "ffxiii2img.exe"+79173: 5F                       -  pop edi
 "ffxiii2img.exe"+79174: 5E                       -  pop esi
 // ---------- DONE INJECTING  ----------
 "ffxiii2img.exe"+79175: 5B                       -  pop ebx
 "ffxiii2img.exe"+79176: C2 0C 00                 -  ret 000C
 "ffxiii2img.exe"+79179: CC                       -  int 3
 "ffxiii2img.exe"+7917A: CC                       -  int 3
 "ffxiii2img.exe"+7917B: CC                       -  int 3
 "ffxiii2img.exe"+7917C: CC                       -  int 3
 "ffxiii2img.exe"+7917D: CC                       -  int 3
 "ffxiii2img.exe"+7917E: CC                       -  int 3
 "ffxiii2img.exe"+7917F: CC                       -  int 3
 "ffxiii2img.exe"+79180: 53                       -  push ebx
 }
 | 
 
 BattleLoadStats:
 
  	  | Code: |  	  | { Game   : ffxiii2img.exe Version:
 Date   : 2015-01-06
 Author : Stefan
 
 This script does blah blah blah
 }
 
 [ENABLE]
 
 aobscanmodule(BattleLoadStat,ffxiii2img.exe,64 C1 E6 06 03 F7 89 04 B3 5F 5E) // should be unique
 alloc(BattleLoadStat_newmem,$1000)
 alloc(BattleLoadStat_Base,10)
 
 label(code)
 label(return)
 label(modify_stat)
 label(diff_moderate)
 label(diff_hard)
 label(diff_very_hard)
 label(diff_insane)
 label(diff_impossible)
 label(diff_ultimate)
 label(diff_goddess)
 label(diff_orphan)
 label(diff_guardian)
 label(diff_void)
 label(skip_modification)
 
 BattleLoadStat_newmem:
 
 code:
 cmp ebx,0 //Safety check so that we don't accidently crash the game if edi is null
 je skip_modification
 cmp byte [ebx+1708+8],#109
 jne skip_modification
 cmp esi,00000005 //Check to see if ATK is being loaded
 je modify_stat
 cmp esi,00000006 //Check to see if MAG is being loaded
 je modify_stat
 jmp skip_modification
 
 modify_stat:
 mov [BattleLoadStat_Base],eax
 cmp [BattleMult_DMG],1
 je diff_hard
 cmp [BattleMult_DMG],2
 je diff_very_hard
 cmp [BattleMult_DMG],3
 je diff_insane
 cmp [BattleMult_DMG],4
 je diff_impossible
 cmp [BattleMult_DMG],5
 je diff_ultimate
 cmp [BattleMult_DMG],6
 je diff_goddess
 cmp [BattleMult_DMG],7
 je diff_orphan
 cmp [BattleMult_DMG],8
 je diff_guardian
 cmp [BattleMult_DMG],9
 je diff_void
 
 diff_moderate:
 shr eax,1 //Multiply by 0.5x
 add eax,[BattleLoadStat_Base] //Add 1x
 jmp skip_modification
 
 diff_hard:
 shl eax,1 //Multiply by 2x
 jmp skip_modification
 
 diff_very_hard:
 shr eax,1 //Multiply by 0.5x
 add eax,[BattleLoadStat_Base] //Add 1x
 add eax,[BattleLoadStat_Base] //Add 1x
 jmp skip_modification
 
 diff_insane:
 shl eax,1 //Multiply by 2x
 add eax,[BattleLoadStat_Base] //Add 1x
 jmp skip_modification
 
 diff_impossible:
 shl eax,2 //Multiply by 4x
 jmp skip_modification
 
 diff_ultimate:
 shl eax,3
 jmp skip_modification
 
 diff_goddess:
 shl eax,4
 jmp skip_modification
 
 diff_orphan:
 shl eax,5
 jmp skip_modification
 
 diff_guardian:
 shl eax,6
 jmp skip_modification
 
 diff_void:
 shl eax,7
 jmp skip_modification
 
 skip_modification:
 mov [ebx+esi*4],eax
 pop edi
 pop esi
 jmp return
 
 BattleLoadStat+06:
 jmp code
 return:
 registersymbol(BattleLoadStat)
 
 [DISABLE]
 
 BattleLoadStat+06:
 db 89 04 B3 5F 5E
 
 unregistersymbol(BattleLoadStat)
 dealloc(BattleLoadStat_newmem)
 dealloc(BattleLoadStat_Base)
 
 {
 // ORIGINAL CODE - INJECTION POINT: "ffxiii2img.exe"+791D9
 
 "ffxiii2img.exe"+791B6: 68 85 00 00 00  -  push 00000085
 "ffxiii2img.exe"+791BB: 68 A0 F8 D5 00  -  push ffxiii2img.exe+95F8A0
 "ffxiii2img.exe"+791C0: E8 8B 16 2D 00  -  call ffxiii2img.exe+34A850
 "ffxiii2img.exe"+791C5: 83 C4 0C        -  add esp,0C
 "ffxiii2img.exe"+791C8: 83 FE FF        -  cmp esi,-01
 "ffxiii2img.exe"+791CB: 74 0F           -  je ffxiii2img.exe+791DC
 "ffxiii2img.exe"+791CD: 8B 44 24 18     -  mov eax,[esp+18]
 "ffxiii2img.exe"+791D1: 6B C0 64        -  imul eax,eax,64
 "ffxiii2img.exe"+791D4: C1 E6 06        -  shl esi,06
 "ffxiii2img.exe"+791D7: 03 F7           -  add esi,edi
 // ---------- INJECTING HERE ----------
 "ffxiii2img.exe"+791D9: 89 04 B3        -  mov [ebx+esi*4],eax
 "ffxiii2img.exe"+791DC: 5F              -  pop edi
 "ffxiii2img.exe"+791DD: 5E              -  pop esi
 // ---------- DONE INJECTING  ----------
 "ffxiii2img.exe"+791DE: 5B              -  pop ebx
 "ffxiii2img.exe"+791DF: C2 0C 00        -  ret 000C
 "ffxiii2img.exe"+791E2: CC              -  int 3
 "ffxiii2img.exe"+791E3: CC              -  int 3
 "ffxiii2img.exe"+791E4: CC              -  int 3
 "ffxiii2img.exe"+791E5: CC              -  int 3
 "ffxiii2img.exe"+791E6: CC              -  int 3
 "ffxiii2img.exe"+791E7: CC              -  int 3
 "ffxiii2img.exe"+791E8: CC              -  int 3
 "ffxiii2img.exe"+791E9: CC              -  int 3
 }
 | 
 
 BattleHealthBar:
 
  	  | Code: |  	  | [ENABLE] 
 aobscanmodule(BattleSetHealthBar,ffxiii2img.exe,89 9E 00 1D 00 00) // should be unique
 alloc(BattleSetHealthBar_newmem,$1000)
 alloc(BattleLoadHealthBar_Base,10)
 
 label(code)
 label(return)
 label(diff_moderate)
 label(diff_hard)
 label(diff_very_hard)
 label(diff_insane)
 label(diff_impossible)
 label(diff_ultimate)
 label(diff_goddess)
 label(diff_orphan)
 label(diff_guardian)
 label(diff_void)
 label(skip_modification)
 
 BattleSetHealthBar_newmem:
 
 code:
 cmp esi,0 //Safety check so that we don't accidently crash the game if edi is null
 je skip_modification
 cmp byte [esi+1A18+8],#109
 jne skip_modification
 mov [BattleLoadHealthBar_Base],ebx
 cmp [BattleMult_HP],1
 je diff_hard
 cmp [BattleMult_HP],2
 je diff_very_hard
 cmp [BattleMult_HP],3
 je diff_insane
 cmp [BattleMult_HP],4
 je diff_impossible
 cmp [BattleMult_HP],5
 je diff_ultimate
 cmp [BattleMult_HP],6
 je diff_goddess
 cmp [BattleMult_HP],7
 je diff_orphan
 cmp [BattleMult_HP],8
 je diff_guardian
 cmp [BattleMult_HP],9
 je diff_void
 
 diff_moderate:
 shl ebx,1 //Multiply by 2x
 jmp skip_modification
 
 diff_hard:
 shl ebx,1 //Multiply by 2x
 add ebx,[BattleLoadHealthBar_Base] //Add 1x
 jmp skip_modification
 
 diff_very_hard:
 shl ebx,2 //Multiply by 4x
 jmp skip_modification
 
 diff_insane:
 shl ebx,2 //Multiply by 4x
 add ebx,[BattleLoadHealthBar_Base] //Add 1x
 add ebx,[BattleLoadHealthBar_Base] //Add 1x
 jmp skip_modification
 
 diff_impossible:
 shl ebx,3 //Multiply by 8x
 jmp skip_modification
 
 diff_ultimate:
 shl ebx,4 //Multiply by 8x
 jmp skip_modification
 
 diff_goddess:
 shl ebx,5 //Multiply by 8x
 jmp skip_modification
 
 diff_orphan:
 shl ebx,6 //Multiply by 8x
 jmp skip_modification
 
 diff_guardian:
 shl ebx,7 //Multiply by 8x
 add ebx,[BattleLoadHealthBar_Base]
 jmp skip_modification
 
 diff_void:
 shl ebx,9 //Multiply by 8x
 jmp skip_modification
 
 skip_modification:
 mov [esi+00001D00],ebx
 jmp return
 
 BattleSetHealthBar:
 jmp code
 nop
 return:
 registersymbol(BattleSetHealthBar)
 
 [DISABLE]
 
 BattleSetHealthBar:
 db 89 9E 00 1D 00 00
 
 unregistersymbol(BattleSetHealthBar)
 dealloc(BattleSetHealthBar_newmem)
 dealloc(BattleLoadHealthBar_Base)
 
 {
 // ORIGINAL CODE - INJECTION POINT: "ffxiii2img.exe"+55DBB
 
 "ffxiii2img.exe"+55D9E: 6A 04                 -  push 04
 "ffxiii2img.exe"+55DA0: 6A 01                 -  push 01
 "ffxiii2img.exe"+55DA2: 8B CF                 -  mov ecx,edi
 "ffxiii2img.exe"+55DA4: E8 17 33 02 00        -  call ffxiii2img.exe+790C0
 "ffxiii2img.exe"+55DA9: EB 02                 -  jmp ffxiii2img.exe+55DAD
 "ffxiii2img.exe"+55DAB: 8B C1                 -  mov eax,ecx
 "ffxiii2img.exe"+55DAD: 89 86 D0 02 00 00     -  mov [esi+000002D0],eax
 "ffxiii2img.exe"+55DB3: 8B 44 24 18           -  mov eax,[esp+18]
 "ffxiii2img.exe"+55DB7: 85 C0                 -  test eax,eax
 "ffxiii2img.exe"+55DB9: 74 06                 -  je ffxiii2img.exe+55DC1
 // ---------- INJECTING HERE ----------
 "ffxiii2img.exe"+55DBB: 89 9E 00 1D 00 00     -  mov [esi+00001D00],ebx
 // ---------- DONE INJECTING  ----------
 "ffxiii2img.exe"+55DC1: F6 86 86 02 00 00 80  -  test byte ptr [esi+00000286],-80
 "ffxiii2img.exe"+55DC8: 74 76                 -  je ffxiii2img.exe+55E40
 "ffxiii2img.exe"+55DCA: 83 BE D8 02 00 00 00  -  cmp dword ptr [esi+000002D8],00
 "ffxiii2img.exe"+55DD1: 7D 04                 -  jnl ffxiii2img.exe+55DD7
 "ffxiii2img.exe"+55DD3: 33 C0                 -  xor eax,eax
 "ffxiii2img.exe"+55DD5: EB 24                 -  jmp ffxiii2img.exe+55DFB
 "ffxiii2img.exe"+55DD7: 6A 04                 -  push 04
 "ffxiii2img.exe"+55DD9: 6A 01                 -  push 01
 "ffxiii2img.exe"+55DDB: 8B CF                 -  mov ecx,edi
 "ffxiii2img.exe"+55DDD: E8 DE 32 02 00        -  call ffxiii2img.exe+790C0
 }
 | 
 |  |