Added PnP Dire Rat.
Added PnP Dire Rat.
This commit is contained in:
197
nwn_dark_sun/dhd_setport.nss
Normal file
197
nwn_dark_sun/dhd_setport.nss
Normal file
@@ -0,0 +1,197 @@
|
||||
#include "nw_i0_plot"
|
||||
//******************************************************************************
|
||||
//* stargatish portal script put on_disturbed for dhd
|
||||
//* written by BWW aka Lord Nikon
|
||||
//* 12/05/04
|
||||
//* builds code for portal address then ports when player chooses the motis rune
|
||||
//******************************************************************************
|
||||
void main()
|
||||
{
|
||||
object oPC = GetLastDisturbed();
|
||||
object oSelf = OBJECT_SELF;
|
||||
object oItem = GetInventoryDisturbItem();
|
||||
string sItemTag = GetTag(oItem);
|
||||
string sTagSelf = GetTag(oSelf);
|
||||
string sItemResRef;
|
||||
object oA = GetObjectByTag("A_Rune");
|
||||
object oB = GetObjectByTag("B_Rune");
|
||||
object oC = GetObjectByTag("C_Rune");
|
||||
object oD = GetObjectByTag("D_Rune");
|
||||
object oE = GetObjectByTag("E_Rune");
|
||||
object oF = GetObjectByTag("F_Rune");
|
||||
object oG = GetObjectByTag("G_Rune");
|
||||
object oM = GetObjectByTag("M_Rune");
|
||||
string sCode = "";
|
||||
//oOFF gets the local gate, oON gets the target gate
|
||||
object oOFF = GetNearestObjectByTag("stargate_off");
|
||||
location lOFF = GetLocation(oOFF);
|
||||
object oON;
|
||||
location lON;
|
||||
// locations of gates to add just add a location line and the appropriate waypoint tag
|
||||
location oGATE1 = GetLocation(GetWaypointByTag("GATE1"));
|
||||
location oGATE2 = GetLocation(GetWaypointByTag("GATE2"));
|
||||
location oGATE3 = GetLocation(GetWaypointByTag("GATE3"));
|
||||
location oGATE4 = GetLocation(GetWaypointByTag("GATE4"));
|
||||
location oGATE5 = GetLocation(GetWaypointByTag("GATE5"));
|
||||
location oGATE6 = GetLocation(GetWaypointByTag("GATE6"));
|
||||
location oGATE7 = GetLocation(GetWaypointByTag("GATE7"));
|
||||
location oGATE8 = GetLocation(GetWaypointByTag("GATE8"));
|
||||
|
||||
//code for interpreting the address uses base code from UO_Abagails crafting system modified for use here
|
||||
if (GetInventoryDisturbType()== INVENTORY_DISTURB_TYPE_ADDED)
|
||||
{
|
||||
// The following 3 lines are to ensure compatability with UOAbigal's Persistent Token System.
|
||||
// You can replace them with whatever 'no-drop' code you have or comment them out.
|
||||
string sNoDropFlag = (GetStringLeft(GetTag(oItem),6));
|
||||
if (sNoDropFlag == "NoDrop" || sNoDropFlag == "TOKEN_"||sNoDropFlag=="_TBOX_")
|
||||
return;
|
||||
if (GetBaseItemType(oItem)==BASE_ITEM_LARGEBOX)
|
||||
{
|
||||
DestroyObject(oItem);
|
||||
SendMessageToPC(oPC,"To avoid possible dupe exploits, the container placed in this bag may be destroyed.");
|
||||
return;
|
||||
}
|
||||
// End of compatability portion.
|
||||
CopyItem(oItem,oPC,TRUE);
|
||||
DestroyObject(oItem);
|
||||
FloatingTextStringOnCreature("You can only Activate by selecting runes.",oPC,FALSE); return;
|
||||
}
|
||||
|
||||
//uses campaign string to save the code change the campaign name to whatever campaign database you want to use
|
||||
sCode = GetCampaignString("SPENCER","sCode",oPC); //gets global portal code
|
||||
|
||||
|
||||
if (oItem == oA)
|
||||
{sCode = sCode + "A";
|
||||
SetCampaignString("SPENCER","sCode",sCode,oPC);
|
||||
}
|
||||
if (oItem == oB)
|
||||
{sCode = sCode + "B";
|
||||
SetCampaignString("SPENCER","sCode",sCode,oPC);
|
||||
}
|
||||
|
||||
if (oItem == oC)
|
||||
{sCode = sCode + "C";
|
||||
SetCampaignString("SPENCER","sCode",sCode,oPC);
|
||||
}
|
||||
|
||||
if (oItem == oD)
|
||||
{sCode = sCode + "D";
|
||||
SetCampaignString("SPENCER","sCode",sCode,oPC);
|
||||
}
|
||||
if (oItem == oE)
|
||||
{sCode = sCode + "E";
|
||||
SetCampaignString("SPENCER","sCode",sCode,oPC);
|
||||
}
|
||||
|
||||
if (oItem == oF)
|
||||
{sCode = sCode + "F";
|
||||
SetCampaignString("SPENCER","sCode",sCode,oPC);
|
||||
}
|
||||
|
||||
if (oItem == oG)
|
||||
{sCode = sCode + "G";
|
||||
SetCampaignString("SPENCER","sCode",sCode,oPC);
|
||||
}
|
||||
|
||||
CopyObject(oItem,GetLocation(oSelf),oSelf,GetTag(oItem));
|
||||
DestroyObject(oItem);
|
||||
|
||||
FloatingTextStringOnCreature(sCode,oPC,FALSE); //debug scode viewer
|
||||
|
||||
// if the trigger rune is pulled check code, if code valid open gate
|
||||
|
||||
if (oItem == oM)
|
||||
{
|
||||
//checks scode for valid entry, change this to whatever code/length you desire
|
||||
//examples are 7 letter codes, make the code length whatever you want
|
||||
|
||||
if (sCode == "BADBABE")
|
||||
{
|
||||
//set variables for destination
|
||||
SetLocalLocation(oPC,"GATEADDY",oGATE1);
|
||||
SetLocalObject(oPC,"GATETARGET",GetWaypointByTag("GATE1"));
|
||||
//turns on gate
|
||||
DestroyObject(oOFF);
|
||||
CreateObject(OBJECT_TYPE_PLACEABLE,"stargate_on",lOFF);
|
||||
//turns on gate on other side at target
|
||||
oON = GetNearestObjectByTag("stargate_off",GetWaypointByTag("GATE1"),1);
|
||||
lON = GetLocation(oON);
|
||||
DestroyObject(oON);
|
||||
CreateObject(OBJECT_TYPE_PLACEABLE,"stargate_on",lON);
|
||||
|
||||
}
|
||||
if (sCode == "GABEDFC")
|
||||
{
|
||||
SetLocalLocation(oPC,"GATEADDY",oGATE2);
|
||||
SetLocalObject(oPC,"GATETARGET",GetWaypointByTag("GATE2"));
|
||||
DestroyObject(oOFF);
|
||||
CreateObject(OBJECT_TYPE_PLACEABLE,"stargate_on",lOFF);
|
||||
|
||||
oON = GetNearestObjectByTag("stargate_off",GetWaypointByTag("GATE2"));
|
||||
lON = GetLocation(oON);
|
||||
DestroyObject(oON);
|
||||
CreateObject(OBJECT_TYPE_PLACEABLE,"stargate_on",lON);
|
||||
}
|
||||
//example of a 3 letter code, codes can be any length as long as it will fit in
|
||||
//a string variable
|
||||
if (sCode == "ACABADE")
|
||||
{
|
||||
SetLocalLocation(oPC,"GATEADDY",oGATE3);
|
||||
SetLocalObject(oPC,"GATETARGET",GetWaypointByTag("GATE3"));
|
||||
DestroyObject(oOFF);
|
||||
CreateObject(OBJECT_TYPE_PLACEABLE,"stargate_on",lOFF);
|
||||
|
||||
|
||||
oON = GetNearestObjectByTag("stargate_off",GetWaypointByTag("GATE3"));
|
||||
lON = GetLocation(oON);
|
||||
DestroyObject(oON);
|
||||
CreateObject(OBJECT_TYPE_PLACEABLE,"stargate_on",lON);
|
||||
}
|
||||
//Example of a gate address greater than 7 characters
|
||||
if (sCode == "FEDABGC")
|
||||
{
|
||||
SetLocalLocation(oPC,"GATEADDY",oGATE4);
|
||||
SetLocalObject(oPC,"GATETARGET",GetWaypointByTag("GATE4"));
|
||||
DestroyObject(oOFF);
|
||||
CreateObject(OBJECT_TYPE_PLACEABLE,"stargate_on",lOFF);
|
||||
|
||||
|
||||
oON = GetNearestObjectByTag("stargate_off",GetWaypointByTag("GATE4"));
|
||||
lON = GetLocation(oON);
|
||||
DestroyObject(oON);
|
||||
CreateObject(OBJECT_TYPE_PLACEABLE,"stargate_on",lON);
|
||||
}
|
||||
if (sCode == "BADBEEFEGAD")
|
||||
{
|
||||
SetLocalLocation(oPC,"GATEADDY",oGATE5);
|
||||
SetLocalObject(oPC,"GATETARGET",GetWaypointByTag("GATE5"));
|
||||
DestroyObject(oOFF);
|
||||
CreateObject(OBJECT_TYPE_PLACEABLE,"stargate_on",lOFF);
|
||||
|
||||
|
||||
oON = GetNearestObjectByTag("stargate_off",GetWaypointByTag("GATE5"));
|
||||
lON = GetLocation(oON);
|
||||
DestroyObject(oON);
|
||||
CreateObject(OBJECT_TYPE_PLACEABLE,"stargate_on",lON);
|
||||
}
|
||||
if (sCode == "DEADCABGEF")
|
||||
{
|
||||
SetLocalLocation(oPC,"GATEADDY",oGATE6);
|
||||
SetLocalObject(oPC,"GATETARGET",GetWaypointByTag("GATE6"));
|
||||
DestroyObject(oOFF);
|
||||
CreateObject(OBJECT_TYPE_PLACEABLE,"stargate_on",lOFF);
|
||||
|
||||
|
||||
oON = GetNearestObjectByTag("stargate_off",GetWaypointByTag("GATE6"));
|
||||
lON = GetLocation(oON);
|
||||
DestroyObject(oON);
|
||||
CreateObject(OBJECT_TYPE_PLACEABLE,"stargate_on",lON);
|
||||
}
|
||||
|
||||
SetCampaignString("SPENCER","sCode",sCode);
|
||||
}
|
||||
|
||||
|
||||
} //main
|
||||
|
Reference in New Issue
Block a user