forked from Jaysyn/PRC8
Updated Release Archive. Fixed Mage-killer prereqs. Removed old LETO & ConvoCC related files. Added organized spell scroll store. Fixed Gloura spellbook. Various TLK fixes. Reorganized Repo. Removed invalid user folders. Added DocGen back in.
68 lines
2.3 KiB
Plaintext
68 lines
2.3 KiB
Plaintext
/*
|
|
prc_dnc_scabtch
|
|
|
|
Scabrous Touch
|
|
Does contagion spell on touch
|
|
*/
|
|
|
|
#include "prc_sp_func"
|
|
#include "prc_inc_sp_tch"
|
|
|
|
void main()
|
|
{
|
|
object oCaster = OBJECT_SELF;
|
|
object oTarget = PRCGetSpellTargetObject();
|
|
int nClass = GetLevelByClass(CLASS_TYPE_DREAD_NECROMANCER, oCaster);
|
|
|
|
int iAttackRoll = PRCDoMeleeTouchAttack(oTarget);
|
|
if (iAttackRoll > 0)
|
|
{
|
|
int nDC = 10 + nClass/2 + GetAbilityModifier(ABILITY_CHARISMA, oCaster);
|
|
|
|
int nRand = Random(7)+1;
|
|
int nDisease;
|
|
//Use a random seed to determine the disease that will be delivered.
|
|
switch (nRand)
|
|
{
|
|
case 1:
|
|
nDisease = DISEASE_CONTAGION_BLINDING_SICKNESS;
|
|
break;
|
|
case 2:
|
|
nDisease = DISEASE_CONTAGION_CACKLE_FEVER;
|
|
break;
|
|
case 3:
|
|
nDisease = DISEASE_CONTAGION_FILTH_FEVER;
|
|
break;
|
|
case 4:
|
|
nDisease = DISEASE_CONTAGION_MINDFIRE;
|
|
break;
|
|
case 5:
|
|
nDisease = DISEASE_CONTAGION_RED_ACHE;
|
|
break;
|
|
case 6:
|
|
nDisease = DISEASE_CONTAGION_SHAKES;
|
|
break;
|
|
case 7:
|
|
nDisease = DISEASE_CONTAGION_SLIMY_DOOM;
|
|
break;
|
|
}
|
|
if(!GetIsReactionTypeFriendly(oTarget))
|
|
{
|
|
//Fire cast spell at event for the specified target
|
|
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_CONTAGION));
|
|
effect eDisease = EffectDisease(nDisease);
|
|
// Make the real first save against the spell's DC
|
|
if(!PRCMySavingThrow(SAVING_THROW_FORT, oTarget, nDC, SAVING_THROW_TYPE_SPELL))
|
|
{
|
|
//The effect is permament because the disease subsystem has its own internal resolution
|
|
//system in place.
|
|
// The first disease save is against an impossible fake DC, since at this point the
|
|
// target has already failed their real first save.
|
|
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eDisease, oTarget);
|
|
}
|
|
}
|
|
}
|
|
|
|
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, PRCGetSpellId()));
|
|
|
|
} |