@@ -209,6 +209,7 @@ void AGOSEngine::setupElvira1Opcodes(OpcodeProc *op) {
209
209
op[56 ] = &AGOSEngine::o_copyff;
210
210
op[57 ] = &AGOSEngine::oe1_whatO;
211
211
212
+ op[59 ] = &AGOSEngine::oe1_weigh;
212
213
op[60 ] = &AGOSEngine::oe1_setFF;
213
214
op[61 ] = &AGOSEngine::o_clear;
214
215
@@ -225,7 +226,7 @@ void AGOSEngine::setupElvira1Opcodes(OpcodeProc *op) {
225
226
op[74 ] = &AGOSEngine::o_modf;
226
227
op[75 ] = &AGOSEngine::o_random;
227
228
228
- op[76 ] = &AGOSEngine::o_moveDirn ;
229
+ op[76 ] = &AGOSEngine::oe1_moveDirn ;
229
230
op[77 ] = &AGOSEngine::o_goto;
230
231
231
232
op[80 ] = &AGOSEngine::o_oset;
@@ -350,7 +351,7 @@ void AGOSEngine::setupElvira2Opcodes(OpcodeProc *op) {
350
351
op[34 ] = &AGOSEngine::oe1_copyof;
351
352
op[35 ] = &AGOSEngine::oe1_copyfo;
352
353
op[37 ] = &AGOSEngine::oe1_whatO;
353
- op[54 ] = &AGOSEngine::o_moveDirn ;
354
+ op[54 ] = &AGOSEngine::oe2_moveDirn ;
354
355
op[73 ] = &AGOSEngine::oe1_pobj;
355
356
op[74 ] = &AGOSEngine::oe1_pName;
356
357
op[75 ] = &AGOSEngine::oe1_pcName;
@@ -406,7 +407,7 @@ void AGOSEngine::setupWaxworksOpcodes(OpcodeProc *op) {
406
407
op[34 ] = &AGOSEngine::oe1_copyof;
407
408
op[37 ] = &AGOSEngine::oe1_whatO;
408
409
op[35 ] = &AGOSEngine::oe1_copyfo;
409
- op[54 ] = &AGOSEngine::o_moveDirn ;
410
+ op[54 ] = &AGOSEngine::oww_moveDirn ;
410
411
op[55 ] = &AGOSEngine::oww_goto;
411
412
op[70 ] = &AGOSEngine::o1_printLongText;
412
413
op[73 ] = &AGOSEngine::oe1_pobj;
@@ -892,20 +893,6 @@ void AGOSEngine::o_random() {
892
893
writeVariable (var, _rnd.getRandomNumber (value - 1 ));
893
894
}
894
895
895
- void AGOSEngine::o_moveDirn () {
896
- // 54: move direction
897
- int16 d = getVarOrByte ();
898
-
899
- if (getGameType () == GType_WW) {
900
- moveDirn_ww (me (), d);
901
- } else if (getGameType () == GType_ELVIRA2) {
902
- moveDirn_e2 (me (), d);
903
- } else {
904
- moveDirn_e1 (me (), d);
905
- }
906
-
907
- }
908
-
909
896
void AGOSEngine::o_goto () {
910
897
// 55: set itemA parent
911
898
uint item = getNextItemID ();
@@ -1867,11 +1854,23 @@ void AGOSEngine::oe1_whatO() {
1867
1854
_objectItem = findMaster (levelOf (me ()), _scriptAdj2, _scriptNoun2);
1868
1855
}
1869
1856
1857
+ void AGOSEngine::oe1_weigh () {
1858
+ // 59: weight
1859
+ Item *item = getNextItemPtr ();
1860
+ writeVariable (getVarOrWord (), weighUp (item));
1861
+ }
1862
+
1870
1863
void AGOSEngine::oe1_setFF () {
1871
1864
// 60: set FF
1872
1865
writeNextVarContents (0xFF );
1873
1866
}
1874
1867
1868
+ void AGOSEngine::oe1_moveDirn () {
1869
+ // 54: move direction
1870
+ int16 d = readVariable (getVarOrWord ());
1871
+ moveDirn_e1 (me (), d);
1872
+ }
1873
+
1875
1874
void AGOSEngine::oe1_score () {
1876
1875
// 90: score
1877
1876
SubPlayer *p = (SubPlayer *) findChildOfType (me (), 3 );
@@ -1937,7 +1936,16 @@ void AGOSEngine::oe1_cFlag() {
1937
1936
}
1938
1937
1939
1938
void AGOSEngine::oe1_means () {
1940
- // 165: TODO
1939
+ // 165: means
1940
+ _scriptVerb = getNextWord ();
1941
+ _scriptNoun1 = getNextWord ();
1942
+ _scriptNoun2 = getNextWord ();
1943
+
1944
+ if (getVarOrWord ()) {
1945
+ int16 tmp = _scriptNoun1;
1946
+ _scriptNoun1 = _scriptNoun2;
1947
+ _scriptNoun2 = tmp;
1948
+ }
1941
1949
}
1942
1950
1943
1951
void AGOSEngine::oe1_setUserItem () {
@@ -2125,6 +2133,12 @@ void AGOSEngine::oe1_setStore() {
2125
2133
// Elvira 2 Opcodes
2126
2134
// -----------------------------------------------------------------------
2127
2135
2136
+ void AGOSEngine::oe2_moveDirn () {
2137
+ // 54: move direction
2138
+ int16 d = getVarOrByte ();
2139
+ moveDirn_e2 (me (), d);
2140
+ }
2141
+
2128
2142
void AGOSEngine::oe2_loadUserGame () {
2129
2143
// 89: load user game
2130
2144
getStringPtrByID (getNextStringID ());
@@ -2193,6 +2207,12 @@ void AGOSEngine::oe2_getSuperRoom() {
2193
2207
// Waxworks Opcodes
2194
2208
// -----------------------------------------------------------------------
2195
2209
2210
+ void AGOSEngine::oww_moveDirn () {
2211
+ // 54: move direction
2212
+ int16 d = getVarOrByte ();
2213
+ moveDirn_ww (me (), d);
2214
+ }
2215
+
2196
2216
void AGOSEngine::oww_goto () {
2197
2217
// 55: set itemA parent
2198
2218
uint item = getNextItemID ();
0 commit comments