├── .gitignore ├── Adding codes with UCP FilterTool.md ├── Autoexec ├── Autoexec.ini ├── BL2 Autoexec + Tools.ahk ├── BL2 Autoexec + Tools.exe ├── BL2Check.png ├── BL2Check2.png ├── Borderlands 2 Autoexec.ahk ├── Borderlands 2 Autoexec.exe ├── Memory Version │ ├── Autoexec.ini │ ├── BL2 Autoexec + Tools Memory-Version.ahk │ ├── BL2 Autoexec + Tools Memory-Version.exe │ └── Readme.md └── Readme.md ├── Commands.md ├── EnemySpawnrates.md ├── For Beginners.md ├── FunStuff.md ├── Hexediting ├── BL2 Hexedit Readme.txt ├── Backpack-Customizer │ ├── Backpack Testpatch.zip - OUTDATED │ ├── Backpack-Customizer.zip - OUTDATED │ └── Readme.md ├── Outdated - BL2 Hex-Multitool (2).zip ├── Outdated - BL2 Hex-Multitool Dark Mode.zip ├── Outdated - BL2 Hex-Multitool.zip ├── Outdated - Max Levelpatcher.zip ├── Readme.md └── images │ ├── EridiumValue.png │ ├── MaxLVL100.png │ └── XPGainLvl72.png ├── Lootpools.md ├── Misc.md ├── Mission Names.txt ├── ModResources └── DLC Packagedefinitions and Names.txt ├── README.md ├── TippsnTricks.md ├── _config.yml ├── images ├── Classes.png ├── Console.png ├── Jimmy.jpg ├── StartupOverview.png ├── Step1.jpg ├── Step2.jpg ├── Step3.jpg ├── UCPAddMod.png └── UCPConvert.png └── index.md /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /Adding codes with UCP FilterTool.md: -------------------------------------------------------------------------------- 1 | # Adding commands into the patch-file 2 | 3 | Adding a command into the patch-file is really easy with the FilterTool. 4 | 5 | Right click a category where you want your code and click ***Insert code***. 6 | 7 | ## Normal code 8 | 9 | Normal codes are the ones that you basically set and forget. 10 | They do not need to be re-applied. 11 | There is not really anything to mention about these here. 12 | 13 | Confirm with OK and you're done. 14 | 15 | ## Hotfix entry 16 | 17 | #### When and why hotfixes are needed. 18 | You can skip this one if you know what hotfixes are and when/why they're used. 19 | 20 | The easiest way to describe hotfixes is to give you an example. 21 | 22 | In my Lootpools guide I ***obj dump*** the Sheriff's lootpool. 23 | 24 | ``` 25 | obj dump PawnBalance_Sheriff 26 | ``` 27 | 28 | If we'd try this in Sanctuary for example, we couldn't. The package/object for this isn't loaded. So the game does not know what we're talking about. 29 | 30 | Now, what would happen if we tell the game to change a value inside that "package"? It can't because it's not there (yet). 31 | 32 | That's where hotfixes come into play. 33 | You basically tell the code when to execute/re-execute. 34 | 35 | * After hitting continue in the main menu 36 | * When Package XY is being loaded (so it's accessible to modify) 37 | * When a/the given Level is being loaded 38 | 39 | #### Adding the hotfix 40 | 41 | Choose ***Hotfix entry*** at the top. 42 | You'll now be able to choose the type (when to trigger this code) in the top left corner. 43 | 44 | Choose whatever fits your code the best. 45 | 46 | ###### Level 47 | Should you choose Level, you have two possibilities. 48 | You either leave it at ***None***, which will basically execute your code everytime you switch to a different location/fasttravel 49 | 50 | or 51 | 52 | set a specific Levelname where it's supposed to trigger the execution of the code. You can find a guide for that [here](https://github.com/c0dycode/BL2ModStuff/blob/master/Commands.md##get-the-levelnames). 53 | 54 | ###### OnDemand 55 | OnDemand pretty much works exactly the same as Level above. 56 | Instead of a levelname you provide a "package" which when loaded triggers our code. 57 | 58 | For example, we want to execute code xy when I play as a Gunzerker, or somebody with a Gunzerker joins the game. 59 | So our trigger in this case would be 60 | 61 | ``` 62 | GD_Mercenary_Streaming 63 | ``` 64 | 65 | Insert your code, click OK and you're DONE. 66 | 67 | # Hint: For code with multiple lines, use the ***Auto format***-button in the top right. It's amazing! 68 | 69 | 70 | # Credits 71 | 72 | Thanks to LightChaosman for this awesome tool :) -------------------------------------------------------------------------------- /Autoexec/Autoexec.ini: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/c0dycode/BL2ModStuff/a19d1a618a023e104381e74a5edebcb8c229b151/Autoexec/Autoexec.ini -------------------------------------------------------------------------------- /Autoexec/BL2 Autoexec + Tools.ahk: -------------------------------------------------------------------------------- 1 | ;Made by c0dycode 2 | #Include 3 | #NoEnv 4 | #MaxHotkeysPerInterval 99000000 5 | #HotkeyInterval 99000000 6 | #KeyHistory 0 7 | #SingleInstance, FORCE 8 | #Persistent 9 | ListLines Off 10 | Process, Priority, , A 11 | SetBatchLines, -1 12 | SetKeyDelay, -1, -1 13 | SetMouseDelay, -1 14 | SetDefaultMouseSpeed, 0 15 | SetWinDelay, -1 16 | SetControlDelay, -1 17 | ;~ SendMode Input 18 | SetWorkingDir %A_ScriptDir% 19 | CoordMode, Pixel, Client 20 | SetTitleMatchMode, 3 21 | 22 | RapidFire := 0 23 | PatchExecuted := 0 24 | MenuScreen := 0 25 | 26 | SetTimer, IsBorderlandsClosed, 5000 27 | SetTimer, IsBorderlandsClosed, Off 28 | 29 | IfNotExist, Autoexec.ini 30 | { 31 | IniWrite, patch.txt, Autoexec.ini, Settings, patchname 32 | IniWrite, 8000, Autoexec.ini, Settings, delay 33 | IniWrite, 20, Autoexec.ini, Settings, RapidFireDelay 34 | } 35 | IfExist, Autoexec.ini 36 | { 37 | IniRead, patchname, Autoexec.ini, Settings, patchname 38 | IniRead, delay, Autoexec.ini, Settings, delay, 8000 39 | IniRead, rapidfiredelay, Autoexec.ini, Settings, RapidFireDelay, 20 40 | IniRead, ConsoleKey, %A_MyDocuments%\My Games\Borderlands 2\WillowGame\Config\WillowInput.ini, Engine.Console, ConsoleKey 41 | 42 | IniWrite, %patchname%, Autoexec.ini, Settings, patchname 43 | IniWrite, %delay%, Autoexec.ini, Settings, delay 44 | IniWrite %rapidfiredelay%, Autoexec.ini, Settings, RapidFireDelay 45 | } 46 | 47 | Width := 1.15 * (A_ScreenWidth / 2) 48 | Height := A_ScreenHeight / 3 49 | 50 | If !ProcessExist("Borderlands2.exe") 51 | Run, steam://rungameid/49520 52 | else 53 | { 54 | IfEqual, PatchExecuted, 0 55 | goto RunAutoexec 56 | else 57 | goto GameIsRunning 58 | } 59 | 60 | RunAutoexec: 61 | WinActivate, ahk_class LaunchUnrealUWindowsClient 62 | WinWaitActive, ahk_class LaunchUnrealUWindowsClient 63 | WinShow, ahk_class LaunchUnrealUWindowsClient 64 | IfEqual, MenuScreen, 0 65 | { 66 | Loop{ 67 | CheckMenu() 68 | Sleep 50 69 | IfEqual, MenuScreen, 1 70 | break 71 | else 72 | continue 73 | } 74 | } 75 | IfEqual, PatchExecuted, 0 76 | { 77 | Sleep, %delay% 78 | WinActivate, ahk_class LaunchUnrealUWindowsClient 79 | WinWaitActive, ahk_class LaunchUnrealUWindowsClient 80 | WinShow, ahk_class LaunchUnrealUWindowsClient 81 | IfEqual, ConsoleKey, Tilde 82 | Send, ~ 83 | else 84 | Send, {F6} 85 | Send, exec{Space} 86 | Send, %patchname% 87 | Send, {Enter} 88 | Send, {Escape} 89 | ToolTip, Patch has been executed! 90 | SetTimer, ToolTipOff, -4000 91 | } 92 | PatchExecuted := 1 93 | 94 | GameIsRunning: 95 | SetTimer, IsBorderlandsClosed, On 96 | return 97 | 98 | #IfWinActive ahk_class LaunchUnrealUWindowsClient 99 | F8:: 100 | CheckConsole() 101 | Sleep, 150 102 | If conresult IN 0x0,0xFFFFFFFF 103 | IfEqual, ConsoleKey, Tilde 104 | Send, ~ 105 | else 106 | Send, {F6} 107 | DllCall("Sleep",UInt,100) 108 | SendRaw getall WillowPopulationDefinition Name 109 | Send {Enter} 110 | SendRaw getall AIPawnBalanceDefinition Name 111 | Send {Enter} 112 | return 113 | 114 | #IfWinActive 115 | F9:: 116 | WinActivate, ahk_class LaunchUnrealUWindowsClient 117 | WinWaitActive, ahk_class LaunchUnrealUWindowsClient 118 | Sleep, 150 119 | CheckConsole() 120 | Sleep, 150 121 | If conresult IN 0x0,0xFFFFFFFF 122 | IfEqual, ConsoleKey, Tilde 123 | Send, ~ 124 | else 125 | Send, {F6} 126 | Sleep, 150 127 | SendRaw obj dump 128 | Send {Space} 129 | Send %Clipboard% 130 | Send {Enter} 131 | return 132 | 133 | #IfWinActive ahk_class LaunchUnrealUWindowsClient 134 | ^F2::RapidFIre:=!RapidFire 135 | 136 | #IfWinActive ahk_class LaunchUnrealUWindowsClient 137 | *~LButton:: 138 | If RapidFire 139 | { 140 | while GetKeyState("LButton","P") 141 | { 142 | SendPlay, {Click} 143 | Sleep, %rapidfiredelay% 144 | } 145 | } 146 | return 147 | #IfWinActive 148 | 149 | IsBorderlandsClosed: 150 | If !ProcessExist("Borderlands2.exe") 151 | ExitApp 152 | 153 | ToolTipOff: 154 | SetTimer, ToolTipOff, Off 155 | ToolTip 156 | 157 | ; Function-Section 158 | ProcessExist(Name){ 159 | Process,Exist,%Name% 160 | return Errorlevel 161 | } 162 | 163 | CheckMenu(){ 164 | if (_ClassMemory.__Class != "_ClassMemory") 165 | msgbox class memory not correctly installed. Or the (global class) variable "_ClassMemory" has been overwritten 166 | 167 | mem := new _ClassMemory("ahk_exe Borderlands2.exe", "", hProcessCopy) 168 | if !isObject(mem) 169 | msgbox failed to open a handle 170 | if !hProcessCopy 171 | msgbox failed to open a handle. Error Code = %hProcessCopy% 172 | 173 | global MenuScreen := mem.read(mem.BaseAddress + 0x0003D788, "UInt", 0x18) 174 | } 175 | 176 | CheckConsole(){ 177 | if (_ClassMemory.__Class != "_ClassMemory") 178 | msgbox class memory not correctly installed. Or the (global class) variable "_ClassMemory" has been overwritten 179 | 180 | mem := new _ClassMemory("ahk_exe Borderlands2.exe", "", hProcessCopy) 181 | if !isObject(mem) 182 | msgbox failed to open a handle 183 | if !hProcessCopy 184 | msgbox failed to open a handle. Error Code = %hProcessCopy% 185 | 186 | pattern := mem.hexStringToPattern("18 ?? ?? ?? 18 CA ?? 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 18 ?? ?? ?? ?? ?? ?? ?? ?? ?? 00 FF") 187 | SetFormat, IntegerFast, H 188 | consolestatusaddress := mem.processPatternScan(mem.BaseAddress,, pattern*) 189 | 190 | global conresult := mem.read(consolestatusaddress + 0x1C, type := "UInt") 191 | ;~ IfEqual, result, 0xFFFFFFFF 192 | ;~ MsgBox, Console hasn't been open/closed yet. 193 | ;~ IfEqual, conresult, 0x200 194 | ;~ MsgBox, Console is open! 195 | } -------------------------------------------------------------------------------- /Autoexec/BL2 Autoexec + Tools.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/c0dycode/BL2ModStuff/a19d1a618a023e104381e74a5edebcb8c229b151/Autoexec/BL2 Autoexec + Tools.exe -------------------------------------------------------------------------------- /Autoexec/BL2Check.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/c0dycode/BL2ModStuff/a19d1a618a023e104381e74a5edebcb8c229b151/Autoexec/BL2Check.png -------------------------------------------------------------------------------- /Autoexec/BL2Check2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/c0dycode/BL2ModStuff/a19d1a618a023e104381e74a5edebcb8c229b151/Autoexec/BL2Check2.png -------------------------------------------------------------------------------- /Autoexec/Borderlands 2 Autoexec.ahk: -------------------------------------------------------------------------------- 1 | ;Made by c0dycode 2 | #Include 3 | #NoEnv 4 | #MaxHotkeysPerInterval 99000000 5 | #HotkeyInterval 99000000 6 | #KeyHistory 0 7 | #SingleInstance 8 | ;~ ListLines Off 9 | Process, Priority, , A 10 | SetBatchLines, -1 11 | SetKeyDelay, -1, -1 12 | SetMouseDelay, -1 13 | SetDefaultMouseSpeed, 0 14 | SetWinDelay, -1 15 | SetControlDelay, -1 16 | SendMode Input 17 | SetWorkingDir %A_ScriptDir% 18 | SetControlDelay -1 19 | CoordMode, Pixel, Client 20 | SetTitleMatchMode, 3 21 | FileInstall, BL2Check.png, BL2Check.png, 1 22 | 23 | PatchExecuted := 0 24 | MenuScreen := 0 25 | 26 | IfNotExist, Autoexec.ini 27 | { 28 | IniWrite, patch.txt, Autoexec.ini, Settings, patchname 29 | IniWrite, 7000, Autoexec.ini, Settings, delay 30 | } 31 | 32 | IfExist, Autoexec.ini 33 | { 34 | IniRead, patchname, Autoexec.ini, Settings, patchname 35 | IniRead, delay, Autoexec.ini, Settings, delay, 7000 36 | IniRead, ConsoleKey, %A_MyDocuments%\My Games\Borderlands 2\WillowGame\Config\WillowInput.ini, Engine.Console, ConsoleKey 37 | } 38 | 39 | Width := 1.15 * (A_ScreenWidth / 2) 40 | Height := A_ScreenHeight / 3 41 | 42 | If !ProcessExist("Borderlands2.exe") 43 | Run, steam://rungameid/49520 44 | else 45 | { 46 | IfEqual, PatchExecuted, 0 47 | goto RunAutoexec 48 | } 49 | 50 | RunAutoexec: 51 | Sleep, 2000 52 | WinActivate, ahk_class LaunchUnrealUWindowsClient 53 | WinWaitActive, ahk_class LaunchUnrealUWindowsClient 54 | WinShow, ahk_class LaunchUnrealUWindowsClient 55 | IfEqual, MenuScreen, 0 56 | { 57 | Loop{ 58 | CheckMenu() 59 | Sleep 50 60 | IfEqual, MenuScreen, 1 61 | break 62 | else 63 | continue 64 | } 65 | } 66 | 67 | while (1) 68 | { 69 | If !ProcessExist("Borderlands2.exe") 70 | ExitApp 71 | 72 | WinActivate, ahk_class LaunchUnrealUWindowsClient 73 | WinWaitActive, ahk_class LaunchUnrealUWindowsClient 74 | WinShow, ahk_class LaunchUnrealUWindowsClient 75 | ImageSearch, Xpos, YPos, %Width%, %Height%, %A_ScreenWidth%, %A_ScreenHeight%, *130 BL2Check.png 76 | 77 | if errorlevel=0 78 | break ; stop the while if the image is found 79 | } 80 | IfEqual, PatchExecuted, 0 81 | { 82 | Sleep, %delay% 83 | WinActivate, ahk_class LaunchUnrealUWindowsClient 84 | WinWaitActive, ahk_class LaunchUnrealUWindowsClient 85 | WinShow, ahk_class LaunchUnrealUWindowsClient 86 | IfEqual, ConsoleKey, Tilde 87 | Send, ~ 88 | else 89 | Send, {F6} 90 | Send, exec{Space} 91 | Send, %patchname% 92 | Send, {Enter} 93 | Send, {Escape} 94 | ToolTip, Patch has been executed! 95 | SetTimer, ToolTipOff, -4000 96 | } 97 | PatchExecuted := 1 98 | 99 | Sleep, 3000 100 | ExitApp 101 | 102 | ToolTipOff: 103 | SetTimer, ToolTipOff, Off 104 | ToolTip 105 | 106 | ProcessExist(Name){ 107 | Process,Exist,%Name% 108 | return Errorlevel 109 | } 110 | 111 | CheckMenu(){ 112 | if (_ClassMemory.__Class != "_ClassMemory") 113 | msgbox class memory not correctly installed. Or the (global class) variable "_ClassMemory" has been overwritten 114 | 115 | mem := new _ClassMemory("ahk_exe Borderlands2.exe", "", hProcessCopy) 116 | if !isObject(mem) 117 | msgbox failed to open a handle 118 | if !hProcessCopy 119 | msgbox failed to open a handle. Error Code = %hProcessCopy% 120 | 121 | global MenuScreen := mem.read(mem.BaseAddress + 0x0003D788, "UInt", 0x18) 122 | } -------------------------------------------------------------------------------- /Autoexec/Borderlands 2 Autoexec.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/c0dycode/BL2ModStuff/a19d1a618a023e104381e74a5edebcb8c229b151/Autoexec/Borderlands 2 Autoexec.exe -------------------------------------------------------------------------------- /Autoexec/Memory Version/Autoexec.ini: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/c0dycode/BL2ModStuff/a19d1a618a023e104381e74a5edebcb8c229b151/Autoexec/Memory Version/Autoexec.ini -------------------------------------------------------------------------------- /Autoexec/Memory Version/BL2 Autoexec + Tools Memory-Version.ahk: -------------------------------------------------------------------------------- 1 | ;Made by c0dycode 2 | ;TODO: 3 | ; - Could be a decent Linux alternative to AHK: http://www.semicomplete.com/projects/xdotool/xdotool.xhtml 4 | #Include 5 | #NoEnv 6 | #MaxHotkeysPerInterval 99000000 7 | #HotkeyInterval 99000000 8 | #KeyHistory 0 9 | #SingleInstance, FORCE 10 | #Persistent 11 | ListLines Off 12 | Process, Priority, , A 13 | SetBatchLines, -1 14 | SetKeyDelay, -1, -1 15 | SetMouseDelay, -1 16 | SetDefaultMouseSpeed, 0 17 | SetWinDelay, -1 18 | SetControlDelay, -1 19 | ;~ SendMode Input 20 | SetWorkingDir %A_ScriptDir% 21 | CoordMode, Pixel, Client 22 | SetTitleMatchMode, 3 23 | 24 | Loop, %0% ; For each parameter 25 | { 26 | launchparam .= %A_Index% " " ; Get each launchparamter steam sends 27 | } 28 | 29 | RapidFire := 0 30 | PatchExecuted := 0 31 | MenuScreen := 0 32 | 33 | SetTimer, IsBorderlandsClosed, 5000 34 | SetTimer, IsBorderlandsClosed, Off 35 | 36 | IfNotExist, Autoexec.ini 37 | { 38 | IniWrite, patch.txt, Autoexec.ini, Settings, patchname 39 | IniWrite, 8000, Autoexec.ini, Settings, delay 40 | IniWrite, 20, Autoexec.ini, Settings, RapidFireDelay 41 | IniWrite, True, Autoexec.ini, Settings, Hexedited 42 | IniWrite, False, Autoexec.ini, Settings, Bypass 43 | } 44 | IfExist, Autoexec.ini 45 | { 46 | IniRead, patchname, Autoexec.ini, Settings, patchname 47 | IniRead, delay, Autoexec.ini, Settings, delay, 8000 48 | IniRead, rapidfiredelay, Autoexec.ini, Settings, RapidFireDelay, 20 49 | IniRead, Hexedited, Autoexec.ini, Settings, Hexedited, True 50 | IniRead, Bypass, Autoexec.ini, Settings, Bypass, False 51 | IniRead, ConsoleKey, %A_MyDocuments%\My Games\Borderlands 2\WillowGame\Config\WillowInput.ini, Engine.Console, ConsoleKey 52 | 53 | IniWrite, %patchname%, Autoexec.ini, Settings, patchname 54 | IniWrite, %delay%, Autoexec.ini, Settings, delay 55 | IniWrite %rapidfiredelay%, Autoexec.ini, Settings, RapidFireDelay 56 | IniWrite %Hexedited%, Autoexec.ini, Settings, Hexedited 57 | IniWrite %Bypass%, Autoexec.ini, Settings, Bypass 58 | } 59 | 60 | Width := 1.15 * (A_ScreenWidth / 2) 61 | Height := A_ScreenHeight / 3 62 | 63 | If !ProcessExist("Borderlands2.exe") 64 | { 65 | IfEqual, A_ScriptName, Launcher.exe 66 | Run, Borderlands2.exe %launchparam% 67 | else 68 | Run, steam://rungameid/49520 69 | } 70 | else 71 | { 72 | IfEqual, PatchExecuted, 0 73 | goto RunAutoexec 74 | else 75 | goto GameIsRunning 76 | } 77 | 78 | RunAutoexec: 79 | WinWait, ahk_class LaunchUnrealUWindowsClient,,5 80 | WinWaitClose, ahk_class LaunchUnrealUWindowsClient,,5 81 | WinWait, ahk_class LaunchUnrealUWindowsClient 82 | Sleep, 1000 83 | IfEqual, Hexedited, False 84 | { 85 | Critical 86 | ConsoleSay() 87 | UnlockSet() 88 | DevCommands() 89 | Critical, Off 90 | } 91 | Sleep, 1500 92 | IfEqual, MenuScreen, 0 93 | { 94 | Loop{ 95 | CheckMenu() 96 | Sleep 50 97 | IfEqual, MenuScreen, 1 98 | break 99 | else 100 | continue 101 | } 102 | } 103 | IfEqual, PatchExecuted, 0 104 | { 105 | Sleep, %delay% 106 | WinActivate, ahk_class LaunchUnrealUWindowsClient 107 | WinWaitActive, ahk_class LaunchUnrealUWindowsClient 108 | WinShow, ahk_class LaunchUnrealUWindowsClient 109 | IfEqual, ConsoleKey, Tilde 110 | Send, ~ 111 | else 112 | Send, {F6} 113 | Send, exec{Space} 114 | Send, %patchname% 115 | Send, {Enter} 116 | Send, {Escape} 117 | ToolTip, Patch has been executed! 118 | SetTimer, ToolTipOff, -4000 119 | } 120 | PatchExecuted := 1 121 | 122 | IfEqual, Bypass, True 123 | SanityBypass() 124 | 125 | GameIsRunning: 126 | SetTimer, IsBorderlandsClosed, On 127 | return 128 | 129 | #IfWinActive ahk_class LaunchUnrealUWindowsClient 130 | F8:: 131 | CheckConsole() 132 | Sleep, 150 133 | If conresult IN 0x0,0xFFFFFFFF 134 | IfEqual, ConsoleKey, Tilde 135 | Send, ~ 136 | else 137 | Send, {F6} 138 | DllCall("Sleep",UInt,100) 139 | SendRaw getall WillowPopulationDefinition Name 140 | Send {Enter} 141 | SendRaw getall AIPawnBalanceDefinition Name 142 | Send {Enter} 143 | return 144 | 145 | #IfWinActive 146 | F9:: 147 | WinActivate, ahk_class LaunchUnrealUWindowsClient 148 | WinWaitActive, ahk_class LaunchUnrealUWindowsClient 149 | Sleep, 300 150 | CheckConsole() 151 | DllCall("Sleep",UInt,500) 152 | If conresult IN 0x0,0xFFFFFFFF 153 | IfEqual, ConsoleKey, Tilde 154 | Send, ~ 155 | else 156 | Send, {F6} 157 | Sleep, 150 158 | SendRaw obj dump 159 | Send {Space} 160 | Send %Clipboard% 161 | Send {Enter} 162 | return 163 | 164 | #IfWinActive ahk_class LaunchUnrealUWindowsClient 165 | ^F2::RapidFIre:=!RapidFire 166 | 167 | #IfWinActive ahk_class LaunchUnrealUWindowsClient 168 | *~LButton:: 169 | If RapidFire 170 | { 171 | while GetKeyState("LButton","P") 172 | { 173 | SendPlay, {Click} 174 | Sleep, %rapidfiredelay% 175 | } 176 | } 177 | return 178 | #IfWinActive 179 | 180 | IsBorderlandsClosed: 181 | If !ProcessExist("Borderlands2.exe") 182 | ExitApp 183 | 184 | ToolTipOff: 185 | SetTimer, ToolTipOff, Off 186 | ToolTip 187 | 188 | ; Function-Section 189 | ProcessExist(Name){ 190 | Process,Exist,%Name% 191 | return Errorlevel 192 | } 193 | 194 | CheckMenu(){ 195 | if (_ClassMemory.__Class != "_ClassMemory") 196 | msgbox class memory not correctly installed. Or the (global class) variable "_ClassMemory" has been overwritten 197 | 198 | mem := new _ClassMemory("ahk_exe Borderlands2.exe", "", hProcessCopy) 199 | if !isObject(mem) 200 | msgbox failed to open a handle 201 | if !hProcessCopy 202 | msgbox failed to open a handle. Error Code = %hProcessCopy% 203 | 204 | global MenuScreen := mem.read(mem.BaseAddress + 0x0003D788, "UInt", 0x18) 205 | } 206 | 207 | CheckConsole(){ 208 | if (_ClassMemory.__Class != "_ClassMemory") 209 | msgbox class memory not correctly installed. Or the (global class) variable "_ClassMemory" has been overwritten 210 | 211 | mem := new _ClassMemory("ahk_exe Borderlands2.exe", "", hProcessCopy) 212 | if !isObject(mem) 213 | msgbox failed to open a handle 214 | if !hProcessCopy 215 | msgbox failed to open a handle. Error Code = %hProcessCopy% 216 | 217 | pattern := mem.hexStringToPattern("18 ?? ?? ?? 18 CA ?? 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 18 ?? ?? ?? ?? ?? ?? ?? ?? ?? 00 FF") 218 | SetFormat, IntegerFast, H 219 | consolestatusaddress := mem.processPatternScan(mem.BaseAddress,, pattern*) 220 | 221 | global conresult := mem.read(consolestatusaddress + 0x1C, type := "UInt") 222 | IfEqual, result, 0xFFFFFFFF 223 | MsgBox, Console hasn't been open/closed yet. 224 | IfEqual, conresult, 0x200 225 | MsgBox, Console is open! 226 | } 227 | 228 | DevCommands(){ 229 | if (_ClassMemory.__Class != "_ClassMemory") 230 | msgbox class memory not correctly installed. Or the (global class) variable "_ClassMemory" has been overwritten 231 | 232 | mem := new _ClassMemory("ahk_exe Borderlands2.exe", "", hProcessCopy) 233 | if !isObject(mem) 234 | msgbox failed to open a handle 235 | if !hProcessCopy 236 | msgbox failed to open a handle. Error Code = %hProcessCopy% 237 | 238 | pattern := mem.hexStringToPattern("58 01 04 28") 239 | devcommandsaddress := mem.processPatternScan(mem.BaseAddress,, pattern*) 240 | mem.write(devcommandsaddress + 0x03, 39, type := "UChar") 241 | } 242 | 243 | ConsoleSay(){ 244 | if (_ClassMemory.__Class != "_ClassMemory") 245 | msgbox class memory not correctly installed. Or the (global class) variable "_ClassMemory" has been overwritten 246 | 247 | mem := new _ClassMemory("ahk_exe Borderlands2.exe", "", hProcessCopy) 248 | if !isObject(mem) 249 | msgbox failed to open a handle 250 | if !hProcessCopy 251 | msgbox failed to open a handle. Error Code = %hProcessCopy% 252 | 253 | pattern := mem.hexStringToPattern("?? 00 61 00 79 00 20 00 00 00 00 00") 254 | consayaddress := mem.processPatternScan(mem.BaseAddress,, pattern*) 255 | DllCall("VirtualProtectEx", "UInt", hProcessCopy, "UInt", consayaddress, "UInt", 4, "UInt", 0x04, "UInt *", 0) ; Makes Memoryregion writable 256 | mem.write(consayaddress, 0, type := "Int") 257 | mem.write(consayaddress + 0x04, 0, type := "UChar") 258 | DllCall("VirtualProtectEx", "UInt", hProcessCopy, "UInt", consayaddress, "UInt", 4, "UInt", 0x02, "UInt *", 0) ; Memoryregion back to read-only 259 | } 260 | 261 | UnlockSet(){ 262 | if (_ClassMemory.__Class != "_ClassMemory") 263 | msgbox class memory not correctly installed. Or the (global class) variable "_ClassMemory" has been overwritten 264 | 265 | mem := new _ClassMemory("ahk_exe Borderlands2.exe", "", hProcessCopy) 266 | if !isObject(mem) 267 | msgbox failed to open a handle 268 | if !hProcessCopy 269 | msgbox failed to open a handle. Error Code = %hProcessCopy% 270 | 271 | pattern := mem.hexStringToPattern("83 C4 0C 85 C0 75 1A 6A") 272 | unlocksetaddress := mem.processPatternScan(mem.BaseAddress,, pattern*) 273 | mem.write(unlocksetaddress + 0x04, 255, type := "UChar") 274 | } 275 | 276 | SanityBypass(){ 277 | if (_ClassMemory.__Class != "_ClassMemory") 278 | msgbox class memory not correctly installed. Or the (global class) variable "_ClassMemory" has been overwritten 279 | 280 | mem := new _ClassMemory("ahk_exe Borderlands2.exe", "", hProcessCopy) 281 | if !isObject(mem) 282 | msgbox failed to open a handle 283 | if !hProcessCopy 284 | msgbox failed to open a handle. Error Code = %hProcessCopy% 285 | 286 | bodypattern := mem.hexStringToPattern("83 7F 10 00 8D 47 10 74 ?? 50") 287 | grippattern := mem.hexStringToPattern("83 7F 14 00 8D 47 14 74") 288 | barrelpattern := mem.hexStringToPattern("83 7F 18 00 8D 47 18 74") 289 | sightpattern := mem.hexStringToPattern("83 7F 1C 00 8D 47 1C 74") 290 | stockpattern := mem.hexStringToPattern("83 7F 20 00 8D 47 20 74 ?? 50 8d") 291 | elepattern := mem.hexStringToPattern("83 7F 24 00 8D 47 24 74") 292 | acc1pattern := mem.hexStringToPattern("83 7F 28 00 8D 47 28 74") 293 | acc2pattern := mem.hexStringToPattern("83 7F 2C 00 8D 47 2C 74") 294 | matpattern := mem.hexStringToPattern("83 7F 30 00 8D 47 30 74 ?? 50") 295 | 296 | bodybypass := mem.processPatternScan(mem.BaseAddress,, bodypattern*) 297 | gripbypass := mem.processPatternScan(mem.BaseAddress,, grippattern*) 298 | barrelbypass := mem.processPatternScan(mem.BaseAddress,, barrelpattern*) 299 | sightbypass := mem.processPatternScan(mem.BaseAddress,, sightpattern*) 300 | stockbypass := mem.processPatternScan(mem.BaseAddress,, stockpattern*) 301 | elebypass := mem.processPatternScan(mem.BaseAddress,, elepattern*) 302 | acc1bypass := mem.processPatternScan(mem.BaseAddress,, acc1pattern*) 303 | acc2bypass := mem.processPatternScan(mem.BaseAddress,, acc2pattern*) 304 | matbypass := mem.processPatternScan(mem.BaseAddress,, matpattern*) 305 | 306 | DllCall("VirtualProtectEx", "UInt", hProcessCopy, "UInt", bodybypass, "UInt",4, "UInt", 0x40, "UInt *", 0) ; PAGE_EXECUTE_READWRITE 307 | mem.write(bodybypass + 0x03, 255, type := "UChar") 308 | mem.write(bodybypass + 0x07, 117, type := "UChar") 309 | mem.write(gripbypass + 0x03, 255, type := "UChar") 310 | mem.write(gripbypass + 0x07, 117, type := "UChar") 311 | mem.write(barrelbypass + 0x03, 255, type := "UChar") 312 | mem.write(barrelbypass + 0x07, 117, type := "UChar") 313 | mem.write(sightbypass + 0x03, 255, type := "UChar") 314 | mem.write(sightbypass + 0x07, 117, type := "UChar") 315 | mem.write(stockbypass + 0x03, 255, type := "UChar") 316 | mem.write(stockbypass + 0x07, 117, type := "UChar") 317 | mem.write(elebypass + 0x07, 117, type := "UChar") 318 | mem.write(acc1bypass + 0x03, 255, type := "UChar") 319 | mem.write(acc1bypass + 0x07, 117, type := "UChar") 320 | mem.write(acc2bypass + 0x03, 255, type := "UChar") 321 | mem.write(acc2bypass + 0x07, 117, type := "UChar") 322 | mem.write(matbypass + 0x03, 255, type := "UChar") 323 | mem.write(matbypass + 0x07, 117, type := "UChar") 324 | DllCall("VirtualProtectEx", "UInt", hProcessCopy, "UInt", bodybypass, "UInt", 4, "UInt", 0x20, "UInt *", 0) ; PAGE_EXECUTE_READ 325 | } -------------------------------------------------------------------------------- /Autoexec/Memory Version/BL2 Autoexec + Tools Memory-Version.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/c0dycode/BL2ModStuff/a19d1a618a023e104381e74a5edebcb8c229b151/Autoexec/Memory Version/BL2 Autoexec + Tools Memory-Version.exe -------------------------------------------------------------------------------- /Autoexec/Memory Version/Readme.md: -------------------------------------------------------------------------------- 1 | # Available Settings explained 2 | ***patchname=patch.txt*** 3 | 4 | Patchfilename to autoexec 5 | 6 | ***delay=8000*** 7 | 8 | Delay to wait before autoexec the patch. To make sure everything is properly loaded before executing. 9 | 10 | ***RapidFireDelay=20*** 11 | 12 | Delay between clicks for the rapidfire-script. Using the script is not really recommended though. 13 | 14 | ***Hexedited=False*** 15 | Use ***False*** if you haven't hex-edited your Borderlands2.exe. This will temporarily patch the game when it's running. 16 | 17 | ***Bypass=False*** 18 | Set Bypass to ***True*** if you want to enable the Sanity-Check-Bypass. 19 | 20 | ## Differences to the normal version 21 | This is basically just an alternative version. 22 | This one doesn't rely on finding the specific image anymore. Instead it reads the game processes memory to determine whether you're in the menu or not. 23 | 24 | This makes it a lot more reliable if you're not using launch-options that skip the Startupmovies for example. 25 | 26 | It's basically working the same way as the LiveSplit-Plugin that speedrunners use. 27 | 28 | I've been trying to find a way to also determine whether the console is currently open or not. It basically works the same way. This also doesn't rely on finding specific pixels/images anymore. 29 | 30 | ## Functions 31 | 1. Renaming the exe to ***Launcher.exe*** and putting it into the ***Win32*** folder (rename the default Launcher.exe, JIC) will allow you to run the Autoexec-Tool even if you launch the game over steam directly. Thanks to Magic_Gonads for the idea. 32 | 2. Automatic temporarily "hexediting" the Borderlands2.exe. Based on Magic_Gonads idea and CE-Table. To use this, set ***Hexedited*** in the Autoexec.ini to ***False*** 33 | 34 | ## Advantage 35 | * Should be a lot more reliable 36 | ## Disadvantage 37 | Chances are, this won't happen anytime soon, if at all - 38 | 39 | * It'll most likely break if there ever comes an update for BL2. 40 | 41 | ## Note 42 | If you have used previous versions, you probably need to increase the delay in the ini-file. Increasing it by 1500-2000 should give you pretty much the same result as before. 43 | 44 | 45 | # Changelog 46 | - When using this as a replacement for ***Launcher.exe*** the Steam Launchparameters are now handeled automatically. No more need to add them to the INI-file. 47 | 48 | -Added new functions to automate the temporary patching the CE-Table from Magic_Gonads has done. 49 | 50 | This allows you to use the patches without haven to do any hex-editing. Thanks to Magic_Gonads for the idea and CE-Table :) 51 | 52 | -Added the option to replace the Launcher.exe, which steam calls, even if you use the launchoption ***-NoLauncher*** 53 | 54 | To use it, just rename your old Launcher.exe and rename this scripts exe to ***Launcher.exe***. This script will check if its own name is ***Launcher.exe*** to decide to either run ***Borderlands2.exe*** or the steam-link. 55 | -------------------------------------------------------------------------------- /Autoexec/Readme.md: -------------------------------------------------------------------------------- 1 | # !!!OUTDATED!!! 2 | Use this instead: 3 | https://github.com/c0dycode/BL-AutoexecDLL 4 | 5 | # General Features (both versions) 6 | * Automatically launch your Steamversion of Borderlands 2 7 | * Autoexec your patch-file (patch.txt by default) 8 | ## NOTE: It can not check if the execution has actually worked. Or if it was too early. At least not yet. 9 | * Showing a Tooltip next to your cursor when patch has been executed 10 | 11 | # Extra Features in the Tools-Version 12 | * Toggle RapidFire-Script with CTRL+F2 13 | * Hotkey (F9) to OBJ DUMP whatever you have in your clipboard 14 | 15 | ## Currently known issues | What's being worked on 16 | * Improved the RapidFire-Script even more. 17 | * ~~The RapidFire-Script is a lot more usable now. While looking up similar issues, I've seen someone mention this exact same problem with BL2 or maybe even UE3 in general with AutoHotkey. So ther's a good chance this will be the best it'll be.~~ 18 | * ~~Using the RapidFire-Script will make aiming harder since it's basically interrupting your mouse movement every X ms. Currently looking into that.~~ 19 | 20 | 21 | ## Introduction 22 | Okay, I've written this little Autohotkey-Script to allow you to not having to type it manually in the console. 23 | 24 | This is NOT a timesaver and will not be, due to the time it takes when we can actually execute the patches. 25 | 26 | During the time it takes for everything to load, you can easily type "exec patch.txt" and wait for the soundqueue I've been waiting for up until now. 27 | 28 | This is just for the "lazy" people. 29 | 30 | I'll provide the Sourcecode for the ones that want to compile it themselves or for people that already have Autohotkey installed. 31 | 32 | You'll need the additional image-file though. 33 | 34 | ## What does it do? 35 | 36 | 1. It checks if the ***Autoexec.ini*** is there already. If not, it'll create it and enter the default values. You can customize them afterwards however you want. 37 | 2. It more or less calculates a fairly small area depending on your resolution. I'm using 1920x1080, so if you're having issues just hit me up, or edit the source code and run it yourself :) 38 | 3. It checks if the ***Borderlands2.exe*** is already running, and if not, it launches it over steam. 39 | 4. It'll activate and focus the window for you. Tabbing out, if you're playing Exclusive Fullscreen, won't really work, since it'll monitor your screen for a specific area. 40 | 5. It'll then search the upper right corner of the game-screen for the content in this picture ![BL2Check](./BL2Check.png) 41 | 6. If it has found the area, it'll wait ***6000ms*** by default. This works out for me. Though BL2 is on an SSD. So you may have to change that in the ***Autoexec.ini***. 42 | 7. It'll then open up the Console by pressing your COnsolekey and type ***exec patch.txt*** by default, press Enter and close the Console again. You won't even see it probably. All I see is my mouse-cursor all of a sudden :P. You can also change the patchname in the INI-file. 43 | 8. It'll then close itself and DONE. 44 | 45 | ## Installation 46 | Put it wherever you want. 47 | 48 | Now go here and listen to this soundclip I uploaded. 49 | https://instaud.io/private/e479b3b9ebfee800a3594f912938c7954f46fc5e 50 | 51 | The last two seconds or so are the queue for me, where I can execute the patches. That's about the point where I won't get any errors. 52 | Execute the tool once, make sure BL2 is closed though, so you can adjust the delay properly, check what the console does and check if you've gotten any errors. If so, exit BL2 completely, raise the delay and try again. 53 | 54 | ## Pre-Compiled and infos about it 55 | I'll put up the precompiled version. This includes the image-file(s) already and it'll be "extracted" out of the .exe-file during runtime. It'll stay there and should it be deleted, modified or whatever, it'll be overwritten again. 56 | 57 | Some people would sooner or later "discover" that the Description is not "Autohotkey" but "Chromeium" instead. 58 | 59 | This is just a very cheap attempt to avoid ***very*** stupid anti-cheat tools lol. 60 | That's the only thing that differs from the official Autohotkey-version. Most "AutoHotkey"-references were just renamed to Chromeium. 61 | 62 | ## Borderlands 2 Autoexec + Tools variant 63 | I've added this one now, since I thought it could make digging through stuff a little bit easier. 64 | 65 | Difference to the normal version is: 66 | I've added a Hotkey ***F9***. What it does, if you press F9, and the script will focus back onto BL2. It'll then check whether you already have the console open or not. If you do, it'll skip the step of opening it. So it's not getting closed. 67 | 68 | Next it'll type ***obj dump*** for you, paste whatever you have in your clipboard and send the command. 69 | 70 | It also got a Toggle-RapidFire-Script now. As long as BL2 is focused, you can hit CTRL+F2 to toggle it on and off. While it's active, all you need to do is hold down your left mouse button. You can change the ***RapidFireDelay*** in the INI-file to whatever you like. 71 | 72 | Remember, some Anti-Cheat-Tools don't like Autohotkey. For this reason I've added a check every ***5000ms*** if Borderlands is still running. If it's not, the script will exit automatically. 73 | -------------------------------------------------------------------------------- /Commands.md: -------------------------------------------------------------------------------- 1 | Commands I use and short info and a few reminders for me how to use some commands. 2 | 3 | # Get Lootpools in current area 4 | 5 | ``` 6 | getall AIPawnBalanceDefinition Name 7 | ``` 8 | 9 | List all the lootpools in the current area. 10 | We only need the last part after "XY.Name =". 11 | 12 | ``` 13 | PawnBalance_XY 14 | ``` 15 | 16 | Then ***obj dump*** it for example. 17 | 18 | 19 | # Get the Levelnames 20 | 21 | ``` 22 | getall LevelTravelStationDefinition StationLevelName 23 | ``` 24 | 25 | Same thing here as above. Only the last part is needed. 26 | To test the location, use 27 | ``` 28 | open XY 29 | ``` 30 | 31 | We can also use 32 | 33 | ``` 34 | getall LevelTravelStationDefinition DisplayName 35 | ``` 36 | If we just can't find the correct object name, for example: 37 | I was trying to find ***Wildlife Exploitation Preserve*** and just couldn't find it. 38 | This revealed to me, that it's ***GD_LevelTravelStations.Zone2.PandoraParkToCreatureSlaughter*** 39 | So I just ***obj dump*** it and look at the result for ***StationLevelName*** 40 | 41 | 42 | # Get the Drop Chance/Weight for DropODDS_BossUniqueRares for example 43 | As I keep forgetting how and that I can do this - 44 | 45 | ``` 46 | obj dump GD_Itempools.DropWeights.DropODDS_BossUniqueRares 47 | ``` 48 | 49 | results in 50 | 51 | ``` 52 | ValueResolverChain(0)=ConstantAttributeValueResolver'GD_Itempools.DropWeights.DropODDS_BossUniqueRares:ConstantAttributeValueResolver_0' 53 | ``` 54 | 55 | Take ***GD_Itempools.DropWeights.DropODDS_BossUniqueRares:ConstantAttributeValueResolver_0*** and ***obj dump*** it to see the current value. 56 | 57 | ``` 58 | obj dump GD_Itempools.DropWeights.DropODDS_BossUniqueRares:ConstantAttributeValueResolver_0 59 | ``` 60 | 61 | ``` 62 | === ConstantAttributeValueResolver properties === 63 | ConstantValue=0.330000 64 | ``` 65 | 66 | Then set ConstantValue with 67 | 68 | ``` 69 | set GD_Itempools.DropWeights.DropODDS_BossUniqueRares:ConstantAttributeValueResolver_0 ConstantValue X.XX 70 | ``` 71 | 72 | 73 | # Setting up a hotkey for commands 74 | Use the following command 75 | ``` 76 | set PlayerInput Bindings 77 | ( 78 | ( 79 | Name = F8, 80 | Command = "exec Spawn", 81 | Control = false, 82 | Shift = false, 83 | Alt = false, 84 | LeftTrigger = false, 85 | RightTrigger = false, 86 | bIgnoreCtrl = false, 87 | bIgnoreShift = false, 88 | bIgnoreAlt = false 89 | ) 90 | ) 91 | ``` 92 | 93 | Switch ***F8*** to your preferred key and the command to whatever you want. 94 | I had to put the command in ***"*** to keep the spaces. 95 | In this case I just put ***getall WillowPopulationDefinition Name*** in the Spawn-file. 96 | 97 | To execute multiple commands at the same time, split them with a ***pipe***-character. -> 98 | For example: 99 | 100 | ``` 101 | Command = "exec Spawn | exec lp" 102 | ``` 103 | 104 | Press F8 in the game and the command will execute. 105 | 106 | ##Note 107 | IF you want to bind it to numberkeys, you need to spell out the number and wrap it in ". For example: 108 | ``` 109 | Name = "eight", 110 | Command = ... 111 | ``` 112 | 113 | Thanks to "Reclaimer Shawn" for finding that out :) 114 | 115 | 116 | #### Note: This will only show the results in the log window. So either use the ***-log*** Launchparameter in steam, or enter ***showlog*** in the game console to toggle the log-window on and off. 117 | 118 | # Togglebinds 119 | Will explain these at some point. 120 | 121 | # Leveling someone with Infinity made super easy 122 | Instead of putting something onto your mouse or keyboard, you can aim at the correct spot and then type in ***startfire***. This will let you keep firing, even if you tab out of the game. 123 | 124 | To stop, just type in ***stopfire***. 125 | 126 | #Changing only a "nested" Property 127 | 128 | GD_AI_Balance.XP.XPMultiplier_02_Normal 129 | 130 | ```ValueFormula=(bEnabled=True,Multiplier=(BaseValueConstant=10.750000,BaseValueAttribute=None,InitializationDefinition=None,BaseValueScaleConstant=1.000000),Level=(BaseValueConstant=1.000000,BaseValueAttribute=None,InitializationDefinition=None,BaseValueScaleConstant=1.000000),Power=(BaseValueConstant=1.000000,BaseValueAttribute=None,InitializationDefinition=None,BaseValueScaleConstant=1.000000),Offset=(BaseValueConstant=0.000000,BaseValueAttribute=None,InitializationDefinition=None,BaseValueScaleConstant=1.000000)) 131 | ``` 132 | 133 | >set GD_AI_Balance.XP.XPMultiplier_02_Normal ValueFormula (Multiplier=(BaseValueConstant=10.750000)) 134 | 135 | for example. 136 | 137 | # Getting global Properties 138 | ``` 139 | obj dump globals 140 | ``` 141 | 142 | Thanks to Jim Raven :) -------------------------------------------------------------------------------- /EnemySpawnrates.md: -------------------------------------------------------------------------------- 1 | # Find the correct Population"pool" 2 | 3 | For this example I'm at ***Wildlife Exploitation Preserve***. 4 | 5 | Use: 6 | 7 | ``` 8 | getall WillowPopulationDefinition Name 9 | ``` 10 | 11 | to get an overview of the "pools", basically the same procedure as in the Lootpool guide. 12 | That's why this won't be as extended as the other guide. 13 | 14 | For this example I'm interested in the Spawnrate of the various LootMidgets, especially Jimmy Jenkins. 15 | 16 | So I'll use: 17 | 18 | ``` 19 | obj dump PopDef_LootMidget_HyperionMix 20 | ``` 21 | 22 | The result will be 23 | 24 | ``` 25 | ActorArchetypeList(0)=(SpawnFactory=PopulationFactoryBalancedAIPawn'GD_Population_Midget.Population.LootMidget.PopDef_LootMidget_HyperionMix:PopulationFactoryBalancedAIPawn_4',Probability=(BaseValueConstant=1.000000,BaseValueAttribute=None,InitializationDefinition=None,BaseValueScaleConstant=1.000000),MaxActiveAtOneTime=(BaseValueConstant=0.000000,BaseValueAttribute=None,InitializationDefinition=None,BaseValueScaleConstant=0.000000),TestVisibility=False,TestFOV=False) 26 | 27 | ActorArchetypeList(1)=(SpawnFactory=PopulationFactoryBalancedAIPawn'GD_Population_Midget.Population.LootMidget.PopDef_LootMidget_HyperionMix:PopulationFactoryBalancedAIPawn_3',Probability=(BaseValueConstant=1.000000,BaseValueAttribute=None,InitializationDefinition=None,BaseValueScaleConstant=1.000000),MaxActiveAtOneTime=(BaseValueConstant=0.000000,BaseValueAttribute=None,InitializationDefinition=None,BaseValueScaleConstant=0.000000),TestVisibility=False,TestFOV=False) 28 | 29 | ActorArchetypeList(2)=(SpawnFactory=PopulationFactoryBalancedAIPawn'GD_Population_Midget.Population.LootMidget.PopDef_LootMidget_HyperionMix:PopulationFactoryBalancedAIPawn_2',Probability=(BaseValueConstant=1.000000,BaseValueAttribute=None,InitializationDefinition=None,BaseValueScaleConstant=1.000000),MaxActiveAtOneTime=(BaseValueConstant=0.000000,BaseValueAttribute=None,InitializationDefinition=None,BaseValueScaleConstant=0.000000),TestVisibility=False,TestFOV=False) 30 | 31 | ActorArchetypeList(3)=(SpawnFactory=PopulationFactoryBalancedAIPawn'GD_Population_Midget.Population.LootMidget.PopDef_LootMidget_HyperionMix:PopulationFactoryBalancedAIPawn_1',Probability=(BaseValueConstant=1.000000,BaseValueAttribute=None,InitializationDefinition=None,BaseValueScaleConstant=1.000000),MaxActiveAtOneTime=(BaseValueConstant=0.000000,BaseValueAttribute=None,InitializationDefinition=None,BaseValueScaleConstant=0.000000),TestVisibility=False,TestFOV=False) 32 | 33 | ActorArchetypeList(4)=(SpawnFactory=PopulationFactoryBalancedAIPawn'GD_Population_Midget.Population.LootMidget.PopDef_LootMidget_HyperionMix:PopulationFactoryBalancedAIPawn_0',Probability=(BaseValueConstant=1.000000,BaseValueAttribute=None,InitializationDefinition=None,BaseValueScaleConstant=1.000000),MaxActiveAtOneTime=(BaseValueConstant=0.000000,BaseValueAttribute=None,InitializationDefinition=None,BaseValueScaleConstant=0.000000),TestVisibility=False,TestFOV=False) 34 | 35 | ActorArchetypeList(5)=(SpawnFactory=PopulationFactoryBalancedAIPawn'GD_Population_Midget.Population.LootMidget.PopDef_LootMidget_HyperionMix:PopulationFactoryBalancedAIPawn_5',Probability=(BaseValueConstant=0.250000,BaseValueAttribute=None,InitializationDefinition=None,BaseValueScaleConstant=1.000000),MaxActiveAtOneTime=(BaseValueConstant=0.000000,BaseValueAttribute=None,InitializationDefinition=None,BaseValueScaleConstant=0.000000),TestVisibility=False,TestFOV=False) 36 | ``` 37 | 38 | If we look at the code at ***ActorArchetypeList(5)*** we can already see that this probably has the lowest spawnrate due to ***BaseValueConstant=0.250000***. 39 | The chance of this being Jimmy is very high, since he's so rare in comparison to the others. 40 | 41 | 42 | So this is the next one we'll ***obj dump*** 43 | 44 | ``` 45 | obj dump GD_Population_Midget.Population.LootMidget.PopDef_LootMidget_HyperionMix:PopulationFactoryBalancedAIPawn_5 46 | ``` 47 | 48 | This results in 49 | 50 | ``` 51 | === PopulationFactoryBalancedAIPawn properties === 52 | PawnBalanceDefinition=AIPawnBalanceDefinition'GD_Population_Midget.Balance.LootMidget.PawnBalance_Jimmy' 53 | bUseInstigatorLevel=False 54 | ``` 55 | 56 | Great, we now have to correct object. 57 | 58 | If we'd ***obj dump*** this one now, we could access his lootpool for example. 59 | 60 | For now, we'll just modify the spawnrate. 61 | 62 | We should ***set*** this with a hotfix on ***level***. 63 | 64 | The basics on how to do it, are already explained here: 65 | 66 | https://github.com/c0dycode/BL2ModStuff/blob/master/Lootpools.md#creating-the-hotfix 67 | 68 | The final code to convert in to a hotfix is: 69 | 70 | ``` 71 | start Level PandoraPark_P 72 | set GD_Population_Midget.Population.LootMidget.PopDef_LootMidget_HyperionMix ActorArchetypeList[5].Probability.BaseValueConstant 0.600000 73 | ``` 74 | 75 | For a short test I've set all the other ones to 0. 76 | ``` 77 | set GD_Population_Midget.Population.LootMidget.PopDef_LootMidget_HyperionMix ActorArchetypeList[0].Probability.BaseValueConstant 0.000000 78 | set GD_Population_Midget.Population.LootMidget.PopDef_LootMidget_HyperionMix ActorArchetypeList[1].Probability.BaseValueConstant 0.000000 79 | set GD_Population_Midget.Population.LootMidget.PopDef_LootMidget_HyperionMix ActorArchetypeList[2].Probability.BaseValueConstant 0.000000 80 | set GD_Population_Midget.Population.LootMidget.PopDef_LootMidget_HyperionMix ActorArchetypeList[3].Probability.BaseValueConstant 0.000000 81 | set GD_Population_Midget.Population.LootMidget.PopDef_LootMidget_HyperionMix ActorArchetypeList[4].Probability.BaseValueConstant 0.000000 82 | set GD_Population_Midget.Population.LootMidget.PopDef_LootMidget_HyperionMix ActorArchetypeList[5].Probability.BaseValueConstant 1.000000 83 | ``` 84 | 85 | And the result is a full room of Jimmys ( ͡° ͜ʖ ͡°) 86 | 87 | ![Jimmy](./images/Jimmy.jpg) 88 | 89 | # Credits 90 | Thanks to Shadows video "Three Things you didn't know about Borderlands 2! Number 2." and his comment there on how to find the populations! -------------------------------------------------------------------------------- /For Beginners.md: -------------------------------------------------------------------------------- 1 | In this guide I want to show people, that are new to this, how I started and what made this whole process a lot easier for me. 2 | 3 | # What you will need 4 | 5 | [Unreal Package Decompressor](http://www.gildor.org/downloads) 6 | 7 | [UE Explorer](http://eliotvu.com/portfolio/view/21/ue-explorer) 8 | 9 | 10 | # 1: Preparing the Files and UE Explorer 11 | 12 | Extract the decompressor and install UE Explorer. 13 | 14 | Copy the two files below from ***\Borderlands 2\WillowGame\CookedPCConsole*** into the folder where the ***decompress.exe*** is located. 15 | 16 | * Startup.upk 17 | * Engine.upk 18 | 19 | Just drag them onto the ***decompress.exe*** now and you should now have a new folder called ***unpacked*** in there. 20 | 21 | These files are the ones you want to open up in UE Explorer. 22 | 23 | # Note: Unfortunately UE Explorer won't show you all objects/classes etc. I'll follow up with a few other methods on how to find more stuff. 24 | 25 | # 2: Using UE Explorer 26 | ### 2.1: Using Startup.upk 27 | 28 | Let's open up the decompressed ***Startup.upk***. 29 | 30 | On the left side at the top, click now on ***Objects*** and below on ***Content***. 31 | 32 | You'll now see a big treeview of all the objects UE Explorer could find. Let's open up 33 | ***GD_Itempools*** for example. 34 | 35 | Now we can see all the objects that are inside of ***GD_Itempools***. 36 | So let's use ***DropWeights*** for example. 37 | 38 | This is the object that contains the ***DropODDS***-Objects. So basically the odds of this object dropping something. 39 | 40 | ![StartupOverview](./images/StartupOverview.png) 41 | 42 | Let's check ***DropODDS_BuffDrinks***. Inside we see two objects. Click on ***ConstantAttributeValueResolver_1*** and on the right side we'll see the property ***ConstantValue*** with a value of ***0.050***. 43 | 44 | Now check the "// Reference:"-line below. 45 | 46 | We can copy almost everything from this to directly use it in the game. 47 | ***GD_Itempools.DropWeights.DropODDS_BuffDrinks.ConstantAttributeValueResolver_1*** in this case. 48 | 49 | So to change the ConstantValue in the game, we can just use this in the console: 50 | 51 | ``` 52 | set GD_Itempools.DropWeights.DropODDS_BuffDrinks.ConstantAttributeValueResolver_1 ConstantValue 0.65 53 | ``` 54 | 55 | ### 2.2: Using Engine.upk 56 | #### Note: Also this won't show you everything there is. You'll find a lot more if you use the console in the game to poke around. This should give you a good basic understanding of what to look for, what you can use and where/when. 57 | 58 | Using UE Explorer with the Engine.upk is a little bit different but revealed a lot more stuff to me. 59 | 60 | Here's a small example. 61 | 62 | First we open it up. Once again we choose ***Objects*** at the top-left. 63 | This time, if we click on ***Content*** we barely get anything. 64 | 65 | BUT, this time we can click on ***Classes*** instead. 66 | 67 | ![Classes](./images/Classes.png) 68 | 69 | Here, we can also actually use the search-function. This is incredibly useful. 70 | You can either click on ***Tools -> Find -> Find in classes*** or press CTRL+Shift+F. Enter any keyword you're looking for. 71 | 72 | For this example I'm just going to open up the class ***Camera*** instead. 73 | 74 | On the right side, you'll now see actual code. 75 | The best things can usually be found at the very bottom of the class. It's basically a list of all the ***defaultproperties*** being used by this class. 76 | 77 | 78 | Let's say we'd like to change the value of ***DefaultFOV***. 79 | 80 | Building the command for this is very easy. 81 | 82 | Take the ***class name***, the ***propertyname*** and the ***value*** you want, type ***set*** in front of it, and you got your command. 83 | 84 | For this example: 85 | 86 | ``` 87 | set Camera DefaultFOV 85.0 88 | ``` 89 | 90 | 91 | ## 2.3: Setting Array-types in UE Explorer 92 | First click on ***Options*** at the top. In this new window click ***Add*** in the top-middle of the window. 93 | 94 | What I've added there is listed at the very bottom of this site. 95 | 96 | How you get these? To be completely honest, I have no idea. :P 97 | 98 | I just played around and ended up with something that apparently works. 99 | So what I ended up doing was this: 100 | 101 | I opened up the ***Startup.upk*** and unfolded the ***GD_Itempools***-entry. 102 | 103 | On the right side you'll see 104 | ``` 105 | Package'GD_Itempools' 106 | ``` 107 | 108 | So, Package is the very first part of our Array-type. Also the very first thing you open up in UE Explorer. 109 | 110 | The next one will be the ***Object***, so for example ***Runnables***. 111 | The orange entry is the ***Class***. So let's click on ***Pool_KingMong***. 112 | 113 | If we have not set up any Array types, we will now see: 114 | 115 | ``` 116 | BalancedItems=/* Array type was not detected. */ 117 | ``` 118 | 119 | Since we want to see the results of ***BalancedItems*** we will choose this as the last path for the Array-type. 120 | 121 | What is left now, is the correct type in the end. Head back into the ***Options***-screen and play around with the Types. After selecting one, the "Group"box above should now have ***:YOURCHOSENTYPE*** behind everything else. Hit ***Save*** on the right side, switch back to the ***Startup.apk***-Tab, click on ***Tools*** below the Tab and ***Reload***. 122 | 123 | You'll see, that ***BalancedItems*** now will show up in a similar way as if you'd have obj dumped it in the game. 124 | 125 | Redo the same thing for other Properties and replace them with ***BalancedItems*** and try out different ***Types*** if needed. 126 | 127 | ***Package.Class.ResourcePools*** worked best with ***:ObjectProperty*** for example. 128 | 129 | 130 | For everything I use, I'll try to keep the list down below updated. 131 | Should you play around with these and see that I chose one that makes less sense with the results, hit me up, so I can fix it. 132 | 133 | # 2.4: My Array-types 134 | 135 | ``` 136 | Package.Object.Class.ValueResolverChain:ObjectProperty 137 | Package.Object.Class.BalancedItems:PointerProperty 138 | Package.Class.ResourcePools:ObjectProperty 139 | Package.Class.InputContexts:PointerProperty 140 | Package.Class.PlayerClassAchievementData:PointerProperty 141 | Package.Class.EligibleUsage:ObjectProperty 142 | Package.Class.OnLevelUp:ObjectProperty 143 | Package.Class.OnLevelUpNaturally:ObjectProperty 144 | Package.Class.Behaviors:ObjectProperty 145 | Package.Class.Behaviors.SkillEffectDefinitions:PointerProperty 146 | Package.Class.ContextResolverChain:ObjectProperty 147 | Package.Class.AssetPaths:PointerProperty 148 | Package.Class.Dependencies:ObjectProperty 149 | Package.Class.Manufacturers:PointerProperty 150 | Package.Class.WeaponAttributeEffects:PointerProperty 151 | Package.Class.ZoomWeaponAttributeEffects:PointerProperty 152 | Package.Class.AttributeSlotUpgrades:PointerProperty 153 | Package.Class.ConsolidatedAttributeInitData:PointerProperty 154 | Package.Class.MaterialPartData.WeightedParts:PointerProperty 155 | Package.Class.ConsolidatedAttributeInitData:PointerProperty 156 | Package.Class.MaterialPartData.WeightedParts:PointerProperty 157 | Package.Class.AttributeStartingValues:PointerProperty 158 | Package.Class.CharacterCustomizations:PointerProperty 159 | Package.Class.WeaponTypes:PointerProperty 160 | Package.Class.GameSettingsCfgList:PointerProperty 161 | Package.Class.Attribute_ExperienceMultiplier.ObjectPropertyAttributeValueResolver_20:PointerProperty 162 | Package.Class.FastTravelStationOrderList:ObjectProperty 163 | Package.Class.UIStatList:PointerProperty 164 | Package.Class.AttributeSlotEffects:PointerProperty 165 | Package.Class.OnChallengeIssued:ObjectProperty 166 | Package.Class.OnDuelStarted:ObjectProperty 167 | Package.Class.OnDuelWinLoss:ObjectProperty 168 | Package.Class.OnDuelDraw:ObjectProperty 169 | Package.Class.DuelTeams:NameProperty 170 | Package.Class.LevelGroups:PointerProperty 171 | Package.Class.LevelGroups.Levels:PointerProperty 172 | Package.Class.Attributes:ObjectProperty 173 | Package.Class.SkillConstraints:PointerProperty 174 | Package.Class.Sublibraries:StrProperty 175 | Package.Class.SublibraryLinks:ObjectProperty 176 | ``` -------------------------------------------------------------------------------- /FunStuff.md: -------------------------------------------------------------------------------- 1 | # Some fun stuff I found to mess with. Default values in the command 2 | 3 | ## Climbing ladders super fast (increase Z-value) 4 | ``` 5 | set LadderVolume ClimbDir (X=0.0,Y=0.0,Z=1.0) 6 | ``` 7 | an easier command for this is 8 | 9 | ``` 10 | set Engine.Pawn LadderSpeed 200 11 | ``` 12 | 13 | ## Change Gravity 14 | ``` 15 | set WorldInfo DefaultGravityZ -500.0 16 | ``` 17 | 18 | ## Speed Up or slow down the game 19 | ``` 20 | set WorldInfo TimeDilation 1.0 21 | ``` 22 | ### Note: This only works when executed in the game. 23 | 24 | ## Speed up EVERYTHING, even the warping screen, main menu etc 25 | 26 | ``` 27 | set GameInfo GameSpeed 1.0 28 | ``` 29 | 30 | # The next 3 commands only last until you either die completely or got out of FFYL. 31 | 32 | ``` 33 | #Set WalkingSpeed for Gunzerker 34 | set CharClass_Mercenary GroundSpeed 440.0 35 | 36 | #Set Jumpheight for Gunzerker 37 | set CharClass_Mercenary JumpZ 630.0 38 | 39 | #Changes Movementspeed during FFYL 40 | set PlayerInjuredDefinition InjuredMovementSpeed 150.0 41 | ``` 42 | 43 | # Modify MovementSpeed permanently 44 | 45 | ``` 46 | set WillowPlayerPawn MovementSpeedModifier 1.5 47 | ``` 48 | 49 | The command above sometimes doesn't work for some reason, even happens as hotfix. 50 | So as a fail-safe I also use all of these as hotfixes 51 | 52 | ``` 53 | GD_Tulip_Mechro_Streaming.Pawn_Mechromancer MovementSpeedModifier 3.0 54 | GD_Mercenary_Streaming.Pawn_Mercenary,MovementSpeedModifier 3.0 55 | GD_Assassin_Streaming.Pawn_Assassin,MovementSpeedModifier 3.0 56 | GD_Siren_Streaming.Pawn_Siren,MovementSpeedModifier 3.0 57 | GD_Lilac_Psycho_Streaming.Pawn_Lilac_Psycho,MovementSpeedModifier 3.0 58 | GD_Soldier_Streaming.Pawn_Soldier,MovementSpeedModifier 3.0 59 | ``` 60 | 61 | # Modify crouchspeed 62 | set Engine.CharacterClassDefinition CrouchedPct 0.5 63 | 64 | # Modify gained Experience 65 | This one will let you instantly level from lvl 1 to 72 with only one kill. 66 | 67 | ``` 68 | set globals BaseEnemyExperienceFormula (BaseValueConstant=100000) 69 | set globals BaseEnemyExperienceFormula (BaseValueScaleConstant=100000000) 70 | 71 | and this one as OnDemand Hotfix (Package = WillowGame) 72 | 73 | set WillowGame.WillowAIPawn ExperiencePointMultiplier 100000 74 | ``` 75 | 76 | Default values are: 77 | ``` 78 | BaseEnemyExperienceFormula=(BaseValueConstant=0.000000,BaseValueAttribute=AttributeDefinition'GD_Balance_Experience.Attributes.Attribute_ExperienceMultiplier',InitializationDefinition=AttributeInitializationDefinition'GD_Balance_Experience.Formulas.Init_BaseEnemyExperience',BaseValueScaleConstant=1.000000) 79 | ``` 80 | & 81 | ``` 82 | ExperiencePointMultiplier=1.000000 83 | ExperiencePointMultiplierBaseValue=1.000000 84 | ``` 85 | 86 | # Extend Max Expvalue 87 | ``` 88 | set D_Resourcepools.PlayerPools.ExperiencePool BaseMaxValue (BaseValueConstant=200000000.0) 89 | ``` 90 | 91 | # Don't get killed when falling of the map 92 | ``` 93 | set PlayerKillVolume bKillPlayers False 94 | ``` 95 | 96 | 97 | # Other general commands, useful to write down 98 | 99 | ``` 100 | getall CustomizationData_Skin HeadMaterial 101 | getall CustomizationData_Skin BodyMaterial 102 | ``` 103 | 104 | Head 105 | Will give you the skin-objects currently loaded. When you play alone, this will only list your Head and Body for example. 106 | 107 | Body 108 | Will give you the skin-objects currently loaded. When you play alone, this will only list your Head and Body for example. 109 | -------------------------------------------------------------------------------- /Hexediting/BL2 Hexedit Readme.txt: -------------------------------------------------------------------------------- 1 | ### Installation ### 2 | Extract both files into the "..\steamapps\common\Borderlands 2\Binaries\Win32" folder. 3 | 4 | 5 | 6 | 7 | ### Informations ### 8 | 9 | Scrolling through the inventory can bug out, like it can for vendors, for example. 10 | 11 | So far these methods have been reported to fix it: 12 | 13 | - Reopen the Inventory 14 | - Use the Arrowkeys 15 | - Switch around items 16 | 17 | ## Eridium: 18 | Select a range from 500 to 2147483647. 19 | 20 | Note: Modifying Eridium with Gibbed, will only show you 200. While getting more than 500 ingame will actually show up as up to 999. Should you get more than 999, it'll still only show 999 but you'll actually have more. 21 | 22 | ## Max Level: 23 | Choose from 72 up to 92. 24 | 25 | ## Backpack: 26 | Choose the max amount of Slots and it's "Spacetrigger". 27 | 28 | Spacetrigger :- The default is 39. This means, once you buy the last backpack SDU, and therefore reaching 39 backpackslots, that's the point where you'll have the chosen Max Slots instead. 29 | 30 | Meaning - if you choose 24 as a Spacetrigger, you'll get your chosen Max Slots once your purchased SDUs would get you 24 slots. Then 24 will be the point where you'll have your chosen slots at. 31 | 32 | Note: Lowering the Spacetrigger from 39 will most likely increase your Slots --TEMPORARILY-- when purchasing another backpack SDU. So these extra-slots will be gone after reopening the game. 33 | 34 | ## Array-Limit 35 | This is usually not needed. 36 | However, people that come across this limit now have an automatic way of patching. 37 | See an example here: 38 | https://github.com/c0dycode/BL2ModStuff/tree/master/Hexediting#removing-the-100-element-limit 39 | 40 | Array-Limit Enabled = Default. The Limit is active! 41 | Array-Limit Disabled = The limit is removed! 42 | 43 | Changelog 44 | # v1.7 45 | ``` 46 | Fixed a small issue that caused weird patching for currencies. 47 | Added a oneclick patch to use console, set-commands and change the ConsoleKey 48 | For future developers/contributors: Also added Fody.Costura and a simple Ini-Library via NuGet. (Sourcecode will be available soon :TM: ) 49 | ``` 50 | 51 | # v1.6 52 | ``` 53 | Swapped the UI to a Dark-Theme and cleaned up a few leftovers. 54 | No changes on any functionality 55 | ``` 56 | 57 | # v1.5 58 | ``` 59 | Fixed an issue regarding the Backpackpatch. This has not affected anyone, since it would only be an issue when you'd have done the latest 60 | backpack-patch manually. These instructions have not been public yet, so chances are basically 0% that you'd have been affected. 61 | ``` 62 | 63 | # v1.4 64 | ``` 65 | Added patching for maximum Money, Seraph Crystals and Torque Tokens (all max out at 2147483647) 66 | ``` 67 | 68 | 69 | # v1.3 70 | ``` 71 | - Added automatic patch for the Array-Limit 72 | See an example here: 73 | https://github.com/c0dycode/BL2ModStuff/tree/master/Hexediting#removing-the-100-element-limit 74 | 75 | - 1-Click-Way to disable/enable Sanity Checks for Weapons 76 | - Added text to see the current version of the tool 77 | ``` -------------------------------------------------------------------------------- /Hexediting/Backpack-Customizer/Backpack Testpatch.zip - OUTDATED: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/c0dycode/BL2ModStuff/a19d1a618a023e104381e74a5edebcb8c229b151/Hexediting/Backpack-Customizer/Backpack Testpatch.zip - OUTDATED -------------------------------------------------------------------------------- /Hexediting/Backpack-Customizer/Backpack-Customizer.zip - OUTDATED: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/c0dycode/BL2ModStuff/a19d1a618a023e104381e74a5edebcb8c229b151/Hexediting/Backpack-Customizer/Backpack-Customizer.zip - OUTDATED -------------------------------------------------------------------------------- /Hexediting/Backpack-Customizer/Readme.md: -------------------------------------------------------------------------------- 1 | ## Introduction 2 | Since I've wanted to get back into programming lately, I've thought about a little standalone tool that allows you to do the hexediting for you and adjust the Backpackslots. 3 | 4 | The same functionality will also be added to the FilterTool by LightChaosman. 5 | 6 | Note: Since this is an early version, make a backup of your exe, just in case ;) 7 | 8 | ## Requirements 9 | Only requirement is the .NET Framework 4.0, which most people should already have installed anyway. 10 | If not, grab it here: https://www.microsoft.com/en-us/download/details.aspx?id=17851 11 | 12 | ## How to use 13 | Just put ***both*** files into the same folder your Borderlands2.exe is in. 14 | Then open up the exe and then there are two possible messages. 15 | 16 | 1. You haven't had any version of the backpack-edits before and the tool will ask you if it should do the patching for you. 17 | 2. You have the first version of the hexedit. The tool will offer you to update it to the second version. 18 | 3. No message, because you already have the latest version of the Hexedit applied :) 19 | 20 | After that, you should be able to adjust the amount of slots accordingly. 21 | Hit the ***Apply*** button to write your changes to the EXE-File. 22 | 23 | ***Spacetrigger*** 24 | The easiest way to explain this one, is to tell you how this whole patch works. 25 | 26 | The game reads your current max backpackspace. If it's ****** then it ***adds*** the given number. If it's not greater or equal *** it does nothing. 27 | 28 | ## Notes 29 | As stated above, this is still an early version. It does not catch any errors yet. 30 | Reverting the patch completely is not an option, yet. As a workaround you should be able to just set it to 0 and hit apply. 31 | 32 | 33 | ## Latest Testpatch 34 | This one uses no "workaround solution" to increase the Backpackspace. 35 | In theory, this should be more stable. It also allows to increase it up to 255 slots instead. That's the limit within this Tool. In theory you could go way past that. 36 | 37 | ``` 38 | Testversion of the Backpack-Slot-Customizer including the newest Backpack-Patch. 39 | 40 | How to use and what to do: 41 | Put into the Win32-folder where your Borderlands2.exe is aswell. 42 | If you have any previous patch installed, let the tool remove it. If you don't, the Messagebox at launch tells you to ***NOT*** install the patch. 43 | 44 | Once the tool is up, check the box for the ***Latest Testpatch*** and set your preferred values. 45 | 46 | Spacetrigger = Have XY slots once you've reached . 47 | 48 | By default, you'll need to have all Backpack-SDUs and then have to save and reload the game. 49 | ``` 50 | 51 | -------------------------------------------------------------------------------- /Hexediting/Outdated - BL2 Hex-Multitool (2).zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/c0dycode/BL2ModStuff/a19d1a618a023e104381e74a5edebcb8c229b151/Hexediting/Outdated - BL2 Hex-Multitool (2).zip -------------------------------------------------------------------------------- /Hexediting/Outdated - BL2 Hex-Multitool Dark Mode.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/c0dycode/BL2ModStuff/a19d1a618a023e104381e74a5edebcb8c229b151/Hexediting/Outdated - BL2 Hex-Multitool Dark Mode.zip -------------------------------------------------------------------------------- /Hexediting/Outdated - BL2 Hex-Multitool.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/c0dycode/BL2ModStuff/a19d1a618a023e104381e74a5edebcb8c229b151/Hexediting/Outdated - BL2 Hex-Multitool.zip -------------------------------------------------------------------------------- /Hexediting/Outdated - Max Levelpatcher.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/c0dycode/BL2ModStuff/a19d1a618a023e104381e74a5edebcb8c229b151/Hexediting/Outdated - Max Levelpatcher.zip -------------------------------------------------------------------------------- /Hexediting/Readme.md: -------------------------------------------------------------------------------- 1 | # Hex Multitool on this site is outdated! 2 | Use the Borderlands Hex Multitool from here instead: 3 | 4 | https://github.com/c0dycode/Borderlands-Hex-Multitool 5 | 6 | # Removing the 100 Element-limit 7 | 8 | Usually you'd only get up to 100 elements per Array. 9 | For example: 10 | 11 | ``` 12 | Attributes(89)=None 13 | Attributes(90)=None 14 | Attributes(91)=None 15 | Attributes(92)=None 16 | Attributes(93)=None 17 | Attributes(94)=None 18 | Attributes(95)=None 19 | Attributes(96)=None 20 | Attributes(97)=None 21 | Attributes(98)=None 22 | Attributes(99)=None 23 | ... 239 more elements 24 | ``` 25 | 26 | To remove this limit, we need to patch the Borderlands2.exe-file. 27 | 28 | To remove the limit itself 29 | 30 | Patch (this one also works for TPS): 31 | ``` 32 | 7E 05 B9 64 00 00 00 3B F9 0F 8D 33 | ``` 34 | to 35 | ``` 36 | 75 05 B9 64 00 00 00 3B F9 0F 8D 37 | ``` 38 | 39 | If you'd also like to remove the message ***... XY more elements*** 40 | 41 | Patch this aswell: 42 | ``` 43 | 0F 8C 7B 00 00 00 8B 8D 9C EE FF FF 83 C0 9D 50 44 | ``` 45 | to 46 | ``` 47 | 0F 85 7B 00 00 00 8B 8D 9C EE FF FF 83 C0 9D 50 48 | ``` 49 | 50 | 51 | ## TPS Specific 52 | To remove the message mentioned above - 53 | patch: 54 | ``` 55 | 7C 7B 8B 8D 94 EE FF FF 56 | ``` 57 | to 58 | ``` 59 | 75 7B 8B 8D 94 EE FF FF 60 | ``` 61 | 62 | 63 | 64 | Here are a few things to test it with 65 | ``` 66 | obj dump GD_AttributePresentation._AttributeList.DefaultPresentationList 67 | obj dump Common_Materials.Creature.Master_CreatureShock 68 | obj dump Common_Materials.Creature.Master_CreatureSlag 69 | obj dump Common_Materials.Environment.Master_Barrel 70 | obj dump Common_Materials.Environment.Master_Rocks 71 | obj dump Common_Materials.Environment.Master_World 72 | obj dump Common_Materials.Environment.Master_WorldMasked 73 | obj dump Common_Materials.Items.Master_ClassMod_02 74 | obj dump Common_Materials.Items.Master_ShieldGrenade 75 | obj dump Common_Materials.Player.Master_Player 76 | obj dump Common_Materials.Weapons.Master_Gun 77 | obj dump FX_WEP_Scopes.Materials.Mat_Scope_Reticle_MS 78 | obj dump GD_AttributePresentation._AttributeList.DefaultPresentationList 79 | obj dump GD_CustomItemPools_MainGame.AllCustomizationsItemPool 80 | ``` 81 | 82 | Thanks to LightChaosman for telling me about this issue :D 83 | 84 | 85 | # Increasing Backpack-Storage 86 | ## Newest and best way 87 | Note: This will allow you to get up to 2147483647 inventoryspace. This will **NOT** be stable. From my testing, the game started to have issues with about 200.000 EMPTY slots. So - as always, use at your own risk. 88 | 89 | Find 90 | ``` 91 | 0C 00 00 00 EB 0A 83 F8 92 | ``` 93 | 94 | For ease of understanding, I'll call each pair of values a **block**. 95 | 96 | From the found **0C** we move 8 blocks forward. We should then be at **27**. 97 | This is the value of, what I call, the **Spacetrigger**. 98 | 99 | This determines if you currently have reached 39 (27 Hex is 39 decimal) Inventoryslots with bought SDUs. 100 | 101 | From here on, move 4 blocks forward again. You should be at another **27**. 102 | This will be your actual backpackspace, once you're at the **Spacetrigger** above. 103 | 104 | By default, you should have 105 | ``` 106 | 27 00 00 00 107 | ``` 108 | 109 | To get the value you need to write here, please refer to the steps below at the Eridium-Patch: https://github.com/c0dycode/BL2ModStuff/tree/master/Hexediting#increasing-max-eridium 110 | 111 | ## Outdated 112 | Find 113 | 114 | ``` 115 | CC CC 8B 81 B8 01 00 00 C3 CC CC CC CC CC CC CC CC CC 116 | ``` 117 | 118 | and replace with 119 | 120 | ``` 121 | CC CC 8B 81 B8 01 00 00 83 C0 05 C3 CC CC CC CC CC CC 122 | ``` 123 | 124 | Replace the ***05*** with the value you want to increase the backpack-storage with (in HEX). 125 | ***The maximum value you can use*** to increase your inventory slots, is ***7F***. 126 | 7F = 127 127 | 128 | You can either use the Windows Calculator to convert from decimal to hex, or simply go to this site: 129 | 130 | http://www.rapidtables.com/convert/number/decimal-to-hex.htm 131 | 132 | The value you use instead of the ***05*** is added to that base-value in the game. So with all upgrades you have 39 slots. If you then use the ***05*** you'll now have 44 slots. 133 | 134 | Should you encounter the bug where you can't scroll anymore, I could fix it by either reopening the inventory or tabbing out and back into the game. 135 | 136 | ***Note***: This will extend your inventoryslots by the given number each time you save and reload the game until you reach 39 slots + the given number. 137 | 138 | ## New method (also Outdated) 139 | 140 | To fix the side-effect noted above, here's a method that checks the amount of slots. Once you've reached 39 slots, your backpackspace will increase by the given number. 141 | 142 | ``` 143 | 8B 81 B8 01 00 00 83 F8 27 7D 01 C3 83 C0 05 C3 144 | ``` 145 | 146 | If you have done the first version-edit before, you'll need to "overwrite" it. 147 | That means: 148 | ``` 149 | CC CC 8B 81 B8 01 00 00 83 C0 05 C3 CC CC CC CC CC CC 150 | ``` 151 | 152 | will become 153 | 154 | ``` 155 | CC CC 8B 81 B8 01 00 00 83 F8 27 74 01 C3 83 C0 05 C3 156 | ``` 157 | 158 | Again, replace the ***05*** with the amount of slots you want to get after reaching max slots. This won't make the Backpack-SDUs useless. 159 | 160 | Thanks to LightChaosman and MediEvilHero for pointing that out :) 161 | 162 | ## Bugreports 163 | - Orudeon told me he couldn't pickup anything although he had 14/23 backpackspace, when the Host didn't have the hexedit. This still needs confirmation, more testing though. (This was with the first version of the edit) 164 | 165 | # Increasing Max Level 166 | 167 | Thanks to Shadow for giving me a few important places that have been found before this patch existed, that eventually lead to me being able to find a working way to patch this! 168 | 169 | ## Newest Version 07-27-2017 170 | The newest version reduces the max level you can set to 92. That's because OP levels work again. 171 | 172 | Also enemies, item-/weapondrops and vendor-items scale now properly. 173 | 174 | ## Previous Versions 175 | ``` 176 | Very first testbuild to change max level up to 100. 177 | 178 | I'm not responsible for exploding friends or corrupting your/their savegames. ¯\_(ツ)_/¯ 179 | 180 | Things tested in multiplayer so far: 181 | - People can join you without the patch, and they will level too. 182 | If and what side-effects this has on their saves, no idea yet. 183 | 184 | - If you're above lvl 72, it looks like you can't join people anymore that 185 | don't have this patch applied. (Constantly sending character infos to the host) 186 | ``` 187 | 188 | ## Instructions 189 | ``` 190 | Put in the Win32-folder where your Borderlands2.exe also is. 191 | ***Backup your saves***, JIC. 192 | 193 | Backing up the exe should not be necessary, since the tool can ***Undo*** the changes. 194 | 195 | Again the Disclaimer: 196 | I'm not responsible for exploding friends or corrupting your/their savegames ¯\_(ツ)_/¯ 197 | Or any issues caused by this patch, for that matter. 198 | ``` 199 | 200 | 201 | ``` 202 | Things tested in multiplayer so far: 203 | - People can join you without the patch, and they will level too. If and what side-effects this has to their saves, no idea yet. 204 | - If you're above lvl 72, it looks like you can't join people anymore that don't have this patch applied. (Constantly sending character infos to the host) 205 | ``` 206 | 207 | ![MaxLVL100](./images/MaxLVL100.png) 208 | 209 | ![XPGainLvl72](./images/XPGainLvl72.png) 210 | 211 | 212 | # Increasing Max Eridium 213 | Find the following Array of bytes: 214 | ``` 215 | FF E0 F5 05 F4 01 00 00 E7 03 00 00 E7 216 | ``` 217 | 218 | To find the correct value you need to use, I highly recommend you use this site: 219 | 220 | https://www.darkfader.net/toolbox/convert/ 221 | Scroll down to ***Integer, IPv4 address, color*** 222 | 223 | The default maximum value is ***500***. 224 | So I'll show you an example with that value. 225 | 226 | ![EridiumValue](./images/EridiumValue.png) 227 | 228 | Enter your preferred number in the upper ***decimal*** box. Marked in red. 229 | This results in the hexadecimal-value ***F4 01 00 00***, marked in green. We need to use the ***little-endian***-format. 230 | 231 | That's what we also find in the Array above. 232 | FF E0 F5 05 ***F4 01 00 00*** E7 03 00 00 E7 233 | 234 | That is the value you need to replace. 235 | 236 | For example: 237 | The decimal value ***750*** results in the hexadecimal-value ***EE 02 00 00***. 238 | 239 | So the final patch would be 240 | 241 | ``` 242 | FF E0 F5 05 EE 02 00 00 E7 03 00 00 E7 243 | ``` 244 | 245 | If you want the absolute maximum (2147483647), 246 | you'd have to use ***FF FF FF 7F***. These will not be displayed though. The UI will only show you 999, but you could check with Cheat Engine for example. 247 | 248 | 249 | # LINUX 250 | Open up the Borderlands2 file with which you open up the game (should be about 36MB in size) in a hexeditor! 251 | 252 | ## Disable SanityChecks 253 | 254 | ### Item SanityCheck-Bypass 255 | ``` 256 | E8 A9 24 17 00 257 | to 258 | 90 90 90 90 90 259 | ``` 260 | 261 | ### Weapon SanityCheck-Bypass 262 | ``` 263 | E8 F7 23 17 00 264 | also to 265 | 90 90 90 90 90 266 | ``` 267 | 268 | -------------------------------------------------------------------------------- /Hexediting/images/EridiumValue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/c0dycode/BL2ModStuff/a19d1a618a023e104381e74a5edebcb8c229b151/Hexediting/images/EridiumValue.png -------------------------------------------------------------------------------- /Hexediting/images/MaxLVL100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/c0dycode/BL2ModStuff/a19d1a618a023e104381e74a5edebcb8c229b151/Hexediting/images/MaxLVL100.png -------------------------------------------------------------------------------- /Hexediting/images/XPGainLvl72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/c0dycode/BL2ModStuff/a19d1a618a023e104381e74a5edebcb8c229b151/Hexediting/images/XPGainLvl72.png -------------------------------------------------------------------------------- /Lootpools.md: -------------------------------------------------------------------------------- 1 | # 1. Find the Lootpool of the specific enemy you want to modify 2 | 3 | Move to the area the enemy spawns in and enter this into the console: 4 | 5 | ``` 6 | getall AIPawnBalanceDefinition Name 7 | ``` 8 | 9 | If you don't want to remember the exact command, you can also just create a new file in "Borderlands 2\Binaries\" 10 | 11 | Remember, you don't need to give it an extension. So you can just create a new .txt file, edit it, and save it/rename it to just "lootpool" for example. 12 | 13 | This way you can just type ***exec lootpool*** instead of ***exec lootpool.txt*** for example. 14 | 15 | In this example I'm in Lynchwood at the Travel Station and want to get the "Sheriff"'s Lootpool. 16 | The command results are the follwing: 17 | 18 | ![Step1](./images/Step1.jpg) 19 | So we found the "Balance" of the "Sheriff". (marked red) 20 | We only need the green marked part though. 21 | 22 | Now we'll ***obj dump*** it. 23 | 24 | So in this example: 25 | ``` 26 | obj dump PawnBalance_Sheriff 27 | ``` 28 | 29 | ![Step2](./images/Step2.jpg) 30 | 31 | For ease of access here's the result we need: 32 | 33 | ``` 34 | DefaultItemPoolList(0)=(ItemPool=ItemPoolDefinition'GD_Sheriff.WeaponPools.Pool_Weapons_SheriffPistols_EnemyUse',PoolProbability=(BaseValueConstant=1.000000,BaseValueAttribute=None,InitializationDefinition=None,BaseValueScaleConstant=1.000000)) 35 | DefaultItemPoolList(1)=(ItemPool=ItemPoolDefinition'GD_ItempoolsEnemyUse.Shields.Pool_Shields_Standard_EnemyUse',PoolProbability=(BaseValueConstant=1.000000,BaseValueAttribute=None,InitializationDefinition=None,BaseValueScaleConstant=1.000000)) 36 | DefaultItemPoolList(2)=(ItemPool=ItemPoolDefinition'GD_Itempools.Runnables.Pool_Sheriff',PoolProbability=(BaseValueConstant=0.000000,BaseValueAttribute=AttributeDefinition'GD_Itempools.DropWeights.DropODDS_BossUniqueRares',InitializationDefinition=None,BaseValueScaleConstant=1.000000)) 37 | ``` 38 | 39 | # 2. Modify the Lootpool 40 | 41 | Since ***DefaultItemPoolList(2)*** is the only one that is not a guaranteed drop everytime, we're going to up the chance a bit. 42 | 43 | The simplest way of modifying the drop chance is: 44 | 45 | ``` 46 | BaseValueConstant x BaseValueScaleConstant = Effective chance for this loot. 47 | ``` 48 | 49 | For the values: 50 | 51 | ``` 52 | 1.000000 = 100 53 | ``` 54 | 55 | ``` 56 | 0.900000 = 90 57 | ``` 58 | 59 | ``` 60 | 0.100000 = 10 61 | ``` 62 | 63 | so, it's easy enough :) 64 | 65 | Let's say we want a guaranteed drop, so let's change 66 | 67 | ``` 68 | GD_Itempools.Runnables.Pool_Sheriff',PoolProbability=(BaseValueConstant=0.000000 69 | ``` 70 | 71 | to 72 | 73 | ``` 74 | GD_Itempools.Runnables.Pool_Sheriff',PoolProbability=(BaseValueConstant=1.000000 75 | ``` 76 | 77 | With this method we can only change this if we include all three pools, that were there by default, into the command. AFAIK changing specifics only works with hotfixes. 78 | 79 | For step three, we take another look at the result of "obj dump PawnBalance_Sheriff" 80 | The orange marked area shows you the execution of the command and the very first line it printed out for us. 81 | We see the class we need for the command (marked red). 82 | 83 | ![Step3](./images/Step3.jpg) 84 | 85 | So we start off our command with 86 | ***set GD_Population_Sheriff.Balance.PawnBalance_Sheriff*** 87 | 88 | Since we want to modify one of the DefaultItemPoolList(x), this will be our variable name. 89 | The syntax is: 90 | 91 | ``` 92 | set 93 | ``` 94 | 95 | (For more information go to https://docs.unrealengine.com/udk/Three/ConsoleCommands.html) 96 | 97 | ``` 98 | set GD_Population_Sheriff.Balance.PawnBalance_Sheriff DefaultItemPoolList 99 | ``` 100 | 101 | We will remove "DefaultItemPoolList(0)=", DefaultItemPoolList(1)= and DefaultItemPoolList(2)= in the command 102 | since we basically recreate the array with the set-command and the command already knows what we want to set at this point with the command. 103 | 104 | That leaves us with: 105 | 106 | ``` 107 | (ItemPool=ItemPoolDefinition'GD_Sheriff.WeaponPools.Pool_Weapons_SheriffPistols_EnemyUse',PoolProbability=(BaseValueConstant=1.000000,BaseValueAttribute=None,InitializationDefinition=None,BaseValueScaleConstant=1.000000)) 108 | (ItemPool=ItemPoolDefinition'GD_ItempoolsEnemyUse.Shields.Pool_Shields_Standard_EnemyUse',PoolProbability=(BaseValueConstant=1.000000,BaseValueAttribute=None,InitializationDefinition=None,BaseValueScaleConstant=1.000000)) 109 | (ItemPool=ItemPoolDefinition'GD_Itempools.Runnables.Pool_Sheriff',PoolProbability=( 110 | BaseValueConstant=1.000000,BaseValueAttribute=AttributeDefinition'GD_Itempools.DropWeights.DropODDS_BossUniqueRares',InitializationDefinition=None,BaseValueScaleConstant=1.000000)) 111 | ``` 112 | 113 | Add a single "(" infront and add this to "set GD_Population_Sheriff.Balance.PawnBalance_Sheriff DefaultItemPoolList" - DONE. 114 | 115 | This is our final command: 116 | 117 | ``` 118 | set GD_Population_Sheriff.Balance.PawnBalance_Sheriff DefaultItemPoolList ((ItemPool=ItemPoolDefinition'GD_Sheriff.WeaponPools.Pool_Weapons_SheriffPistols_EnemyUse',PoolProbability=(BaseValueConstant=1.000000,BaseValueAttribute=None,InitializationDefinition=None,BaseValueScaleConstant=1.000000)),(ItemPool=ItemPoolDefinition'GD_ItempoolsEnemyUse.Shields.Pool_Shields_Standard_EnemyUse',PoolProbability=(BaseValueConstant=1.000000,BaseValueAttribute=None,InitializationDefinition=None,BaseValueScaleConstant=1.000000)),(ItemPool=ItemPoolDefinition'GD_Itempools.Runnables.Pool_Sheriff',PoolProbability=(BaseValueConstant=1.000000,BaseValueAttribute=AttributeDefinition'GD_Itempools.DropWeights.DropODDS_BossUniqueRares',InitializationDefinition=None,BaseValueScaleConstant=1.000000)) 119 | ``` 120 | 121 | Maybe some of you already have noted the ***GD_Itempools.DropWeights.DropODDS_BossUniqueRares***. This also has it's own weight/chance. 122 | We can use 123 | 124 | ``` 125 | obj dump GD_Itempools.DropWeights.DropODDS_BossUniqueRares 126 | ``` 127 | and will get the following result: 128 | 129 | ``` 130 | ValueResolverChain(0)=ConstantAttributeValueResolver'GD_Itempools.DropWeights.DropODDS_BossUniqueRares:ConstantAttributeValueResolver_0' 131 | ``` 132 | 133 | We're using this one, since we're looking for the "Constant Value" of this specific pool. 134 | 135 | So let's use 136 | ``` 137 | obj dump GD_Itempools.DropWeights.DropODDS_BossUniqueRares:ConstantAttributeValueResolver_0 138 | ``` 139 | 140 | The result is: 141 | ``` 142 | === ConstantAttributeValueResolver properties === 143 | ConstantValue=0.330000 144 | ``` 145 | 146 | Since this is a much simpler structure than before (no Array in this case) we can modify this value with a very simple command. 147 | 148 | ``` 149 | set GD_Itempools.DropWeights.DropODDS_BossUniqueRares:ConstantAttributeValueResolver_0 ConstantValue 0.66 150 | ``` 151 | 152 | for example! 153 | 154 | 155 | # Note: 156 | This will not be a "permanent" patch. Execute it everytime you're at the location and you should be good to go. Exiting and re-entering the game counts as Re-Entering the location. Therefore you'll have to execute it again. 157 | 158 | For a "permanent" patch, convert this into a hotfix, with the help of adudney's converter located here: 159 | 160 | https://github.com/adudney/BL2_Converter 161 | 162 | Since this is specifically in Lynchwood, the best matching hotfix-type would be ***SparkLevelPatchEntry*** 163 | 164 | (Thanks again the_Nocturni) 165 | 166 | 167 | # Creating the Hotfix 168 | ## Adudney's converter method 169 | ### Note: This requires you to have the above mentioned converter compiled and working. 170 | ### Scroll down for a different method which doesn't require Rust and any compiling. 171 | 172 | Okay, let's take our final command again 173 | 174 | ``` 175 | set GD_Population_Sheriff.Balance.PawnBalance_Sheriff DefaultItemPoolList ((ItemPool=ItemPoolDefinition'GD_Sheriff.WeaponPools.Pool_Weapons_SheriffPistols_EnemyUse',PoolProbability=(BaseValueConstant=1.000000,BaseValueAttribute=None,InitializationDefinition=None,BaseValueScaleConstant=1.000000)),(ItemPool=ItemPoolDefinition'GD_ItempoolsEnemyUse.Shields.Pool_Shields_Standard_EnemyUse',PoolProbability=(BaseValueConstant=1.000000,BaseValueAttribute=None,InitializationDefinition=None,BaseValueScaleConstant=1.000000)),(ItemPool=ItemPoolDefinition'GD_Itempools.Runnables.Pool_Sheriff',PoolProbability=(BaseValueConstant=1.000000,BaseValueAttribute=AttributeDefinition'GD_Itempools.DropWeights.DropODDS_BossUniqueRares',InitializationDefinition=None,BaseValueScaleConstant=1.000000)) 176 | ``` 177 | 178 | Create a new file where the ***converter.exe*** is located at and call it "sheriff.hotfix". NOT "sheriff.hotfix.txt" :P 179 | 180 | Paste the command above in it. 181 | 182 | Now move above our command and take a look at the Syntax and Types on the converter-page. 183 | Another good resource for this is the wiki :) 184 | 185 | https://github.com/BL2CP/BLCMods/wiki/Tutorial:-Hotfix-Data 186 | 187 | 188 | 189 | If we take a look at the included "base_game.hotfix" we can see what we basically have to do. 190 | For example we see 191 | 192 | ``` 193 | start Level SouthpawFactory_P 194 | set_cmp GD_Population_Marauder.Balance.Unique.PawnBalance_Assassin1 DefaultItemPoolList[3].PoolProbability.BaseValueScaleConstant 0.250000 1 195 | ``` 196 | 197 | Breaking this down we get: 198 | 199 | ``` 200 | start | Level | SouthpawFactory_P 201 | 202 | start of this hotfix-part | Level (this patch will be triggered in a specific level/location) | Travelstation Name. 203 | ``` 204 | 205 | To get the TS-Name use this command. 206 | 207 | ``` 208 | getall LevelTravelStationDefinition StationLevelName 209 | ``` 210 | 211 | We can also use 212 | 213 | ``` 214 | getall LevelTravelStationDefinition DisplayName 215 | ``` 216 | If we just can't find the correct object name, for example: 217 | I was trying to find ***Wildlife Exploitation Preserve*** and just couldn't find it. 218 | This revealed to me, that it's ***GD_LevelTravelStations.Zone2.PandoraParkToCreatureSlaughter*** 219 | So I just ***obj dump*** it and look at the result for ***StationLevelName*** 220 | 221 | ``` 222 | === TravelStationDefinition properties === 223 | StationLevelName=PandoraPark_P 224 | ``` 225 | 226 | And just like in Step1, we choose the value at the end. For this example, this means: 227 | 228 | ``` 229 | Grass_Lynchwood_P 230 | ``` 231 | 232 | It can be a bit of a PITA to find the right one. I don't know any easier way to do it though. Just copy the results out of the console window (if you use the steam "-log" launchparameter), paste it into notepad and use the search-function. 233 | 234 | You can test if you got the correct one by typing ***open Grass_Lynchwood_P*** in the game console, for example. 235 | 236 | 237 | So our first line in the hotfix-file is 238 | 239 | ``` 240 | start Level Grass_Lynchwood_P 241 | ``` 242 | 243 | Now the second line 244 | 245 | ``` 246 | set_cmp | GD_Population_Marauder.Balance.Unique.PawnBalance_Assassin1 | DefaultItemPoolList[3].PoolProbability.BaseValueScaleConstant | 0.250000 | 1 247 | 248 | set_compare | the object where the value is at | "Path" to the final variable we want to "access" | value to check for | value to set it to 249 | ``` 250 | 251 | set_cmp is not really necessary. You can also replace it by ***set*** 252 | 253 | Syntax then would be 254 | 255 | ``` 256 | set 257 | ``` 258 | 259 | 260 | Remember we had to use all three ***DefaultItemPoolList(x)*** entries in our previous command or otherwise we would only keep the one we got in our command? 261 | As you can see in the hotfix-command above, we can now access a specific number in the array. In the case above it's [3]. 262 | 263 | 264 | Since our value we wanted to adjust initially was at DefaultItemPoolList(2) we'll now use 2 here aswell and we do not have to add the other 2 variables before that to keep them. 265 | Remember, accessing the first value would be (0) or in this case [0]. 266 | 267 | So let's build our final commands for the hotfix-file. 268 | 269 | ``` 270 | start Level Grass_Lynchwood_P 271 | set GD_Population_Sheriff.Balance.PawnBalance_Sheriff DefaultItemPoolList[2].PoolProbability.BaseValueConstant 1.0 272 | ``` 273 | 274 | Save the file and drag it onto the converter.exe. 275 | This will output the hotfix-patch-file into hotfix_output.txt. 276 | 277 | Rename and copy this into your Binaries-folder and execute it in the game console. 278 | 279 | Travel to Lynchwood and type in ***obj dump PawnBalance_Sheriff*** again. 280 | 281 | DONE! 282 | 283 | Congratulations, you've created yourself a hotfix-file :) 284 | 285 | And to check against it, here's the final hotfix: 286 | 287 | ``` 288 | set Transient.SparkServiceConfiguration_6 Keys ("SparkLevelPatchEntry-sheriff1") 289 | 290 | set Transient.SparkServiceConfiguration_6 Values ("Grass_Lynchwood_P,GD_Population_Sheriff.Balance.PawnBalance_Sheriff,DefaultItemPoolList[2].PoolProbability.BaseValueConstant,,1.0") 291 | ``` 292 | 293 | ## LightChaosman's UCP FilterTool method 294 | This tool let's you customize the huge UCP-patchfile. Just check and uncheck the mods you want/don't want. 295 | More infos about that can be found in this video by the creator LightChaosman: https://youtu.be/zJ4qI4U_lE0 296 | To always get the most recent version of this tool, head onto shadows discord server and check the #borderlands_mods_to_download channel. 297 | 298 | Open up the ***FilterTool.jar*** and click on ***Misc tools -> Convert .hotfix file*** at the top. 299 | 300 | ![UCPConvert](./images/UCPConvert.png) 301 | 302 | Browse to your ***.hotfix-file*** and hit ***Open***. 303 | 304 | If everything went correctly, a window will pop up and say 305 | ``` 306 | Conversion complete 307 | Conversion complete. Output file: ***XY.hotfix.output*** 308 | ``` 309 | 310 | Now click ***Developer tools -> Add single mod*** at the top, browse to your above generated output file ***XY.hotfix.output*** and hit ***Open***. 311 | ![UCPAddMod](./images/UCPAddMod.png) 312 | 313 | This will import your hotfix into the huge UCP-patchfile. Make sure it's checked, hit CTRL+S to save and you're ready to go and execute it in the main menu. :) 314 | 315 | SHOULD you get any errors after executing the patch-file in the main menu, make sure to wait a few more seconds and try again. Some data may not have been loaded at that point. 316 | 317 | 318 | # Creds :P 319 | 320 | 321 | If there are any mistakes feel free to hit me up on shadow's discord (c0dycode) :) 322 | 323 | Thanks to Shadows Patch and Discord-Community. 324 | 325 | Especially the_Nocturni for explaining a lot of things, also Mike and EarthAries who started that conversation where I could get most of the infos from :P 326 | Also Adudney and LightChaosman for their awesome tools :) -------------------------------------------------------------------------------- /Misc.md: -------------------------------------------------------------------------------- 1 | # Removing Badass Rewards 2 | 3 | Remove the one you do not want from this list: 4 | 5 | ``` 6 | set globals BadassRewards 7 | ( 8 | BadassRewardDefinition'GD_Challenges.BadassRewards.BARD_Health_Max', 9 | BadassRewardDefinition'GD_Challenges.BadassRewards.BARD_Shield_Max', 10 | BadassRewardDefinition'GD_Challenges.BadassRewards.BARD_Shield_RechargeDelay', 11 | BadassRewardDefinition'GD_Challenges.BadassRewards.BARD_Shield_RechargeRate', 12 | BadassRewardDefinition'GD_Challenges.BadassRewards.BARD_Melee_Damage', 13 | BadassRewardDefinition'GD_Challenges.BadassRewards.BARD_Grenade_Damage', 14 | BadassRewardDefinition'GD_Challenges.BadassRewards.BARD_Gun_Accuracy', 15 | BadassRewardDefinition'GD_Challenges.BadassRewards.BARD_Gun_Damage', 16 | BadassRewardDefinition'GD_Challenges.BadassRewards.BARD_Gun_FireRate', 17 | BadassRewardDefinition'GD_Challenges.BadassRewards.BARD_Gun_RecoilReduction', 18 | BadassRewardDefinition'GD_Challenges.BadassRewards.BARD_Gun_ReloadSpeed', 19 | BadassRewardDefinition'GD_Challenges.BadassRewards.BARD_StatusEffect_ProcChance', 20 | BadassRewardDefinition'GD_Challenges.BadassRewards.BARD_StatusEffect_Damage', 21 | BadassRewardDefinition'GD_Challenges.BadassRewards.BARD_CriticalHitDamage' 22 | ) 23 | ``` 24 | 25 | This way they won't show up anymore! 26 | 27 | # TextMarkupDictionary 28 | 29 | getall TextMarkupDictionary Dictionary 30 | 31 | ``` 32 | TextMarkupDictionary GD_Globals.UI.TheTextMarkupDictionary.Dictionary = 33 | (MarkupTag="ClassRequirement",HTMLMarkupBeginText="",HTMLMarkupEndText="",MarkupBeginTag="[ClassRequirement]",MarkupEndTag="[-ClassRequirement]") 34 | (MarkupTag="ClassRequirementNotMet",HTMLMarkupBeginText="",HTMLMarkupEndText="",MarkupBeginTag="[ClassRequirementNotMet]",MarkupEndTag="[-ClassRequirementNotMet]") 35 | (MarkupTag="enemy",HTMLMarkupBeginText="",HTMLMarkupEndText="",MarkupBeginTag="[enemy]",MarkupEndTag="[-enemy]") 36 | (MarkupTag="item",HTMLMarkupBeginText="",HTMLMarkupEndText="",MarkupBeginTag="[item]",MarkupEndTag="[-item]") 37 | (MarkupTag="person",HTMLMarkupBeginText="",HTMLMarkupEndText="",MarkupBeginTag="[person]",MarkupEndTag="[-person]") 38 | (MarkupTag="place",HTMLMarkupBeginText="",HTMLMarkupEndText="",MarkupBeginTag="[place]",MarkupEndTag="[-place]") 39 | (MarkupTag="projectilecount",HTMLMarkupBeginText="",HTMLMarkupEndText="",MarkupBeginTag="[projectilecount]",MarkupEndTag="[-projectilecount]") 40 | (MarkupTag="skill",HTMLMarkupBeginText="",HTMLMarkupEndText="",MarkupBeginTag="[skill]",MarkupEndTag="[-skill]") 41 | (MarkupTag="MissionItem",HTMLMarkupBeginText="",HTMLMarkupEndText="",MarkupBeginTag="[MissionItem]",MarkupEndTag="[-MissionItem]") 42 | (MarkupTag="explosive",HTMLMarkupBeginText="",HTMLMarkupEndText="",MarkupBeginTag="[explosive]",MarkupEndTag="[-explosive]") 43 | (MarkupTag="incendiary",HTMLMarkupBeginText="",HTMLMarkupEndText="",MarkupBeginTag="[incendiary]",MarkupEndTag="[-incendiary]") 44 | (MarkupTag="corrosive",HTMLMarkupBeginText="",HTMLMarkupEndText="",MarkupBeginTag="[corrosive]",MarkupEndTag="[-corrosive]") 45 | (MarkupTag="shock",HTMLMarkupBeginText="",HTMLMarkupEndText="",MarkupBeginTag="[shock]",MarkupEndTag="[-shock]") 46 | (MarkupTag="slag",HTMLMarkupBeginText="",HTMLMarkupEndText="",MarkupBeginTag="[slag]",MarkupEndTag="[-slag]") 47 | (MarkupTag="health",HTMLMarkupBeginText="",HTMLMarkupEndText="",MarkupBeginTag="[health]",MarkupEndTag="[-health]") 48 | (MarkupTag="funstat",HTMLMarkupBeginText="• ",MarkupBeginTag="[funstat]",MarkupEndTag="[-funstat]") 49 | (MarkupTag="blackmarket",HTMLMarkupBeginText="",HTMLMarkupEndText="",MarkupBeginTag="[blackmarket]",MarkupEndTag="[-blackmarket]") 50 | (MarkupTag="alreadyused",HTMLMarkupBeginText="",HTMLMarkupEndText="",MarkupBeginTag="[alreadyused]",MarkupEndTag="[-alreadyused]") 51 | ``` -------------------------------------------------------------------------------- /Mission Names.txt: -------------------------------------------------------------------------------- 1 | 0) MissionDefinition GD_Episode03.M_Ep3_CatchARide.MissionName = The Road to Sanctuary 2 | 1) MissionDefinition GD_Episode04.M_Ep4_WelcomeToSanctuary.MissionName = Plan B 3 | 2) MissionDefinition GD_Episode05.M_Ep5_ThePhoenix.MissionName = Hunting the Firehawk 4 | 3) MissionDefinition GD_Episode07.M_Ep7_ATrainToCatch.MissionName = A Train to Catch 5 | 4) MissionDefinition GD_Episode08.M_Ep8_SanctuaryTakesOff.MissionName = Rising Action 6 | 5) MissionDefinition GD_Episode09.M_Ep9_GetBackToSanctuary.MissionName = Bright Lights, Flying City 7 | 6) MissionDefinition GD_Episode15.M_Ep15_CharacterAssassination.MissionName = Data Mining 8 | 7) MissionDefinition GD_Z2_TheBankJob.M_TheBankJob.MissionName = Breaking the Bank 9 | 8) MissionDefinition GD_Z3_KillYourself.M_KillYourself.MissionName = Kill Yourself 10 | 9) MissionDefinition GD_Z3_ThisJustIn.M_ThisJustIn.MissionName = This Just In 11 | 10) MissionDefinition GD_Episode01.M_Ep1_Champion.MissionName = My First Gun 12 | 11) MissionDefinition GD_Z2_WakeyWakey.M_WakeyWakey.MissionName = Clan War: Wakey Wakey 13 | 12) MissionDefinition GD_Z1_HandsomeJackHere.M_HandsomeJackHere.MissionName = Handsome Jack Here! 14 | 13) MissionDefinition GD_Z1_ThisTown.M_ThisTown.MissionName = This Town Ain't Big Enough 15 | 14) MissionDefinition GD_Episode02.M_Ep2b_Henchman.MissionName = Shielded Favors 16 | 15) MissionDefinition GD_Z1_Symbiosis.M_Symbiosis.MissionName = Symbiosis 17 | 16) MissionDefinition GD_Z2_DefendSlabTower.M_DefendSlabTower.MissionName = Defend Slab Tower 18 | 17) MissionDefinition GD_Z2_MothersDayGift.BalanceDefs.M_MothersDayGift.MissionName = Best Mother's Day Ever 19 | 18) MissionDefinition gd_z2_notetoself.M_NoteToSelf.MissionName = Note for Self-Person 20 | 19) MissionDefinition GD_Z3_Bane.M_Bane.MissionName = The Bane 21 | 20) MissionDefinition GD_Z3_GoodBadMordecai.M_GoodBadMordecai.MissionName = The Good, the Bad, and the Mordecai 22 | 21) MissionDefinition GD_Z3_LostTreasure.M_LostTreasure.MissionName = The Lost Treasure 23 | 22) MissionDefinition GD_Z2_ArmsDealer.M_ArmsDealer.MissionName = Arms Dealing 24 | 23) MissionDefinition GD_Z2_BlowTheBridge.M_BlowTheBridge.MissionName = 3:10 to Kaboom 25 | 24) MissionDefinition GD_Z3_CustomerService.M_CustomerService.MissionName = Customer Service 26 | 25) MissionDefinition gd_z3_neitherrainsleet.M_NeitherRainSleetSkags.MissionName = Neither Rain nor Sleet nor Skags 27 | 26) MissionDefinition GD_Episode02.M_Ep2_Henchman.MissionName = Blindsided 28 | 27) MissionDefinition GD_Episode02.M_Ep2a_MoreGuns.MissionName = Cleaning up the Berg 29 | 28) MissionDefinition GD_Episode02.M_Ep2c_Henchman.MissionName = Best Minion Ever 30 | 29) MissionDefinition GD_Episode06.M_Ep6_RescueRoland.MissionName = A Dam Fine Rescue 31 | 30) MissionDefinition GD_Episode10.M_Ep10_BirdISTheWord.MissionName = Wildlife Preservation 32 | 31) MissionDefinition GD_Episode11.M_Ep11_LikeATonOf.MissionName = The Once and Future Slab 33 | 32) MissionDefinition GD_Episode12.M_Ep12_BecomingJack.MissionName = The Man Who Would Be Jack 34 | 33) MissionDefinition GD_Episode13.M_Ep13_KillAngel.MissionName = Where Angels Fear to Tread 35 | 34) MissionDefinition GD_Episode14.M_Ep14_SearchingTheWreckage.MissionName = Where Angels Fear to Tread (Part 2) 36 | 35) MissionDefinition GD_Episode16.M_Ep16_LockAndLoad.MissionName = Toil and Trouble 37 | 36) MissionDefinition GD_Episode17.M_Ep17_KillJack.MissionName = The Talon of God 38 | 37) MissionDefinition GD_Z1_Assasinate.M_AssasinateTheAssassins.MissionName = Assassinate the Assassins 39 | 38) MissionDefinition GD_Z1_BadHairDay.M_BadHairDay.MissionName = Bad Hair Day 40 | 39) MissionDefinition GD_Z1_BearerBadNews.M_BearerBadNews.MissionName = Bearer of Bad News 41 | 40) MissionDefinition GD_Z1_BFFs.M_BFFs.MissionName = BFFs 42 | 41) MissionDefinition GD_Z1_ChildrenOfPhoenix.M_EternalFlame.MissionName = Cult Following: Eternal Flame 43 | 42) MissionDefinition GD_Z1_ChildrenOfPhoenix.M_LightingTheMatch.MissionName = Cult Following: Lighting the Match 44 | 43) MissionDefinition GD_Z1_ChildrenOfPhoenix.M_TheEnkindling.MissionName = Cult Following: The Enkindling 45 | 44) MissionDefinition GD_Z1_ClapTrapStash.M_ClapTrapStash.MissionName = Claptrap's Secret Stash 46 | 45) MissionDefinition GD_Z1_CordiallyInvited.M_CordiallyInvited.MissionName = You Are Cordially Invited: Party Prep 47 | 46) MissionDefinition GD_Z1_IceManCometh.M_IceManCometh.MissionName = The Ice Man Cometh 48 | 47) MissionDefinition GD_Z1_InMemoriam.M_InMemoriam.MissionName = In Memoriam 49 | 48) MissionDefinition GD_Z1_MightyMorphin.M_MightyMorphin.MissionName = Mighty Morphin' 50 | 49) MissionDefinition GD_Z1_MineAllMine.M_MineAllMine.MissionName = Mine, All Mine 51 | 50) MissionDefinition gd_z1_minecartmischief.M_MinecartMischief.MissionName = Minecart Mischief 52 | 51) MissionDefinition GD_Z1_NameGame.M_NameGame.MissionName = The Name Game 53 | 52) MissionDefinition gd_z1_nohardfeelings.M_NoHardFeelings.MissionName = No Hard Feelings 54 | 53) MissionDefinition GD_Z1_NoVacancy.BalanceDefs.M_NoVacancy.MissionName = No Vacancy 55 | 54) MissionDefinition GD_Z1_PerfectlyPeaceful.M_PerfectlyPeaceful.MissionName = Perfectly Peaceful 56 | 55) MissionDefinition GD_Z1_RockPaperGenocide.M_RockPaperGenocide_Amp.MissionName = Rock, Paper, Genocide: Slag Weapons! 57 | 56) MissionDefinition GD_Z1_RockPaperGenocide.M_RockPaperGenocide_Fire.MissionName = Rock, Paper, Genocide: Fire Weapons! 58 | 57) MissionDefinition GD_Z1_Surgery.M_PerformSurgery.MissionName = Do No Harm 59 | 58) MissionDefinition GD_Z1_TrainRobbery.M_TrainRobbery.MissionName = The Pretty Good Train Robbery 60 | 59) MissionDefinition GD_Z1_WontGetFooled.M_WontGetFooled.MissionName = Won't Get Fooled Again 61 | 60) MissionDefinition GD_Z2_ARealBoy.M_ARealBoy_ArmLeg.MissionName = A Real Boy: Face Time 62 | 61) MissionDefinition GD_Z2_ARealBoy.M_ARealBoy_Clothes.MissionName = A Real Boy: Clothes Make the Man 63 | 62) MissionDefinition GD_Z2_ClaptrapBirthdayBash.M_ClaptrapBirthdayBash.MissionName = Claptrap's Birthday Bash! 64 | 63) MissionDefinition GD_Z2_DuelingBanjos.M_DuelingBanjos.MissionName = Clan War: Zafords vs. Hodunks 65 | 64) MissionDefinition GD_Z2_FreeWilly.M_FreeWilly.MissionName = Animal Rights 66 | 65) MissionDefinition GD_Z2_HellHathNo.M_FloodingHyperionCity.MissionName = Hell Hath No Fury 67 | 66) MissionDefinition GD_Z2_HomeMovies.M_HomeMovies.MissionName = Home Movies 68 | 67) MissionDefinition GD_Z2_HyperionStatue.M_MonumentsVandalism.MissionName = Statuesque 69 | 68) MissionDefinition GD_Z2_KillTheSheriff.M_KillTheSheriff.MissionName = Showdown 70 | 69) MissionDefinition GD_Z2_LuckysDirtyMoney.M_LuckysDirtyMoney.MissionName = Clan War: End of the Rainbow 71 | 70) MissionDefinition GD_Z2_MeetWithEllie.M_MeetWithEllie.MissionName = Clan War: Starting the War 72 | 71) MissionDefinition GD_Z2_Overlooked.M_Overlooked.MissionName = The Overlooked: Medicine Man 73 | 72) MissionDefinition GD_Z2_Overlooked2.M_Overlooked2.MissionName = The Overlooked: Shields Up 74 | 73) MissionDefinition GD_Z2_Overlooked3.M_Overlooked3.MissionName = The Overlooked: This Is Only a Test 75 | 74) MissionDefinition GD_Z2_PoeticLicense.M_PoeticLicense.MissionName = Poetic License 76 | 75) MissionDefinition GD_Z2_RiggedRace.M_RiggedRace.MissionName = Clan War: First Place 77 | 76) MissionDefinition GD_Z2_SafeAndSound.M_SafeAndSound.MissionName = Safe and Sound 78 | 77) MissionDefinition GD_Z2_Skagzilla2.M_Skagzilla2_Den.MissionName = Animal Rescue: Shelter 79 | 78) MissionDefinition GD_Z2_SlapHappy.M_SlapHappy.MissionName = Slap-Happy 80 | 79) MissionDefinition GD_Z2_TaggartBiography.M_TaggartBiography.MissionName = Stalker of Stalkers 81 | 80) MissionDefinition GD_Z2_ThresherRaid.M_ThresherRaid.MissionName = You. Will. Die. (Seriously.) 82 | 81) MissionDefinition GD_Z2_TrailerTrashin.M_TrailerTrashin.MissionName = Clan War: Trailer Trashing 83 | 82) MissionDefinition GD_Z2_WrittenByVictor.M_WrittenByVictor.MissionName = Written by the Victor 84 | 83) MissionDefinition GD_Z3_CaptureTheFlags.M_CaptureTheFlags.MissionName = Capture the Flags 85 | 84) MissionDefinition GD_Z3_ChosenOne.M_ChosenOne.MissionName = The Chosen One 86 | 85) MissionDefinition GD_Z3_ColdShoulder.M_ColdShoulder.MissionName = The Cold Shoulder 87 | 86) MissionDefinition GD_Z3_GrandmotherHouse.M_GrandmotherHouse.MissionName = To Grandmother's House We Go 88 | 87) MissionDefinition GD_Z3_GreatEscape.M_GreatEscape.MissionName = The Great Escape 89 | 88) MissionDefinition GD_Z3_HungryLikeSkag.M_HungryLikeSkag.MissionName = Hungry Like the Skag 90 | 89) MissionDefinition GD_Z3_HyperionContract873.M_HyperionContract873.MissionName = Hyperion Contract #873 91 | 90) MissionDefinition GD_Z3_MedicalMystery.M_MedicalMystery.MissionName = Medical Mystery 92 | 91) MissionDefinition GD_Z3_MedicalMystery2.M_MedicalMystery2.MissionName = Medical Mystery: X-Com-municate 93 | 92) MissionDefinition GD_Z3_OutOfBody.M_OutOfBody.MissionName = Out of Body Experience 94 | 93) MissionDefinition GD_Z3_RobotSlaughter.M_RobotSlaughter_1.MissionName = Hyperion Slaughter: Round 1 95 | 94) MissionDefinition GD_Z3_RobotSlaughter.M_RobotSlaughter_2.MissionName = Hyperion Slaughter: Round 2 96 | 95) MissionDefinition GD_Z3_RobotSlaughter.M_RobotSlaughter_3.MissionName = Hyperion Slaughter: Round 3 97 | 96) MissionDefinition GD_Z3_RobotSlaughter.M_RobotSlaughter_4.MissionName = Hyperion Slaughter: Round 4 98 | 97) MissionDefinition GD_Z3_RobotSlaughter.M_RobotSlaughter_5.MissionName = Hyperion Slaughter: Round 5 99 | 98) MissionDefinition GD_Z3_SwallowedWhole.M_SwallowedWhole.MissionName = Swallowed Whole 100 | 99) MissionDefinition gd_z3_toocloseformissiles.M_TooCloseForMissiles.MissionName = Too Close For Missiles 101 | 100) MissionDefinition GD_Z3_UncleTeddy.M_UncleTeddy.MissionName = Uncle Teddy 102 | 101) MissionDefinition GD_Z3_YouDontKnowJack.M_YouDontKnowJack.MissionName = Get to Know Jack 103 | 102) MissionDefinition GD_Z1_CordiallyInvited.M_CordiallyInvited03.MissionName = You Are Cordially Invited: Tea Party 104 | 103) MissionDefinition GD_Z1_CordiallyInvited.M_CordiallyInvited02.MissionName = You Are Cordially Invited: RSVP 105 | 104) MissionDefinition GD_Z1_RockPaperGenocide.M_RockPaperGenocide_Corrosive.MissionName = Rock, Paper, Genocide: Corrosive Weapons! 106 | 105) MissionDefinition GD_Z1_RockPaperGenocide.M_RockPaperGenocide_Shock.MissionName = Rock, Paper, Genocide: Shock Weapons! 107 | 106) MissionDefinition GD_Z2_Skagzilla2.M_Skagzilla2_Pup.MissionName = Animal Rescue: Medicine 108 | 107) MissionDefinition GD_Z2_SplinterGroup.M_SplinterGroup.MissionName = Splinter Group 109 | 108) MissionDefinition GD_Z1_ShootMeInTheFace.M_ShootMeInTheFace.MissionName = Shoot This Guy in the Face 110 | 109) MissionDefinition GD_Z1_BanditSlaughter.M_BanditSlaughter1.MissionName = Bandit Slaughter: Round 1 111 | 110) MissionDefinition GD_Z1_BanditSlaughter.M_BanditSlaughter2.MissionName = Bandit Slaughter: Round 2 112 | 111) MissionDefinition GD_Z1_BanditSlaughter.M_BanditSlaughter3.MissionName = Bandit Slaughter: Round 3 113 | 112) MissionDefinition GD_Z1_BanditSlaughter.M_BanditSlaughter4.MissionName = Bandit Slaughter: Round 4 114 | 113) MissionDefinition GD_Z1_BanditSlaughter.M_BanditSlaughter5.MissionName = Bandit Slaughter: Round 5 115 | 114) MissionDefinition GD_Z2_CreatureSlaughter.M_CreatureSlaughter_1.MissionName = Creature Slaughter: Round 1 116 | 115) MissionDefinition GD_Z2_CreatureSlaughter.M_CreatureSlaughter_2.MissionName = Creature Slaughter: Round 2 117 | 116) MissionDefinition GD_Z2_CreatureSlaughter.M_CreatureSlaughter_3.MissionName = Creature Slaughter: Round 3 118 | 117) MissionDefinition GD_Z2_CreatureSlaughter.M_CreatureSlaughter_4.MissionName = Creature Slaughter: Round 4 119 | 118) MissionDefinition GD_Z2_CreatureSlaughter.M_CreatureSlaughter_5.MissionName = Creature Slaughter: Round 5 120 | 119) MissionDefinition GD_Z3_MonsterMash1.M_MonsterMash1.MissionName = Monster Mash (Part 1) 121 | 120) MissionDefinition GD_Z3_MonsterMash2.M_MonsterMash2.MissionName = Monster Mash (Part 2) 122 | 121) MissionDefinition GD_Z3_MonsterMash3.M_MonsterMash3.MissionName = Monster Mash (Part 3) 123 | 122) MissionDefinition GD_Z1_HiddenJournalsFurniture.M_HiddenJournalsFurniture.MissionName = Torture Chairs 124 | 123) MissionDefinition GD_Z2_DoctorsOrders.M_DoctorsOrders.MissionName = Doctor's Orders 125 | 124) MissionDefinition GD_Z2_Rakkaholics.M_Rakkaholics.MissionName = Rakkaholics Anonymous 126 | 125) MissionDefinition GD_Z3_HiddenJournals.M_HiddenJournals.MissionName = Hidden Journals 127 | 126) MissionDefinition GD_Z3_PositiveSelfImage.M_PositiveSelfImage.MissionName = Positive Self Image 128 | 127) MissionDefinition GD_Z1_ChildrenOfPhoenix.M_FalseIdols.MissionName = Cult Following: False Idols 129 | 128) MissionDefinition GD_Z2_LuckysDirtyMoney.M_FamFeudDeadDrop.MissionName = Clan War: Reach the Dead Drop 130 | 129) MissionDefinition GD_Z2_ARealBoy.M_ARealBoy_Human.MissionName = A Real Boy: Human 131 | 130) MissionDefinition GD_Z2_DemonHunter.M_DemonHunter.MissionName = Demon Hunter 132 | 131) MissionDefinition GD_Z2_RockosModernStrife.M_RockosModernStrife.MissionName = Rocko's Modern Strife 133 | 132) MissionDefinition GD_Z2_Skagzilla2.M_Skagzilla2_Adult.MissionName = Animal Rescue: Food 134 | 133) MissionDefinition GD_Allium_KillSnowman.M_KillSnowman.MissionName = Get Frosty 135 | 134) MissionDefinition GD_Allium_TG_Plot_Mission01.M_Allium_ThanksgivingMission01.MissionName = The Hunger Pangs 136 | 135) MissionDefinition GD_Allium_Delivery.M_Delivery.MissionName = Special Delivery 137 | 136) MissionDefinition GD_Allium_GrandmaFlexington.M_ListenToGrandma.MissionName = Grandma Flexington's Story 138 | 137) MissionDefinition GD_Allium_Side_GrandmaRaid.M_ListenToGrandmaRaid.MissionName = Grandma Flexington's Story: Raid Difficulty 139 | 138) MissionDefinition GD_Aster_Plot_Mission01.M_Aster_PlotMission01.MissionName = A Role-Playing Game 140 | 139) MissionDefinition GD_Aster_Plot_Mission03.M_Aster_PlotMission03.MissionName = Dwarven Allies 141 | 140) MissionDefinition GD_Aster_AmuletDoNothing.M_AmuletDoNothing.MissionName = The Amulet 142 | 141) MissionDefinition GD_Aster_ClaptrapApprentice.M_ClaptrapApprentice.MissionName = The Claptrap's Apprentice 143 | 142) MissionDefinition GD_Aster_ClapTrapBeard.M_ClapTrapBeard.MissionName = The Beard Makes The Man 144 | 143) MissionDefinition GD_Aster_ClaptrapWand.M_WandMakesTheMan.MissionName = My Kingdom for a Wand 145 | 144) MissionDefinition GD_Aster_CriticalFail.M_CriticalFail.MissionName = Critical Fail 146 | 145) MissionDefinition GD_Aster_DeadBrother.M_MyDeadBrother.MissionName = My Dead Brother 147 | 146) MissionDefinition GD_Aster_DemonicSouls.M_DemonicSouls.MissionName = Lost Souls 148 | 147) MissionDefinition GD_Aster_EllieDress.M_EllieDress.MissionName = Ell in Shining Armor 149 | 148) MissionDefinition GD_Aster_FakeGeekGuy.M_FakeGeekGuy.MissionName = Fake Geek Guy 150 | 149) MissionDefinition GD_Aster_FeedButtStallion.M_FeedButtStallion.MissionName = Feed Butt Stallion 151 | 150) MissionDefinition GD_Aster_LootNinja.M_LootNinja.MissionName = Loot Ninja 152 | 151) MissionDefinition GD_Aster_MMORPGFPS.M_MMORPGFPS.MissionName = MMORPGFPS 153 | 152) MissionDefinition GD_Aster_PetButtStallion.M_PettButtStallion.MissionName = Pet Butt Stallion 154 | 153) MissionDefinition GD_Aster_Plot_Mission02.M_Aster_PlotMission02.MissionName = Denial, Anger, Initiative 155 | 154) MissionDefinition GD_Aster_Plot_Mission04.M_Aster_PlotMission04.MissionName = A Game of Games 156 | 155) MissionDefinition GD_Aster_Post-Crumpocalyptic.M_Post-Crumpocalyptic.MissionName = Post-Crumpocalyptic 157 | 156) MissionDefinition GD_Aster_RaidBoss.M_Aster_RaidBoss.MissionName = Raiders of the Last Boss 158 | 157) MissionDefinition GD_Aster_RollInsight.M_RollInsight.MissionName = Roll Insight 159 | 158) MissionDefinition GD_Aster_TreeHugger.M_TreeHugger.MissionName = Tree Hugger 160 | 159) MissionDefinition GD_Aster_WinterIsComing.M_WinterIsComing.MissionName = Winter is a Bloody Business 161 | 160) MissionDefinition GD_Aster_TempleSlaughter.M_TempleSlaughter1.MissionName = Magic Slaughter: Round 1 162 | 161) MissionDefinition GD_Aster_TempleSlaughter.M_TempleSlaughter2.MissionName = Magic Slaughter: Round 2 163 | 162) MissionDefinition GD_Aster_TempleSlaughter.M_TempleSlaughter3.MissionName = Magic Slaughter: Round 3 164 | 163) MissionDefinition GD_Aster_TempleSlaughter.M_TempleSlaughter4.MissionName = Magic Slaughter: Round 4 165 | 164) MissionDefinition GD_Aster_TempleSlaughter.M_TempleSlaughter5.MissionName = Magic Slaughter: Round 5 166 | 165) MissionDefinition GD_Aster_TempleSlaughter.M_TempleSlaughter6Badass.MissionName = Magic Slaughter: Badass Round 167 | 166) MissionDefinition GD_Aster_TempleTower.M_TempleTower.MissionName = The Magic of Childhood 168 | 167) MissionDefinition GD_Aster_TempleSlaughter.M_TempleSlaughterIntro.MissionName = Find Murderlin's Temple 169 | 168) MissionDefinition GD_Aster_SwordInStone.M_SwordInStoner.MissionName = The Sword in The Stoner 170 | 169) MissionDefinition GD_FlaxMissions.M_BloodHarvest.MissionName = The Bloody Harvest 171 | 170) MissionDefinition GD_FlaxMissions.M_TrickOrTreat.MissionName = Trick or Treat 172 | 171) MissionDefinition GD_IrisEpisode01.M_IrisEp1_HighwayToHell.MissionName = Highway To Hell 173 | 172) MissionDefinition GD_IrisEpisode02_Battle.M_IrisEp2Battle_CoP2.MissionName = Tier 2 Battle: Appetite for Destruction 174 | 173) MissionDefinition GD_IrisEpisode02_Battle.M_IrisEp2Battle_CoP3.MissionName = Tier 3 Battle: Appetite for Destruction 175 | 174) MissionDefinition GD_IrisEpisode02_Battle.M_IrisEp2Battle_CoPR3.MissionName = Tier 3 Rematch: Appetite for Destruction 176 | 175) MissionDefinition GD_IrisEpisode03_Battle.M_IrisEp3Battle_BarFight2.MissionName = Tier 2 Battle: Bar Room Blitz 177 | 176) MissionDefinition GD_IrisEpisode03_Battle.M_IrisEp3Battle_BarFight3.MissionName = Tier 3 Battle: Bar Room Blitz 178 | 177) MissionDefinition GD_IrisEpisode03_Battle.M_IrisEp3Battle_BarFight.MissionName = Battle: Bar Room Blitz 179 | 178) MissionDefinition GD_IrisEpisode03_Battle.M_IrisEp3Battle_BarFightR3.MissionName = Tier 3 Rematch: Bar Room Blitz 180 | 179) MissionDefinition GD_IrisEpisode04_Battle.M_IrisEp4Battle_Race2.MissionName = Tier 2 Battle: The Death Race 181 | 180) MissionDefinition GD_IrisEpisode04_Battle.M_IrisEp4Battle_Race4.MissionName = Tier 3 Battle: The Death Race 182 | 181) MissionDefinition GD_IrisEpisode04_Battle.M_IrisEp4Battle_Race.MissionName = Battle: The Death Race 183 | 182) MissionDefinition GD_IrisEpisode04_Battle.M_IrisEp4Battle_RaceR4.MissionName = Tier 3 Rematch: The Death Race 184 | 183) MissionDefinition GD_IrisEpisode05_Battle.M_IrisEp5Battle_FlyboyGyro2.MissionName = Tier 2 Battle: Twelve O' Clock High 185 | 184) MissionDefinition GD_IrisEpisode05_Battle.M_IrisEp5Battle_FlyboyGyro3.MissionName = Tier 3 Battle: Twelve O' Clock High 186 | 185) MissionDefinition GD_IrisEpisode05_Battle.M_IrisEp5Battle_FlyboyGyro.MissionName = Battle: Twelve O' Clock High 187 | 186) MissionDefinition GD_IrisEpisode05_Battle.M_IrisEp5Battle_FlyboyGyroR3.MissionName = Tier 3 Rematch: Twelve O' Clock High 188 | 187) MissionDefinition GD_IrisDL2_DontTalkAbtMama.M_IrisDL2_DontTalkAbtMama.MissionName = Mother-Lover 189 | 188) MissionDefinition GD_IrisDL2_PumpkinHead.M_IrisDL2_PumpkinHead.MissionName = Number One Fan 190 | 189) MissionDefinition GD_IrisDL3_CommAppeal.M_IrisDL3_CommAppeal.MissionName = Commercial Appeal 191 | 190) MissionDefinition GD_IrisDL3_MySkag.M_IrisDL3_MySkag.MissionName = My Husband the Skag 192 | 191) MissionDefinition GD_IrisDL3_PSYouSuck.M_IrisDL3_PSYouSuck.MissionName = Say That To My Face 193 | 192) MissionDefinition GD_IrisEpisode01.M_IrisEp1_WTTJ.MissionName = Welcome To The Jungle 194 | 193) MissionDefinition GD_IrisEpisode02.M_IrisEp2_CultOfPersonality.MissionName = Battle: Appetite for Destruction 195 | 194) MissionDefinition GD_IrisEpisode02.M_IrisEp2_FindBattle.MissionName = Burn, Baby, Burn 196 | 195) MissionDefinition GD_IrisEpisode03.M_IrisEp3_ChopSuey.MissionName = Chop Suey 197 | 196) MissionDefinition GD_IrisEpisode04.M_IrisEp4_AMontage.MissionName = A Montage 198 | 197) MissionDefinition GD_IrisEpisode04.M_IrisEp4_CherryBomb.MissionName = Get Your Motor Running 199 | 198) MissionDefinition GD_IrisEpisode04.M_IrisEp4_TrainningWithTina.MissionName = Eat Cookies and Crap Thunder 200 | 199) MissionDefinition GD_IrisEpisode05.M_HeavensDoor.MissionName = Knockin' on Heaven's Door 201 | 200) MissionDefinition GD_IrisEpisode05.M_IrisEp5_CageMatch.MissionName = Breaking and Entering 202 | 201) MissionDefinition GD_IrisEpisode05.M_IrisEp5_KickStartMyHeart.MissionName = Kickstart My Heart 203 | 202) MissionDefinition GD_IrisEpisode06.M_IrisEp6_LongWayToTheTop.MissionName = Long Way To The Top 204 | 203) MissionDefinition GD_IrisHUB_GasGuzzlers.M_IrisHUB_GasGuzzlers.MissionName = Gas Guzzlers 205 | 204) MissionDefinition GD_IrisHUB_MatterOfTaste.M_IrisHUB_MatterOfTaste.MissionName = Matter Of Taste 206 | 205) MissionDefinition GD_IrisHUB_MonsterHunter.M_IrisHUB_MonsterHunter.MissionName = Monster Hunter 207 | 206) MissionDefinition GD_IrisHUB_SmackTalk.M_IrisHUB_SmackTalk.MissionName = Interview with a Vault Hunter 208 | 207) MissionDefinition GD_IrisHUB_WalkTheDog.M_IrisHUB_WalkTheDog.MissionName = Walking the Dog 209 | 208) MissionDefinition GD_IrisRaidBoss.M_Iris_RaidPete.MissionName = Pete the Invincible 210 | 209) MissionDefinition GD_IrisDL2_ProductRecall.M_IrisDL2_ProductRecall.MissionName = Totally Recall 211 | 210) MissionDefinition GD_IrisHUB_Wanted.M_IrisHUB_Wanted.MissionName = Everybody Wants to be Wanted 212 | 211) MissionDefinition GD_Lobelia_TestingZone.M_TestingZone.MissionName = A History of Simulated Violence 213 | 212) MissionDefinition GD_Lobelia_TestingZone.M_TestingZoneRepeatable.MissionName = More History of Simulated Violence 214 | 213) MissionDefinition GD_Lobelia_UnlockDoor.M_Lobelia_UnlockDoor.MissionName = Dr. T and the Vault Hunters 215 | 214) MissionDefinition GD_Nast_Easter_Plot_M01.M_Nast_Easter.MissionName = Fun, Sun, and Guns 216 | 215) MissionDefinition GD_Nast_Vday_Mission_Plot.M_Nast_Vday.MissionName = A Match Made on Pandora 217 | 216) MissionDefinition GD_Nast_Easter_Mission_Side01.M_Nast_Easter_Side01.MissionName = Victims of Vault Hunters 218 | 217) MissionDefinition GD_Nast_Vday_Mission_Side01.M_Nast_Vday_Side01.MissionName = Learning to Love 219 | 218) MissionDefinition GD_Orchid_Plot.M_Orchid_PlotMission01.MissionName = A Warm Welcome 220 | 219) MissionDefinition GD_Orchid_SM_Message.M_Orchid_MessageInABottle2.MissionName = Message in a Bottle 221 | 220) MissionDefinition GD_Orchid_SM_Message.M_Orchid_MessageInABottle3.MissionName = Message in a Bottle 222 | 221) MissionDefinition GD_Orchid_SM_Message.M_Orchid_MessageInABottle4.MissionName = Message in a Bottle 223 | 222) MissionDefinition GD_Orchid_SM_Message.M_Orchid_MessageInABottle6.MissionName = Message In A Bottle 224 | 223) MissionDefinition GD_Orchid_Plot_Mission02.M_Orchid_PlotMission02.MissionName = My Life For A Sandskiff 225 | 224) MissionDefinition GD_Orchid_Plot_Mission03.M_Orchid_PlotMission03.MissionName = A Study in Scarlett 226 | 225) MissionDefinition GD_Orchid_Plot_Mission04.M_Orchid_PlotMission04.MissionName = Two Easy Pieces 227 | 226) MissionDefinition GD_Orchid_Plot_Mission05.M_Orchid_PlotMission05.MissionName = The Hermit 228 | 227) MissionDefinition GD_Orchid_Plot_Mission06.M_Orchid_PlotMission06.MissionName = Crazy About You 229 | 228) MissionDefinition GD_Orchid_Plot_Mission07.M_Orchid_PlotMission07.MissionName = Whoops 230 | 229) MissionDefinition GD_Orchid_Plot_Mission08.M_Orchid_PlotMission08.MissionName = Let There Be Light 231 | 230) MissionDefinition GD_Orchid_Plot_Mission09.M_Orchid_PlotMission09.MissionName = X Marks The Spot 232 | 231) MissionDefinition GD_Orchid_SM_BuryPast.M_Orchid_BuryingThePast.MissionName = Burying the Past 233 | 232) MissionDefinition GD_Orchid_SM_Deserters.M_Orchid_Deserters.MissionName = Just Desserts for Desert Deserters 234 | 233) MissionDefinition GD_Orchid_SM_EndGameClone.M_Orchid_EndGame.MissionName = Treasure of the Sands 235 | 234) MissionDefinition GD_Orchid_SM_FireWater.M_Orchid_FireWater.MissionName = Fire Water 236 | 235) MissionDefinition GD_Orchid_SM_Freedom.M_Orchid_FreedomOfSpeech.MissionName = Freedom of Speech 237 | 236) MissionDefinition GD_Orchid_SM_KnowIt.M_Orchid_KnowItWhenSeeIt.MissionName = I Know It When I See It 238 | 237) MissionDefinition GD_Orchid_SM_Race.M_Orchid_Race.MissionName = Faster Than the Speed of Love 239 | 238) MissionDefinition GD_Orchid_SM_Smells.M_Orchid_SmellsLikeVictory.MissionName = Smells Like Victory 240 | 239) MissionDefinition GD_Orchid_SM_Wingman.M_Orchid_Wingman.MissionName = Wingman 241 | 240) MissionDefinition GD_Orchid_SM_JockoLegUp.M_Orchid_JockoLegUp.MissionName = Giving Jocko A Leg Up 242 | 241) MissionDefinition GD_Orchid_SM_FloppyCopy.M_Orchid_DontCopyThatFloppy.MissionName = Don't Copy That Floppy 243 | 242) MissionDefinition GD_Orchid_SM_Message.M_Orchid_MessageInABottle1.MissionName = Message in a Bottle 244 | 243) MissionDefinition GD_Orchid_Raid.M_Orchid_Raid1.MissionName = Hyperius the Invincible 245 | 244) MissionDefinition GD_Orchid_Raid.M_Orchid_Raid3.MissionName = Master Gee the Invincible 246 | 245) MissionDefinition GD_Orchid_SM_Scurvy.M_Orchid_ScurvyDogs.MissionName = Ye Scurvy Dogs 247 | 246) MissionDefinition GD_Orchid_SM_Declaration.M_Orchid_DeclarationAgainstIndependents.MissionName = Declaration Against Independents 248 | 247) MissionDefinition GD_Orchid_SM_Grendel.M_Orchid_Grendel.MissionName = Grendel 249 | 248) MissionDefinition GD_Orchid_SM_MansBestFriend.M_Orchid_MansBestFriend.MissionName = Man's Best Friend 250 | 249) MissionDefinition GD_Orchid_SM_Tetanus.M_Orchid_CatchRideTetanus.MissionName = Catch-A-Ride, and Also Tetanus 251 | 250) MissionDefinition GD_Sage_Ep1.M_Sage_Mission01.MissionName = Savage Lands 252 | 251) MissionDefinition GD_Sage_Ep3.M_Sage_Mission03.MissionName = Professor Nakayama, I Presume? 253 | 252) MissionDefinition GD_Sage_Ep4.M_Sage_Mission04.MissionName = A-Hunting We Will Go 254 | 253) MissionDefinition GD_Sage_Ep5.M_Sage_Mission05.MissionName = The Fall of Nakayama 255 | 254) MissionDefinition GD_Sage_SM_AcquiredTaste.M_Sage_AcquiredTaste.MissionName = An Acquired Taste 256 | 255) MissionDefinition GD_Sage_SM_BigFeet.M_Sage_BigFeet.MissionName = Big Feet 257 | 256) MissionDefinition GD_Sage_SM_BorokCage.M_Sage_BorokCage.MissionName = Still Just a Borok in a Cage 258 | 257) MissionDefinition GD_Sage_SM_DahliaMurder.M_Sage_DahliaMurder.MissionName = The Rakk Dahlia Murder 259 | 258) MissionDefinition GD_Sage_SM_EggOnFace.M_Sage_EggOnFace.MissionName = Egg on Your Face 260 | 259) MissionDefinition GD_Sage_SM_FollowGlow.M_Sage_FollowGlow.MissionName = Follow The Glow 261 | 260) MissionDefinition GD_Sage_SM_Nakarama.M_Sage_Nakayamarama.MissionName = Nakayama-rama 262 | 261) MissionDefinition GD_Sage_SM_NowYouSeeIt.M_Sage_NowYouSeeIt.MissionName = Now You See It 263 | 262) MissionDefinition GD_Sage_SM_OldPukey.M_Sage_OldPukey.MissionName = Ol' Pukey 264 | 263) MissionDefinition GD_Sage_SM_PallingAround.M_Sage_PallingAround.MissionName = Palling Around 265 | 264) MissionDefinition GD_Sage_SM_RareSpawns.M_Sage_RareSpawns.MissionName = I Like My Monsters Rare 266 | 265) MissionDefinition GD_Sage_SM_Urine.M_Sage_Urine.MissionName = Urine, You're Out 267 | 266) MissionDefinition GD_Sage_Raid.M_Sage_Raid.MissionName = Voracidous the Invincible -------------------------------------------------------------------------------- /ModResources/DLC Packagedefinitions and Names.txt: -------------------------------------------------------------------------------- 1 | Log: 0) DownloadablePackageDefinition GD_AlliumPackageDef.PackageDef_Allium.PackageDisplayName = Headhunter Pack Content 2 | Log: 1) DownloadablePackageDefinition GD_AsterPackageDef.PackageDef_Aster.PackageDisplayName = Dragon Keep 3 | Log: 2) DownloadablePackageDefinition GD_CommDay2013PackageDef.PackageDef_CommDay2013.PackageDisplayName = Community Day 2013 Customizations 4 | Log: 3) DownloadablePackageDefinition GD_FlaxPackageDef.PackageDef_Flax.PackageDisplayName = Bloody Harvest 5 | Log: 4) DownloadablePackageDefinition GD_Gardenia01PackageDef.PackageDef_Gardenia01.PackageDisplayName = Costume Pack 6 | Log: 5) DownloadablePackageDefinition GD_Gardenia04PackageDef.PackageDef_Gardenia04.PackageDisplayName = Costume Pack 2 7 | Log: 6) DownloadablePackageDefinition GD_Gardenia05PackageDef.PackageDef_Gardenia05.PackageDisplayName = Costume Pack 3 8 | Log: 7) DownloadablePackageDefinition GD_GladiolusPackageDef.PackageDef_Gladiolus.PackageDisplayName = Ultimate Upgrade Pack 9 | Log: 8) DownloadablePackageDefinition GD_LobeliaPackageDef.PackageDef_Lobelia.PackageDisplayName = Ultimate Upgrade Pack 2 10 | Log: 9) DownloadablePackageDefinition GD_IrisPackageDef.PackageDef_Iris.PackageDisplayName = Campaign of Carnage 11 | Log: 10) DownloadablePackageDefinition GD_LilacPackageDef.PackageDef_Lilac.PackageDisplayName = Psycho Pack 12 | Log: 11) DownloadablePackageDefinition GD_LootChest2PackageDef.PackageDef_LootChest2.PackageDisplayName = Loot Chest 2 customizations 13 | Log: 12) DownloadablePackageDefinition GD_NasturtiumPackageDef.PackageDef_Nasturtium.PackageDisplayName = Additional Headhunter Pack Content 14 | Log: 13) DownloadablePackageDefinition GD_OrchidPackageDef.PackageDef_Orchid.PackageDisplayName = Pirate's Booty 15 | Log: 14) DownloadablePackageDefinition GD_PeonyPackageDef.PackageDef_Peony.PackageDisplayName = Peony 16 | Log: 15) DownloadablePackageDefinition GD_PN2PackageDef.PackageDef_PN2.PackageDisplayName = Poker Night at the Inventory 2 Customizations 17 | Log: 16) DownloadablePackageDefinition GD_SagePackageDef.PackageDef_Sage.PackageDisplayName = Hammerlock's Hunt 18 | Log: 17) DownloadablePackageDefinition GD_TulipPackageDef.PackageDef_Tulip.PackageDisplayName = Mechromancer -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Overview of the stuff you'll find here 2 | 3 | * ## For Beginners 4 | * #### [What you will need](https://github.com/c0dycode/BL2ModStuff/blob/master/For%20Beginners.md#what-you-will-need) 5 | * #### [1: Preparing the Files](https://github.com/c0dycode/BL2ModStuff/blob/master/For%20Beginners.md#step-1) 6 | * #### [2: Using UE Explorer](https://github.com/c0dycode/BL2ModStuff/blob/master/For%20Beginners.md#using-ue-explorer) 7 | * #### [2.1: Using Startup.upk](https://github.com/c0dycode/BL2ModStuff/blob/master/For%20Beginners.md#using-startupupk) 8 | * #### [2.2: Using Engine.upk](https://github.com/c0dycode/BL2ModStuff/blob/master/For%20Beginners.md#using-engineupk) 9 | * #### [2.3: Setting Array-types in UE Explorer](https://github.com/c0dycode/BL2ModStuff/blob/master/For%20Beginners.md#23-setting-array-types-in-ue-explorer) 10 | * #### [2.4: My Array-types](https://github.com/c0dycode/BL2ModStuff/blob/master/For%20Beginners.md#my-array-types) 11 | 12 | * ## My Autohotkey-Autoexec-Tool/Script 13 | * #### [Introduction](https://github.com/c0dycode/BL2ModStuff/tree/master/Autoexec#introduction) 14 | * #### [What does it do?](https://github.com/c0dycode/BL2ModStuff/tree/master/Autoexec#what-does-it-do) 15 | * #### [Installation](https://github.com/c0dycode/BL2ModStuff/tree/master/Autoexec#installation) 16 | * #### [Pre-Compiled and infos about it](https://github.com/c0dycode/BL2ModStuff/tree/master/Autoexec#pre-compiled-and-infos-about-it) 17 | * #### [Borderlands 2 Autoexec + Tools variant](https://github.com/c0dycode/BL2ModStuff/tree/master/Autoexec#borderlands-2-autoexec--tools-variant) 18 | 19 | * ## Basic Usage of the UCP FilterTool 20 | * #### [Normal codes](https://github.com/c0dycode/BL2ModStuff/blob/master/Adding%20codes%20with%20UCP%20FilterTool.md#normal-code) 21 | * #### [Hotfix entry](https://github.com/c0dycode/BL2ModStuff/blob/master/Adding%20codes%20with%20UCP%20FilterTool.md#hotfix-entry) 22 | * #### [Credits](https://github.com/c0dycode/BL2ModStuff/blob/master/Adding%20codes%20with%20UCP%20FilterTool.md#credits) 23 | 24 | * ## Lootpools 25 | * #### [Find the Lootpool of the specific enemy you want to modify](https://github.com/c0dycode/BL2ModStuff/blob/master/Lootpools.md##1-find-the-lootpool-of-the-specific-enemy-you-want-to-modify) 26 | * #### [Modify the Lootpool](https://github.com/c0dycode/BL2ModStuff/blob/master/Lootpools.md##2-modify-the-lootpool) 27 | * #### [Creating the Hotfix](https://github.com/c0dycode/BL2ModStuff/blob/master/Lootpools.md##creating-the-hotfix) 28 | * #### [Adudney's converter method](https://github.com/c0dycode/BL2ModStuff/blob/master/Lootpools.md##adudneys-converter-method) 29 | * #### [LightChaosman's UCP FilterTool method](https://github.com/c0dycode/BL2ModStuff/blob/master/Lootpools.md##lightchaosmans-ucp-filtertool-method) 30 | * #### [Credits](https://github.com/c0dycode/BL2ModStuff/blob/master/Lootpools.md##creds-p) 31 | 32 | 33 | * ## Enemy Spawnrates 34 | * #### [Find the correct Population"pool" and modify it!](https://github.com/c0dycode/BL2ModStuff/blob/master/EnemySpawnrates.md##find-the-correct-populationpool) 35 | * #### [Credits](https://github.com/c0dycode/BL2ModStuff/blob/master/Lootpools.md##creds-p) 36 | 37 | * ## Useful commands 38 | * #### [Get Lootpools in current area](https://github.com/c0dycode/BL2ModStuff/blob/master/Commands.md##get-lootpools-in-current-area) 39 | * #### [Get the Levelnames](https://github.com/c0dycode/BL2ModStuff/blob/master/Commands.md##get-the-levelnames) 40 | * #### [Get the Drop Chance/Weight for DropODDS_BossUniqueRares for example](https://github.com/c0dycode/BL2ModStuff/blob/master/Commands.md##get-the-drop-chanceweight-for-dropodds_bossuniquerares-for-example) 41 | * #### [Setting up a hotkey for commands](https://github.com/c0dycode/BL2ModStuff/blob/master/Commands.md#setting-up-a-hotkey-for-commands) 42 | 43 | * ## Fun commands 44 | * #### [Climbing ladders super fast](https://github.com/c0dycode/BL2ModStuff/blob/master/FunStuff.md##climbing-ladders-super-fast-increase-z-value) 45 | * #### [Change Gravity](https://github.com/c0dycode/BL2ModStuff/blob/master/FunStuff.md##change-gravity) 46 | * #### [Speed Up or slow down the game](https://github.com/c0dycode/BL2ModStuff/blob/master/FunStuff.md##speed-up-or-slow-down-the-game) 47 | * #### [Speed up EVERYTHING, even the warping screen, main menu etc](https://github.com/c0dycode/BL2ModStuff/blob/master/FunStuff.md##speed-up-everything-even-the-warping-screen-main-menu-etc) 48 | * #### [Other general commands](https://github.com/c0dycode/BL2ModStuff/blob/master/FunStuff.md##other-general-commands-useful-to-write-down) -------------------------------------------------------------------------------- /TippsnTricks.md: -------------------------------------------------------------------------------- 1 | # Log-Console 2 | 3 | For me, it's easier to set the launchoption "-log" in Steam. 4 | This will open up a seperate window each time you launch BL2 where you get the same output as in the console in the game. 5 | Makes it a lot easier for me to copy results without navigating to the log-file. 6 | 7 | Example here: 8 | ![Console.png](./images/Console.png) 9 | 10 | ## Alternatively you can also type ***showlog*** in the console. 11 | 12 | # Patch-files do NOT need an extension 13 | 14 | Yes, they don't. You can just have a file "patch" in your "Borderlands 2\Binaries\"-folder and you can execute it by typing "exec patch" into the console. -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | theme: jekyll-theme-midnight -------------------------------------------------------------------------------- /images/Classes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/c0dycode/BL2ModStuff/a19d1a618a023e104381e74a5edebcb8c229b151/images/Classes.png -------------------------------------------------------------------------------- /images/Console.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/c0dycode/BL2ModStuff/a19d1a618a023e104381e74a5edebcb8c229b151/images/Console.png -------------------------------------------------------------------------------- /images/Jimmy.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/c0dycode/BL2ModStuff/a19d1a618a023e104381e74a5edebcb8c229b151/images/Jimmy.jpg -------------------------------------------------------------------------------- /images/StartupOverview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/c0dycode/BL2ModStuff/a19d1a618a023e104381e74a5edebcb8c229b151/images/StartupOverview.png -------------------------------------------------------------------------------- /images/Step1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/c0dycode/BL2ModStuff/a19d1a618a023e104381e74a5edebcb8c229b151/images/Step1.jpg -------------------------------------------------------------------------------- /images/Step2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/c0dycode/BL2ModStuff/a19d1a618a023e104381e74a5edebcb8c229b151/images/Step2.jpg -------------------------------------------------------------------------------- /images/Step3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/c0dycode/BL2ModStuff/a19d1a618a023e104381e74a5edebcb8c229b151/images/Step3.jpg -------------------------------------------------------------------------------- /images/UCPAddMod.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/c0dycode/BL2ModStuff/a19d1a618a023e104381e74a5edebcb8c229b151/images/UCPAddMod.png -------------------------------------------------------------------------------- /images/UCPConvert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/c0dycode/BL2ModStuff/a19d1a618a023e104381e74a5edebcb8c229b151/images/UCPConvert.png -------------------------------------------------------------------------------- /index.md: -------------------------------------------------------------------------------- 1 | # Overview of the stuff you'll find here 2 | 3 | * ## For Beginners 4 | * #### [What you will need](https://github.com/c0dycode/BL2ModStuff/blob/master/docs/For%20Beginners.md#what-you-will-need) 5 | * #### [1: Preparing the Files](https://github.com/c0dycode/BL2ModStuff/blob/master/For%20Beginners.md#step-1) 6 | * #### [2: Using UE Explorer](https://github.com/c0dycode/BL2ModStuff/blob/master/For%20Beginners.md#using-ue-explorer) 7 | * #### [2.1: Using Startup.upk](https://github.com/c0dycode/BL2ModStuff/blob/master/For%20Beginners.md#using-startupupk) 8 | * #### [2.2: Using Engine.upk](https://github.com/c0dycode/BL2ModStuff/blob/master/For%20Beginners.md#using-engineupk) 9 | * #### [2.3: Setting Array-types in UE Explorer](https://github.com/c0dycode/BL2ModStuff/blob/master/For%20Beginners.md#23-setting-array-types-in-ue-explorer) 10 | * #### [2.4: My Array-types](https://github.com/c0dycode/BL2ModStuff/blob/master/For%20Beginners.md#my-array-types) 11 | 12 | * ## Basic Usage of the UCP FilterTool 13 | * #### [Normal codes](https://github.com/c0dycode/BL2ModStuff/blob/master/Adding%20codes%20with%20UCP%20FilterTool.md#normal-code) 14 | * #### [Hotfix entry](https://github.com/c0dycode/BL2ModStuff/blob/master/Adding%20codes%20with%20UCP%20FilterTool.md#hotfix-entry) 15 | * #### [Credits](https://github.com/c0dycode/BL2ModStuff/blob/master/Adding%20codes%20with%20UCP%20FilterTool.md#credits) 16 | 17 | * ## Lootpools 18 | * #### [Find the Lootpool of the specific enemy you want to modify](https://github.com/c0dycode/BL2ModStuff/blob/master/Lootpools.md##1-find-the-lootpool-of-the-specific-enemy-you-want-to-modify) 19 | * #### [Modify the Lootpool](https://github.com/c0dycode/BL2ModStuff/blob/master/Lootpools.md##2-modify-the-lootpool) 20 | * #### [Creating the Hotfix](https://github.com/c0dycode/BL2ModStuff/blob/master/Lootpools.md##creating-the-hotfix) 21 | * #### [Adudney's converter method](https://github.com/c0dycode/BL2ModStuff/blob/master/Lootpools.md##adudneys-converter-method) 22 | * #### [LightChaosman's UCP FilterTool method](https://github.com/c0dycode/BL2ModStuff/blob/master/Lootpools.md##lightchaosmans-ucp-filtertool-method) 23 | * #### [Credits](https://github.com/c0dycode/BL2ModStuff/blob/master/Lootpools.md##creds-p) 24 | 25 | 26 | * ## Enemy Spawnrates 27 | * #### [Find the correct Population"pool" and modify it!](https://github.com/c0dycode/BL2ModStuff/blob/master/EnemySpawnrates.md##find-the-correct-populationpool) 28 | * #### [Credits](https://github.com/c0dycode/BL2ModStuff/blob/master/Lootpools.md##creds-p) 29 | 30 | * ## Useful commands 31 | * #### [Get Lootpools in current area](https://github.com/c0dycode/BL2ModStuff/blob/master/Commands.md##get-lootpools-in-current-area) 32 | * #### [Get the Levelnames](https://github.com/c0dycode/BL2ModStuff/blob/master/Commands.md##get-the-levelnames) 33 | * #### [Get the Drop Chance/Weight for DropODDS_BossUniqueRares for example](https://github.com/c0dycode/BL2ModStuff/blob/master/Commands.md##get-the-drop-chanceweight-for-dropodds_bossuniquerares-for-example) 34 | * #### [Setting up a hotkey for commands](https://github.com/c0dycode/BL2ModStuff/blob/master/Commands.md#setting-up-a-hotkey-for-commands) 35 | 36 | * ## Fun commands 37 | * #### [Climbing ladders super fast](https://github.com/c0dycode/BL2ModStuff/blob/master/FunStuff.md##climbing-ladders-super-fast-increase-z-value) 38 | * #### [Change Gravity](https://github.com/c0dycode/BL2ModStuff/blob/master/FunStuff.md##change-gravity) 39 | * #### [Speed Up or slow down the game](https://github.com/c0dycode/BL2ModStuff/blob/master/FunStuff.md##speed-up-or-slow-down-the-game) 40 | * #### [Speed up EVERYTHING, even the warping screen, main menu etc](https://github.com/c0dycode/BL2ModStuff/blob/master/FunStuff.md##speed-up-everything-even-the-warping-screen-main-menu-etc) 41 | * #### [Other general commands](https://github.com/c0dycode/BL2ModStuff/blob/master/FunStuff.md##other-general-commands-useful-to-write-down) --------------------------------------------------------------------------------