#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(); AddJournalQuestEntry("JRNL_XPCHART", 1, oPC, FALSE, FALSE, FALSE); AddJournalQuestEntry("JRNL_LA_BUYOFF", 1, oPC, FALSE, FALSE, FALSE); // 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); } */ }