UW2_PRC8/_module/nss/startmessage3.nss
Jaysyn904 5197ad9a4d Initial upload
Initial upload
2023-09-25 20:24:01 -04:00

222 lines
7.1 KiB
Plaintext

//:://////////////////////////////////////////////
//:: Created By: Ped Xing (pedx1ng@lycos.com)
//:: Created On: 26 June, 2002
//:://////////////////////////////////////////////
// This function determines if a specific item exists in the
// specfified container, which can be a creature or placeable
// object that is a container.
// Modified 12-22-2003 by AW Olorin to Automatically make DM's
// Anonymous to PcScry on module entry.
// Modified 1-25-2004 by AW Olorin - Remove message stones
// Modified 6-11-2004 by AW Olorin - Added Mod news message
#include "nw_i0_tool"
// * Applies an XP and GP penalty
// * to the player respawning
void ApplyPenalty(object oDead)
{
int nXP = GetXP(oDead);
int nPenalty = 25 * GetHitDice(oDead);
int nHD = GetHitDice(oDead);
// * You can not lose a level with this respawning
int nMin = ((nHD * (nHD - 1)) / 2) * 100;
int nNewXP = nXP - nPenalty;
if (nNewXP < nMin)
nNewXP = nMin;
SetXP(oDead, nNewXP);
int nGoldToTake = FloatToInt(0.15 * GetGold(oDead));
// * a cap of 10000gp taken from you
if (nGoldToTake > 1000)
{
nGoldToTake = 1000;
}
AssignCommand(oDead, TakeGoldFromCreature(nGoldToTake, oDead, FALSE));
DelayCommand(4.0, FloatingTextStrRefOnCreature(58299, oDead, FALSE));
DelayCommand(4.8, FloatingTextStrRefOnCreature(58300, oDead, FALSE));
}
void DecrementTalentIndex(int iIndex, object oPC);
// Main code block
void main()
{
object oPlayer = GetEnteringObject();
object oPC = GetEnteringObject();
object target = GetEnteringObject();
// DM's log on anonymously. -- AW Olorin
if (GetIsDM(oPlayer)) SetLocalInt(oPlayer,"PCL_ANON",1);
SetLocalString(oPlayer, "ID", GetPCPlayerName( oPlayer ) );
SetLocalString(oPlayer, "NAME", GetName( oPlayer ) );
SetLocalString(oPlayer, "KEY", GetPCPublicCDKey( oPlayer ) );
SetLocalString(oPlayer, "IP", GetPCIPAddress( oPlayer ) );
DelayCommand (40.0, SendMessageToPC(oPC, "Underworld was built by Guile, welcome to the Underworld, hope you have lots of fun while your here, enjoy...."));
// News or update message sent to PC's on login. Please change as needed.
DelayCommand (60.0, SendMessageToPC(oPC, "Please be sure to read the server rules posted close to where you enter Underworld and the books you are given, often, as they are frequently updated."));
if (GetIsPC(oPC) && !GetIsDM(oPC)){
string bReport;
bReport = (GetName(target) + GetPCPlayerName(target));
int booted = GetCampaignInt("booted", bReport, oPC);
if (booted == 5){
AssignCommand(target, ClearAllActions());
AssignCommand(target, ActionSpeakString("I HAVE BEEN SMACKED BY THE HAND OF GOD!!!!!"));
DelayCommand(1.0, AssignCommand(target, ActionSpeakString("I HAVE BEEN SMACKED BY THE HAND OF GOD!!!!!")));
DelayCommand(2.0, AssignCommand(target, ActionSpeakString("I HAVE BEEN SMACKED BY THE HAND OF GOD!!!!!")));
DelayCommand(3.0, AssignCommand(target, ActionSpeakString("I HAVE BEEN SMACKED BY THE HAND OF GOD!!!!!")));
DelayCommand(4.0, AssignCommand(target, ActionSpeakString("I HAVE BEEN SMACKED BY THE HAND OF GOD!!!!!")));
DelayCommand(5.0, AssignCommand(target, ActionSpeakString("I HAVE BEEN SMACKED BY THE HAND OF GOD!!!!!")));
DelayCommand(6.0, AssignCommand(target, ActionSpeakString("I HAVE BEEN SMACKED BY THE HAND OF GOD!!!!!")));
DelayCommand(6.0, AssignCommand(target, ActionSpeakString("I HAVE BEEN SMACKED BY THE HAND OF GOD!!!!!")));
DelayCommand(8.0, AssignCommand(target, ActionSpeakString("I HAVE BEEN SMACKED BY THE HAND OF GOD!!!!!")));
DelayCommand(9.0, AssignCommand(target, ActionSpeakString("I HAVE BEEN SMACKED BY THE HAND OF GOD!!!!!")));
DelayCommand(10.0, AssignCommand(target, ActionSpeakString("I HAVE BEEN SMACKED BY THE HAND OF GOD!!!!!")));
DelayCommand(10.0, SendMessageToPC(oPC, "YOU HAVE BEEN SMACKED BY THE HAND OF GOD!!!!!!"));
DelayCommand(15.0, BootPC(oPC));
}
}
string sReport;
if( GetIsPC( oPlayer ) && !GetIsDM(oPlayer) )
{
sReport = ">>> ID: " + GetPCPlayerName( oPlayer )
+ "; Name: "+ GetName( oPlayer )
+ "; CD Key:" + GetPCPublicCDKey( oPlayer )
+ "; IP:" + GetPCIPAddress( oPlayer )
+ "; has logged in.";
WriteTimestampedLogEntry( sReport );
SendMessageToAllDMs( sReport);
}
string immortalname;
immortalname = ">>> ID: " + GetPCPlayerName( oPlayer )
+ "; Name: "+ GetName( oPlayer )
+ "; CD Key:" + GetPCPublicCDKey( oPlayer );
int god= GetCampaignInt("PoA", "immortalname", oPlayer);
if (god==2){
DelayCommand (1.0, ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectVisualEffect(VFX_DUR_PARALYZED), oPC));
}
DelayCommand(120.0, SetLocalInt(oPC, "logging", 2));
int nMaxHP = GetMaxHitPoints(oPlayer);
string sVarName = "s"+GetName(oPlayer);
object oModule = GetModule();
effect eDeath = EffectDeath();
string ddVarName = "dd"+GetName(oPlayer);
int nHPOnExit = GetLocalInt (oModule, sVarName);
int oDie = GetLocalInt (oModule, ddVarName);
if (oDie == 1){
CreateItemOnObject("death", oPC, 1);
}
int deathtime = GetLocalInt(GetModule(), "died"+GetName(oPlayer));
if(HasItem(oPC, "death"))
{
int currenttime = GetLocalInt(GetModule(), "loadtimer");
int timer = currenttime - deathtime;
if (timer > 99){
object oRespawner = oPC;
SendMessageToPC(oPC,"You would have auto respawned had you been logged in. Executing AutoRespawn script.");
SetLocalObject(oPC, "respawn", oPC);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eDeath, oPC);
DelayCommand(0.2, AssignCommand(oPC, ExecuteScript("forcerespawn", oPC)));
if (GetCampaignInt("PoA", "immortalname", oRespawner) == 2){
return;
}
if (!GetIsDead(OBJECT_SELF)){
return;
}
}
if (oDie == 1){
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eDeath, oPC);
SetLocalInt(oModule,ddVarName,0);
}
}
//Check to see if we have a new char or a reload
int iIndex;
for (iIndex = 1; iIndex < 1000; iIndex++)
{
DecrementTalentIndex(iIndex, oPC);
}
}
void DecrementTalentIndex(int iIndex, object oPC)
{
int iDecrementIndex;
talent tSpell;
/* create our talent */
tSpell = TalentSpell(iIndex);
/* check for all spells */
if (GetIsPC(oPC) && !GetIsDM(oPC))
{
if (GetIsTalentValid(tSpell))
{
if (GetHasSpell(GetIdFromTalent(tSpell), oPC))
{
for (iDecrementIndex = 1; iDecrementIndex < 20; iDecrementIndex++)
{
DecrementRemainingSpellUses(oPC, GetIdFromTalent(tSpell));
}
}
}
}
{
object oPC = GetEnteringObject();
//below removes the Letoscript string so the changes won't be applied again on the next logout
string Script = GetLocalString(oPC, "LetoScript");
if( Script != "" )
{
SetLocalString(oPC, "LetoScript", "");
}
}
}