- Encyclopedia / Briefing Room Updates (by Jazz)

o Improved record
o Restart game of Briefing Rooms
o New Action for NPC (recruiting / unrecruiting)
NPC_ACTION_RECRUIT_PROFILE_TO_EPC = 700
NPC_ACTION_UNRECRUIT_EPC = 701

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@6120 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
Wanne
2013-06-13 22:34:43 +00:00
parent 742494ec77
commit 8f41617845
9 changed files with 187 additions and 6 deletions
+48 -5
View File
@@ -290,6 +290,7 @@ static int l_CheckCharacterSectorZ (lua_State *L);
static int l_CheckNPCSectorNew (lua_State *L);
static int l_GetWorldHour (lua_State *L);
static int l_FindItemSoldier (lua_State *L);
static int l_FindItem2Soldier (lua_State *L);
static int l_CheckNPCWoundedbyPlayer (lua_State *L);
static int l_CheckNPCWounded (lua_State *L);
@@ -943,6 +944,7 @@ void IniFunction(lua_State *L)
lua_register(L, "ClosestPC", l_ClosestPC );
lua_register(L, "TileIsOutOfBounds", l_TileIsOutOfBounds );
lua_register(L, "FindItemSoldier",l_FindItemSoldier);
lua_register(L, "FindItemSoldierAddItemToPool",l_FindItemSoldier);
lua_register(L, "TileIsOutOfBoundsClosestPC", l_TileIsOutOfBoundsClosestPC);
lua_register(L, "CheckCharacterSectorZ", l_CheckCharacterSectorZ);
lua_register(L, "CheckSoldierNeutral", l_bNeutral);
@@ -952,6 +954,8 @@ void IniFunction(lua_State *L)
lua_register(L, "IsMercDead", l_IsMercDead);
lua_register(L, "IsMercHireable", l_IsMercHireable);
lua_register(L, "FindItemProfile",l_FindItem2Soldier);
//Set merc
lua_register(L, "SetThreatenDefaultResponseUsedRecently", l_bThreatenDefaultResponseUsedRecently);
lua_register(L, "SetRecruitDefaultResponseUsedRecently", l_bRecruitDefaultResponseUsedRecently);
@@ -7780,6 +7784,42 @@ BOOLEAN LetLuaHandleNPCSystemEvent( UINT32 uiEvent, UINT8 Init)
*/
//---------------
static int l_FindItem2Soldier (lua_State *L)
{
UINT8 n = lua_gettop(L);
int i;
SOLDIERTYPE *pSoldier;
UINT8 ubTargetNPC;
UINT32 ItemIndex;
UINT32 Grido;
INT8 bItemIn;
BOOLEAN fPlayerMercsOnly;
BOOLEAN bol = FALSE;
for (i= 1; i<=n; i++ )
{
if (i == 1 ) ubTargetNPC = lua_tointeger(L,i);
if (i == 2 ) ItemIndex = lua_tointeger(L,i);
if (i == 3 ) fPlayerMercsOnly = lua_toboolean(L,i);
}
pSoldier = FindSoldierByProfileID( ubTargetNPC, fPlayerMercsOnly);
if (pSoldier)
{
bItemIn = FindObj( pSoldier, ItemIndex );
if (bItemIn != NO_SLOT)
{
bol = TRUE;
}
}
lua_pushboolean(L, bol);
return 1;
}
static int l_FindItemSoldier (lua_State *L)
{
UINT8 n = lua_gettop(L);
@@ -11055,7 +11095,7 @@ static int l_SetEndMission(lua_State *L)
if (i == 1 ) idMission = lua_tointeger(L,i);
}
if ( gBriefingRoomData[idMission].CheckMission == MISSIONSTART )
if ( idMission != -1 && gBriefingRoomData[idMission].CheckMission == MISSIONSTART )
{
gBriefingRoomData[idMission].CheckMission = MISSIONEND; //set end mission
nextMission = gBriefingRoomData[idMission].NextMission;
@@ -11068,7 +11108,7 @@ static int l_SetEndMission(lua_State *L)
static int l_SetStartMission(lua_State *L)
{
UINT32 idMission;
UINT32 idMission = 0;
UINT8 n = lua_gettop(L);
int i = 0;
@@ -11077,11 +11117,14 @@ static int l_SetStartMission(lua_State *L)
if (i == 1 ) idMission = lua_tointeger(L,i);
}
if ( idMission != -1 )
{
if ( gBriefingRoomData[idMission].CheckMission != MISSIONSTART || gBriefingRoomData[idMission].CheckMission != MISSIONEND || gBriefingRoomData[idMission].CheckMission == MISSIONNOSTARTED )
{
gBriefingRoomData[idMission].CheckMission = MISSIONSTART; //set start mission
gBriefingRoomData[idMission].Hidden = TRUE; // set next mission
}
}
return 0;
}
@@ -11098,11 +11141,11 @@ static int l_CheckMission (lua_State *L)
if (i == 1 ) idMission = lua_tointeger(L,i);
}
if ( gBriefingRoomData[idMission].CheckMission == MISSIONNOSTARTED)
if ( idMission != -1 && gBriefingRoomData[idMission].CheckMission == MISSIONNOSTARTED)
Bool = 0;
else if ( gBriefingRoomData[idMission].CheckMission == MISSIONSTART)
else if ( idMission != -1 && gBriefingRoomData[idMission].CheckMission == MISSIONSTART)
Bool = 1;
else if (gBriefingRoomData[idMission].CheckMission == MISSIONEND)
else if (idMission != -1 && gBriefingRoomData[idMission].CheckMission == MISSIONEND)
Bool = 2;
lua_pushinteger(L, Bool);