Created top hak for crafting dialog. Moved Bioware creature abilities to top hak. Fixed DMFI wand handouts. Added DMFI language handouts. Added CCOH 6. Disabled PC corpse system. Modified new player startup system. Full compile. Updated release archive.
373 lines
13 KiB
Plaintext
373 lines
13 KiB
Plaintext
#include "mk_inc_generic"
|
|
#include "mk_inc_craft"
|
|
#include "mk_inc_body"
|
|
#include "mk_inc_ccoh_db"
|
|
#include "mk_inc_states"
|
|
#include "mk_inc_delimiter"
|
|
|
|
int StartingConditional()
|
|
{
|
|
object oPC = GetPCSpeaker();
|
|
object oTarget = MK_GetCurrentTarget(oPC);
|
|
object oItem = CIGetCurrentModItem(oPC);
|
|
|
|
MK_CCOH_DB_Init(oPC);
|
|
|
|
MK_DELIMITER_Initialize();
|
|
|
|
int nState = MK_GenericDialog_GetState();
|
|
int nAction = MK_GenericDialog_GetAction();
|
|
|
|
// MK_DEBUG_TRACE("mk_pre_db_item: nState="+IntToString(nState)+", nAction="+IntToString(nAction));
|
|
|
|
switch (nState)
|
|
{
|
|
case MK_STATE_INIT:
|
|
// We've just selected "Save/Restore" (coming from modify an item)
|
|
MK_GenericDialog_SetState(MK_STATE_DATABASE_1);
|
|
break;
|
|
case MK_STATE_BODY_SELECT:
|
|
// We've just selected "Save/Restore" (coming from modify body)
|
|
MK_GenericDialog_SetState(MK_STATE_DATABASE_1);
|
|
// So the cancel script restores the body
|
|
CISetCurrentModMode(oPC, MK_CI_MODMODE_BODY);
|
|
MK_SetBodyPartToBeModified(oPC, nAction);
|
|
// MK_SaveBody(oPC, 0);
|
|
break;
|
|
case MK_STATE_DATABASE_1:
|
|
// We've choosen to read from local/global or to write to local/global
|
|
switch (nAction)
|
|
{
|
|
case 10: // save to database
|
|
case 12:
|
|
// MK_CCOH_DB_SetDatabaseName(oPC, "");
|
|
MK_CCOH_DB_SetReadWriteMode(oPC, MK_CCOH_DB_WRITE);
|
|
MK_GenericDialog_SetState(MK_STATE_DATABASE_2);
|
|
break;
|
|
case 11: // read from database
|
|
case 13:
|
|
// MK_CCOH_DB_SetDatabaseName(oPC, "");
|
|
MK_CCOH_DB_SetReadWriteMode(oPC, MK_CCOH_DB_READ);
|
|
MK_GenericDialog_SetState(MK_STATE_DATABASE_2);
|
|
break;
|
|
case 15: // database administration
|
|
MK_CCOH_DB_SetReadWriteMode(oPC, MK_CCOH_DB_ADMIN);
|
|
MK_GenericDialog_SetState(MK_STATE_DATABASE_2);
|
|
break;
|
|
/* case 12: // save to global
|
|
MK_CCOH_DB_SetDatabaseName(oPC, MK_CCOH_DB_DATABASE_NAME);
|
|
MK_CCOH_DB_SetReadWriteMode(oPC, MK_CCOH_DB_WRITE);
|
|
MK_GenericDialog_SetState(MK_STATE_DATABASE_2);
|
|
break;
|
|
case 13: // read from global
|
|
MK_CCOH_DB_SetDatabaseName(oPC, MK_CCOH_DB_DATABASE_NAME);
|
|
MK_CCOH_DB_SetReadWriteMode(oPC, MK_CCOH_DB_READ);
|
|
MK_GenericDialog_SetState(MK_STATE_DATABASE_2);
|
|
break;*/
|
|
}
|
|
break;
|
|
case MK_STATE_DATABASE_2:
|
|
// We've just choosen the slot number
|
|
if ((nAction>=1) && (nAction<=30))
|
|
{
|
|
MK_CCOH_DB_SetCurrentSlot(oPC, nAction);
|
|
string sSlotName;
|
|
if (MK_CCOH_DB_GetIsSlotUsed(oPC, nAction))
|
|
{
|
|
sSlotName = MK_CCOH_DB_CreateSlotName(oPC, nAction, FALSE);
|
|
}
|
|
else
|
|
{
|
|
switch (CIGetCurrentModMode(oPC))
|
|
{
|
|
case MK_CI_MODMODE_BODY:
|
|
sSlotName = GetName(oTarget);
|
|
break;
|
|
default:
|
|
sSlotName = GetName(oItem);
|
|
break;
|
|
}
|
|
}
|
|
MK_CCOH_DB_SetCurrentSlotName(oPC, sSlotName);
|
|
|
|
int nValidIASStrTypes;
|
|
switch (MK_CCOH_DB_GetReadWriteMode(oPC))
|
|
{
|
|
case MK_CCOH_DB_READ:
|
|
nValidIASStrTypes = MK_CCOH_DB_GetIASStrTypesFromSlot(oPC, nAction);
|
|
break;
|
|
case MK_CCOH_DB_WRITE:
|
|
switch (CIGetCurrentModMode(oPC))
|
|
{
|
|
case X2_CI_MODMODE_ARMOR:
|
|
case MK_CI_MODMODE_CLOAK:
|
|
case MK_CI_MODMODE_HELMET:
|
|
nValidIASStrTypes = MK_CCOH_DB_ITEM_APPR_MODEL | MK_CCOH_DB_ITEM_APPR_COLOR;
|
|
break;
|
|
case X2_CI_MODMODE_WEAPON:
|
|
case MK_CI_MODMODE_SHIELD:
|
|
nValidIASStrTypes = MK_CCOH_DB_ITEM_APPR_MODEL;
|
|
break;
|
|
case MK_CI_MODMODE_BODY:
|
|
nValidIASStrTypes = MK_CCOH_DB_BODY_APPR_HEAD | MK_CCOH_DB_BODY_APPR_TAIL
|
|
| MK_CCOH_DB_BODY_APPR_WINGS | MK_CCOH_DB_BODY_APPR_PHENO
|
|
| MK_CCOH_DB_BODY_APPR_PORTRAIT | MK_CCOH_DB_BODY_APPR_BODY
|
|
| MK_CCOH_DB_BODY_APPR_COLOR | MK_CCOH_DB_BODY_APPR_TYPE
|
|
| MK_CCOH_DB_BODY_APPR_SCALE;
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
MK_CCOH_DB_SetValidIASStrTypes(oPC, nValidIASStrTypes);
|
|
MK_CCOH_DB_SetSelectedIASStrTypes(oPC, nValidIASStrTypes);
|
|
|
|
MK_GenericDialog_SetState(MK_STATE_DATABASE_3);
|
|
}
|
|
else if (nAction == 255)
|
|
{
|
|
MK_GenericDialog_SetState(MK_STATE_DATABASE_1);
|
|
}
|
|
break;
|
|
case MK_STATE_DATABASE_3:
|
|
// We've just choosen what to read or write (model, color or both)
|
|
switch (nAction)
|
|
{
|
|
case 18:
|
|
switch (CIGetCurrentModMode(oPC))
|
|
{
|
|
case X2_CI_MODMODE_ARMOR:
|
|
case X2_CI_MODMODE_WEAPON:
|
|
case MK_CI_MODMODE_CLOAK:
|
|
case MK_CI_MODMODE_HELMET:
|
|
case MK_CI_MODMODE_SHIELD:
|
|
MK_CCOH_DB_SetCurrentSlotName(oPC, GetName(oItem));
|
|
break;
|
|
case MK_CI_MODMODE_BODY:
|
|
MK_CCOH_DB_SetCurrentSlotName(oPC, GetName(oTarget));
|
|
break;
|
|
}
|
|
break;
|
|
case 20:
|
|
// SendMessageToPC(oPC, "Delete selected slot!");
|
|
MK_CCOH_DB_DeleteCurrentSlot(oPC);
|
|
MK_GenericDialog_SetState(MK_STATE_DATABASE_2);
|
|
break;
|
|
case 100:
|
|
{
|
|
// Editor: OK
|
|
string sSlotName = MK_TrimString(GetLocalString(oPC, g_varEditorBuffer));
|
|
MK_CCOH_DB_SetCurrentSlotName(oPC, sSlotName);
|
|
MK_Editor_CleanUp(oPC);
|
|
break;
|
|
}
|
|
case 101:
|
|
// Editor: Cancel
|
|
MK_Editor_CleanUp(oPC);
|
|
break;
|
|
case 255:
|
|
MK_CCOH_DB_SetCurrentSlot(oPC, -1);
|
|
MK_CCOH_DB_SetCurrentSlotName(oPC, "");
|
|
MK_GenericDialog_SetState(MK_STATE_DATABASE_2);
|
|
break;
|
|
default:
|
|
if ((nAction>=0) && (nAction<=15))
|
|
{
|
|
MK_CCOH_DB_ToggleSelectedIASStrType(oPC, nAction);
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
int bOk;
|
|
|
|
nState = MK_GenericDialog_GetState();
|
|
|
|
// MK_DEBUG_TRACE("mk_pre_db_item(2): nState="+IntToString(nState)+
|
|
// ", nCurrentModMode="+IntToString(CIGetCurrentModMode(oPC)));
|
|
|
|
int iCondition;
|
|
|
|
switch (nState)
|
|
{
|
|
case MK_STATE_DATABASE_1:
|
|
{
|
|
// We're about to choose what to do: read/write, local/global
|
|
bOk = MK_CCOH_DB_GetUseLocalDb(oPC);
|
|
MK_GenericDialog_SetCondition(10, bOk);
|
|
MK_GenericDialog_SetCondition(11, bOk);
|
|
MK_GenericDialog_SetCondition(12, !bOk);
|
|
MK_GenericDialog_SetCondition(13, !bOk);
|
|
MK_GenericDialog_SetCondition(15, TRUE);
|
|
int nMode = CIGetCurrentModMode(oPC);
|
|
for (iCondition=1; iCondition<=5; iCondition++)
|
|
{
|
|
MK_GenericDialog_SetCondition(iCondition, nMode == iCondition);
|
|
}
|
|
MK_GenericDialog_SetCondition(127, (nMode == MK_CI_MODMODE_BODY));
|
|
break;
|
|
}
|
|
case MK_STATE_DATABASE_2:
|
|
{
|
|
// We're about to choose the slot number
|
|
int nReadWriteMode = MK_CCOH_DB_GetReadWriteMode(oPC);
|
|
int nEmptySlots = 0;
|
|
int nMaxEmptySlots = 1;
|
|
int bIsEmpty;
|
|
for (iCondition=1; iCondition<=30; iCondition++)
|
|
{
|
|
switch (nReadWriteMode)
|
|
{
|
|
case MK_CCOH_DB_READ:
|
|
bOk = MK_CCOH_DB_GetIsSlotValid(oPC, iCondition, oItem);
|
|
break;
|
|
case MK_CCOH_DB_WRITE:
|
|
{
|
|
bOk = TRUE;
|
|
if (!MK_CCOH_DB_GetIsSlotUsed(oPC, iCondition) && (nMaxEmptySlots < ++nEmptySlots))
|
|
{
|
|
bOk = FALSE;
|
|
}
|
|
break;
|
|
}
|
|
case MK_CCOH_DB_ADMIN:
|
|
bOk = MK_CCOH_DB_GetIsSlotUsed(oPC, iCondition);
|
|
break;
|
|
default:
|
|
bOk = FALSE;
|
|
break;
|
|
}
|
|
if (bOk)
|
|
{
|
|
string sSlotName = MK_CCOH_DB_CreateSlotName(oPC, iCondition, TRUE);
|
|
SetCustomToken(14439+iCondition, sSlotName);
|
|
}
|
|
MK_GenericDialog_SetCondition(iCondition, bOk);
|
|
}
|
|
break;
|
|
}
|
|
case MK_STATE_DATABASE_3:
|
|
{
|
|
// We're about to choose what to read or write (model, color or both)
|
|
int nSlot = MK_CCOH_DB_GetCurrentSlot(oPC);
|
|
SetCustomToken(14430, (nSlot!=-1 ? MK_CCOH_DB_GetCurrentSlotName(oPC) + " ("+IntToString(nSlot)+")" : GetStringByStrRef(53185)) );
|
|
|
|
int nCurrentModMode = CIGetCurrentModMode(oPC);
|
|
|
|
int nValidIASStrTypes = MK_CCOH_DB_GetValidIASStrTypes(oPC);
|
|
int nSelectedIASStrTypes = MK_CCOH_DB_GetSelectedIASStrTypes(oPC);
|
|
|
|
MK_DEBUG_TRACE("mk_pre_db_item: nValidIASStrTypes="+IntToString(nValidIASStrTypes)+
|
|
", nSelectedIASStrTypes="+IntToString(nSelectedIASStrTypes));
|
|
|
|
int iCondition;
|
|
int nApprFlag = 1;
|
|
int nCount=0;
|
|
for (iCondition=0; iCondition<=15; iCondition++)
|
|
{
|
|
bOk = (nValidIASStrTypes & nApprFlag);
|
|
SetCustomToken(14440+iCondition,
|
|
( nSelectedIASStrTypes & nApprFlag ? "[X] " : "[<c >_</c>] ")
|
|
+ MK_CCOH_DB_GetIASStrTypeName(nCurrentModMode, iCondition+1));
|
|
MK_GenericDialog_SetCondition(iCondition, bOk);
|
|
if (bOk) nCount++;
|
|
|
|
nApprFlag*=2;
|
|
}
|
|
|
|
string sText1="";
|
|
string sText2="";
|
|
switch (MK_CCOH_DB_GetReadWriteMode(oPC))
|
|
{
|
|
case MK_CCOH_DB_READ:
|
|
sText1 = MK_TLK_GetStringByStrRef(-79);
|
|
sText2 = MK_TLK_GetStringByStrRef(-91);
|
|
|
|
MK_GenericDialog_SetCondition(18,FALSE);
|
|
MK_GenericDialog_SetCondition(19,FALSE);
|
|
|
|
MK_GenericDialog_SetCondition(20, FALSE);
|
|
|
|
break;
|
|
case MK_CCOH_DB_WRITE:
|
|
{
|
|
sText1 = MK_TLK_GetStringByStrRef(-78);
|
|
sText2 = MK_TLK_GetStringByStrRef(-92);
|
|
|
|
string sText18;
|
|
int bEnable18;
|
|
switch (nCurrentModMode)
|
|
{
|
|
case MK_CI_MODMODE_BODY:
|
|
sText18 = GetName(oTarget);
|
|
bEnable18 = (sText18!=MK_CCOH_DB_GetCurrentSlotName(oPC));
|
|
break;
|
|
default:
|
|
sText18 = GetName(oItem);
|
|
bEnable18 = (sText18!=MK_CCOH_DB_GetCurrentSlotName(oPC));
|
|
break;
|
|
}
|
|
SetCustomToken(14431, sText18);
|
|
MK_GenericDialog_SetCondition(18, bEnable18);
|
|
|
|
MK_GenericDialog_SetCondition(19,
|
|
MK_VERSION_GetIsVersionGreaterEqual_1_69(oPC) && (GetLocalInt(oPC, "MK_DISABLE_TEXT_EDITOR")!=1));
|
|
|
|
MK_GenericDialog_SetCondition(20, FALSE);
|
|
|
|
// In case the editor gets started
|
|
int bUseChatEvent = GetLocalInt(oPC, "MK_EDITOR_USE_CHAT_EVENT");
|
|
SetLocalString(oPC, g_varEditorText, MK_CCOH_DB_GetCurrentSlotName(oPC));
|
|
|
|
// MK_DEBUG_TRACE("MK_PrepeareEditor()");
|
|
MK_PrepareEditor(oPC, 3, 24, 25, "Edit slot name:",
|
|
30,
|
|
TRUE, FALSE, bUseChatEvent);
|
|
// MK_GenericDialog_SetCondition(100, FALSE);
|
|
// MK_GenericDialog_SetCondition(101, FALSE);
|
|
// MK_GenericDialog_SetCondition(102, TRUE);
|
|
// MK_GenericDialog_SetCondition(103, FALSE);
|
|
break;
|
|
}
|
|
case MK_CCOH_DB_ADMIN:
|
|
MK_GenericDialog_SetCondition(19, nSlot!=-1);
|
|
MK_GenericDialog_SetCondition(20, nSlot!=-1);
|
|
|
|
// In case the editor gets started
|
|
int bUseChatEvent = GetLocalInt(oPC, "MK_EDITOR_USE_CHAT_EVENT");
|
|
SetLocalString(oPC, g_varEditorText, MK_CCOH_DB_GetCurrentSlotName(oPC));
|
|
|
|
// MK_DEBUG_TRACE("MK_PrepeareEditor()");
|
|
MK_PrepareEditor(oPC, 3, 24, 25, "Edit slot name:",
|
|
30,
|
|
TRUE, FALSE, bUseChatEvent);
|
|
// MK_GenericDialog_SetCondition(100, FALSE);
|
|
// MK_GenericDialog_SetCondition(101, FALSE);
|
|
// MK_GenericDialog_SetCondition(102, TRUE);
|
|
// MK_GenericDialog_SetCondition(103, FALSE);
|
|
|
|
break;
|
|
}
|
|
|
|
// MK_DEBUG_TRACE("SetCustomToken(14460, "+sText1+")");
|
|
SetCustomToken(14460, sText1);
|
|
SetCustomToken(14461, sText2);
|
|
|
|
MK_GenericDialog_SetCondition(21, nSelectedIASStrTypes && (nCurrentModMode == X2_CI_MODMODE_ARMOR));
|
|
MK_GenericDialog_SetCondition(22, nSelectedIASStrTypes && (nCurrentModMode == X2_CI_MODMODE_WEAPON));
|
|
MK_GenericDialog_SetCondition(23, nSelectedIASStrTypes && (nCurrentModMode == MK_CI_MODMODE_CLOAK));
|
|
MK_GenericDialog_SetCondition(24, nSelectedIASStrTypes && (nCurrentModMode == MK_CI_MODMODE_HELMET));
|
|
MK_GenericDialog_SetCondition(25, nSelectedIASStrTypes && (nCurrentModMode == MK_CI_MODMODE_SHIELD));
|
|
MK_GenericDialog_SetCondition(29, nSelectedIASStrTypes && (nCurrentModMode == MK_CI_MODMODE_BODY));
|
|
|
|
MK_DELIMITER_Initialize(nCount>0);
|
|
|
|
break;
|
|
}
|
|
}
|
|
|
|
return TRUE;
|
|
}
|