63 lines
1.6 KiB
Plaintext
63 lines
1.6 KiB
Plaintext
http://www.bay12games.com/dwarves/mantisbt/view.php?id=4406
|
|
|
|
1. Include store in hospital jobs when recomputing counters
|
|
|
|
0x68a63
|
|
0F 85 58 01 00 00
|
|
90 90 90 90 90 90
|
|
|
|
<<<<
|
|
.text:00469663 jnz loc_4697C1
|
|
====
|
|
.text:00469663 nop
|
|
.text:00469664 nop
|
|
.text:00469665 nop
|
|
.text:00469666 nop
|
|
.text:00469667 nop
|
|
.text:00469668 nop
|
|
>>>>
|
|
|
|
- if (job->getBuildingRef(BUILDING_DESTINATION) != this) continue;
|
|
+ // NOP
|
|
|
|
This reference points to the containers, not the hospital civzone.
|
|
Since fixing this properly is too hard for a patch, just remove the
|
|
check. Most people have only one hospital anyway, and it is better
|
|
to err on the side of caution here.
|
|
|
|
|
|
2. Make the stockpiling code increment the right stock counters
|
|
|
|
0x3dcbf9
|
|
8B 0C 90 8B 81 80 00 00 00
|
|
8B 3C 90 8B 87 80 00 00 00
|
|
|
|
<<<<
|
|
.text:007DD7F9 mov ecx, [eax+edx*4]
|
|
.text:007DD7FC mov eax, [ecx+80h]
|
|
====
|
|
.text:007DD7F9 mov edi, [eax+edx*4]
|
|
.text:007DD7FC mov eax, [edi+80h]
|
|
>>>>
|
|
|
|
- id = civzones[i]->children[child_idx[i]]->id
|
|
+ cur_civzone = civzones[i] // existing var from previous loop
|
|
+ id = cur_civzone->children[child_idx[i]]->id
|
|
|
|
The reason being, later code uses that var (at this point containing
|
|
useless data) to increment counters and amounts in the hospital.
|
|
|
|
|
|
---8<---
|
|
This difference file is created by The Interactive Disassembler
|
|
|
|
Dwarf Fortress.exe
|
|
00068A63: 0F 90
|
|
00068A64: 85 90
|
|
00068A65: 58 90
|
|
00068A66: 01 90
|
|
00068A67: 00 90
|
|
00068A68: 00 90
|
|
003DCBFA: 0C 3C
|
|
003DCBFD: 81 87
|