No Uni Invulnerability For Dormies
syberspunk:
I'm curious. I just looked at the code and compared it to the object.package, and am I imagining something? But I don't see a difference. Has OFB or the OFB patches included your changes? ???
The only difference that I noticed was just that the return errors are set as the same value as the return false.
Quote from: nouniprotect
0000 : 0118 : 0300000000000000000000000000 : 01 : 0001 : 0001
[global 0x0118] Idle (0x0003)
0001 : 0002 : 1400020000080600000000000000 : 00 : 0002 : 0019
[prim 0x0002] Expression (Game Edition Flag Set? Literal 0x0002)
0002 : 03DC : FFFFFFFFFFFFFF00000000000000 : 01 : 0004 : 0003
[global 0x03DC] Lot - Is Dorm? - EP1 ()
0003 : 03DD : FFFFFFFFFFFFFF00000000000000 : 01 : 0004 : 0019
[global 0x03DD] Lot - Is Frat? - EP1 ()
0004 : 0118 : 9600000000000000000000000000 : 01 : 0004 : 0005
[global 0x0118] Idle (0x0096)
0005 : 0002 : 0000000000050A00000000000000 : 00 : 0006 : 0006
[prim 0x0002] Expression (Stack Object ID := Literal 0x0000)
0006 : 001F : 00000000810A0000000000000000 : 01 : 0007 : 0004
[prim 0x001F] Set to Next (Stack Object ID, person)
0007 : 0002 : 9E00010000081300000000000000 : 00 : 0006 : 0008
[prim 0x0002] Expression (Stack Object's Selection Flags Flag Set? Literal 0x0001)
0008 : 03DC : FFFFFFFFFFFFFF00000000000000 : 01 : 000A : 0009
[global 0x03DC] Lot - Is Dorm? - EP1 ()
0009 : 03EA : 131F00060A000A000A0000010000 : 01 : 000B : 0006
[global 0x03EA] College - Is NID a Frat Member? (Stack Object's neighbor id, Current House)
000A : 03C9 : 131F00060A0007FF0A0000010000 : 01 : 000B : 0006
[global 0x03C9] College - Have Key? (Stack Object's neighbor id, Current House, Literal 0xFFFF)
000B : 0002 : 0900BBFF00010F00000000000000 : 00 : 000C : 000D
[prim 0x0002] Expression (Stack Object's motive Bladder < Literal 0xFFBB)
000C : 0002 : 0900F1FF00050F00000000000000 : 00 : 000D : 000D
[prim 0x0002] Expression (Stack Object's motive Bladder := Literal 0xFFF1)
000D : 0002 : 0600BBFF00010F00000000000000 : 00 : 000E : 000F
[prim 0x0002] Expression (Stack Object's motive Comfort < Literal 0xFFBB)
000E : 0002 : 0600F1FF00050F00000000000000 : 00 : 000F : 000F
[prim 0x0002] Expression (Stack Object's motive Comfort := Literal 0xFFF1)
000F : 0002 : 0500D8FF00000F00000000000000 : 00 : 0011 : 0010
[prim 0x0002] Expression (Stack Object's motive Energy > Literal 0xFFD8)
0010 : 0002 : 0500190000050F00000000000000 : 00 : 0011 : 0011
[prim 0x0002] Expression (Stack Object's motive Energy := Literal 0x0019)
0011 : 0002 : 0F00CEFF00010F00000000000000 : 00 : 0012 : 0013
[prim 0x0002] Expression (Stack Object's motive Fun < Literal 0xFFCE)
0012 : 0002 : 0F00F6FF00050F00000000000000 : 00 : 0013 : 0013
[prim 0x0002] Expression (Stack Object's motive Fun := Literal 0xFFF6)
0013 : 0002 : 0700BAFF00010F00000000000000 : 00 : 0014 : 0015
[prim 0x0002] Expression (Stack Object's motive Hunger < Literal 0xFFBA)
0014 : 0002 : 0700F1FF00050F00000000000000 : 00 : 0015 : 0015
[prim 0x0002] Expression (Stack Object's motive Hunger := Literal 0xFFF1)
0015 : 0002 : 0800BAFF00010F00000000000000 : 00 : 0016 : 0017
[prim 0x0002] Expression (Stack Object's motive Hygiene < Literal 0xFFBA)
0016 : 0002 : 0800F1FF00050F00000000000000 : 00 : 0017 : 0017
[prim 0x0002] Expression (Stack Object's motive Hygiene := Literal 0xFFF1)
0017 : 0002 : 0E00CEFF00010F00000000000000 : 00 : 0018 : 0006
[prim 0x0002] Expression (Stack Object's motive Social < Literal 0xFFCE)
0018 : 0002 : 0E00ECFF00050F00000000000000 : 00 : 0006 : 0006
[prim 0x0002] Expression (Stack Object's motive Social := Literal 0xFFEC)
0019 : 0012 : 0000020000000000000000000000 : 00 : 001A : 001A
[prim 0x0012] Remove Object Instance (Me)
001A : 0118 : 2C01000000000000000000000000 : 01 : 0019 : 0019
[global 0x0118] Idle (0x012C)
Quote from: object.package
0000 : 0118 : 0300000000000000000000000000 : 01 : 0001 : FFFC
[global 0x0118] Idle (0x0003)
0001 : 0002 : 1400020000080600000000000000 : 00 : 0002 : 0019
[prim 0x0002] Expression (Game Edition Flag Set? Literal 0x0002)
0002 : 03DC : FFFFFFFFFFFFFF00000000000000 : 01 : 0004 : 0003
[global 0x03DC] Lot - Is Dorm? - EP1 ()
0003 : 03DD : FFFFFFFFFFFFFF00000000000000 : 01 : 0004 : 0019
[global 0x03DD] Lot - Is Frat? - EP1 ()
0004 : 0118 : 9600000000000000000000000000 : 01 : 0005 : FFFC
[global 0x0118] Idle (0x0096)
0005 : 0002 : 0000000000050A00000000000000 : 00 : 0006 : FFFC
[prim 0x0002] Expression (Stack Object ID := Literal 0x0000)
0006 : 001F : 00000000810A0000000000000000 : 01 : 0007 : 0004
[prim 0x001F] Set to Next (Stack Object ID, person)
0007 : 0002 : 9E00010000081300000000000000 : 00 : 0006 : 0008
[prim 0x0002] Expression (Stack Object's Selection Flags Flag Set? Literal 0x0001)
0008 : 03DC : FFFFFFFFFFFFFF00000000000000 : 01 : 000A : 0009
[global 0x03DC] Lot - Is Dorm? - EP1 ()
0009 : 03EA : 131F00060A000A000A0000010000 : 01 : 000B : 0006
[global 0x03EA] College - Is NID a Frat Member? (Stack Object's neighbor id, Current House)
000A : 03C9 : 131F00060A0007FF0A0000010000 : 01 : 000B : 0006
[global 0x03C9] College - Have Key? (Stack Object's neighbor id, Current House, Literal 0xFFFF)
000B : 0002 : 0900BBFF00010F00000000000000 : 00 : 000C : 000D
[prim 0x0002] Expression (Stack Object's motive Bladder < Literal 0xFFBB)
000C : 0002 : 0900F1FF00050F00000000000000 : 00 : 000D : FFFC
[prim 0x0002] Expression (Stack Object's motive Bladder := Literal 0xFFF1)
000D : 0002 : 0600BBFF00010F00000000000000 : 00 : 000E : 000F
[prim 0x0002] Expression (Stack Object's motive Comfort < Literal 0xFFBB)
000E : 0002 : 0600F1FF00050F00000000000000 : 00 : 000F : FFFC
[prim 0x0002] Expression (Stack Object's motive Comfort := Literal 0xFFF1)
000F : 0002 : 0500D8FF00000F00000000000000 : 00 : 0011 : 0010
[prim 0x0002] Expression (Stack Object's motive Energy > Literal 0xFFD8)
0010 : 0002 : 0500190000050F00000000000000 : 00 : 0011 : FFFC
[prim 0x0002] Expression (Stack Object's motive Energy := Literal 0x0019)
0011 : 0002 : 0F00CEFF00010F00000000000000 : 00 : 0012 : 0013
[prim 0x0002] Expression (Stack Object's motive Fun < Literal 0xFFCE)
0012 : 0002 : 0F00F6FF00050F00000000000000 : 00 : 0013 : FFFC
[prim 0x0002] Expression (Stack Object's motive Fun := Literal 0xFFF6)
0013 : 0002 : 0700BAFF00010F00000000000000 : 00 : 0014 : 0015
[prim 0x0002] Expression (Stack Object's motive Hunger < Literal 0xFFBA)
0014 : 0002 : 0700F1FF00050F00000000000000 : 00 : 0015 : FFFC
[prim 0x0002] Expression (Stack Object's motive Hunger := Literal 0xFFF1)
0015 : 0002 : 0800BAFF00010F00000000000000 : 00 : 0016 : 0017
[prim 0x0002] Expression (Stack Object's motive Hygiene < Literal 0xFFBA)
0016 : 0002 : 0800F1FF00050F00000000000000 : 00 : 0017 : FFFC
[prim 0x0002] Expression (Stack Object's motive Hygiene := Literal 0xFFF1)
0017 : 0002 : 0E00CEFF00010F00000000000000 : 00 : 0018 : 0006
[prim 0x0002] Expression (Stack Object's motive Social < Literal 0xFFCE)
0018 : 0002 : 0E00ECFF00050F00000000000000 : 00 : 0006 : FFFC
[prim 0x0002] Expression (Stack Object's motive Social := Literal 0xFFEC)
0019 : 0012 : 0000020000000000000000000000 : 00 : 001A : 001A
[prim 0x0012] Remove Object Instance (Me)
001A : 0118 : 2C01000000000000000000000000 : 01 : 0019 : FFFC
[global 0x0118] Idle (0x012C)
Am I missing something? Just wondering if someone can verify that the code is the same, and thus nouniprotect is no longer required? Or maybe I'm totally blind and I'm missing something. I did a side by side comparison with a text diffing type tool...
Ste
dizzy:
Code:
hack:
###########################
# Group = 0x7F175BF9
###
# Group = 0x7F175BF9, Instance = 0x101F
# Title = Function - Main - NPC Motives
#
# Format = 8007, Params = 0, Locals = 0
# Tree type = 0, Header flag = 4, Tree version = FFFF800C (-32756)
0: Idle(3); true: 1, false: 1
1: Global(Game Edition) Flag Set? 2; true: 2, false: 19
2: Lot - Is Dorm? - EP1; true: 4, false: 3
3: Lot - Is Frat? - EP1; true: 4, false: 19
4: Idle(150 (0x96)); true: 4, false: 5
5: Stack Object := 0; true: 6, false: 6
6: Set to Next: person; true: 7, false: 4
7: stack obj's person data Selection Flags (0x9E) Flag Set? Selectable(Shown in Skewer); true: 6, false: 8
8: Lot - Is Dorm? - EP1; true: A, false: 9
9: College - Is NID a Frat Member?(stack obj's person data neighbor id (0x1F), Global(Current House)); true: B, false: 6
A: College - Have Key?(stack obj's person data neighbor id (0x1F), Global(Current House), -1 (0xFFFF)); true: B, false: 6
B: stack obj's motives Bladder (0x9) < -69 (0xFFBB); true: C, false: D
C: stack obj's motives Bladder (0x9) := -15 (0xFFF1); true: D, false: D
D: stack obj's motives Comfort (0x6) < -69 (0xFFBB); true: E, false: F
E: stack obj's motives Comfort (0x6) := -15 (0xFFF1); true: F, false: F
F: stack obj's motives Energy (0x5) > -40 (0xFFD8); true: 11, false: 10
10: stack obj's motives Energy (0x5) := 25 (0x19); true: 11, false: 11
11: stack obj's motives Fun (0xF) < -50 (0xFFCE); true: 12, false: 13
12: stack obj's motives Fun (0xF) := -10 (0xFFF6); true: 13, false: 13
13: stack obj's motives Hunger (0x7) < -70 (0xFFBA); true: 14, false: 15
14: stack obj's motives Hunger (0x7) := -15 (0xFFF1); true: 15, false: 15
15: stack obj's motives Hygiene (0x8) < -70 (0xFFBA); true: 16, false: 17
16: stack obj's motives Hygiene (0x8) := -15 (0xFFF1); true: 17, false: 17
17: stack obj's motives Social (0xE) < -50 (0xFFCE); true: 18, false: 6
18: stack obj's motives Social (0xE) := -20 (0xFFEC); true: 6, false: 6
19: Remove Object Instance: Me; true: 1A, false: 1A
1A: Idle(300 (0x12C)); true: 19, false: 19
Maxis:
###
# Group = 0x7F175BF9, Instance = 0x101F
# Title = Function - Main - NPC Motives
#
# Format = 8007, Params = 0, Locals = 0
# Tree type = 0, Header flag = 4, Tree version = FFFF800C (-32756)
0: Idle(3); true: D, false: error
1: stack obj's motives Hygiene (0x8) := -15 (0xFFF1); true: 19, false: error
2: Idle(150 (0x96)); true: 3, false: error
3: Stack Object := 0; true: 4, false: error
4: Set to Next: person; true: 12, false: 2
5: stack obj's motives Bladder (0x9) < -69 (0xFFBB); true: 6, false: 7
6: stack obj's motives Bladder (0x9) := -15 (0xFFF1); true: 7, false: error
7: stack obj's motives Comfort (0x6) < -69 (0xFFBB); true: 8, false: 9
8: stack obj's motives Comfort (0x6) := -15 (0xFFF1); true: 9, false: error
9: stack obj's motives Energy (0x5) > -40 (0xFFD8); true: B, false: A
A: stack obj's motives Energy (0x5) := 25 (0x19); true: B, false: error
B: stack obj's motives Fun (0xF) < -50 (0xFFCE); true: C, false: 16
C: stack obj's motives Fun (0xF) := -10 (0xFFF6); true: 16, false: error
D: Global(Game Edition) Flag Set? 2; true: 10, false: E
E: Remove Object Instance: Me; true: F, false: F
F: Idle(300 (0x12C)); true: E, false: error
10: Lot - Is Dorm? - EP1; true: 2, false: 11
11: Lot - Is Frat? - EP1; true: 2, false: E
12: stack obj's person data Selection Flags (0x9E) Flag Set? Selectable(Shown in Skewer); true: 4, false: 13
13: Lot - Is Dorm? - EP1; true: 14, false: 15
14: College - Have Key?(stack obj's person data neighbor id (0x1F), Global(Current House), -1 (0xFFFF)); true: 5, false: 4
15: College - Is NID a Frat Member?(stack obj's person data neighbor id (0x1F), Global(Current House)); true: 5, false: 4
16: stack obj's motives Hunger (0x7) < -70 (0xFFBA); true: 17, false: 18
17: stack obj's motives Hunger (0x7) := -15 (0xFFF1); true: 18, false: error
18: stack obj's motives Hygiene (0x8) < -70 (0xFFBA); true: 1, false: 19
19: stack obj's motives Social (0xE) < -50 (0xFFCE); true: 1A, false: 4
1A: stack obj's motives Social (0xE) := -20 (0xFFEC); true: 4, false: error
Little easier with disaSim. :P
syberspunk:
Actually also did a comparison after using disasim, and I couldn't see a difference. I just went into SimPE after, so that I could move the lines around in the object.package so they match Pescados, but didn't change any of the opcode/operands themselves. Just sorted the order. And I could swear it doesn't look different...
I must be totally blind. ???
Ste
ETA:
nouniprotect:
Code:
###########################
# Group = 0x7F175BF9
###
# Group = 0x7F175BF9, Instance = 0x101F
# Title = Function - Main - NPC Motives
#
# Format = 8007, Params = 0, Locals = 0
# Tree type = 0, Header flag = 4, Tree version = FFFF800C (-32756)
0: Idle(3); true: 1, false: 1
1: Global(Game Edition) Flag Set? 2; true: 2, false: 19
2: Lot - Is Dorm? - EP1; true: 4, false: 3
3: Lot - Is Frat? - EP1; true: 4, false: 19
4: Idle(150 (0x96)); true: 4, false: 5
5: Stack Object := 0; true: 6, false: 6
6: Set to Next: person; true: 7, false: 4
7: stack obj's person data Selection Flags (0x9E) Flag Set? Selectable(Shown in Skewer); true: 6, false: 8
8: Lot - Is Dorm? - EP1; true: A, false: 9
9: College - Is NID a Frat Member?(stack obj's person data neighbor id (0x1F), Global(Current House)); true: B, false: 6
A: College - Have Key?(stack obj's person data neighbor id (0x1F), Global(Current House), -1 (0xFFFF)); true: B, false: 6
B: stack obj's motives Bladder (0x9) < -69 (0xFFBB); true: C, false: D
C: stack obj's motives Bladder (0x9) := -15 (0xFFF1); true: D, false: D
D: stack obj's motives Comfort (0x6) < -69 (0xFFBB); true: E, false: F
E: stack obj's motives Comfort (0x6) := -15 (0xFFF1); true: F, false: F
F: stack obj's motives Energy (0x5) > -40 (0xFFD8); true: 11, false: 10
10: stack obj's motives Energy (0x5) := 25 (0x19); true: 11, false: 11
11: stack obj's motives Fun (0xF) < -50 (0xFFCE); true: 12, false: 13
12: stack obj's motives Fun (0xF) := -10 (0xFFF6); true: 13, false: 13
13: stack obj's motives Hunger (0x7) < -70 (0xFFBA); true: 14, false: 15
14: stack obj's motives Hunger (0x7) := -15 (0xFFF1); true: 15, false: 15
15: stack obj's motives Hygiene (0x8) < -70 (0xFFBA); true: 16, false: 17
16: stack obj's motives Hygiene (0x8) := -15 (0xFFF1); true: 17, false: 17
17: stack obj's motives Social (0xE) < -50 (0xFFCE); true: 18, false: 6
18: stack obj's motives Social (0xE) := -20 (0xFFEC); true: 6, false: 6
19: Remove Object Instance: Me; true: 1A, false: 1A
1A: Idle(300 (0x12C)); true: 19, false: 19
Maxis:
Code:
###########################
# Group = 0x7F175BF9
###
# Group = 0x7F175BF9, Instance = 0x101F
# Title = Function - Main - NPC Motives
#
# Format = 8009, Params = 0, Locals = 0
# Tree type = 0, Header flag = 0, Tree version = FFFF800C (-32756), Cache flags = 0
0: Idle(3); true: 1, false: error
1: Global(Game Edition) Flag Set? 2; true: 2, false: 19
2: Lot - Is Dorm? - EP1; true: 4, false: 3
3: Lot - Is Frat? - EP1; true: 4, false: 19
4: Idle(150 (0x96)); true: 5, false: error
5: Stack Object := 0; true: 6, false: error
6: Set to Next: person; true: 7, false: 4
7: stack obj's person data Selection Flags (0x9E) Flag Set? Selectable(Shown in Skewer); true: 6, false: 8
8: Lot - Is Dorm? - EP1; true: A, false: 9
9: College - Is NID a Frat Member?(stack obj's person data neighbor id (0x1F), Global(Current House)); true: B, false: 6
A: College - Have Key?(stack obj's person data neighbor id (0x1F), Global(Current House), -1 (0xFFFF)); true: B, false: 6
B: stack obj's motives Bladder (0x9) < -69 (0xFFBB); true: C, false: D
C: stack obj's motives Bladder (0x9) := -15 (0xFFF1); true: D, false: error
D: stack obj's motives Comfort (0x6) < -69 (0xFFBB); true: E, false: F
E: stack obj's motives Comfort (0x6) := -15 (0xFFF1); true: F, false: error
F: stack obj's motives Energy (0x5) > -40 (0xFFD8); true: 11, false: 10
10: stack obj's motives Energy (0x5) := 25 (0x19); true: 11, false: error
11: stack obj's motives Fun (0xF) < -50 (0xFFCE); true: 12, false: 13
12: stack obj's motives Fun (0xF) := -10 (0xFFF6); true: 13, false: error
13: stack obj's motives Hunger (0x7) < -70 (0xFFBA); true: 14, false: 15
14: stack obj's motives Hunger (0x7) := -15 (0xFFF1); true: 15, false: error
15: stack obj's motives Hygiene (0x8) < -70 (0xFFBA); true: 16, false: 17
16: stack obj's motives Hygiene (0x8) := -15 (0xFFF1); true: 17, false: error
17: stack obj's motives Social (0xE) < -50 (0xFFCE); true: 18, false: 6
18: stack obj's motives Social (0xE) := -20 (0xFFEC); true: 6, false: error
19: Remove Object Instance: Me; true: 1A, false: 1A
1A: Idle(300 (0x12C)); true: 19, false: error
dizzy:
Maybe I'm blind too. Didn't spot this right away:
Code:
original:
3: Lot - Is Frat? - EP1; true: 4, false: 19
4: Idle(150 (0x96)); true: 5, false: error
5: Stack Object := 0; true: 6, false: error
hack:
3: Lot - Is Frat? - EP1; true: 4, false: 19
4: Idle(150 (0x96)); true: 4, false: 5
5: Stack Object := 0; true: 6, false: 6
Pescado has a silly sense of humor. :P
syberspunk:
Ah... er... weird then. So, does Idle Ever return false? And if it doesn't... then that means this code is Never run, and it basically just idles all the time?
Hrm... ok. Thanks for pointing that out. I stared at it for a loooong time, and since most of the changes just involved setting the return false to the same value as return true, instead of returning an error, my eyes/mind must have just glossed over that detail there. :P
Ste
Navigation
[0] Message Index
[#] Next page
[*] Previous page