- added a militia drop rate to the xml-drop files.obj

- added drop rates for knives, laws, mortars, launchers (see EnemyWeaponDrops.xml, EnemyMiscDrops.xml)

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@478 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
Wanne
2006-08-26 12:28:27 +00:00
parent 691b69b183
commit fce528e1a4
10 changed files with 160 additions and 57 deletions
+2 -2
View File
@@ -23,12 +23,12 @@ INT16 zVersionLabel[256] = { L"Beta v. 0.98" };
#else
//RELEASE BUILD VERSION
INT16 zVersionLabel[256] = { L"Release v1.13.477" };
INT16 zVersionLabel[256] = { L"Release v1.13.478" };
#endif
INT8 czVersionNumber[16] = { "Build 06.08.25" };
INT8 czVersionNumber[16] = { "Build 06.08.26" };
INT16 zTrackingNumber[16] = { L"Z" };
+2 -8
View File
@@ -87,7 +87,7 @@ BOOLEAN LoadExternalGameplayData(STR directoryName)
{
char fileName[MAX_PATH];
// WANNE: Enemy drops
// WANNE: Enemy drops - begin
strcpy(fileName, directoryName);
strcat(fileName, ENEMYMISCDROPSFILENAME);
DebugMsg (TOPIC_JA2,DBG_LEVEL_3,String("LoadExternalGameplayData, fileName = %s", fileName));
@@ -117,16 +117,10 @@ BOOLEAN LoadExternalGameplayData(STR directoryName)
DebugMsg (TOPIC_JA2,DBG_LEVEL_3,String("LoadExternalGameplayData, fileName = %s", fileName));
if(!ReadInEnemyArmourDropsStats(gEnemyArmourDrops, fileName))
return FALSE;
// WANNE: Enemy drops - end
// --------
strcpy(fileName, directoryName);
strcat(fileName, AMMOTYPESFILENAME);
DebugMsg (TOPIC_JA2,DBG_LEVEL_3,String("LoadExternalGameplayData, fileName = %s", fileName));
BIN
View File
Binary file not shown.
+10 -5
View File
@@ -6,35 +6,40 @@
typedef struct
{
UINT8 ubWeaponType;
UINT8 ubDropRate;
UINT8 ubEnemyDropRate;
UINT8 ubMilitiaDropRate;
UINT32 uiIndex;
} WEAPON_DROPS;
typedef struct
{
UINT32 uiType;
UINT8 ubDropRate;
UINT8 ubEnemyDropRate;
UINT8 ubMilitiaDropRate;
UINT32 uiIndex;
} AMMO_DROPS;
typedef struct
{
UINT8 ubType;
UINT8 ubDropRate;
UINT8 ubEnemyDropRate;
UINT8 ubMilitiaDropRate;
UINT32 uiIndex;
} EXPLOSIVE_DROPS;
typedef struct
{
UINT8 ubArmourClass;
UINT8 ubDropRate;
UINT8 ubEnemyDropRate;
UINT8 ubMilitiaDropRate;
UINT32 uiIndex;
} ARMOUR_DROPS;
typedef struct
{
UINT32 usItemClass;
UINT8 ubDropRate;
UINT8 ubEnemyDropRate;
UINT8 ubMilitiaDropRate;
UINT32 uiIndex;
} MISC_DROPS;
+91 -22
View File
@@ -2459,10 +2459,7 @@ else
if(! (pp->Inv[ i ].fFlags & OBJECT_NO_OVERWRITE ) && pp->Inv[ i ].usItem != 0)
{
// Weapon
if( uiItemClass == IC_GUN || uiItemClass == IC_BLADE ||
uiItemClass == IC_THROWING_KNIFE || uiItemClass == IC_LAUNCHER ||
uiItemClass == IC_TENTACLES || uiItemClass == IC_THROWN ||
uiItemClass == IC_PUNCH)
if( uiItemClass == IC_GUN)
{
// Find matching weaponType in the XML
for (j = 0; j < MAX_DROP_ITEMS; j++)
@@ -2479,11 +2476,25 @@ else
if (uiRandomValue == 0)
uiRandomValue++;
// Drop the weapon!
if (uiRandomValue <= gEnemyWeaponDrops[j].ubDropRate)
// militia
if ( SOLDIER_CLASS_MILITIA( bSoldierClass ) )
{
pp->Inv[ i ].fFlags &= ~OBJECT_UNDROPPABLE;
// Drop the item!
if (uiRandomValue <= gEnemyWeaponDrops[j].ubMilitiaDropRate)
{
pp->Inv[ i ].fFlags &= ~OBJECT_UNDROPPABLE;
}
}
// enemy
else
{
// Drop the item!
if (uiRandomValue <= gEnemyWeaponDrops[j].ubEnemyDropRate)
{
pp->Inv[ i ].fFlags &= ~OBJECT_UNDROPPABLE;
}
}
break;
}
}
@@ -2506,11 +2517,24 @@ else
if (uiRandomValue == 0)
uiRandomValue++;
// Drop the weapon!
if (uiRandomValue <= gEnemyAmmoDrops[j].ubDropRate)
// militia
if ( SOLDIER_CLASS_MILITIA( bSoldierClass ) )
{
pp->Inv[ i ].fFlags &= ~OBJECT_UNDROPPABLE;
// Drop the item!
if (uiRandomValue <= gEnemyAmmoDrops[j].ubMilitiaDropRate)
{
pp->Inv[ i ].fFlags &= ~OBJECT_UNDROPPABLE;
}
}
else
{
// Drop the item!
if (uiRandomValue <= gEnemyAmmoDrops[j].ubEnemyDropRate)
{
pp->Inv[ i ].fFlags &= ~OBJECT_UNDROPPABLE;
}
}
break;
}
}
@@ -2533,11 +2557,26 @@ else
if (uiRandomValue == 0)
uiRandomValue++;
// Drop the weapon!
if (uiRandomValue <= gEnemyExplosiveDrops[j].ubDropRate)
// militia
if ( SOLDIER_CLASS_MILITIA( bSoldierClass ) )
{
pp->Inv[ i ].fFlags &= ~OBJECT_UNDROPPABLE;
// Drop the item!
if (uiRandomValue <= gEnemyExplosiveDrops[j].ubMilitiaDropRate)
{
pp->Inv[ i ].fFlags &= ~OBJECT_UNDROPPABLE;
}
}
// enemy
else
{
// Drop the item!
if (uiRandomValue <= gEnemyExplosiveDrops[j].ubEnemyDropRate)
{
pp->Inv[ i ].fFlags &= ~OBJECT_UNDROPPABLE;
}
}
break;
}
}
@@ -2560,19 +2599,35 @@ else
if (uiRandomValue == 0)
uiRandomValue++;
// Drop the weapon!
if (uiRandomValue <= gEnemyArmourDrops[j].ubDropRate)
// militia
if ( SOLDIER_CLASS_MILITIA( bSoldierClass ) )
{
pp->Inv[ i ].fFlags &= ~OBJECT_UNDROPPABLE;
// Drop the item!
if (uiRandomValue <= gEnemyArmourDrops[j].ubMilitiaDropRate)
{
pp->Inv[ i ].fFlags &= ~OBJECT_UNDROPPABLE;
}
}
// enemy
else
{
// Drop the item!
if (uiRandomValue <= gEnemyArmourDrops[j].ubEnemyDropRate)
{
pp->Inv[ i ].fFlags &= ~OBJECT_UNDROPPABLE;
}
}
break;
}
}
}
// Misc
else if (uiItemClass == IC_MEDKIT || uiItemClass == IC_KIT ||
uiItemClass == IC_APPLIABLE || uiItemClass == IC_FACE ||
uiItemClass == IC_KEY || uiItemClass == IC_MISC || uiItemClass == IC_MONEY)
else if (uiItemClass == IC_BLADE || uiItemClass == IC_MEDKIT || uiItemClass == IC_KIT ||
uiItemClass == IC_THROWING_KNIFE || uiItemClass == IC_LAUNCHER ||
uiItemClass == IC_APPLIABLE || uiItemClass == IC_FACE || uiItemClass == IC_TENTACLES ||
uiItemClass == IC_THROWN || uiItemClass == IC_PUNCH || uiItemClass == IC_KEY ||
uiItemClass == IC_MISC || uiItemClass == IC_MONEY)
{
// Find matching armour in the XML
for (j = 0; j < MAX_DROP_ITEMS; j++)
@@ -2589,11 +2644,25 @@ else
if (uiRandomValue == 0)
uiRandomValue++;
// Drop the weapon!
if (uiRandomValue <= gEnemyMiscDrops[j].ubDropRate)
// militia
if ( SOLDIER_CLASS_MILITIA( bSoldierClass ) )
{
pp->Inv[ i ].fFlags &= ~OBJECT_UNDROPPABLE;
// Drop the item!
if (uiRandomValue <= gEnemyMiscDrops[j].ubMilitiaDropRate)
{
pp->Inv[ i ].fFlags &= ~OBJECT_UNDROPPABLE;
}
}
// enemy
else
{
// Drop the item!
if (uiRandomValue <= gEnemyMiscDrops[j].ubEnemyDropRate)
{
pp->Inv[ i ].fFlags &= ~OBJECT_UNDROPPABLE;
}
}
break;
}
}
+11 -4
View File
@@ -86,7 +86,8 @@ ammoDropStartElementHandle(void *userData, const char *name, const char **atts)
else if(pData->curElement == ELEMENT &&
(strcmp(name, "uiIndex") == 0 ||
strcmp(name, "uiType") == 0 ||
strcmp(name, "ubDropRate") == 0 ))
strcmp(name, "ubEnemyDropRate") == 0 ||
strcmp(name, "ubMilitiaDropRate") == 0))
{
pData->curElement = ELEMENT_PROPERTY;
@@ -143,10 +144,15 @@ ammoDropEndElementHandle(void *userData, const char *name)
pData->curElement = ELEMENT;
pData->curAmmoDrop.uiType = (UINT32) atol(pData->szCharData);
}
else if(strcmp(name, "ubDropRate") == 0)
else if(strcmp(name, "ubEnemyDropRate") == 0)
{
pData->curElement = ELEMENT;
pData->curAmmoDrop.ubDropRate = (UINT8) atol(pData->szCharData);
pData->curAmmoDrop.ubEnemyDropRate = (UINT8) atol(pData->szCharData);
}
else if(strcmp(name, "ubMilitiaDropRate") == 0)
{
pData->curElement = ELEMENT;
pData->curAmmoDrop.ubMilitiaDropRate = (UINT8) atol(pData->szCharData);
}
pData->maxReadDepth--;
@@ -242,7 +248,8 @@ BOOLEAN WriteEnemyAmmoDropsStats(AMMO_DROPS *pEnemyAmmoDrops, STR fileName)
FilePrintf(hFile,"\t\t<uiIndex>%d</uiIndex>\r\n", cnt);
FilePrintf(hFile,"\t\t<uiType>%d</uiType>\r\n", pEnemyAmmoDrops[cnt].uiType);
FilePrintf(hFile,"\t\t<ubDropRate>%d</ubDropRate>\r\n", pEnemyAmmoDrops[cnt].ubDropRate);
FilePrintf(hFile,"\t\t<ubEnemyDropRate>%d</ubEnemyDropRate>\r\n", pEnemyAmmoDrops[cnt].ubEnemyDropRate);
FilePrintf(hFile,"\t\t<ubMilitiaDropRate>%d</ubMilitiaDropRate>\r\n", pEnemyAmmoDrops[cnt].ubMilitiaDropRate);
FilePrintf(hFile,"\t</DROPITEM>\r\n");
}
+11 -4
View File
@@ -86,7 +86,8 @@ armourDropStartElementHandle(void *userData, const char *name, const char **atts
else if(pData->curElement == ELEMENT &&
(strcmp(name, "uiIndex") == 0 ||
strcmp(name, "ubArmourClass") == 0 ||
strcmp(name, "ubDropRate") == 0 ))
strcmp(name, "ubEnemyDropRate") == 0 ||
strcmp(name, "ubMilitiaDropRate") == 0 ))
{
pData->curElement = ELEMENT_PROPERTY;
@@ -143,10 +144,15 @@ armourDropEndElementHandle(void *userData, const char *name)
pData->curElement = ELEMENT;
pData->curArmourDrop.ubArmourClass = (UINT8) atol(pData->szCharData);
}
else if(strcmp(name, "ubDropRate") == 0)
else if(strcmp(name, "ubEnemyDropRate") == 0)
{
pData->curElement = ELEMENT;
pData->curArmourDrop.ubDropRate = (UINT8) atol(pData->szCharData);
pData->curArmourDrop.ubEnemyDropRate = (UINT8) atol(pData->szCharData);
}
else if (strcmp(name, "ubMilitiaDropRate") == 0)
{
pData->curElement = ELEMENT;
pData->curArmourDrop.ubMilitiaDropRate = (UINT8) atol(pData->szCharData);
}
pData->maxReadDepth--;
@@ -242,7 +248,8 @@ BOOLEAN WriteEnemyArmourDropsStats(ARMOUR_DROPS *pEnemyArmourDrops, STR fileName
FilePrintf(hFile,"\t\t<uiIndex>%d</uiIndex>\r\n", cnt);
FilePrintf(hFile,"\t\t<ubArmourClass>%d</ubArmourClass>\r\n", pEnemyArmourDrops[cnt].ubArmourClass);
FilePrintf(hFile,"\t\t<ubDropRate>%d</ubDropRate>\r\n", pEnemyArmourDrops[cnt].ubDropRate);
FilePrintf(hFile,"\t\t<ubEnemyDropRate>%d</ubEnemyDropRate>\r\n", pEnemyArmourDrops[cnt].ubEnemyDropRate);
FilePrintf(hFile,"\t\t<ubMilitiaDropRate>%d</ubMilitiaDropRate>\r\n", pEnemyArmourDrops[cnt].ubMilitiaDropRate);
FilePrintf(hFile,"\t</DROPITEM>\r\n");
}
+11 -4
View File
@@ -86,7 +86,8 @@ explosiveDropStartElementHandle(void *userData, const char *name, const char **a
else if(pData->curElement == ELEMENT &&
(strcmp(name, "uiIndex") == 0 ||
strcmp(name, "ubType") == 0 ||
strcmp(name, "ubDropRate") == 0 ))
strcmp(name, "ubEnemyDropRate") == 0 ||
strcmp(name, "ubMilitiaDropRate") == 0 ))
{
pData->curElement = ELEMENT_PROPERTY;
@@ -143,10 +144,15 @@ explosiveDropEndElementHandle(void *userData, const char *name)
pData->curElement = ELEMENT;
pData->curExplosiveDrop.ubType = (UINT8) atol(pData->szCharData);
}
else if(strcmp(name, "ubDropRate") == 0)
else if(strcmp(name, "ubEnemyDropRate") == 0)
{
pData->curElement = ELEMENT;
pData->curExplosiveDrop.ubDropRate = (UINT8) atol(pData->szCharData);
pData->curExplosiveDrop.ubEnemyDropRate = (UINT8) atol(pData->szCharData);
}
else if(strcmp(name, "ubMilitiaDropRate") == 0)
{
pData->curElement = ELEMENT;
pData->curExplosiveDrop.ubMilitiaDropRate = (UINT8) atol(pData->szCharData);
}
pData->maxReadDepth--;
@@ -242,7 +248,8 @@ BOOLEAN WriteEnemyExplosiveDropsStats(EXPLOSIVE_DROPS *pEnemyExplosiveDrops, STR
FilePrintf(hFile,"\t\t<uiIndex>%d</uiIndex>\r\n", cnt);
FilePrintf(hFile,"\t\t<ubType>%d</ubType>\r\n", pEnemyExplosiveDrops[cnt].ubType);
FilePrintf(hFile,"\t\t<ubDropRate>%d</ubDropRate>\r\n", pEnemyExplosiveDrops[cnt].ubDropRate);
FilePrintf(hFile,"\t\t<ubEnemyDropRate>%d</ubEnemyDropRate>\r\n", pEnemyExplosiveDrops[cnt].ubEnemyDropRate);
FilePrintf(hFile,"\t\t<ubMilitiaDropRate>%d</ubMilitiaDropRate>\r\n", pEnemyExplosiveDrops[cnt].ubMilitiaDropRate);
FilePrintf(hFile,"\t</DROPITEM>\r\n");
}
+11 -4
View File
@@ -86,7 +86,8 @@ miscDropStartElementHandle(void *userData, const char *name, const char **atts)
else if(pData->curElement == ELEMENT &&
(strcmp(name, "uiIndex") == 0 ||
strcmp(name, "usItemClass") == 0 ||
strcmp(name, "ubDropRate") == 0 ))
strcmp(name, "ubEnemyDropRate") == 0 ||
strcmp(name, "ubMilitiaDropRate") == 0 ))
{
pData->curElement = ELEMENT_PROPERTY;
@@ -143,10 +144,15 @@ miscDropEndElementHandle(void *userData, const char *name)
pData->curElement = ELEMENT;
pData->curMiscDrop.usItemClass = (UINT32) atol(pData->szCharData);
}
else if(strcmp(name, "ubDropRate") == 0)
else if(strcmp(name, "ubEnemyDropRate") == 0)
{
pData->curElement = ELEMENT;
pData->curMiscDrop.ubDropRate = (UINT8) atol(pData->szCharData);
pData->curMiscDrop.ubEnemyDropRate = (UINT8) atol(pData->szCharData);
}
else if(strcmp(name, "ubMilitiaDropRate") == 0)
{
pData->curElement = ELEMENT;
pData->curMiscDrop.ubMilitiaDropRate = (UINT8) atol(pData->szCharData);
}
pData->maxReadDepth--;
@@ -242,7 +248,8 @@ BOOLEAN WriteEnemyMiscDropsStats(MISC_DROPS *pEnemyMiscDrops, STR fileName)
FilePrintf(hFile,"\t\t<uiIndex>%d</uiIndex>\r\n", cnt);
FilePrintf(hFile,"\t\t<usItemClass>%d</usItemClass>\r\n", pEnemyMiscDrops[cnt].usItemClass);
FilePrintf(hFile,"\t\t<ubDropRate>%d</ubDropRate>\r\n", pEnemyMiscDrops[cnt].ubDropRate);
FilePrintf(hFile,"\t\t<ubEnemyDropRate>%d</ubEnemyDropRate>\r\n", pEnemyMiscDrops[cnt].ubEnemyDropRate);
FilePrintf(hFile,"\t\t<ubMilitiaDropRate>%d</ubMilitiaDropRate>\r\n", pEnemyMiscDrops[cnt].ubMilitiaDropRate);
FilePrintf(hFile,"\t</DROPITEM>\r\n");
}
+11 -4
View File
@@ -86,7 +86,8 @@ weaponDropStartElementHandle(void *userData, const char *name, const char **atts
else if(pData->curElement == ELEMENT &&
(strcmp(name, "uiIndex") == 0 ||
strcmp(name, "ubWeaponType") == 0 ||
strcmp(name, "ubDropRate") == 0 ))
strcmp(name, "ubEnemyDropRate") == 0 ||
strcmp(name, "ubMilitiaDropRate") == 0 ))
{
pData->curElement = ELEMENT_PROPERTY;
@@ -143,10 +144,15 @@ weaponDropEndElementHandle(void *userData, const char *name)
pData->curElement = ELEMENT;
pData->curWeaponDrop.ubWeaponType = (UINT8) atol(pData->szCharData);
}
else if(strcmp(name, "ubDropRate") == 0)
else if(strcmp(name, "ubEnemyDropRate") == 0)
{
pData->curElement = ELEMENT;
pData->curWeaponDrop.ubDropRate = (UINT8) atol(pData->szCharData);
pData->curWeaponDrop.ubEnemyDropRate = (UINT8) atol(pData->szCharData);
}
else if(strcmp(name, "ubMilitiaDropRate") == 0)
{
pData->curElement = ELEMENT;
pData->curWeaponDrop.ubMilitiaDropRate = (UINT8) atol(pData->szCharData);
}
pData->maxReadDepth--;
@@ -242,7 +248,8 @@ BOOLEAN WriteEnemyWeaponDropsStats(WEAPON_DROPS *pEnemyWeaponDrops, STR fileName
FilePrintf(hFile,"\t\t<uiIndex>%d</uiIndex>\r\n", cnt);
FilePrintf(hFile,"\t\t<ubWeaponType>%d</ubWeaponType>\r\n", pEnemyWeaponDrops[cnt].ubWeaponType);
FilePrintf(hFile,"\t\t<ubDropRate>%d</ubDropRate>\r\n", pEnemyWeaponDrops[cnt].ubDropRate);
FilePrintf(hFile,"\t\t<ubEnemyDropRate>%d</ubEnemyDropRate>\r\n", pEnemyWeaponDrops[cnt].ubEnemyDropRate);
FilePrintf(hFile,"\t\t<ubMilitiaDropRate>%d</ubMilitiaDropRate>\r\n", pEnemyWeaponDrops[cnt].ubMilitiaDropRate);
FilePrintf(hFile,"\t</DROPITEM>\r\n");
}