- began cleaning of buggy LuaInitNPCCode (WIP)

- Fix: enemy NPCs (Mike) cannot surrender
- Fix: in combat, ordering cleaning of guns only applies to the currently selected merc

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@5921 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
Flugente
2013-03-16 00:24:30 +00:00
parent f5f114e52e
commit 0152976365
4 changed files with 588 additions and 874 deletions
+581 -861
View File
File diff suppressed because it is too large Load Diff
+3 -3
View File
@@ -4754,11 +4754,11 @@ void CleanWeapons( BOOLEAN fEntireTeam )
return;
// no functionality if not in tactical or in combat, or nobody is here
if ( (guiCurrentScreen != GAME_SCREEN && guiCurrentScreen != MSG_BOX_SCREEN) || (gTacticalStatus.uiFlags & INCOMBAT) )
if ( (guiCurrentScreen != GAME_SCREEN && guiCurrentScreen != MSG_BOX_SCREEN) )
return;
// if in turnbased mode, perform this action only for the selected merc, and use up APs
if ( !fEntireTeam || gTacticalStatus.uiFlags & TURNBASED )
// if in combat, always only for selected merc
if ( !fEntireTeam || (gTacticalStatus.uiFlags & INCOMBAT) )
{
if ( gusSelectedSoldier == NOBODY )
return;
+2 -1
View File
@@ -10188,7 +10188,8 @@ void PrisonerSurrenderMessageBoxCallBack( UINT8 ubExitValue )
{
if( pSoldier->bActive && ( pSoldier->sSectorX == gWorldSectorX ) && ( pSoldier->sSectorY == gWorldSectorY ) && ( pSoldier->bSectorZ == gbWorldSectorZ) )
{
if( pSoldier->stats.bLife >= OKLIFE )
// only if not dying, and if not a NPC (Mike...)
if( pSoldier->stats.bLife >= OKLIFE && pSoldier->ubProfile == NO_PROFILE )
{
pSoldier->bSoldierFlagMask |= SOLDIER_POW;
+2 -9
View File
@@ -14226,8 +14226,8 @@ BOOLEAN SOLDIERTYPE::IsFeedingExternal(UINT8* pubId1, UINT16* pGunSlot1, UINT16
// do this check for both hands
UINT16 firstslot = HANDPOS;
UINT16 lastslot = SECONDHANDPOS;
for (UINT16 invpos = firstslot; invpos <= lastslot; ++invpos)
UINT16 lastslot = VESTPOCKPOS;
for (UINT16 invpos = firstslot; invpos < lastslot; ++invpos)
{
// do we have ammo in our hands?
OBJECTTYPE* pAmmoObj = &(this->inv[invpos]);
@@ -14257,10 +14257,6 @@ BOOLEAN SOLDIERTYPE::IsFeedingExternal(UINT8* pubId1, UINT16* pGunSlot1, UINT16
INT32 lastid = gTacticalStatus.Team[ this->bTeam ].bLastID;
for ( pTeamSoldier = MercPtrs[ cnt ]; cnt < lastid; ++cnt, ++pTeamSoldier)
{
// we ourselves don't count, we can't face ourselves
//if ( cnt == this->ubID )
//continue;
// check if teamsoldier exists in this sector
if ( !pTeamSoldier || !pTeamSoldier->bActive || !pTeamSoldier->bInSector || pTeamSoldier->sSectorX != this->sSectorX || pTeamSoldier->sSectorY != this->sSectorY || pTeamSoldier->bSectorZ != this->bSectorZ )
continue;
@@ -14363,9 +14359,6 @@ BOOLEAN SOLDIERTYPE::IsFeedingExternal(UINT8* pubId1, UINT16* pGunSlot1, UINT16
}
}
}
// if we reach this point, the only soldier that we could reach doesn't fit -> stop this search
//break;
}
}