d093d8cb01
XU4 is a remake of the computer game Ultima IV. The goal is to make it easy and convenient to play this classic on modern operating systems. XU4 is primarily inspired by the much more ambitious project Exult. XU4 isn't a new game based on the Ultima IV story -- it is a faithful recreation of the old game, right up to the crappy graphics. If you are looking for a game with modern gameplay and graphics, this is not it -- yet. New features that improve the gameplay and keep with the spirit of the original game will be added. XU4 also tries to maintain strict compatibility with the original for its savegame files. You can use a game saved in XU4 with the original and vice versa, at least in theory.
146 lines
5.6 KiB
C++
146 lines
5.6 KiB
C++
$NetBSD: patch-src_item.cpp,v 1.1.1.1 2012/01/08 15:52:12 wiz Exp $
|
|
|
|
Fix build on 64-bit with gcc-4.5.
|
|
|
|
--- src/item.cpp.orig 2005-10-03 05:57:31.000000000 +0000
|
|
+++ src/item.cpp
|
|
@@ -135,13 +135,13 @@ static const ItemLocation items[] = {
|
|
#define N_ITEMS (sizeof(items) / sizeof(items[0]))
|
|
|
|
bool isRuneInInventory(void *virt) {
|
|
- return c->saveGame->runes & (int)virt;
|
|
+ return c->saveGame->runes & (int64_t)virt;
|
|
}
|
|
|
|
void putRuneInInventory(void *virt) {
|
|
c->party->member(0)->awardXp(100);
|
|
c->party->adjustKarma(KA_FOUND_ITEM);
|
|
- c->saveGame->runes |= (int)virt;
|
|
+ c->saveGame->runes |= (int64_t)virt;
|
|
c->saveGame->lastreagent = c->saveGame->moves & 0xF0;
|
|
}
|
|
|
|
@@ -150,18 +150,18 @@ bool isStoneInInventory(void *virt) {
|
|
if (virt == NULL)
|
|
return (c->saveGame->stones > 0);
|
|
/* specific test: does the party have a specific stone? */
|
|
- else return c->saveGame->stones & (int)virt;
|
|
+ else return c->saveGame->stones & (int64_t)virt;
|
|
}
|
|
|
|
void putStoneInInventory(void *virt) {
|
|
c->party->member(0)->awardXp(200);
|
|
c->party->adjustKarma(KA_FOUND_ITEM);
|
|
- c->saveGame->stones |= (int)virt;
|
|
+ c->saveGame->stones |= (int64_t)virt;
|
|
c->saveGame->lastreagent = c->saveGame->moves & 0xF0;
|
|
}
|
|
|
|
bool isItemInInventory(void *item) {
|
|
- return c->saveGame->items & (int)item;
|
|
+ return c->saveGame->items & (int64_t)item;
|
|
}
|
|
|
|
bool isSkullInInventory(void *) {
|
|
@@ -171,7 +171,7 @@ bool isSkullInInventory(void *) {
|
|
void putItemInInventory(void *item) {
|
|
c->party->member(0)->awardXp(400);
|
|
c->party->adjustKarma(KA_FOUND_ITEM);
|
|
- c->saveGame->items |= (int)item;
|
|
+ c->saveGame->items |= (int64_t)item;
|
|
c->saveGame->lastreagent = c->saveGame->moves & 0xF0;
|
|
}
|
|
|
|
@@ -183,17 +183,17 @@ void useBBC(void *item) {
|
|
/* on top of the Abyss entrance */
|
|
if (c->location->coords == abyssEntrance) {
|
|
/* must use bell first */
|
|
- if ((int)item == ITEM_BELL) {
|
|
+ if ((int64_t)item == ITEM_BELL) {
|
|
screenMessage("\nThe Bell rings on and on!\n");
|
|
c->saveGame->items |= ITEM_BELL_USED;
|
|
}
|
|
/* then the book */
|
|
- else if (((int)item == ITEM_BOOK) && (c->saveGame->items & ITEM_BELL_USED)) {
|
|
+ else if (((int64_t)item == ITEM_BOOK) && (c->saveGame->items & ITEM_BELL_USED)) {
|
|
screenMessage("\nThe words resonate with the ringing!\n");
|
|
c->saveGame->items |= ITEM_BOOK_USED;
|
|
}
|
|
/* then the candle */
|
|
- else if (((int)item == ITEM_CANDLE) && (c->saveGame->items & ITEM_BOOK_USED)) {
|
|
+ else if (((int64_t)item == ITEM_CANDLE) && (c->saveGame->items & ITEM_BOOK_USED)) {
|
|
screenMessage("\nAs you light the Candle the Earth Trembles!\n");
|
|
c->saveGame->items |= ITEM_CANDLE_USED;
|
|
}
|
|
@@ -255,7 +255,7 @@ void useSkull(void *item) {
|
|
*/
|
|
void useStone(void *item) {
|
|
MapCoords coords;
|
|
- unsigned char stone = (unsigned char)((int)item);
|
|
+ unsigned char stone = (unsigned char)((int64_t)item);
|
|
|
|
unsigned char truth = STONE_WHITE | STONE_PURPLE | STONE_GREEN | STONE_BLUE;
|
|
unsigned char love = STONE_WHITE | STONE_YELLOW | STONE_GREEN | STONE_ORANGE;
|
|
@@ -393,9 +393,9 @@ bool isMysticInInventory(void *mystic) {
|
|
This would be a good candidate for an xu4 "extended" savegame
|
|
format.
|
|
*/
|
|
- if (((int)mystic) == WEAP_MYSTICSWORD)
|
|
+ if (((int64_t)mystic) == WEAP_MYSTICSWORD)
|
|
return c->saveGame->weapons[WEAP_MYSTICSWORD] > 0;
|
|
- else if (((int)mystic) == ARMR_MYSTICROBES)
|
|
+ else if (((int64_t)mystic) == ARMR_MYSTICROBES)
|
|
return c->saveGame->armor[ARMR_MYSTICROBES] > 0;
|
|
else
|
|
ASSERT(0, "Invalid mystic item was tested in isMysticInInventory()");
|
|
@@ -405,9 +405,9 @@ bool isMysticInInventory(void *mystic) {
|
|
void putMysticInInventory(void *mystic) {
|
|
c->party->member(0)->awardXp(400);
|
|
c->party->adjustKarma(KA_FOUND_ITEM);
|
|
- if (((int)mystic) == WEAP_MYSTICSWORD)
|
|
+ if (((int64_t)mystic) == WEAP_MYSTICSWORD)
|
|
c->saveGame->weapons[WEAP_MYSTICSWORD] += 8;
|
|
- else if (((int)mystic) == ARMR_MYSTICROBES)
|
|
+ else if (((int64_t)mystic) == ARMR_MYSTICROBES)
|
|
c->saveGame->armor[ARMR_MYSTICROBES] += 8;
|
|
else
|
|
ASSERT(0, "Invalid mystic item was added in putMysticInInventory()");
|
|
@@ -415,12 +415,12 @@ void putMysticInInventory(void *mystic)
|
|
}
|
|
|
|
bool isWeaponInInventory(void *weapon) {
|
|
- if (c->saveGame->weapons[(int)weapon])
|
|
+ if (c->saveGame->weapons[(int64_t)weapon])
|
|
return true;
|
|
else {
|
|
int i;
|
|
for (i = 0; i < c->party->size(); i++) {
|
|
- if (c->party->member(i)->getWeapon() == (int)weapon)
|
|
+ if (c->party->member(i)->getWeapon() == (int64_t)weapon)
|
|
return true;
|
|
}
|
|
}
|
|
@@ -428,7 +428,7 @@ bool isWeaponInInventory(void *weapon) {
|
|
}
|
|
|
|
void putWeaponInInventory(void *weapon) {
|
|
- c->saveGame->weapons[(int)weapon]++;
|
|
+ c->saveGame->weapons[(int64_t)weapon]++;
|
|
}
|
|
|
|
void useTelescope(void *notused) {
|
|
@@ -447,11 +447,11 @@ bool isReagentInInventory(void *reag) {
|
|
|
|
void putReagentInInventory(void *reag) {
|
|
c->party->adjustKarma(KA_FOUND_ITEM);
|
|
- c->saveGame->reagents[(int)reag] += xu4_random(8) + 2;
|
|
+ c->saveGame->reagents[(int64_t)reag] += xu4_random(8) + 2;
|
|
c->saveGame->lastreagent = c->saveGame->moves & 0xF0;
|
|
|
|
- if (c->saveGame->reagents[(int)reag] > 99) {
|
|
- c->saveGame->reagents[(int)reag] = 99;
|
|
+ if (c->saveGame->reagents[(int64_t)reag] > 99) {
|
|
+ c->saveGame->reagents[(int64_t)reag] = 99;
|
|
screenMessage("Dropped some!\n");
|
|
}
|
|
}
|