Amon_PRC8/_module/nss/js_include.nss
Jaysyn904 c5cffc37af Initial Commit
Initial Commit [v1.01]
2025-04-03 19:00:46 -04:00

216 lines
9.7 KiB
Plaintext

//::////////////////////////////////////////////////
//:: Name: J.S. generic scripting include
//:: FileName: js_include
//::////////////////////////////////////////////////
/*
The is the include file for specific callout using
J.S. rules. Add functions that you would like
called on the bottom of this script, and add the
// line; #include "js_include"
above the void command on whatever script you are
using your new defined function on.
Props to "spilth" for his excellent tutorial.
*/
//::////////////////////////////////////////////////
//:: Created By: Jer Wolfe
//:: Modified By:
//:: Created On: Aug 01, 2002
//::////////////////////////////////////////////////
// *** Configuration Variables - These are meant to be changed ***
int iStableCheck = 19;
// GUI Options When Disabled (0 HP)
string sDisabledGUIMessage = "You've been disabled. You can either wait for another player to help or respawn if nobody else is around.";
int bAllowRespawnWhenDisabled = TRUE;
int bAllowWaitForHelpWhenDisabled = TRUE;
// GUI Options When Stable (-1 to -9 and not bleeding)
string sStableGUIMessage = "You've stabilized! You can either wait for another player to help or respawn if nobody else is around.";
int bAllowRespawnWhenStable = TRUE;
int bAllowWaitForHelpWhenStable = TRUE;
// GUI Options When Dead (-10 or lower)
string sDeathGUIMessage = "You've died! Here are your options...";
int bAllowRespawnWhenDead = TRUE;
int bAllowWaitForHelpWhenDead = TRUE;
// *** Constants - DO NOT CHANGE THESE! ***
int PC_HEALTH_ALIVE = 0; // HP > 0
int PC_HEALTH_DISABLED = 1; // HP = 0
int PC_HEALTH_DYING = 2; // -10 < HP < 0 & Bleeding
int PC_HEALTH_STABLE = 3; // -10 < HP < 0 & Stabilized
int PC_HEALTH_DEAD = 4; // HP <= -10
// A tool to help us test
void SetPCHitPoints(object oPC, int iHitPoints)
{
if (GetIsPC(oPC))
{
int iDamage = GetCurrentHitPoints(oPC) - iHitPoints;
effect eDamage = EffectDamage(iDamage, DAMAGE_TYPE_MAGICAL, DAMAGE_POWER_PLUS_FIVE);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oPC);
}
}
#include "nw_i0_plot"
//::////////////////////////////////////////////////
//:: Name: KillAndReplace
//::////////////////////////////////////////////////
/*
Kills a body and leaves its corpse for looting.
Even makes plot characters killable.
*/
//::////////////////////////////////////////////////
//:: Created By: Bioware
//:: Created On: Aug 01, 2001
//::////////////////////////////////////////////////
void KillAndReplace(object oTarget)
{
// Make sure the object exist
if (GetIsObjectValid(oTarget))
{ // Make the object killable, and leaves a corpse
SetPlotFlag(oTarget, FALSE);
AssignCommand(oTarget, SetIsDestroyable(FALSE, TRUE, TRUE));
AssignCommand(OBJECT_SELF, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDeath(), oTarget));
/*strip_equiped(oTarget, oDeathCorpse, GetItemInSlot(INVENTORY_SLOT_ARMS, oPlayer));
strip_equiped(oTarget, oDeathCorpse, GetItemInSlot(INVENTORY_SLOT_ARROWS, oPlayer));
strip_equiped(oTarget, oDeathCorpse, GetItemInSlot(INVENTORY_SLOT_BELT, oPlayer));
strip_equiped(oTarget, oDeathCorpse, GetItemInSlot(INVENTORY_SLOT_BOLTS, oPlayer));
strip_equiped(oTarget, oDeathCorpse, GetItemInSlot(INVENTORY_SLOT_BOOTS, oPlayer));
strip_equiped(oTarget, oDeathCorpse, GetItemInSlot(INVENTORY_SLOT_BULLETS, oPlayer));
strip_equiped(oTarget, oDeathCorpse, GetItemInSlot(INVENTORY_SLOT_CHEST, oPlayer));
strip_equiped(oTarget, oDeathCorpse, GetItemInSlot(INVENTORY_SLOT_CLOAK, oPlayer));
strip_equiped(oTarget, oDeathCorpse, GetItemInSlot(INVENTORY_SLOT_HEAD, oPlayer));
strip_equiped(oTarget, oDeathCorpse, GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oPlayer));
strip_equiped(oTarget, oDeathCorpse, GetItemInSlot(INVENTORY_SLOT_LEFTRING, oPlayer));
strip_equiped(oTarget, oDeathCorpse, GetItemInSlot(INVENTORY_SLOT_NECK, oPlayer));
strip_equiped(oTarget, oDeathCorpse, GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oPlayer));
strip_equiped(oTarget, oDeathCorpse, GetItemInSlot(INVENTORY_SLOT_RIGHTRING, oPlayer));
*/}
}
//:://////////////////////////////////////////////
//:: Name: RemoveEffects
//:://////////////////////////////////////////////
/*
Used to remove all effects during rest. A
smaller visulal effect is played, instead of
the defalut restoration one
*/
//:://////////////////////////////////////////////
//:: Created By: Jer Wolfe
//:: Created By: SPBTool
//:: Created On: Aug 01, 2002
//:://////////////////////////////////////////////
void RemoveBadEffects(object oDead)
{
// Declare major variables
object oTarget = oDead;
effect eVisual = EffectVisualEffect(VFX_IMP_MAGIC_RESISTANCE_USE);
int bValid;
effect eBad = GetFirstEffect(oTarget);
// Search for negative effects
while(GetIsEffectValid(eBad))
{
if (GetEffectType(eBad) == EFFECT_TYPE_ABILITY_DECREASE ||
GetEffectType(eBad) == EFFECT_TYPE_AC_DECREASE ||
GetEffectType(eBad) == EFFECT_TYPE_ATTACK_DECREASE ||
GetEffectType(eBad) == EFFECT_TYPE_DAMAGE_DECREASE ||
GetEffectType(eBad) == EFFECT_TYPE_DAMAGE_IMMUNITY_DECREASE ||
GetEffectType(eBad) == EFFECT_TYPE_SAVING_THROW_DECREASE ||
GetEffectType(eBad) == EFFECT_TYPE_SPELL_RESISTANCE_DECREASE ||
GetEffectType(eBad) == EFFECT_TYPE_SKILL_DECREASE ||
GetEffectType(eBad) == EFFECT_TYPE_BLINDNESS ||
GetEffectType(eBad) == EFFECT_TYPE_DEAF ||
GetEffectType(eBad) == EFFECT_TYPE_PARALYZE ||
GetEffectType(eBad) == EFFECT_TYPE_NEGATIVELEVEL ||
GetEffectType(eBad) == EFFECT_TYPE_FRIGHTENED ||
GetEffectType(eBad) == EFFECT_TYPE_DAZED ||
GetEffectType(eBad) == EFFECT_TYPE_CONFUSED ||
GetEffectType(eBad) == EFFECT_TYPE_POISON ||
GetEffectType(eBad) == EFFECT_TYPE_DISEASE)
{
// Remove the effect if it is listed above
RemoveEffect(oTarget, eBad);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVisual, oTarget);
// SendMessageToPC(oTarget, "removed ability");
}
eBad = GetNextEffect(oTarget);
}
// Fire cast spell at event for the specified target
// SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_RESTORATION, FALSE));
}
//:://////////////////////////////////////////////
//:: Name: AbilityHeal
//:://////////////////////////////////////////////
/*
Used to store and find the difference from PC
ablity scores, before and after healing. Using
a DC 19 Heal Check to see if amount healed is
more than default; 2 points
*/
//:://////////////////////////////////////////////
//:: Created By: Jer Wolfe
//:: Created By: SPBTool
//:: Created On: Aug 01, 2002
//:://////////////////////////////////////////////
void AbilityHeal(int iAbility, string sOrigAbility, int iMinHeal, int iMaxHeal)
{
object oPC = GetLastPCRested();
// This should be an int stored on the PC before removing the effects, but close
// enough to the removing of efects so it doesn't drop again after setting it.
int iOrigAbility = GetLocalInt(oPC, sOrigAbility);
string sAbility = sOrigAbility;
int iCurAbility = GetAbilityScore(oPC, iAbility);
int iHealSkill = GetSkillRank(SKILL_HEAL, oPC);
// This is the max amount to heal if a heal DC check is made
// The DC for the heal check
int iHCDC = AutoDC(2, iHealSkill, oPC);
int iHeal = iMinHeal;
int iHealed = (iCurAbility - iOrigAbility);
int iHealedText = (d20(1) + iHealSkill);
//SendMessageToPC(oPC, "iHealed "+IntToString(iHealed)+" iHealed "+sAbility+".");
//SendMessageToPC(oPC, "iCurAbility "+IntToString(iCurAbility)+" iCurAbility "+sAbility+".");
//SendMessageToPC(oPC, "iOrigAbility "+IntToString(iOrigAbility)+" iOrigAbility "+sAbility+".");
//SendMessageToPC(oPC, "iHeal "+IntToString(iHeal)+" iHeal "+sAbility+".");
// A Heal skill check v.s. int iHCDC
if (iHealedText >= iHCDC)
{ // if succesful set ammount healed to the maximum, iMaxHeal, and make a
//call to the PC saying the roll made
iHeal = iMaxHeal;
SendMessageToPC(oPC, "Your DC was " +IntToString(iHCDC)+"." +"You made your Heal Check with a "+IntToString(iHealedText)+".");
return;
}
if (iHealedText < iHCDC)
{ // make a call to the PC saying the roll made
SendMessageToPC(oPC, "Your DC was " +IntToString(iHCDC)+"." +"You failed your Heal Check with a "+IntToString(iHealedText)+".");
return;
} // if amount healed only equals 1 send a call to the PC
if (iHealed == 1)
{
SendMessageToPC(oPC, "You recover 1 point of "+sAbility+".");
}
if (iHealed > 1 && iHealed > iHeal)
{ // if amount healed is greater than 1 AND greater than the minimum
// healed, apply the heal effect
effect eBad = EffectAbilityDecrease(iAbility, (iHealed - iHeal));
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eBad, oPC, 0.0);
SendMessageToPC(oPC, "You healed "+IntToString(iHeal)+" points "+sAbility+".");
}
if (iHealed > 1 && iHealed < iHeal)
{ // if amount healed is greater than 1 AND less than the minimum
// healed, use the difference, and send that to the PC
SendMessageToPC(oPC, "You healed "+IntToString(iHealed)+" points "+sAbility+".");
}
if (iHealed > 1 && iHealed == iHeal)
{ // if amount healed is greater than 1 AND equal to the adjusted ammount
// healed, use the difference, and send that to the PC
SendMessageToPC(oPC, "You healed "+IntToString(iHealed)+" points "+sAbility+".");
}
}