Initial upload.

Adding base PRC 4.19a files to repository.
This commit is contained in:
Jaysyn904
2022-10-07 13:51:24 -04:00
parent 646eb01834
commit 1662218bb4
22441 changed files with 1274376 additions and 0 deletions

View File

@@ -0,0 +1,102 @@
/*:://////////////////////////////////////////////
//:: Spell Name Deathwatch
//:: Spell FileName PHS_S_Deathwatch
//:://////////////////////////////////////////////
//:: In Game Spell desctiption
//:://////////////////////////////////////////////
30ft range (10M), Instant duration. Cone-shaped emanation.
Using the foul sight granted by the powers of unlife, you can determine the
condition of creatures near death within the spells range. You instantly
know whether each creature within the area is dead, fragile (alive and
wounded, with 3 or fewer hit points left), fighting off death (alive with 4
or more hit points), undead, or neither alive nor dead (such as a construct).
Deathwatch sees through any spell or ability that allows creatures to feign
death.
//:://////////////////////////////////////////////
//:: Spell Effects Applied / Notes
//:://////////////////////////////////////////////
I think the duration part can be removed.
As above:
dead <= -10
fragile <= 3
fighting off death >= 4
undead = undead
construct = construct
//:://////////////////////////////////////////////
//:: Created By: Jasperre
//::////////////////////////////////////////////*/
#include "PHS_INC_SPELLS"
void main()
{
// Spell hook check
if(!PHS_SpellHookCheck(PHS_SPELL_DEATHWATCH)) return;
// Declare major variables
object oCaster = OBJECT_SELF;
location lTarget = GetSpellTargetLocation();
float fDelay;
string sString;
int nHP;
// Get the first target in the area - 30ft, 10M range.
object oTarget = GetFirstObjectInShape(SHAPE_SPELLCONE, 10.0, lTarget, TRUE);
while(GetIsObjectValid(oTarget))
{
// Start string as name
sString = GetName(oTarget);
// Determine race
switch(GetRacialType(oTarget))
{
// Undead
case RACIAL_TYPE_UNDEAD:
{
// Add on: " is an undead creature"
sString += " is an undead creature.";
}
break;
// Constructs
case RACIAL_TYPE_CONSTRUCT:
{
// Add on: " is an construct"
sString += " is an construct.";
}
break;
// Anything else
default:
{
// 3 states: "dead, dying, not dead"
nHP = GetCurrentHitPoints(oTarget);
// Dead: Must be actually dead (not dying!)
if(nHP <= -10)
{
sString += " is a dead creature.";
}
// Fragile - 3 or less, but not dead, can be dying.
else if(nHP <= 3)
{
sString += " is a fragile creature.";
}
// fighting off death - everything else, oddly enough.
else
{
sString += " is a creature fighting off death.";
}
}
break;
}
// Get delay - quite a big one.
fDelay = GetDistanceToObject(oTarget)/2.0;
// Send message to PC based on range.
DelayCommand(fDelay, SendMessageToPC(oCaster, "[Deathwatch] " + GetName(oTarget) + " is " + sString));
// Get next target
oTarget = GetNextObjectInShape(SHAPE_SPELLCONE, 10.0, lTarget, TRUE);
}
}