[XCX] Various fixes.

- Split "Offline Squad" and "more tickets" into 2 separate mods (#389)
- Offline squad now have mission selector presets.
- Fix issue with the "Equipment - Force type" mod not working for ground weapons (#398)
- Fix issue with the "Materials - Drop ratio" mod when 100% preset was selected (#392)
- Fix issue with the "Treasure Quality" mod with regular presets

(#xx) refers to Github issues.
This commit is contained in:
lasyan3 2019-11-02 22:22:13 +01:00
parent 2bc2803549
commit db7c430aac
6 changed files with 208 additions and 191 deletions

View File

@ -1,7 +1,7 @@
[XCX_SQUADMISSIONS]
moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U
codeCaveSize = 0x50
codeCaveSize = 0x70
; cfs::CfSocialManager::update((float))
0x022879D0 = nop ; (network test?) allow call to cfs::CfSocialQuestManager::update((void))
@ -12,11 +12,11 @@ codeCaveSize = 0x50
0x023ABA68 = li r5, 60 ; force 0x24 - UNLOCK
0x023ABC10 = nop ; isHost
0x023A0484 = nop ; isHost
0x023ABC94 = nop ; getServerTimeSecRegion - UNLOCK
;0x023ABC94 = nop ; getServerTimeSecRegion - UNLOCK
0x023ABCAC = nop ; compare with 0x28 - UNLOCK
0x023ABCB8 = nop ; compare with 0x2C - UNLOCK
_gotoJoin = 0x023ABD00 - UNLOCK
0x023ABCBC = b _gotoJoin - UNLOCK
;_gotoJoin = 0x023ABD00 ; UNLOCK
;0x023ABCBC = b _gotoJoin ; UNLOCK
##################### BLADE Home Terminal (for Squad Quest Selection)
@ -50,45 +50,20 @@ _gotoNext = 0x023ABE54
0x023ABDD4 = beq _gotoTimeout
0x023ABDD8 = b _gotoNext
######################## More Tickets
0x00000014 = .short $mult
_mult = 0x00000014
0x00000018 = .byte $uncap
_uncap = 0x00000018
; ----------------------------------------------------------------------------
; WHO : cfs::CfSocialManager::addTradeTicket((int, unsigned int))
; WHAT : Multiply the reward tickets given in many occasions
_moreTickets = 0x0000001C
0x0000001C = mr r30, r3
0x00000020 = cmpwi r5, 0 ; r5 is used to determinate if tickets gained from missions?
0x00000024 = beqlr
0x00000028 = lis r28, _mult@ha
0x0000002C = lhz r28, _mult@l(r28)
0x00000030 = mullw r4, r4, r28
0x00000034 = blr
0x022CA86C = bla _moreTickets
; ----------------------------------------------------------------------------
; WHO : cfs::CfSocialManager::addTradeTicket((int, unsigned int))
; WHAT : Ignore the max number of tickets we can get
_uncapTickets = 0x00000038
0x00000038 = lis r5, _uncap@ha
0x0000003C = lbz r5, _uncap@l(r5)
0x00000040 = cmpwi r5, 1
0x00000044 = beqlr
0x00000048 = mr r3, r25
0x0000004C = blr
0x022CAC5C = bla _uncapTickets
#################### Force Squad Mission number
;0x023AB794 = li r11, 0 ; force squad mission
;0x023AB7C0 = li r3, 11 ; squad mission number
0x0000006C = .byte $missionId
_misId = 0x0000006C
_forceMission = 0x00000050
0x00000050 = lmw r14, 0x1B8(r1)
0x00000054 = lis r4, _misId@ha
0x00000058 = lbz r4, _misId@l(r4)
0x0000005C = cmpwi r4, 0
0x00000060 = beqlr
0x00000064 = mr r3, r4
0x00000068 = blr
0x023AB7C4 = bla _forceMission
#####################################################################################################
[XCX_SQUADMISSIONS_1E]
@ -123,37 +98,6 @@ _savePtr = 0x00000000
0x02B85084 = li r11, 1
0x02B850A8 = li r11, 1
#################### More Tickets (display)
0x00000038 = .short $mult
_mult = 0x00000038
; ----------------------------------------------------------------------------
; WHO : menu::MenuMultiQuestInfoWindow::displayInfo((menu::MenuObject *,bool))
; WHAT :
_dispBefore = 0x00000010
0x00000010 = lhz r26, 0x8C(r1)
0x00000014 = lis r24, _mult@ha
0x00000018 = lhz r24, _mult@l(r24)
0x0000001C = mullw r26, r26, r24
0x00000020 = blr
0x02B94718 = bla _dispBefore
; ----------------------------------------------------------------------------
; WHO : menu::MenuMultiQuestResult::setup((void))
; WHAT :
_dispAfter = 0x00000024
0x00000024 = lhz r5, 0x5778(r29)
0x00000028 = lis r3, _mult@ha
0x0000002C = lhz r3, _mult@l(r3)
0x00000030 = mullw r5, r5, r3
0x00000034 = blr
0x02B9FE2C = bla _dispAfter
#####################################################################################################
[XCX_SQUADMISSIONS_2U]
moduleMatches = 0x30B6E091 ; 1.0.2U
@ -187,37 +131,6 @@ _savePtr = 0x00000000
0x02B85074 = li r11, 1
0x02B85098 = li r11, 1
#################### More Tickets (display)
0x00000038 = .short $mult
_mult = 0x00000038
; ----------------------------------------------------------------------------
; WHO : menu::MenuMultiQuestInfoWindow::displayInfo((menu::MenuObject *,bool))
; WHAT :
_dispBefore = 0x00000010
0x00000010 = lhz r26, 0x8C(r1)
0x00000014 = lis r24, _mult@ha
0x00000018 = lhz r24, _mult@l(r24)
0x0000001C = mullw r26, r26, r24
0x00000020 = blr
0x02B94708 = bla _dispBefore
; ----------------------------------------------------------------------------
; WHO : menu::MenuMultiQuestResult::setup((void))
; WHAT :
_dispAfter = 0x00000024
0x00000024 = lhz r5, 0x5778(r29)
0x00000028 = lis r3, _mult@ha
0x0000002C = lhz r3, _mult@l(r3)
0x00000030 = mullw r5, r5, r3
0x00000034 = blr
0x02B9FE1C = bla _dispAfter
#####################################################################################################
[XCX_SQUADMISSIONS_1U]
moduleMatches = 0xAB97DE6B ; 1.0.1U
@ -263,65 +176,6 @@ _gotoNext = 0x023ABDE4
0x023ABD64 = beq _gotoTimeout
0x023ABD68 = b _gotoNext
######################## More Tickets
0x00000014 = .short $mult
_mult = 0x00000014
0x00000018 = .byte $uncap
_uncap = 0x00000018
; ----------------------------------------------------------------------------
; WHO : cfs::CfSocialManager::addTradeTicket((int, unsigned int))
; WHAT : Multiply the reward tickets given in many occasions
_moreTickets = 0x0000001C
0x0000001C = lis r28, _mult@ha
0x00000020 = lhz r28, _mult@l(r28)
0x00000024 = mullw r28, r4, r28
0x00000028 = blr
0x022CA804 = bla _moreTickets
; ----------------------------------------------------------------------------
; WHO : cfs::CfSocialManager::addTradeTicket((int, unsigned int))
; WHAT : Ignore the max number of tickets we can get
_uncapTickets = 0x0000002C
0x0000002C = lis r5, _uncap@ha
0x00000030 = lbz r5, _uncap@l(r5)
0x00000034 = cmpwi r5, 1
0x00000038 = beqlr
0x0000003C = mr r3, r25
0x00000040 = blr
0x022CABEC = bla _uncapTickets
; ----------------------------------------------------------------------------
; WHO : menu::MenuMultiQuestInfoWindow::displayInfo((menu::MenuObject *,bool))
; WHAT :
_dispBefore = 0x00000044
0x00000044 = lhz r26, 0x8C(r1)
0x00000048 = lis r24, _mult@ha
0x0000004C = lhz r24, _mult@l(r24)
0x00000050 = mullw r26, r26, r24
0x00000054 = blr
0x02B9468C = bla _dispBefore
; ----------------------------------------------------------------------------
; WHO : menu::MenuMultiQuestResult::setup((void))
; WHAT :
_dispAfter = 0x00000058
0x00000058 = lhz r5, 0x5778(r29)
0x0000005C = lis r3, _mult@ha
0x00000060 = lhz r3, _mult@l(r3)
0x00000064 = mullw r5, r5, r3
0x00000068 = blr
0x02B9FD2C = bla _dispAfter
#####################################################################################################
; getServerTimeSec__Q2_2nt10CNetLibNexCFRUL
0x0295E984 = nop

View File

@ -1,41 +1,90 @@
[Definition]
titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00
name = "Squad tasks and missions are available offline"
path = "Xenoblade Chronicles X/Mods/BLADE/Offline tasks and missions"
description = Squad tasks and missions are available offline. Uncapped presets ignore max tickets. Use [Social > Squad Select] menu to change the Squad Tasks.
path = "Xenoblade Chronicles X/Mods/BLADE/Offline Squad tasks and missions"
description = Squad tasks and missions are available offline. Presets allow to select a Squad Mission, or you can use [Social > Squad Select] menu for random selection.
version = 3
[Preset]
name = "Normal"
$mult = 1
$uncap = 0
name = "Random"
$missionId = 0
[Preset]
name = "Gain more Tickets (x10)"
$mult = 10
$uncap = 0
name = "N01: Forfex,Theroids,Amana Durian(c),Papil,Puge"
$missionId = 1
[Preset]
name = "Gain more Tickets (x100)"
$mult = 100
$uncap = 0
name = "N02: Scirpo,Vesper,Xiphias,Grex,Pugilith"
$missionId = 2
[Preset]
name = "Gain more Tickets (x1000)"
$mult = 1000
$uncap = 0
name = "N03: Fauna(c),Mortifole,Insectoids,Galdr,Diogenes(t)"
$missionId = 3
[Preset]
name = "Gain more Tickets (x10 Uncapped)"
$mult = 10
$uncap = 1
name = "N04: Xiphias,Germivore,Mechanoids,Shrad,Petramand"
$missionId = 4
[Preset]
name = "Gain more Tickets (x100 Uncapped)"
$mult = 100
$uncap = 1
name = "N05: Potamus,Ovis,Thallus,Marnuck,Aprica"
$missionId = 5
[Preset]
name = "Gain more Tickets (x1000 Uncapped)"
$mult = 1000
$uncap = 1
name = "N06: Piscinoids,Terebra,Insidia,Yama(t),Mizaria Celery(c)"
$missionId = 6
[Preset]
name = "N07: Unafulge,Ferdinand(t),Turba,Simius,Vivohast"
$missionId = 7
[Preset]
name = "N08: Forfex,Adsecula,Prone (Cavern Clan),Oc-serv,Enhanced Search Zig"
$missionId = 8
[Preset]
name = "N09: Saltat,Bullet Fly(c),Purgovent,Quo,Ictus"
$missionId = 9
[Preset]
name = "N10: Humanoids,Caecus,Auravis,Petramand,Vendura's Galdr(t)"
$missionId = 10
[Preset]
name = "N11: Evello,Caro,Cinicula,Kringe(t),Milsaadi"
$missionId = 11
[Preset]
name = "N12: Duoguill,Qmoeva,Murra,Blaudolch(t),Levitath"
$missionId = 12
[Preset]
name = "N13: Mephite,Mechanoids,Lophid,Thunderbolt Emblem(c),Balaena"
$missionId = 13
[Preset]
name = "N14: Insectoids,Marnuck,Ro-darm(t),Beaporge(c),Dilus"
$missionId = 14
[Preset]
name = "N15: Hephaestus(t),Dobromila(t),Sarcosuchus(t),Vilem(t),Truppe(t)"
$missionId = 15
[Preset]
name = "N16: Flora(c),Vegetables(c),Fruits(c),Jaharmum(c),Joadtank(c)"
$missionId = 16
[Preset]
name = "N17: Monoceros,Brambloo Shoot(c),Progen,Visigel,Jia Mian(t)"
$missionId = 17
[Preset]
name = "N18: Sacrifole,Jacul,Dieter(t),Arenatect,Zig"
$missionId = 18
[Preset]
name = "N19: Aprica,Sylooth,Tectinsula,Xe-dom,Coronid"
$missionId = 19
[Preset]
name = "N20: Aeviter,Vigent,Virago,Tersqual,Myuena Cactus(c)"
$missionId = 20

View File

@ -53,6 +53,8 @@ _setSubGW = 0x0000003C
0x00000054 = clrlwi r30, r3, 24
0x00000058 = blr
0x021AD6D8 = bla _setSubGW
_setSubGA = 0x0000005C
0x0000005C = clrlwi r4, r3, 24
0x00000060 = lis r3, _sub@ha

View File

@ -1,7 +1,7 @@
[XCX_LOOT_MATERIALS]
moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U
codeCaveSize = 0x30
codeCaveSize = 0x90
; ----------------------------------------------------------------------------
; WHO : __CPR90__calcItemBronze__Q2_8ItemDrop16CItemDropManagerFRQ3_J19JJ28J9SDropInfoUc
@ -23,6 +23,40 @@ _minDropRate = 0x00000004
0x00000028 = cmpw r3, r31
0x0000002C = blr
0x021AF5DC = bla _minDropRate ; modify drop ratio for gold chests
0x021AF5F8 = bla _minDropRate ; modify drop ratio for silver chests
0x021AF614 = bla _minDropRate ; modify drop ratio for bronze chests
0x021AF5DC = bla _minDropRate ; modify drop ratio for bronze chests
0x021AF614 = bla _minDropRate ; modify drop ratio for silver chests
0x021AF5F8 = bla _minDropRate ; modify drop ratio for gold chests
; ----------------------------------------------------------------------------
; WHO : __CPR90__calcItemBronze__Q2_8ItemDrop16CItemDropManagerFRQ3_J19JJ28J9SDropInfoUc
; WHAT : random selection when all materials at 100% and more than 5
_saveEquipCnt = 0x00000030
0x00000030 = mr r30, r4
0x00000034 = lwz r13, 0xE0(r30)
0x00000038 = blr
0x021AF334 = bla _saveEquipCnt
_mtRand = 0x030FA650
_fixit = 0x00000040
0x00000040 = li r12, 0
0x00000044 = sub r3, r4, r13 ; r13 = equipment count, r4 = all item count, r3 = material count
0x00000048 = li r8, 4
0x0000004C = sub r8, r8, r13
0x00000050 = cmpw r3, r8 ; slots 0 to 4-r13 are used by equipment
0x00000054 = blelr
0x00000058 = li r3, 6
0x0000005C = mflr r31
0x00000060 = lis r8, _mtRand@ha
0x00000064 = addi r8, r8, _mtRand@l
0x00000068 = mtctr r8
0x0000006C = bctrl
0x00000070 = mtlr r31
0x00000074 = add r3, r3, r13 ; 0+r13 to 4
0x00000078 = cmpwi r3, 4 ; r13 to 4 are the possible slots, others are ignored
0x0000007C = bgtlr
0x00000080 = mr r4, r3
0x00000084 = blr
0x021AF620 = bla _fixit

View File

@ -15,7 +15,7 @@ _treasure = 0x00000004
_goForced = 0x00000008
0x00000008 = lis r28, _forced@ha
0x0000000C = lbz r28, _forced@l(r28)
0x00000010 = cmpwi r28, -1
0x00000010 = cmpwi r28, 0xFF
0x00000014 = beq .+0xC
0x00000018 = mr. r28, r28
0x0000001C = blr

View File

@ -0,0 +1,78 @@
# Description of the mods for Xenoblade Chronicles X
### Battle mods
- **Automatic Soul Challenges**: The Soul Challenges QTE are hidden and automatically successful (only affect ground battles , not the QTE on Skell binding and destroying).
- **Enemy Statistics mod**: Apply a global percent modificator on all enemies stats (HP, Melee Attack, Melee Accuracy, Ranged Attack, Ranged Accuracy, Potential and Evasion).
- **Escape distance reducer**: Reduce escape distance needed to lose aggro from enemies.
- **Ground Damage multiplicator**: Increase the ground damage dealt by your team (skells not impacted).
- **Overdrive unlocked**: Overdrive is unlocked from the beginning of the game.
### BLADE mods
- **DLC quests unlocked**: DLC Support quests are unlocked and accessible as soon as you become a BLADE member.
- **Gain Reward Tickets from DLC or Time Attack missions**: Add Exchange Tickets in reward of completing Blade missions. There is 2 presets: one which adds tickets to Time Attack missions (same amount that the experience) and another which adds tickets to DLC missions (amount is money divided by 100).
- **Lv60 skells unlocked (+cheat)**: Unlock the post-game skells and equipment as soon as you become a BLADE member (it also considers you have a Skell Flight License). The "Cheat" preset ignores all requirements for crafting. Yes, that means you can get an Ares 90 for free, right after Chapter 2!
- **More Reward Tickets**: Increase the amount of Tickets you get from Squad tasks and missions. Presets with "uncapped" means they ignore the max amount of Tickets you can have.
- **Offline Squad tasks and missions**: Squad tasks and missions become available for offline play! When the game starts, a Squad quest is randomly selected (with "Random" preset) and the timer is stopped.
> Other presets allow to choose a specific tasks list. (c ) stands for collectible and (t) for Tyrant.
> With "Random" preset, you can change the tasks list with the main menu, Social entry and "Select Squad" entry.
### Collectibles mods
- **Catch range mod**: Increase the distance from which you catch a collectible. By default, you'll get them just when you're close enough to see the blue gem (distance increased by 40.0). There are 3 kind of distances in the game, each with a value of "Range" and "Height": "Inner" (which means when you are at foot), "Doll" (when you have a Skell at land) and "Flight" (which I believe is when you flight, generally in a Skell). All values are editable in the file patches.txt. Also note that the rarity of items is untouched.
- **Ignore 100th**: Prevent from catching a collectible when you already have 99 of them, and doesn't sell it. This is for endgame runs in which you have plenty of money, many collectibles and doesn't want to be spammed with selling messages when you walk around in the world.
### Equipment mods
- **Armors can have 3 augment slots**: Using L' shop, you can have a maximum of 3 augment slots on any of your **equipped** ground or skell armor (right now this won't work on unequipped).
- **Unlimited augment upgrades**: Allow you to infinitely upgrade all the augments inside a piece of equipment (as long as you have the resources of course). The "Cheat" preset ignores all requirements. **Warning**: with low level armors the max level for augments is 17, if you try to upgrade once more you'll get back to level 1! So far I was unable to understand this strange behavior.
- **Unlock all augments**: All augments are known in the BLADE shop. As usual, the "Cheat" preset ignores all requirements for crafing (useful for build testing).
### Experience mods
- **Battle Points X**: Increase the battle points gained when a new level (or class level) is reached, when completing missions or when exploring.
- **BLADE Points X**: Increase the Blade points gained in various situations.
- **Class Exp Points X**: Increase the class experience points gained in battles, missions, quests and exploration.
- **Friend Points X**: Increase the friend points gained during Soul Voice activation in battles.
- **Inner Exp Points X**: Increase the experience points gained in battles, missions, quests and exploration.
### FrontierNav mods
- **Miranium income frequency**: Increase the frequency of the FrontierNav Miranium.
- **Miranium income quantity**: Increase the quantity of Miranium gained using FrontierNav.
- **Money income frequency/quantity**: Those 2 mods do the same for money.
- **Resources income frequency/quantity**: Those 2 mods do the same for the resources.
### Graphics mods
- **Camera distance mod**: Allow to change the default zoom (which is reset after most cutscenes and this was boring me).
- **NPC info bubbles distance mod**: Increase the distance from which NPC's yellow speech bubbles are seen. I made this mod to get rid of the frustration not being able to get information from NLA people unless I get very close to each one of them.
### HUD mods
- **Change time at will**: Allow to change time of the day from the eManual entry of the main menu.
### Loot mods
- **Equipment - Always best quality**: Equipment looted is always at best quality ("Prime" for ground gear and "Intergalactic" for Skells gear), with "X6X" variants and has always 3 augments and 3 extra free slots.
- **Equipment - Force count**: Force the number of equipments looted in silver of gold treasures.
- **Equipment - Force type**: Force the type of equipment you loot. This mod is designed to make end-game equipment farming easier. **Doesn't work for Skells weapons!**
- **Equipment - Ignore broken**: Get rid of those broken equipments!
- **Materials - Drop ratio mod**: Set a minimum drop ratio for materials.
- **Treasure Quality**: Select the treasure quality you want to loot (bronze, silver, gold or no chest at all if you just want to kill a lot of monsters quickly without loot).
> Difference between regular and "FORCED" presets:
> It's a bit tricky to explain, but here's how the game selects the chest quality:
> 1 - Calculate luck for gold chest, if success exit with gold quality, else process next step
> 2 - Calculate luck for silver chest, if success exit with silver quality, else process next step
> 3 - Calculate luck for bronze chest, if success exit with bronze quality, else process next step
> 4 - Bad luck, exit with no chest
> Regular presets of this mod only change the last step. So even if you select the "Gold quality" preset, you'll still get a silver chest if the game succeeded the step 2.
> FORCED presets bypass the entire process, so that you'll be guaranteed to get gold chests, but the downtime is that **it can break some quests** which require you to loot key items that appear only in bronze or silver treasures!
> **My advice**: only use "FORCED" presets for end-game farming.
### Music mods
- **No Overdrive music**: Disables the Overdrive music (after some time using Overdrive a lot during battles, I missed the other musics, especially the one from tyrants).
- **No Skell Flight music**: Disables the flight music (at the beginning the music is awesome, but after some time I wanted to listen to the field musics again).
### Physics mods
- **Jump to the Moon!**: Increases the horizontal and vertical velocity of the jump (vanilla values are 1.0 for both).
- **Run Forrest, run!**: Increases the speed of sprinting.
### Weather mods
- **Force weather**: Force selected weather. Just select a preset and unload/reload the pack.
### Requirements
The most important requirement is of course cemuhook. All my mods have been tested and are known to work with cemuhook **0.5.6.7**.
All mods are compatibles with Xenoblade versions **1.0.1E** and **1.0.2U** (some of them with 1.0.1U), and are not supposed to impact savegames but be sure to make save backup just in case!