generated from Jaysyn/ModuleTemplate
Initial commit
Initial commit
This commit is contained in:
152
_module/nss/tal_rangerstart.nss
Normal file
152
_module/nss/tal_rangerstart.nss
Normal file
@@ -0,0 +1,152 @@
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Talus Menu on Rest
|
||||
// tal_rangerstart
|
||||
// OPW Integration and Clean Up By Don Anderson
|
||||
// dandersonru@msn.com
|
||||
//
|
||||
// Used in Rest Menu Conversation
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
string lessdetailedrace(object oTarg)
|
||||
{
|
||||
string type;
|
||||
switch(GetRacialType(oTarg))
|
||||
{
|
||||
case RACIAL_TYPE_HUMAN:type="humanoid";break;
|
||||
case RACIAL_TYPE_HALFORC:type="humanoid";break;
|
||||
case RACIAL_TYPE_HALFLING:type="humanoid";break;
|
||||
case RACIAL_TYPE_HALFELF:type="humanoid";break;
|
||||
case RACIAL_TYPE_GNOME:type="humanoid";break;
|
||||
case RACIAL_TYPE_GIANT:type="giant";break;
|
||||
case RACIAL_TYPE_FEY:type="humanoid";break;
|
||||
case RACIAL_TYPE_ELF:type="humanoid";break;
|
||||
case RACIAL_TYPE_DWARF:type="humanoid";break;
|
||||
case RACIAL_TYPE_DRAGON:type="dragon";break;
|
||||
case RACIAL_TYPE_CONSTRUCT:type="golem";break;
|
||||
case RACIAL_TYPE_BEAST: type=GetName(oTarg);break;
|
||||
case RACIAL_TYPE_ANIMAL:type=GetName(oTarg);break;
|
||||
case RACIAL_TYPE_UNDEAD:type="humanoid";break;
|
||||
case RACIAL_TYPE_VERMIN:type="rodent";break;
|
||||
case RACIAL_TYPE_HUMANOID_GOBLINOID:type="goblin";break;
|
||||
case RACIAL_TYPE_HUMANOID_MONSTROUS:type="monster";break;
|
||||
case RACIAL_TYPE_HUMANOID_ORC:type="humanoid";break;
|
||||
case RACIAL_TYPE_OOZE:"slime";break;
|
||||
default: type="unknown creature";break;
|
||||
}
|
||||
return type;
|
||||
}
|
||||
|
||||
string race(object oTarg)
|
||||
{
|
||||
string type;
|
||||
switch(GetRacialType(oTarg))
|
||||
{
|
||||
case RACIAL_TYPE_HUMAN:type="human";break;
|
||||
case RACIAL_TYPE_HALFORC:type="half-orc";break;
|
||||
case RACIAL_TYPE_HALFLING:type="halfling";break;
|
||||
case RACIAL_TYPE_HALFELF:type="half-elf";break;
|
||||
case RACIAL_TYPE_GNOME:type="gnome";break;
|
||||
case RACIAL_TYPE_GIANT:type="giant";break;
|
||||
case RACIAL_TYPE_FEY:type="fey";break;
|
||||
case RACIAL_TYPE_ELF:type="elf";break;
|
||||
case RACIAL_TYPE_DWARF:type="dwarf";break;
|
||||
case RACIAL_TYPE_DRAGON:type="dragon";break;
|
||||
case RACIAL_TYPE_CONSTRUCT:type="golem";break;
|
||||
case RACIAL_TYPE_BEAST: type=GetName(oTarg);break;
|
||||
case RACIAL_TYPE_ANIMAL:type=GetName(oTarg);break;
|
||||
case RACIAL_TYPE_UNDEAD:type="undead humanoid";break;
|
||||
case RACIAL_TYPE_VERMIN:type="rodent";break;
|
||||
case RACIAL_TYPE_HUMANOID_GOBLINOID:type="goblin";break;
|
||||
case RACIAL_TYPE_HUMANOID_MONSTROUS:type="monster";break;
|
||||
case RACIAL_TYPE_HUMANOID_ORC:type="orc";break;
|
||||
case RACIAL_TYPE_OOZE:"slime";break;
|
||||
default: type="unknown creature";break;
|
||||
}
|
||||
return type;
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
object oPC=GetPCSpeaker();
|
||||
object currentarea=GetArea(oPC);
|
||||
|
||||
if(currentarea==GetLocalObject(oPC,"oldarea"))
|
||||
{
|
||||
SetCustomToken(8100,"You cannot use this ability more than twice in a row in the same area.");
|
||||
return;
|
||||
}
|
||||
else SetLocalObject(oPC,"oldarea",currentarea);
|
||||
|
||||
location lTarget = GetLocation(oPC);
|
||||
int rangerlevels=GetLevelByClass(CLASS_TYPE_RANGER,oPC);
|
||||
float trackdist=24.0f+IntToFloat(4*rangerlevels);
|
||||
int maxtypes=3+(rangerlevels*2);
|
||||
int types=1;
|
||||
|
||||
string message="",oldmessage="old",newmessage;
|
||||
string size;
|
||||
string type;
|
||||
string pronoun1;
|
||||
string pronoun2;
|
||||
string verb;
|
||||
string newresref;
|
||||
string oldresref;
|
||||
string armed;
|
||||
string armor;
|
||||
message+="";
|
||||
object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, trackdist, lTarget, TRUE, OBJECT_TYPE_CREATURE);
|
||||
while (oTarget!=OBJECT_INVALID && types<maxtypes)
|
||||
{
|
||||
armor=".";
|
||||
int targLevel=GetHitDice(oTarget);
|
||||
if(targLevel>20) size="huge";
|
||||
else if(targLevel>15) size="large";
|
||||
else if(targLevel>10) size="moderate sized";
|
||||
else if(targLevel>5) size="typical";
|
||||
else size="common";
|
||||
|
||||
if(rangerlevels>=3) type=race(oTarget);
|
||||
else type=lessdetailedrace(oTarget);
|
||||
|
||||
int weaponvalue=GetGoldPieceValue(GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,oTarget));
|
||||
if(weaponvalue>75) armed="heavily ";
|
||||
else if(weaponvalue>50) armed="well ";
|
||||
else armed="un";
|
||||
|
||||
newresref=GetResRef(oTarget);
|
||||
if(newresref==oldresref)
|
||||
{
|
||||
pronoun1="a group of";
|
||||
pronoun2="s";
|
||||
verb="they are";
|
||||
if(type=="elf") type="elve";
|
||||
}
|
||||
else
|
||||
{
|
||||
pronoun1="a";
|
||||
pronoun2="";
|
||||
verb="it is";
|
||||
}
|
||||
|
||||
if(rangerlevels>=8)
|
||||
{
|
||||
if(GetHasFeat(FEAT_ARMOR_PROFICIENCY_HEAVY,oTarget)) armor=" and "+verb+" obviously clad in heavy metal armor.";
|
||||
else if(GetHasFeat(FEAT_ARMOR_PROFICIENCY_MEDIUM,oTarget)) armor=" and "+verb+" probably wearing lightweight, leathery armor.";
|
||||
else armor=" and "+verb+" wearing little or no armor at all.";
|
||||
}
|
||||
|
||||
newmessage="tracks of "+pronoun1+" "+size+" "+type+pronoun2+" are here, "+verb+" probably "+armed+"armed"+armor+"\n\n";
|
||||
if(newmessage!=oldmessage)
|
||||
{
|
||||
oldmessage=newmessage;
|
||||
message+=newmessage;
|
||||
}
|
||||
|
||||
types++;
|
||||
oTarget = GetNextObjectInShape(SHAPE_SPHERE, trackdist, lTarget, TRUE, OBJECT_TYPE_CREATURE | OBJECT_TYPE_DOOR | OBJECT_TYPE_PLACEABLE);
|
||||
}
|
||||
|
||||
SetCustomToken(8100,message);
|
||||
}
|
||||
Reference in New Issue
Block a user