Aschbourne_PRC8/_module/nss/mk_pre_head.nss
Jaysyn904 903f023230 Major update
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.
2024-09-17 13:24:57 -04:00

149 lines
4.6 KiB
Plaintext

#include "mk_inc_debug"
#include "mk_inc_generic"
#include "mk_inc_body"
#include "mk_inc_craft"
#include "mk_inc_ccoh_db"
#include "mk_inc_states"
#include "mk_inc_head"
#include "mk_inc_delimiter"
#include "mk_inc_2da_disp"
int GetIsCraftingDisabled(object oPC, int i)
{
string sVarName = "MK_DISABLE_CRAFT_" + MK_IntToString(i, 2, "0");
return (GetLocalInt(oPC, sVarName)==1);
}
int StartingConditional()
{
object oPC = GetPCSpeaker();
MK_CCOH_DB_Init(oPC);
int nState = MK_GenericDialog_GetState();
int nAction = MK_GenericDialog_GetAction();
int nCurrentPage=-1;
object oTarget = MK_GetCurrentTarget(oPC);
// MK_DEBUG_TRACE("mk_pre_head: nState="+IntToString(nState)+
// ", nAction="+IntToString(nAction));
switch (nState)
{
case MK_STATE_BODY_SELECT:
// So the finish/cancel scripts work properly
CISetCurrentModMode(oPC, MK_CI_MODMODE_BODY);
MK_SetBodyPartToBeModified(oPC, MK_CRAFTBODY_HEAD, TRUE);
MK_HEAD_Initialize(oPC, oTarget);
MK_AddTemporaryEffects(oPC, MK_TAG_TEMP_EFFECT, FALSE, oTarget);
MK_HEAD_CreateValidHeadsString(oTarget, oPC);
MK_GenericDialog_SetState(nState = MK_STATE_HEAD_INIT);
break;
case MK_STATE_HEAD_MODIFY:
switch (nAction)
{
case 31: // show next head
case 32: // show previous head
nCurrentPage = MK_2DA_DISPLAY_EnsureVisible(MK_HEAD_SetCreatureHead(oTarget, nAction-30));
break;
case 250: // First page
case 251: // previous page
case 252: // next page
case 253: // last page
nCurrentPage = MK_2DA_DISPLAY_UpdatePage(nAction);
break;
case -1:
break;
case 39: // swap tattoo colors
MK_SwapTattooColors(oTarget);
break;
case 40: // change filter
MK_GenericDialog_SetState(nState = MK_STATE_HEAD_FILTER);
MK_2DA_DISPLAY_Initialize(MK_HEAD_Get2DAFile(oPC), "", "LABEL", "STRREF", "NAME", 10, "mk_cb_hd_f_flt");
MK_2DA_DISPLAY_SetPageLength(10);
break;
default: // select head
if ((nAction>=0) && (nAction<MK_2DA_DISPLAY_GetPageLength()))
{
int nHead = MK_2DA_DISPLAY_GetSelectedRow(nAction);
MK_HEAD_SetCreatureHead(oTarget, MK_HEAD_MODEL, nHead);
}
break;
}
break;
case MK_STATE_HEAD_FILTER:
switch (nAction)
{
case 250:
case 251:
case 252:
case 253:
nCurrentPage = MK_2DA_DISPLAY_UpdatePage(nAction);
break;
case -1:
break;
case 40:
MK_GenericDialog_SetState(nState = MK_STATE_HEAD_INIT);
MK_HEAD_CreateValidHeadsString(oTarget, oPC);
MK_2DA_DISPLAY_Cleanup();
break;
default:
if ((nAction>=0) && (nAction<MK_2DA_DISPLAY_GetPageLength()))
{
int nFilterID = MK_2DA_DISPLAY_GetSelectedRow(nAction);
MK_HEAD_ToggleFilter(OBJECT_SELF, nFilterID);
}
}
break;
}
switch (nState)
{
case MK_STATE_HEAD_INIT:
{
MK_GenericDialog_SetState(nState = MK_STATE_HEAD_MODIFY);
MK_2DA_DISPLAY_InitializeVirtual(MK_HEAD_GetValidHeadsString(oTarget));
MK_2DA_DISPLAY_SetPageLength(10);
nCurrentPage = MK_2DA_DISPLAY_EnsureVisible(GetCreatureBodyPart(CREATURE_PART_HEAD, oTarget));
break;
}
}
// MK_DEBUG_TRACE("1");
nCurrentPage = MK_2DA_DISPLAY_GetCurrentPage();
// MK_DEBUG_TRACE("2");
switch (nState)
{
case MK_STATE_HEAD_MODIFY:
MK_GenericDialog_SetCondition(39,
MK_VERSION_GetIsVersionGreaterEqual_1_69(oPC) &&
(!GetIsCraftingDisabled(oPC, 17)));
MK_2DA_DISPLAY_DisplayPage(nCurrentPage, GetCreatureBodyPart(CREATURE_PART_HEAD, oTarget), "mk_cb_hd_label", FALSE);
// MK_DEBUG_TRACE("3");
MK_SetBodyPartTokens(oPC, oTarget);
MK_GenericDialog_SetCondition(254, MK_CCOH_DB_GetIsBodyChanged(oTarget));
SetCustomToken(14432, MK_HEAD_GetSelectedFilterAsText(oPC, oTarget));
MK_DELIMITER_Initialize();
MK_GenericDialog_SetCondition(40, !GetLocalInt(oPC, MK_HEAD_DISABLE_CHANGE_FILTER));
// MK_DEBUG_TRACE("4");
break;
case MK_STATE_HEAD_FILTER:
MK_2DA_DISPLAY_DisplayPage(nCurrentPage, -1, "mk_cb_hd_f_label", FALSE);
SetCustomToken(14432, MK_HEAD_GetSelectedFilterAsText(oPC, oTarget));
SetCustomToken(14433, MK_HEAD_Get2DAFile(oPC));
MK_DELIMITER_Initialize();
break;
}
return TRUE;
}