Jaysyn904 66a0a3e043 Initial commit
Initial commit.
2024-08-03 14:13:18 -04:00

182 lines
4.5 KiB
Plaintext

// pulls StrRef in appearance.2da
// by line number nStrRef
string cyl_getname(int nStrRef);
// cycles to next valid appearance
void cyl_getnextshape(object oObject=OBJECT_SELF);
// cycles to last valid appearance
void cyl_getlastshape(object oObject=OBJECT_SELF);
//***********************MAIN SCRIPT**************************************
void main()
{
int nListen = GetListenPatternNumber();
switch(nListen)
{
case 1919: //next
cyl_getnextshape();
break;
case 2929: //last
cyl_getlastshape();
break;
case 3939: //taunt
PlayAnimation(ANIMATION_FIREFORGET_TAUNT);
break;
case 4949: // *n
{
string sAppearance = GetMatchedSubstring(0);
int nAppearance = StringToInt(sAppearance);
if (Get2DAString("appearance","LABEL",nAppearance) == "" ||
nAppearance < 0 || nAppearance > 1486)
{
SpeakString("Not a valid number. Please choose another " +
"one or type in the words, next or last to view" +
" the next available creature appearance.");
return;
}
SetCreatureAppearanceType(OBJECT_SELF,nAppearance);
SpeakString("# " + IntToString(nAppearance) + " " + cyl_getname(nAppearance));
break;
}
case 5959: //set*w*n
{
int nAppearance = StringToInt(GetMatchedSubstring(2));
if (Get2DAString("appearance","LABEL",nAppearance) == "" ||
nAppearance < 0 || nAppearance > 1486)
{
SpeakString("Not a valid number. Please choose another " +
"one, or type in set next or set last to change" +
" your appearance.");
return;
}
SetCreatureAppearanceType(GetLastSpeaker(),nAppearance);
SpeakString("# " + IntToString(nAppearance) + " " + cyl_getname(nAppearance));
break;
}
case 6969: //set next
cyl_getnextshape(GetLastSpeaker());
break;
case 7979: //set last
cyl_getlastshape(GetLastSpeaker());
break;
}
}
//******************END MAIN SCRIPT*******************************************
void cyl_getnextshape(object oObject=OBJECT_SELF)
{
int nAppearance = GetAppearanceType(oObject);
string s2da;
string sSpeak;
int nTest;
switch (nAppearance)
{ // used for empty lines of 10 or more to cut down
// lag, since I'm using a looping statement on 2da files.
case 306:
nAppearance = 350;
nTest = TRUE;
break;
case 480:
nAppearance = 1000;
nTest = TRUE;
break;
case 1485:
nAppearance = 0;
nTest = TRUE;
break;
}
if (nTest)
{
sSpeak = "# " + IntToString(nAppearance) + " " + cyl_getname(nAppearance);
SetCreatureAppearanceType(oObject,nAppearance);
SpeakString("# " + IntToString(nAppearance) + " " + cyl_getname(nAppearance));
return;
}
nAppearance++;
s2da = Get2DAString("appearance","LABEL",nAppearance);
// empty entry in LABEL column of 2da is invalid.
while (s2da == "")
{
nAppearance++;
s2da = Get2DAString("appearance","LABEL",nAppearance);
}
SetCreatureAppearanceType(oObject,nAppearance);
sSpeak = "# " + IntToString(nAppearance) + " " + cyl_getname(nAppearance);
SpeakString(sSpeak);
}
//end
void cyl_getlastshape(object oObject=OBJECT_SELF)
{
int nAppearance = GetAppearanceType(oObject);
string s2da = Get2DAString("appearance","STRING_REF",480);
string sSpeak;
int nTest;
switch(nAppearance)
{
case 0:
nAppearance = 1485;
nTest = TRUE;
break;
case 1000:
nAppearance = 480;
nTest = TRUE;
break;
case 350:
nAppearance = 306;
nTest = TRUE;
break;
}
if (nTest)
{
sSpeak = "# " + IntToString(nAppearance) + " " + cyl_getname(nAppearance);
SetCreatureAppearanceType(oObject,nAppearance);
SpeakString("# " + IntToString(nAppearance) + " " + cyl_getname(nAppearance));
return;
}
nAppearance--;
s2da = Get2DAString("appearance","LABEL",nAppearance);
while (s2da == "")
{
nAppearance--;
s2da = Get2DAString("appearance","LABEL",nAppearance);
}
SetCreatureAppearanceType(oObject,nAppearance);
sSpeak = "# " + IntToString(nAppearance) + " " + cyl_getname(nAppearance);
SpeakString(sSpeak);
}
//end
string cyl_getname(int nStrRef)
{
string s2da = Get2DAString("appearance","STRING_REF",nStrRef);
string sName = GetStringByStrRef(StringToInt(s2da));
return sName;
}
//end