Initial commit. Updated release archive.
This commit is contained in:
224
_module/nss/ro_m_onentertuat.nss
Normal file
224
_module/nss/ro_m_onentertuat.nss
Normal file
@@ -0,0 +1,224 @@
|
||||
|
||||
#include "nw_i0_plot"
|
||||
|
||||
|
||||
//PrC Consortium stuff
|
||||
//#include "prc_inc_function"
|
||||
|
||||
|
||||
//function to destroy PC inventory items randomly (default 1% chance per item)
|
||||
//currently disabled
|
||||
|
||||
void DestroyItems(object oPC)
|
||||
{
|
||||
|
||||
object oItem;
|
||||
|
||||
oItem = GetFirstItemInInventory(oPC);
|
||||
while (GetIsObjectValid(oItem))
|
||||
{
|
||||
|
||||
if (GetPlotFlag(oItem))
|
||||
{
|
||||
//do nothing, it's a Plot item
|
||||
}
|
||||
|
||||
//1% chance of item being destroyed
|
||||
else if (d100() == 1)
|
||||
{
|
||||
DestroyObject(oItem);
|
||||
}
|
||||
|
||||
oItem = GetNextItemInInventory(oPC);
|
||||
}
|
||||
}
|
||||
//end of random item destroy
|
||||
|
||||
|
||||
|
||||
|
||||
// -----------------------------------------------
|
||||
// This code goes in the Module OnClientEnter script.
|
||||
// When a PC joins the game this code looks for the item "death".
|
||||
//
|
||||
// If the item is not found no penalty is applied.
|
||||
// If the item is found, a Gold and XP penalty is applied.
|
||||
|
||||
|
||||
|
||||
//Penalty applied for having a Death Amulet
|
||||
|
||||
void ApplyPenalty(object oDead)
|
||||
{
|
||||
|
||||
int nXP = GetXP(oDead);
|
||||
|
||||
// The XP penalty is currently set to the PC's level x 100 - it is
|
||||
// a harsh penalty, but they were trying to cheat so... :)
|
||||
//
|
||||
// If you wish to reduce the amount taken, reduce the 100 in the line below.
|
||||
// Note that this script will never cause a PC to lose a level.
|
||||
|
||||
int nPenalty = 100 * GetHitDice(oDead);
|
||||
int nHD = GetHitDice(oDead);
|
||||
// * You can not lose a level with this respawning
|
||||
int nMin = ((nHD * (nHD - 1)) / 2) * 1000;
|
||||
|
||||
int nNewXP = nXP - nPenalty;
|
||||
if (nNewXP < nMin)
|
||||
nNewXP = nMin;
|
||||
SetXP(oDead, nNewXP);
|
||||
|
||||
// The gold penalty is currently set to 20% of their gold - it is
|
||||
// a very harsh penalty, but they were trying to cheat so... :)
|
||||
//
|
||||
// If you wish to reduce the amount taken, reduce the .20 in the line below.
|
||||
// Note that this script will never take more then 10,000 gold.
|
||||
|
||||
int nGoldToTake = FloatToInt(0.20 * GetGold(oDead));
|
||||
// * a cap of 10 000gp taken from you
|
||||
if (nGoldToTake > 20000)
|
||||
{
|
||||
nGoldToTake = 20000;
|
||||
}
|
||||
AssignCommand(oDead, TakeGoldFromCreature(nGoldToTake, oDead, TRUE));
|
||||
DelayCommand(4.0, FloatingTextStrRefOnCreature(58299, oDead, FALSE));
|
||||
DelayCommand(4.8, FloatingTextStrRefOnCreature(58300, oDead, FALSE));
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Main Module OnClientEnter Script
|
||||
|
||||
void main()
|
||||
{
|
||||
|
||||
object oPC = GetEnteringObject();
|
||||
|
||||
|
||||
// Death Amulet Activities
|
||||
if(HasItem(oPC, "Death"))
|
||||
{
|
||||
|
||||
object oItemToTake;
|
||||
oItemToTake = GetItemPossessedBy(oPC, "Death");
|
||||
if(GetIsObjectValid(oItemToTake) != 0)
|
||||
DestroyObject(oItemToTake);
|
||||
|
||||
ApplyPenalty(oPC);
|
||||
|
||||
//jump PC to Death plane
|
||||
object oTarget;
|
||||
location lTarget;
|
||||
oTarget = GetWaypointByTag("WP_TUAT");
|
||||
lTarget = GetLocation(oTarget);
|
||||
|
||||
AssignCommand(oPC, ClearAllActions());
|
||||
|
||||
AssignCommand(oPC, ActionJumpToLocation(lTarget));
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
//Illegal items removal - no perma-haste, immunity, or regeneration items
|
||||
|
||||
// Boots of Speed
|
||||
object oBoots;
|
||||
oBoots = GetItemPossessedBy(oPC, "NW_IT_MBOOTS005");
|
||||
if(GetIsObjectValid(oBoots) != 0)
|
||||
DestroyObject(oBoots);
|
||||
|
||||
|
||||
// Lesser Ring of Power
|
||||
object oRing;
|
||||
oRing = GetItemPossessedBy(oPC, "NW_IT_MRING029");
|
||||
if(GetIsObjectValid(oRing) != 0)
|
||||
DestroyObject(oRing);
|
||||
|
||||
|
||||
// Ring of Regeneration
|
||||
object oRing2;
|
||||
oRing2 = GetItemPossessedBy(oPC, "NW_IT_MRING004");
|
||||
if(GetIsObjectValid(oRing2) != 0)
|
||||
DestroyObject(oRing2);
|
||||
|
||||
|
||||
// Belt of Guiding Light
|
||||
object oGuidingLight;
|
||||
oGuidingLight = GetItemPossessedBy(oPC, "nw_it_mbelt016");
|
||||
if(GetIsObjectValid(oGuidingLight) != 0)
|
||||
DestroyObject(oGuidingLight);
|
||||
|
||||
|
||||
// Graceblood Bow
|
||||
object oGraceblood;
|
||||
oGraceblood = GetItemPossessedBy(oPC, "NW_WBWMXH006");
|
||||
if(GetIsObjectValid(oGraceblood) != 0)
|
||||
DestroyObject(oGraceblood);
|
||||
|
||||
|
||||
// Holy Grail
|
||||
object oGrail;
|
||||
oGrail = GetItemPossessedBy(oPC, "it_HolyGrail");
|
||||
if(GetIsObjectValid(oGrail) != 0)
|
||||
DestroyObject(oGrail);
|
||||
|
||||
|
||||
// Original Spellhelper
|
||||
object oSpellhelper;
|
||||
oSpellhelper = GetItemPossessedBy(oPC, "it_spellhelper");
|
||||
if(GetIsObjectValid(oSpellhelper) != 0)
|
||||
DestroyObject(oSpellhelper);
|
||||
|
||||
|
||||
// Risktaker
|
||||
object oRisktaker;
|
||||
oRisktaker = GetItemPossessedBy(oPC, "X2_WSWMDG006");
|
||||
if(GetIsObjectValid(oRisktaker) != 0)
|
||||
DestroyObject(oRisktaker);
|
||||
|
||||
|
||||
// High Forest
|
||||
object oHighForest;
|
||||
oHighForest = GetItemPossessedBy(oPC, "NW_WBWMXL004");
|
||||
if(GetIsObjectValid(oHighForest) != 0)
|
||||
DestroyObject(oHighForest);
|
||||
|
||||
//destroys items from inventory randomly (simulates wear & tear)
|
||||
//DestroyItems(oPC);
|
||||
|
||||
//Disallow various buggy or unbalanced PrCs
|
||||
|
||||
/* if (GetLevelByClass(CLASS_TYPE_SHADOWDANCER, oPC) == 0)
|
||||
{
|
||||
SetLocalInt(oPC,"X1_AllowShadow",1);
|
||||
} */
|
||||
|
||||
/*
|
||||
|
||||
if (GetLevelByClass(CLASS_TYPE_PNP_SHIFTER, oPC) == 0)
|
||||
{
|
||||
SetLocalInt(oPC,"X2_AllowPNPSfr",1);
|
||||
}
|
||||
|
||||
if (GetLevelByClass(CLASS_TYPE_DIVINECHAMPION, oPC) == 0)
|
||||
{
|
||||
SetLocalInt(oPC,"X2_AllowDivcha",1);
|
||||
}
|
||||
|
||||
if (GetLevelByClass(CLASS_TYPE_LICH, oPC) == 0)
|
||||
{
|
||||
SetLocalInt(oPC,"PNP_AllowLich",1);
|
||||
}
|
||||
|
||||
if (GetLevelByClass(CLASS_TYPE_VASSAL, oPC) == 0)
|
||||
{
|
||||
SetLocalInt(oPC,"X1_AllowVassal",1);
|
||||
}
|
||||
|
||||
*/
|
||||
|
||||
|
||||
}
|
Reference in New Issue
Block a user