Consolidated menus

Consolidated menus.  Fixed AMS not restoring spell on rest.  Full compile. Updated release archive.
This commit is contained in:
Jaysyn904
2023-11-18 21:42:23 -05:00
parent a203d11310
commit d44d9fef07
10 changed files with 2072111 additions and 131349 deletions

View File

@@ -1,8 +1,8 @@
//:://////////////////////////////////////////////
/*
* call_onpcrest.nss
* call_onpcrest.nss
*
* OnPlayerRest event caller
* OnPlayerRest event caller
*
*
*/
@@ -11,7 +11,7 @@
void main()
{
ExecuteScript("prc_rest", OBJECT_SELF);
ExecuteScript("onplayerrest", OBJECT_SELF);
}
ExecuteScript("x2_mod_def_rest", OBJECT_SELF);
}

View File

@@ -9,14 +9,63 @@
//:: Created By: Georg Zoeller
//:: Created On: June 9/03
//:://////////////////////////////////////////////
//:: Modified By: Deva Winblood
//:: Modified Date: January 28th, 2008
//:://////////////////////////////////////////////
#include "x2_inc_restsys"
#include "x2_inc_switches"
#include "x3_inc_horse"
effect eEffect;
void main()
{
//Declare Major Variables
object oPC =GetLastPCRested();
object oPlayer = oPC;
string sName = GetStringLeft(GetName(oPC), 20);
object oPP = oPC;
object oPC = GetLastPCRested();
location lSaved = GetLocation(oPP);
int nRestType =GetLastRestEventType();
int nHD = GetHitDice(oPC);
object oMount;
if (!GetLocalInt(GetModule(),"X3_MOUNT_NO_REST_DISMOUNT"))
{ // make sure not mounted
/* Deva, Jan 17, 2008
Do not allow a mounted PC to rest
*/
if (HorseGetIsMounted(oPC))
{ // cannot mount
if (GetLocalInt(oPC,"X3_REST_CANCEL_MESSAGE_SENT"))
{ // cancel message already played
DeleteLocalInt(oPC,"X3_REST_CANCEL_MESSAGE_SENT");
} // cancel message already played
else
{ // play cancel message
FloatingTextStrRefOnCreature(112006,oPC,FALSE);
SetLocalInt(oPC,"X3_REST_CANCEL_MESSAGE_SENT",TRUE); // sentinel
// value to prevent message played a 2nd time on canceled rest
} // play cancel message
AssignCommand(oPC,ClearAllActions(TRUE));
return;
} // cannot mount
} // make sure not mounted
if (!GetLocalInt(GetModule(),"X3_MOUNT_NO_REST_DESPAWN"))
{ // if there is a paladin mount despawn it
oMount=HorseGetPaladinMount(oPC);
if (!GetIsObjectValid(oMount)) oMount=GetLocalObject(oPC,"oX3PaladinMount");
if (GetIsObjectValid(oMount))
{ // paladin mount exists
if (oMount==oPC||!GetIsObjectValid(GetMaster(oMount))) AssignCommand(oPC,HorseUnsummonPaladinMount());
else { AssignCommand(GetMaster(oMount),HorseUnsummonPaladinMount()); }
} // paladin mount exists
} // if there is a paladin mount despawn it
if (GetModuleSwitchValue(MODULE_SWITCH_USE_XP2_RESTSYSTEM) == TRUE)
{
@@ -83,13 +132,124 @@ void main()
{
// No longer used but left in for the community
// WMFinishPlayerRest(oPC); // removes sleep effect, etc
}
SetLocalInt(oPC, "REST_STARTED", 0);
//*******LOCATION SAVING OPTION************
//Type // at the start of the Set and Send lines to deactivate this feature.
//For the guild only!
//If they are in the guild...
if(GetItemPossessedBy(oPC, "guildpass")!=OBJECT_INVALID)
{
if(GetAreaFromLocation(lSaved)!=OBJECT_INVALID)
{
//Store the PC's location, so they can come back here after relogging
//SetCampaignLocation("LOCATIONS", GetName(oPC), lSaved, oPC);
//Tell the PC their location was saved..
//SendMessageToPC(oPP, "Location Saved!");
}
}
//************CLEAR THE PC'S REPUTATION WITH ALL NPCS*****************
if(GetIsPC(oPlayer))
{
AssignCommand(oPlayer, ClearAllActions());
//Clear Reputation of PC
if (GetStandardFactionReputation(STANDARD_FACTION_COMMONER, oPlayer) <= 10)
{ SetLocalInt(oPlayer, "NW_G_Playerhasbeenbad", 10); // * Player bad
SetStandardFactionReputation(STANDARD_FACTION_COMMONER, 80, oPlayer);
}
if (GetStandardFactionReputation(STANDARD_FACTION_MERCHANT, oPlayer) <= 10)
{ SetLocalInt(oPlayer, "NW_G_Playerhasbeenbad", 10); // * Player bad
SetStandardFactionReputation(STANDARD_FACTION_MERCHANT, 80, oPlayer);
}
if (GetStandardFactionReputation(STANDARD_FACTION_DEFENDER, oPlayer) <= 10)
{ SetLocalInt(oPlayer, "NW_G_Playerhasbeenbad", 10); // * Player bad
SetStandardFactionReputation(STANDARD_FACTION_DEFENDER, 80, oPlayer);
}
}
//*****EXPORT SINGLE CHARACTER******
/*
Delete the // at the start of the two lines below to -
activate the player character auto saving features
*/
//Save the PC's character instantly..
if(GetLocalInt(GetModule(), "MULTI")==TRUE)
{
ExportAllCharacters();
SendMessageToPC(GetPCLevellingUp(), "All characters on the server are saved when any character rest.");
}
DelayCommand(1.0, ExportSingleCharacter(oPC)); //Allow them to deshift!
FloatingTextStringOnCreature("Your character was saved.", oPC);
}
//Remove any and ALL death tokens...
object oToken;
string sTag;
if(GetItemPossessedBy(oPC, "death")!=OBJECT_INVALID)
{
oToken = GetFirstItemInInventory(oPC);
while(GetIsObjectValid(oToken))
{
sTag = GetTag(oToken);
if(sTag=="death")
{ DestroyObject(oToken, 0.0f); }
oToken = GetNextItemInInventory(oPC);
}
}
if(nHD == 40 || GetItemPossessedBy(oPC, "guildpass")!=OBJECT_INVALID)
{
//If the player is Legendary Level 60 give them a cool power!
if(GetXP(oPC) >5000000 || GetItemPossessedBy(oPC, "guildpass")!=OBJECT_INVALID)
{
//The legendary character is immune to death!
eEffect = EffectImmunity(IMMUNITY_TYPE_SKILL_DECREASE);
eEffect = SupernaturalEffect(eEffect);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oPC);
//The legendary character is immune to poison!
eEffect = EffectImmunity(IMMUNITY_TYPE_ABILITY_DECREASE);
eEffect = SupernaturalEffect(eEffect);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oPC);
//The legendary character is immune to disease!
eEffect = EffectImmunity(IMMUNITY_TYPE_NEGATIVE_LEVEL);
eEffect = SupernaturalEffect(eEffect);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oPC);
}
//Make ALL level 40s have 40% concealment
//Make them harder to hit 40% miss chance...
eEffect = EffectConcealment(40);
eEffect = SupernaturalEffect(eEffect);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oPC);
//Apply the Ghost Like Visual to all Level 40 PCs
//Type // at the start of the two lines below to de-activate this.
if(nHD == 40)
{
DelayCommand(1.0, ApplyEffectToObject(DURATION_TYPE_PERMANENT,
SupernaturalEffect(EffectVisualEffect(VFX_DUR_GLOW_WHITE)), oPC));
}
}
//if the PC is immortal (has the immotoken)
if (GetItemPossessedBy(oPC, "immotoken")!= OBJECT_INVALID)
{
//See this script to adjust the immortal options..
ExecuteScript("powerimmortal", oPC);
}
//Your code goes here. (This happens when the PC is done resting..)
}
}
}