Mercurial > mm7
annotate Level/Decoration.cpp @ 2382:8c00bd4573a8
sub_407A1C - fixing wrongly identified structure variable
author | zipi |
---|---|
date | Sun, 22 Jun 2014 13:58:46 +0100 |
parents | aff7a7b072b7 |
children | f4af3b203f65 |
rev | line source |
---|---|
2253
aff7a7b072b7
adding _CRT_SECURE_NO_WARNINGS to get rid of a few hundrer annoying warnings + adding count parameter to swprintf
Grumpy7
parents:
2196
diff
changeset
|
1 #define _CRT_SECURE_NO_WARNINGS |
1480 | 2 #include "Decoration.h" |
3 #include "../Party.h" | |
1545 | 4 #include "../ErrorHandling.h" |
1480 | 5 |
6 //----- (004583B0) -------------------------------------------------------- | |
7 LevelDecoration::LevelDecoration() | |
8 { | |
2196 | 9 memset(this, 0, sizeof(*this)); |
1480 | 10 } |
11 | |
12 //----- (00450929) -------------------------------------------------------- | |
13 int LevelDecoration::GetGlobalEvent() | |
14 { | |
1489 | 15 //LevelDecoration *v1; // esi@1 |
16 //signed int v2; // eax@1 | |
17 //int v3; // eax@5 | |
18 //int v4; // eax@6 | |
19 //int v5; // eax@7 | |
20 //int v6; // eax@8 | |
21 //int v7; // eax@9 | |
22 //int result; // eax@14 | |
23 //int v9; // eax@18 | |
24 //int v10; // eax@19 | |
25 //int v11; // eax@20 | |
26 //int v12; // eax@21 | |
27 //int v13; // eax@22 | |
1480 | 28 |
29 switch (uDecorationDescID) | |
30 { | |
31 case 0: case 1: | |
32 case 2: case 3: | |
33 return 0; | |
34 | |
35 case 4: return 16; // dec01 "Trash Pile" | |
36 case 5: return 32; // dec02 "Campfire" | |
37 case 6: return 12 + rand() % 4; // dec03 "Cauldron" | |
38 case 7: case 8: | |
39 case 9: case 10: | |
40 return 0; | |
41 | |
42 case 11: return 34; // dec08 "Fruit plate" | |
43 case 12: | |
44 return 0; | |
45 | |
46 case 13: return 17; // dec10 "Trash Pile" | |
47 case 14: return 18; // dec11 "Filth" | |
48 case 15: case 16: case 17: | |
49 case 18: case 19: case 20: | |
50 case 21: case 22: case 23: | |
51 return 0; | |
52 | |
53 case 24: return 36; // dec21 "Keg" | |
54 case 25: case 26: case 27: case 28: case 29: | |
55 case 30: case 31: case 32: case 33: | |
56 return 0; | |
57 | |
58 case 34: return 4 + rand() % 6; // dec32 "Barrel" | |
59 case 35: case 36: case 37: case 38: case 39: | |
60 case 40: case 41: case 42: case 43: case 44: case 45: case 46: case 47: case 48: case 49: | |
61 case 50: case 51: case 52: case 53: case 54: case 55: case 56: case 57: case 58: case 59: | |
62 case 60: case 61: case 62: case 63: case 64: case 65: case 66: case 67: case 68: case 69: | |
63 case 70: case 71: case 72: case 73: case 74: case 75: case 76: case 77: case 78: case 79: | |
64 case 80: case 81: case 82: case 83: case 84: case 85: case 86: case 87: case 88: case 89: | |
65 case 90: case 91: case 92: case 93: case 94: case 95: case 96: case 97: case 98: case 99: | |
66 case 100: case 101: case 102: case 103: case 104: case 105: case 106: case 107: case 108: case 109: | |
67 case 110: case 111: case 112: case 113: case 114: case 115: case 116: case 117: case 118: case 119: | |
68 case 120: case 121: case 122: case 123: case 124: case 125: case 126: case 127: case 128: case 129: | |
69 case 130: case 131: case 132: case 133: case 134: case 135: case 136: case 137: case 138: case 139: | |
70 case 140: case 141: case 142: case 143: case 144: case 145: case 146: case 147: case 148: case 149: | |
71 case 150: case 151: case 152: case 153: case 154: case 155: case 156: case 157: case 158: case 159: | |
72 case 160: case 161: case 162: case 163: case 164: case 165: case 166: case 167: case 168: case 169: | |
73 case 170: case 171: case 172: case 173: case 174: case 175: case 176: case 177: case 178: case 179: | |
74 case 180: case 181: case 182: case 183: | |
75 | |
76 case 184: return 33; // dec24 "Campfire" | |
77 case 185: case 186: | |
78 return 0; | |
79 | |
80 case 187: // dec88 "Mushroom" | |
81 case 190: // dec91 "Mushroom" | |
82 return 37; | |
83 | |
84 case 188: case 189: | |
85 case 191: case 192: case 193: case 194: case 195: case 196: | |
86 case 197: case 198: case 199: case 200: case 201: case 202: | |
87 case 203: case 204: case 205: | |
88 return 0; | |
89 | |
90 case 206: return 162 + rand() % 7; // dec60 | |
91 case 207: return 169 + rand() % 7; // dec61 | |
92 case 208: return 176 + rand() % 7; // dec62 | |
93 case 209: return 183 + rand() % 7; // dec63 | |
1492 | 94 case 210: return 150; // dec64 "Magic pedestal" |
95 case 211: return 151; // dec65 "Magic pedestal" | |
96 case 212: return 152; // dec66 "Magic pedestal" | |
97 case 213: return 153; // dec67 "Magic pedestal" | |
98 case 214: return 154; // dec68 "Magic pedestal" | |
99 case 215: return 155; // dec69 "Magic pedestal" | |
100 case 216: return 156; // dec70 "Magic pedestal" | |
101 case 217: return 157; // dec71 "Magic pedestal" | |
102 case 218: return 158; // dec72 "Magic pedestal" | |
103 case 219: return 159; // dec73 "Magic pedestal" | |
104 case 220: return 160; // dec74 "Magic pedestal" | |
105 case 221: return 161; // dec75 "Magic pedestal" | |
1480 | 106 |
107 case 222: case 223: case 224: | |
108 case 225: case 226: case 227: | |
109 return 0; | |
110 | |
1545 | 111 default: Error("Invalid DecorationDescID: %u", uDecorationDescID); |
1480 | 112 } |
113 } | |
114 | |
115 //----- (0047A825) -------------------------------------------------------- | |
1491
6d21ef91cb2d
Rename LevelDecoration::_47A825 to LevelDecoration::IsObeliskChestActive().
yoctozepto
parents:
1489
diff
changeset
|
116 bool LevelDecoration::IsObeliskChestActive() |
1480 | 117 { |
118 //bool v1; // ebx@1 | |
119 //LevelDecoration *v2; // edi@1 | |
120 | |
1495 | 121 static const std::array<const PARTY_QUEST_BITS, 14> aObeliskQuests = { |
122 PARTY_QUEST_OBELISK_HARMONDALE, | |
123 PARTY_QUEST_OBELISK_ERATHIA, | |
124 PARTY_QUEST_OBELISK_TULAREAN_FOREST, | |
125 PARTY_QUEST_OBELISK_DEYJA, | |
126 PARTY_QUEST_OBELISK_BRACADA_DESERT, | |
127 PARTY_QUEST_OBELISK_CELESTE, | |
128 PARTY_QUEST_OBELISK_THE_PIT, | |
129 PARTY_QUEST_OBELISK_EVENMORN_ISLAND, | |
130 PARTY_QUEST_OBELISK_MOUNT_NIGHON, | |
131 PARTY_QUEST_OBELISK_BARROW_DOWNS, | |
132 PARTY_QUEST_OBELISK_LAND_OF_THE_GIANTS, | |
133 PARTY_QUEST_OBELISK_TATALIA, | |
134 PARTY_QUEST_OBELISK_AVLEE, | |
135 PARTY_QUEST_OBELISK_STONE_CITY | |
136 }; | |
137 | |
1480 | 138 if (pParty->uCurrentHour == 0 |
1495 | 139 && !TestPartyQuestBit(PARTY_QUEST_OBELISK_TREASURE_FOUND) |
140 && std::all_of(aObeliskQuests.begin(), aObeliskQuests.end(), TestPartyQuestBit)) | |
1480 | 141 { |
1489 | 142 this->uFlags &= ~LEVEL_DECORATION_INVISIBLE; |
1480 | 143 return true; |
144 } | |
145 | |
1489 | 146 this->uFlags |= LEVEL_DECORATION_INVISIBLE; |
1480 | 147 return false; |
148 } | |
149 | |
150 //----- (0044C2F4) -------------------------------------------------------- | |
151 bool LevelDecoration::IsInteractive() | |
152 { | |
153 switch (uDecorationDescID) | |
154 { | |
155 case 4: // trash pile | |
156 case 5: // campfire | |
157 case 6: // cauldron | |
158 case 11: // fruit plate | |
159 case 13: // trash pile | |
160 case 14: // dirt | |
161 case 24: // keg | |
162 case 184: // fire | |
163 case 187: // fire | |
164 case 190: // fire | |
165 return true; | |
166 } | |
167 | |
168 if (uDecorationDescID >= 206 && uDecorationDescID <= 209) // lighthouse fire | |
169 return true; | |
1492 | 170 if (uDecorationDescID >= 210 && uDecorationDescID <= 221) // magic pedestal |
1480 | 171 return true; |
172 | |
173 return false; | |
174 } |