Script: Flourmill
From Ultima Online: The Second Age
inherits globals;
member obj Q66W;
trigger creation { int Q62A = getObjType(this); switch (Q62A) { case 0x1922 case 0x192E returnResourcesToBank(this, 0x14, "flour"); break; } return (0x00); }
trigger use { Q66W = user; int Q62A = getObjType(this); int Q4Q1; loc Q61U = getLocation(this); loc Q54X = Q61U; obj Q54Y; int Q54Z; int Q4PW; switch (Q62A) { case 0x1EBD targetObj(user, this); return (0x00); break; case 0x1921 changeLoc(Q54X, 0x01, 0x00, 0x00); Q54Y = getFirstObjectOfType(Q54X, 0x1923); break; case 0x1923 Q54Y = this; break; case 0x1924 changeLoc(Q54X, 0x00 - 0x01, 0x00, 0x00); Q54Y = getFirstObjectOfType(Q54X, 0x1923); break; case 0x192D changeLoc(Q54X, 0x00, 0x01, 0x00); Q54Y = getFirstObjectOfType(Q54X, 0x192F); break; case 0x192F Q54Y = this; break; case 0x1930 changeLoc(Q54X, 0x00, 0x00 - 0x01, 0x00); Q54Y = getFirstObjectOfType(Q54X, 0x192F); break; default break; } Q4Q1 = getResource(Q4PW, Q54Y, "flour", 0x03, 0x02); if (Q4PW > 0x13) { Q54Z = getObjType(Q54Y); loc Q5BZ = Q54X; obj Q5C4; if (Q54Z == 0x1923) { setType(Q54Y, 0x1926); changeLoc(Q5BZ, 0x00 - 0x01, 0x00, 0x00); Q5C4 = getFirstObjectOfType(Q5BZ, 0x1921); setType(Q5C4, 0x1925); changeLoc(Q5BZ, 0x02, 0x00, 0x00); Q5C4 = getFirstObjectOfType(Q5BZ, 0x1924); setType(Q5C4, 0x1928); } if (Q54Z == 0x192F) { setType(Q54Y, 0x1932); changeLoc(Q5BZ, 0x00, 0x00 - 0x01, 0x00); Q5C4 = getFirstObjectOfType(Q5BZ, 0x192D); setType(Q5C4, 0x1931); changeLoc(Q5BZ, 0x00, 0x02, 0x00); Q5C4 = getFirstObjectOfType(Q5BZ, 0x1930); setType(Q5C4, 0x1934); } callback(Q54Y, 0x05, 0x3B); } else { systemMessage(user, "You need more wheat to make a sack of flour."); } return (0x00); }
trigger callback(0x3B) { int Q62A = getObjType(this); int Q5L6; int Q4PY; obj Q54Y = this; obj Q5C4; loc Q61U = getLocation(this); loc Q4N8; loc Q4EK; obj flour; if (Q62A == 0x1926) { setType(Q54Y, 0x1922); changeLoc(Q61U, 0x00 - 0x01, 0x00, 0x00); Q5C4 = getFirstObjectOfType(Q61U, 0x1925); setType(Q5C4, 0x1920); changeLoc(Q61U, 0x02, 0x00, 0x00); Q5C4 = getFirstObjectOfType(Q61U, 0x1928); Q4EK = Q61U; setType(Q5C4, 0x1924); } if (Q62A == 0x1932) { setType(Q54Y, 0x192E); changeLoc(Q61U, 0x00, 0x00 - 0x01, 0x00); Q5C4 = getFirstObjectOfType(Q61U, 0x1931); setType(Q5C4, 0x192C); changeLoc(Q61U, 0x00, 0x02, 0x00); Q5C4 = getFirstObjectOfType(Q61U, 0x1934); Q4EK = Q61U; setType(Q5C4, 0x1930); } Q5L6 = random(0x00, 0x01); if (Q5L6) { Q4PY = 0x1039; } else { Q4PY = 0x1045; } if (findGoodSpotNearWithElev(Q4EK, getZ(Q4EK) - 0x08, getZ(Q4EK) + 0x10, 0x02, getTileHeight(Q4PY), 0x00)) { flour = createNoResObjectAt(Q4PY, Q4EK); } else { loc Q66U = getLocation(Q66W); flour = createNoResObjectAt(Q4PY, Q66U); } transferResources(flour, this, 0x14, "flour"); return (0x00); }
trigger targetobj { if (usedon == NULL()) { return (0x00); } int Q66P = getObjType(usedon); int Q54Z; loc Q66N = getLocation(usedon); obj Q54Y; obj Q4WL; loc Q54X = Q66N; loc Q5BZ; switch (Q66P) { case 0x1920 changeLoc(Q54X, 0x01, 0x00, 0x00); Q54Y = getFirstObjectOfType(Q54X, 0x1922); break; case 0x1922 Q54Y = usedon; break; case 0x192C changeLoc(Q54X, 0x00, 0x01, 0x00); Q54Y = getFirstObjectOfType(Q54X, 0x192E); break; case 0x192E Q54Y = usedon; break; case 0x1921 changeLoc(Q54X, 0x01, 0x00, 0x00); Q54Y = getFirstObjectOfType(Q54X, 0x1923); break; case 0x1923 Q54Y = usedon; break; case 0x192D changeLoc(Q54X, 0x00, 0x01, 0x00); Q54Y = getFirstObjectOfType(Q54X, 0x192F); break; case 0x192F Q54Y = usedon; break; case 0x1924 changeLoc(Q54X, 0x00 - 0x01, 0x00, 0x00); Q54Y = getFirstObjectOfType(Q54X, 0x1922); if (Q54Y == NULL()) { Q54Y = getFirstObjectOfType(Q54X, 0x1923); } break; case 0x1930 changeLoc(Q54X, 0x00, 0x00 - 0x01, 0x00); Q54Y = getFirstObjectOfType(Q54X, 0x192E); if (Q54Y == NULL()) { Q54Y = getFirstObjectOfType(Q54X, 0x192F); } break; default return (0x00); break; } Q5BZ = Q54X; Q54Z = getObjType(Q54Y); switch (Q54Z) { case 0x1923 case 0x192F transferResources(Q54Y, this, 0x0A, "flour"); break; case 0x1922 transferResources(Q54Y, this, 0x0A, "flour"); setType(Q54Y, 0x1923); changeLoc(Q5BZ, 0x00 - 0x01, 0x00, 0x00, ); Q4WL = getFirstObjectOfType(Q5BZ, 0x1920); setType(Q4WL, 0x1921); break; case 0x192E setType(Q54Y, 0x192F); changeLoc(Q5BZ, 0x00, 0x00 - 0x01, 0x00, ); Q4WL = getFirstObjectOfType(Q5BZ, 0x192C); setType(Q4WL, 0x192D); transferResources(Q54Y, this, 0x0A, "flour"); break; } int Q4PX; int Q4Q1; Q4Q1 = getResource(Q4PX, this, "flour", 0x03, 0x02); if (Q4PX == 0x00) { deleteObject(this); } return (0x00); }