Aschbourne_PRC8/_module/nss/mk_pre_tail.nss

103 lines
2.8 KiB
Plaintext
Raw Normal View History

#include "mk_inc_generic"
#include "mk_inc_states"
#include "mk_inc_2da_disp"
#include "mk_inc_ccoh_db"
const string MK_TAIL_TYPE_SAVE = "MK_TAIL_TYPE_SAVE";
void RestoreOriginalTail(object oPC)
{
string sIAStr = GetLocalString(oPC, MK_TAIL_TYPE_SAVE);
MK_DEBUG_TRACE("Restoring original tail type: '"+sIAStr+"'");
if (sIAStr!="")
{
MK_CCOH_DB_IAStrToBodyAppearance(oPC, sIAStr, MK_CCOH_DB_BODY_APPR_TAIL);
DeleteLocalString(oPC, MK_TAIL_TYPE_SAVE);
}
}
void SaveOriginalTail(object oPC)
{
string sIAStr = GetLocalString(oPC, MK_TAIL_TYPE_SAVE);
if (sIAStr=="")
{
sIAStr = MK_CCOH_DB_BodyAppearanceToIAStr(oPC, MK_CCOH_DB_BODY_APPR_TAIL);
SetLocalString(oPC, MK_TAIL_TYPE_SAVE, sIAStr);
}
}
int GetHasOriginalTail(object oPC)
{
string sIAStr1 = GetLocalString(oPC, MK_TAIL_TYPE_SAVE);
string sIAStr2 = MK_CCOH_DB_BodyAppearanceToIAStr(oPC, MK_CCOH_DB_BODY_APPR_TAIL);
return (sIAStr1=="") || (sIAStr1==sIAStr2);
}
int StartingConditional()
{
object oPC = GetPCSpeaker();
object oTarget = MK_GetCurrentTarget(oPC);
MK_CCOH_DB_Init(oPC);
int nState = MK_GenericDialog_GetState();
int nAction = MK_GenericDialog_GetAction();
int nCurrentPage;
switch (nState)
{
case MK_STATE_TAIL:
nCurrentPage = MK_2DA_DISPLAY_GetCurrentPage();
switch (nAction)
{
case 250:
case 251:
case 252:
case 253:
nCurrentPage = MK_2DA_DISPLAY_UpdatePage(nAction);
break;
case 127:
// Restore original appearance
RestoreOriginalTail(oTarget);
break;
default:
int nNewTailType = MK_2DA_DISPLAY_GetValueAsInt(nAction);
if (nNewTailType!=-1)
{
SaveOriginalTail(oTarget);
SetCreatureTailType(nNewTailType, oTarget);
}
break;
}
break;
default:
nState = MK_STATE_TAIL;
MK_2DA_DISPLAY_Initialize("tailmodel", "", "LABEL", "", "",
(MK_VERSION_GetIsVersionGreaterEqual_1_74() ? 5000 : 2500));
MK_2DA_DISPLAY_EnsureVisible(GetCreatureTailType(oTarget));
nCurrentPage = MK_2DA_DISPLAY_GetCurrentPage();
MK_GenericDialog_SetState(nState);
CISetCurrentModMode(oPC, MK_CI_MODMODE_BODY);
MK_AddTemporaryEffects(oPC, MK_TAG_TEMP_EFFECT, FALSE, oTarget);
break;
}
switch (nState)
{
case MK_STATE_TAIL:
MK_DELIMITER_Initialize();
MK_2DA_DISPLAY_DisplayPage(nCurrentPage, GetCreatureTailType(oTarget));
MK_GenericDialog_SetCondition(127, !GetHasOriginalTail(oTarget));
MK_GenericDialog_SetCondition(254, MK_CCOH_DB_GetIsBodyChanged(oTarget));
break;
}
return TRUE;
}