Initial upload
Initial upload. PRC8 has been added. Module compiles, PRC's default AI & treasure scripts have been integrated. Started work on top hak for SLA / Ability / Scripting modifications.
This commit is contained in:
94
_module/nss/jw_dtct_secret_p.nss
Normal file
94
_module/nss/jw_dtct_secret_p.nss
Normal file
@@ -0,0 +1,94 @@
|
||||
// script for detecting hidden objects (not doors)
|
||||
|
||||
void main()
|
||||
{
|
||||
|
||||
object oPC=GetEnteringObject();
|
||||
|
||||
/// if I have been triggered or somehow the PC is not valid, return
|
||||
if ((GetLocalInt(OBJECT_SELF,"triggered")==TRUE)||(!GetIsObjectValid(oPC)))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// if the entering object is not a PC and neither is its master, return. NB this
|
||||
// does allow familiars to find things
|
||||
if ((!GetIsPC(oPC))&&(!GetIsPC(GetMaster(oPC))))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// We get the search skill of the entering object
|
||||
int nSkill=GetSkillRank(SKILL_SEARCH,oPC);
|
||||
|
||||
//if the skill is untrained, just return
|
||||
if (nSkill==-1)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// sMyTag refers to the CODE which tells us what secret door to use
|
||||
// sTag refers to the resref of the object we want to make
|
||||
// sWayTag is the tag of the waypoint it should appear at. It is the tag
|
||||
// of the hidden object with _appear_wp after it.
|
||||
|
||||
string sMyTag = GetTag(OBJECT_SELF);
|
||||
|
||||
// get how long the tag of the trigger is
|
||||
int nLength = GetStringLength(sMyTag);
|
||||
|
||||
// the tag must begin secrdr_ which is 7 letters. Then we want to get the next two
|
||||
// this should give us the tag of the object we are trying to make
|
||||
string sCode=GetSubString(sMyTag,7,2);
|
||||
|
||||
// sCode currently gives us our code. sTag will give us the res ref of the hidden door
|
||||
string sTag="jw_secret_"+sCode+"_dr";
|
||||
|
||||
// This gives us the tag of the waypoint it should appear at
|
||||
string sWayTag=sMyTag+"_apr_wp";
|
||||
// DEBUG
|
||||
//SpeakString (sWayTag);
|
||||
|
||||
// This is the location of the waypoint
|
||||
location locLoc = GetLocation (GetWaypointByTag(sWayTag));
|
||||
|
||||
// This gives us the tag of the waypoint the door leads to
|
||||
string sLeadsTo=sMyTag+"_DST";
|
||||
|
||||
// the DC is put into the key tag field in the trigger.
|
||||
string sDC=GetTrapKeyTag(OBJECT_SELF);
|
||||
int nDC=StringToInt(sDC);
|
||||
// DEBUG
|
||||
//SpeakString (sDC);
|
||||
|
||||
// we have a D20 dice roll which is added to the search skill
|
||||
int nMod = d20();
|
||||
|
||||
int nTotalSkill=nSkill+nMod;
|
||||
|
||||
// did we find it.
|
||||
if (nTotalSkill>=nDC)
|
||||
{
|
||||
|
||||
object oItem;
|
||||
// yes we found it, now create the object itself.
|
||||
oItem = CreateObject(OBJECT_TYPE_PLACEABLE,sTag,locLoc,TRUE);
|
||||
|
||||
ApplyEffectAtLocation(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_IMP_KNOCK),locLoc);
|
||||
FloatingTextStringOnCreature("You spot a hidden door",oPC);
|
||||
|
||||
// set a local int on the object for clean up purposes
|
||||
SetLocalInt(oItem,"jw_hidden_int",TRUE);
|
||||
|
||||
// Set a local location onto the hidden door so it knows where it leads to
|
||||
SetLocalString(oItem, "sLeadsTo", sLeadsTo);
|
||||
|
||||
// Register that the hidden object has been found and cannot be found again
|
||||
SetLocalInt(OBJECT_SELF,"triggered",TRUE);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user