mirror of
https://github.com/1dot13/source.git
synced 2026-09-02 14:36:06 +02:00
- 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:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user