74 lines
2.7 KiB
Plaintext
74 lines
2.7 KiB
Plaintext
#include "nw_i0_plot"
|
|
void main()
|
|
{
|
|
object oPC = GetItemActivator();
|
|
object oArea = GetArea(oPC);
|
|
int Hostess_Ego = 0;
|
|
int Hostess_Save_DC = 0;
|
|
string sDiseaseCount = "disease_count";
|
|
// Has whip? Add 7 Ego and 5 DC
|
|
if (HasItem(oPC, "lara_whip_act"))
|
|
{
|
|
Hostess_Ego = Hostess_Ego + 7;
|
|
Hostess_Save_DC = Hostess_Save_DC + 5;
|
|
}
|
|
// Has hand? Add 8 Ego and 5 DC
|
|
if (HasItem(oPC, "lara_hand_act"))
|
|
{
|
|
Hostess_Ego = Hostess_Ego + 8;
|
|
Hostess_Save_DC = Hostess_Save_DC + 5;
|
|
}
|
|
// Has soul? Add 11 Ego and 10 DC
|
|
if (HasItem(oPC, "lara_soul_act"))
|
|
{
|
|
Hostess_Ego = Hostess_Ego + 10;
|
|
Hostess_Save_DC = Hostess_Save_DC + 10;
|
|
}
|
|
// Has mind? Add 16 Ego and 15 DC
|
|
if (HasItem(oPC, "lara_mind_act"))
|
|
{
|
|
Hostess_Ego = Hostess_Ego + 16;
|
|
Hostess_Save_DC = Hostess_Save_DC + 15;
|
|
}
|
|
// Get number of times the magical disease has taken over the PC
|
|
Hostess_Save_DC = Hostess_Save_DC + GetLocalInt(oPC, sDiseaseCount);
|
|
// Fail will save? Check vs. disease...
|
|
int WillSaveResult = WillSave(oPC, Hostess_Ego, SAVING_THROW_TYPE_NONE, OBJECT_SELF);
|
|
int FortSaveResult = FortitudeSave(oPC, Hostess_Save_DC, SAVING_THROW_TYPE_DISEASE, OBJECT_SELF);
|
|
if (WillSaveResult == 0)
|
|
{
|
|
// Fail fort (disease) save? Go crazy!
|
|
if (FortSaveResult == 0)
|
|
{
|
|
int NewDiseaseCount = GetLocalInt(oPC, sDiseaseCount) + 1;
|
|
SetLocalInt(oPC, sDiseaseCount, NewDiseaseCount);
|
|
effect NewForm = EffectPolymorph(POLYMORPH_TYPE_WERECAT, TRUE);
|
|
ExtraordinaryEffect(NewForm);
|
|
float NewFormLength = NewDiseaseCount * 10.0f;
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, NewForm, oPC, NewFormLength);
|
|
}
|
|
}
|
|
// Immune to disease? Unequip all of the Hostess items.
|
|
int nSlot = 0;
|
|
object oItem;
|
|
if (FortSaveResult == 2)
|
|
{
|
|
ClearAllActions(TRUE);
|
|
effect NewDamage = EffectDamage(Hostess_Ego + Hostess_Save_DC, DAMAGE_TYPE_DIVINE);
|
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, NewDamage, oPC);
|
|
for (nSlot=0; nSlot<NUM_INVENTORY_SLOTS; nSlot++)
|
|
{
|
|
oItem=GetItemInSlot(nSlot, oPC);
|
|
if (GetTag(oItem) == "lara_whip_act")
|
|
AssignCommand(oPC, ActionUnequipItem(oItem));
|
|
if (GetTag(oItem) == "lara_hand_act")
|
|
AssignCommand(oPC, ActionUnequipItem(oItem));
|
|
if (GetTag(oItem) == "lara_soul_act")
|
|
AssignCommand(oPC, ActionUnequipItem(oItem));
|
|
if (GetTag(oItem) == "lara_mind_act")
|
|
AssignCommand(oPC, ActionUnequipItem(oItem));
|
|
}
|
|
}
|
|
|
|
}
|