182 lines
4.5 KiB
Plaintext
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
|