- Fix: random items > 200 were not read

- Fix: preplaced random items turned guns did not have ammo (WIP)

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@5946 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
Flugente
2013-03-21 23:13:39 +00:00
parent ba5a5206a2
commit 9592be9122
3 changed files with 45 additions and 3 deletions
+40
View File
@@ -1465,6 +1465,46 @@ OBJECTTYPE& OBJECTTYPE::operator=(const OLD_OBJECTTYPE_101& src)
(*this)[0]->data.gun.usGunAmmoItem = src.ugYucky.usGunAmmoItem;
(*this)[0]->data.gun.bGunAmmoStatus = src.ugYucky.bGunAmmoStatus;
(*this)[0]->data.gun.ubGunState = src.ugYucky.ubGunState;
// Flugente: if we resolved a random item, we have to give it ammo...
if ( Item[newitemfromrandom].usItemClass == IC_GUN )
{
(*this)[0]->data.ubImprintID = NO_PROFILE;
if (Weapon[ this->usItem ].ubWeaponClass == MONSTERCLASS)
{
(*this)[0]->data.gun.ubGunShotsLeft = 1;
(*this)[0]->data.gun.ubGunAmmoType = AMMO_MONSTER;
(*this)[0]->data.gun.ubGunState |= GS_CARTRIDGE_IN_CHAMBER; // 0verhaul: Monsters don't have to reload!
}
else if ( EXPLOSIVE_GUN( this->usItem ) )
{
if ( Item[this->usItem].singleshotrocketlauncher )
{
(*this)[0]->data.gun.ubGunShotsLeft = 1;
}
else
{
// cannon
(*this)[0]->data.gun.ubGunShotsLeft = 0;
}
(*this)[0]->data.gun.bGunAmmoStatus = 100;
(*this)[0]->data.gun.ubGunAmmoType = 0;
}
else
{
UINT16 usAmmo = DefaultMagazine( this->usItem );
if ( usAmmo )
{
(*this)[0]->data.gun.usGunAmmoItem = usAmmo;
(*this)[0]->data.gun.ubGunAmmoType = Magazine[ Item[ usAmmo ].ubClassIndex].ubAmmoType;
(*this)[0]->data.gun.bGunAmmoStatus = 100;
(*this)[0]->data.gun.ubGunShotsLeft = Magazine[ Item[ usAmmo ].ubClassIndex ].ubMagSize;
(*this)[0]->data.gun.ubGunState |= GS_CARTRIDGE_IN_CHAMBER; // Madd: new guns should have cartridge in chamber
}
}
}
break;
}
+3 -1
View File
@@ -1162,7 +1162,9 @@ typedef struct RANDOM_ITEM_CHOICE_TYPE
} RANDOM_ITEM_CHOICE_TYPE;
extern RANDOM_ITEM_CHOICE_TYPE gRandomItemClass[200];
#define RANDOM_ITEM_MAX_CATEGORIES 1000
extern RANDOM_ITEM_CHOICE_TYPE gRandomItemClass[RANDOM_ITEM_MAX_CATEGORIES];
// CHRISL: Added new structures to handle LBE gear and the two new XML files that will be needed to deal
// with the IC pockets and the new inventory system.
+2 -2
View File
@@ -9,7 +9,7 @@
#include "Item Types.h"
#endif
RANDOM_ITEM_CHOICE_TYPE gRandomItemClass[200];
RANDOM_ITEM_CHOICE_TYPE gRandomItemClass[RANDOM_ITEM_MAX_CATEGORIES];
struct
{
@@ -272,7 +272,7 @@ BOOLEAN ReadInRandomItemStats(STR fileName)
memset(&pData,0,sizeof(pData));
pData.curArray = gRandomItemClass;
pData.maxArraySize = 200;
pData.maxArraySize = RANDOM_ITEM_MAX_CATEGORIES;
XML_SetUserData(parser, &pData);