2024-06-14 10:48:20 -04:00
|
|
|
//#include "_persist_01a"
|
|
|
|
|
|
|
|
void CreateAnObject(string sResource, object oPC, int iStackSize);
|
|
|
|
void CreatePlaceable(string sObject, location lPlace, float fDuration);
|
|
|
|
void DoSavingThrow(object oPC, int iSaveType, int iDC, int iEffect, object oSelf);
|
|
|
|
void NewShroomPatch(object oSelf, object oPC);
|
|
|
|
|
|
|
|
void main()
|
|
|
|
{
|
|
|
|
///////////////////////////////////////////////////
|
|
|
|
// This section allows you to customize the behaviour of the mushroom patches
|
|
|
|
// by commenting or uncommenting various lines.
|
|
|
|
///////////////////////////////////////////////////
|
|
|
|
//
|
|
|
|
int iShroomStable = 0;
|
|
|
|
// Comment this next line to force mushroom patches to remain stationary
|
|
|
|
// with respect to respawning. (i.e. they always respawn in same location)
|
|
|
|
iShroomStable = 99;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
object oSelf = OBJECT_SELF;
|
|
|
|
object oPC = GetLastUsedBy();
|
|
|
|
object oItem = OBJECT_SELF;
|
|
|
|
string sTagSelf = GetTag(OBJECT_SELF);
|
|
|
|
string sItemResRef = "";
|
|
|
|
string sSuccess = "";
|
|
|
|
int iSkillGain = 0;
|
|
|
|
int iPenalty = 0;
|
|
|
|
|
|
|
|
if (GetLocalInt(oPC,"iAmDigging")!= 0)
|
|
|
|
{
|
|
|
|
FloatingTextStringOnCreature("You are already searching this area for fungi!",oPC,FALSE);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
SetLocalInt(oPC,"iAmDigging",99);
|
|
|
|
DelayCommand(8.1,SetLocalInt(oPC,"iAmDigging",0));
|
|
|
|
|
|
|
|
//int iShroomSkill = GetTokenPair(oPC,12,1);
|
2024-09-01 14:11:15 -04:00
|
|
|
int iShroomSkill = GetCampaignInt("UOACraft","iShroomSkill",oPC);
|
2024-06-14 10:48:20 -04:00
|
|
|
int iShroomChance = iShroomSkill;
|
|
|
|
if (iShroomSkill <350)
|
|
|
|
{
|
|
|
|
iShroomChance = GetAbilityScore(oPC,ABILITY_INTELLIGENCE)*5;
|
|
|
|
iShroomChance = iShroomChance + (GetAbilityScore(oPC,ABILITY_WISDOM)*3);
|
|
|
|
iShroomChance = iShroomChance + (GetAbilityScore(oPC,ABILITY_CHARISMA)*2);
|
|
|
|
iShroomChance = iShroomChance *3;
|
|
|
|
if (iShroomChance>350)iShroomChance = 350;
|
|
|
|
if (iShroomSkill>iShroomChance) iShroomChance = iShroomSkill;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Build Mushroom ResRef
|
|
|
|
sItemResRef = "item_mushroom"+GetStringRight(sTagSelf,3);
|
|
|
|
|
|
|
|
// Assign Mushroom gathering properties here (i.e. chances of being poisoned while gathering etc)
|
|
|
|
if (GetLocalInt(OBJECT_SELF,"iTriggered")==0)
|
|
|
|
{
|
|
|
|
|
|
|
|
switch (StringToInt(GetStringRight(sTagSelf,3)))
|
|
|
|
{
|
|
|
|
case 1:
|
|
|
|
{
|
|
|
|
//Artist's Conk
|
|
|
|
//Visual effect only
|
|
|
|
if (d20(2)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_SOUND_BURST,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered an artist's conk fungus to spew forth its spores!!",oPC,FALSE));
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 2:
|
|
|
|
{
|
|
|
|
//Basket Fungus
|
|
|
|
//Failed save = stinging insects
|
|
|
|
if (d20(2)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_BLOOD_CRT_RED,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered a basket fungus to spew forth its spores!!",oPC,FALSE));
|
|
|
|
AssignCommand(oPC,DelayCommand(3.0,DoSavingThrow(oPC,1,25,4,oSelf)));
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 3:
|
|
|
|
{
|
|
|
|
//Birdsnest Fungus
|
|
|
|
//Failed save = slow for 10 minutes plus web effect
|
|
|
|
if (d20(2)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_HIT_FROST,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered a birdsnest fungus to spew forth its spores!!",oPC,FALSE));
|
|
|
|
AssignCommand(oPC,DelayCommand(3.0,DoSavingThrow(oPC,1,20,31,oSelf)));
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 4:
|
|
|
|
{
|
|
|
|
//Wooly Birdsnest Fungus
|
|
|
|
//Failed save = slow for 10 minutes plus web effect
|
|
|
|
if (d20(2)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_HIT_ACID,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered a wooly birdsnest fungus to spew forth its spores!!",oPC,FALSE));
|
|
|
|
AssignCommand(oPC,DelayCommand(3.0,DoSavingThrow(oPC,1,25,30,oSelf)));
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 5:
|
|
|
|
{
|
|
|
|
//Candlesnuff Fungus
|
|
|
|
//Visual effect only
|
|
|
|
if (d20(1)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_HIT_FIRE,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.1,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_SMOKE_PUFF,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.5,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_HIT_FIRE,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(4.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_HIT_FIRE,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(4.5,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_HIT_FIRE,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(5.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_HIT_FIRE,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.5,PlaySound(""));
|
2024-09-01 14:11:15 -04:00
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered a stag's horn fungus to spew forth its spores!!",oPC,FALSE));
|
2024-06-14 10:48:20 -04:00
|
|
|
if (Random(1000)<200) NewShroomPatch(OBJECT_SELF,oPC);
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 6:
|
|
|
|
{
|
|
|
|
//Stag's Horn Fungus
|
|
|
|
//Visual and audio effect only
|
|
|
|
if (d20(1)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_HIT_NEGATIVE,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.5,PlaySound("as_an_wolfhowl1"));
|
|
|
|
DelayCommand(3.0,AssignCommand(oPC,PlaySound("as_an_wolfhowl1")));
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered a stag's horn fungus to spew forth its spores!!",oPC,FALSE));
|
|
|
|
if (Random(1000)<200) NewShroomPatch(OBJECT_SELF,oPC);
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 7:
|
|
|
|
{
|
|
|
|
//Wooly Ink Cap
|
|
|
|
//visual effect only and spawn 0-1 new fungi (small chance)
|
|
|
|
if (d20(1)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_BLOOD_LRG_WIMP,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered a wooly ink cap fungus to spew forth its spores!!",oPC,FALSE));
|
|
|
|
if (Random(1000)<200) NewShroomPatch(OBJECT_SELF,oPC);
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 8:
|
|
|
|
{
|
|
|
|
//Ink Cap
|
|
|
|
//Visual effect only and spawn 0-1 new fungi (small chance)
|
|
|
|
if (d20(1)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_BLOOD_LRG_YELLOW,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered an ink cap fungus to spew forth its spores!!",oPC,FALSE));
|
|
|
|
if (Random(1000)<200) NewShroomPatch(OBJECT_SELF,oPC);
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 9:
|
|
|
|
{
|
|
|
|
//Earth Ball Fungus
|
|
|
|
//Failed save = mild poison
|
|
|
|
if (d20(1)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_BLOOD_LRG_GREEN,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered an earth ball fungus to spew forth its spores!!",oPC,FALSE));
|
|
|
|
AssignCommand(oPC,DelayCommand(3.0,DoSavingThrow(oPC,1,30,28,oSelf)));
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 10:
|
|
|
|
{
|
|
|
|
//Dark Velvet Bolete
|
|
|
|
//Visual effect only and spawn 0-3 new fungi
|
|
|
|
if (d20(1)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_BLOOD_REG_RED,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered a dark velvet bolete fungus to spew forth its spores!!",oPC,FALSE));
|
|
|
|
if (Random(1000)<200) NewShroomPatch(OBJECT_SELF,oPC);
|
|
|
|
if (Random(1000)<350) NewShroomPatch(OBJECT_SELF,oPC);
|
|
|
|
if (Random(1000)<500) NewShroomPatch(OBJECT_SELF,oPC);
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 11:
|
|
|
|
{
|
|
|
|
//Birch Bolete
|
|
|
|
//Visual effect only and spawn 0-2 new fungi.
|
|
|
|
if (d20(1)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_BLOOD_REG_YELLOW,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered a birch bolete fungus to spew forth its spores!!",oPC,FALSE));
|
|
|
|
if (Random(1000)<250) NewShroomPatch(OBJECT_SELF,oPC);
|
|
|
|
if (Random(1000)<500) NewShroomPatch(OBJECT_SELF,oPC);
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 12:
|
|
|
|
{
|
|
|
|
//Potato Fungus
|
|
|
|
//Failed save = -1 dex/str/con due to violent retching from noxious fumes
|
|
|
|
if (d20(2)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_HIT_SONIC,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered a potato fungus to spew forth its spores!!",oPC,FALSE));
|
|
|
|
AssignCommand(oPC,DelayCommand(3.0,DoSavingThrow(oPC,1,30,14,oSelf)));
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 13:
|
|
|
|
{
|
|
|
|
//Sulfur Tuft
|
|
|
|
//Failed save = major poison
|
|
|
|
if (d20(1)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_CHUNK_YELLOW_MEDIUM,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered a sulfur tuft fungus to spew forth its spores!!",oPC,FALSE));
|
|
|
|
AssignCommand(oPC,DelayCommand(3.0,DoSavingThrow(oPC,1,25,29,oSelf)));
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 14:
|
|
|
|
{
|
|
|
|
//Little Blues
|
|
|
|
//Failed save = poisoned
|
|
|
|
if (d20(1)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_HOWL_ODD,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered a little blues fungus to spew forth its spores!!",oPC,FALSE));
|
|
|
|
AssignCommand(oPC,DelayCommand(3.0,DoSavingThrow(oPC,1,25,28,oSelf)));
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 15:
|
|
|
|
{
|
|
|
|
//Red Pouch Fungus
|
|
|
|
//Failed save = poisoned
|
|
|
|
if (d20(1)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_BLINDDEAF,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered a red pouch fungus to spew forth its spores!!",oPC,FALSE));
|
|
|
|
AssignCommand(oPC,DelayCommand(3.0,DoSavingThrow(oPC,1,20,28,oSelf)));
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 16:
|
|
|
|
{
|
|
|
|
//Pale Blue Pouch Fungi
|
|
|
|
//Failed save = poisoned
|
|
|
|
if (d20(1)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_DISPEL_DISJUNCTION,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered a pale blue pouch fungus to spew forth its spores!!",oPC,FALSE));
|
|
|
|
AssignCommand(oPC,DelayCommand(3.0,DoSavingThrow(oPC,1,20,28,oSelf)));
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 17:
|
|
|
|
{
|
|
|
|
//Earth Stars
|
|
|
|
//Visual effect only.. spawn 0-1 new shrooms (small Chance)
|
|
|
|
if (d20(1)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.3,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_PWSTUN,FALSE),OBJECT_SELF,1.0));
|
2024-09-01 14:11:15 -04:00
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered a velvet earth star fungus to spew forth its spores!!",oPC,FALSE));
|
2024-06-14 10:48:20 -04:00
|
|
|
if (Random(1000)<200) NewShroomPatch(OBJECT_SELF,oPC);
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 18:
|
|
|
|
{
|
|
|
|
//Velvet Earth Stars
|
|
|
|
//Visual effect only and spawn 0-1 new fungi (small chance)
|
|
|
|
if (d20(1)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.3,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_PWKILL,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered a velvet earth star fungus to spew forth its spores!!",oPC,FALSE));
|
|
|
|
if (Random(1000)<200) NewShroomPatch(OBJECT_SELF,oPC);
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 19:
|
|
|
|
{
|
|
|
|
//Wood Ear Fungus
|
|
|
|
//Visual effect and 0-1 new fungi
|
|
|
|
if (d20(1)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.3,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_HIT_ACID,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered a wood ear fungus to spew forth its spores!!",oPC,FALSE));
|
|
|
|
if (Random(1000)<400) NewShroomPatch(OBJECT_SELF,oPC);
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 20:
|
|
|
|
{
|
|
|
|
//Stone Fungus
|
|
|
|
//Failed save = poisoned
|
|
|
|
if (d20(1)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_HOWL_MIND,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered a stone fungus to spew forth its spores!!",oPC,FALSE));
|
|
|
|
AssignCommand(oPC,DelayCommand(3.0,DoSavingThrow(oPC,1,25,28,oSelf)));
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 21:
|
|
|
|
{
|
|
|
|
//Common Earthball
|
|
|
|
//Failed save = poisoned
|
|
|
|
if (d20(1)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_HOWL_ODD,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered a common earthball to spew forth its spores!!",oPC,FALSE));
|
|
|
|
AssignCommand(oPC,DelayCommand(3.0,DoSavingThrow(oPC,1,25,28,oSelf)));
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 22:
|
|
|
|
{
|
|
|
|
//Earth Tongue
|
|
|
|
//Failed save = diseased
|
|
|
|
if (d20(1)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_WEIRD,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered an earth tongue fungus to spew forth its spores!!",oPC,FALSE));
|
|
|
|
AssignCommand(oPC,DelayCommand(3.0,DoSavingThrow(oPC,2,25,27,oSelf)));
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 23:
|
|
|
|
{
|
|
|
|
//Green Earth Tongue
|
|
|
|
//Failed save = diseased
|
|
|
|
if (d20(1)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_WEIRD,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered a green earth tongue fungus to spew forth its spores!!",oPC,FALSE));
|
|
|
|
AssignCommand(oPC,DelayCommand(3.0,DoSavingThrow(oPC,2,25,26,oSelf)));
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 24:
|
|
|
|
{
|
|
|
|
//Eyelash Cup
|
|
|
|
//Visual effect only
|
|
|
|
if (d20(1)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_SUNBEAM,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered an eyelash cup fungus to spew forth its spores!!",oPC,FALSE));
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 25:
|
|
|
|
{
|
|
|
|
//False Truffle
|
|
|
|
//Visual effect and spawn 0-3 new shrooms
|
|
|
|
if (d20(1)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_SPECIAL_BLUE_RED,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.3,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_HIT_FROST,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered a false truffle to spew forth its spores!!",oPC,FALSE));
|
|
|
|
if (Random(1000)<600) NewShroomPatch(OBJECT_SELF,oPC);
|
|
|
|
if (Random(1000)<500) NewShroomPatch(OBJECT_SELF,oPC);
|
|
|
|
if (Random(1000)<400) NewShroomPatch(OBJECT_SELF,oPC);
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 26:
|
|
|
|
{
|
|
|
|
//Truffle
|
|
|
|
//Visual effect and spawn 0-1 new shrooms
|
|
|
|
if (d12(1)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_HIT_SONIC,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered a truffle to spew forth its spores!!",oPC,FALSE));
|
|
|
|
if (Random(1000)<600) NewShroomPatch(OBJECT_SELF,oPC);
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 27:
|
|
|
|
{
|
|
|
|
//Fly Agaric
|
|
|
|
//Failed save = major poisoning
|
|
|
|
if (d20(1)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_BLOOD_LRG_YELLOW,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered a fly agaric to spew forth its spores!!",oPC,FALSE));
|
|
|
|
AssignCommand(oPC,DelayCommand(3.0,DoSavingThrow(oPC,1,25,25,oSelf)));
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 28:
|
|
|
|
{
|
|
|
|
//Death Cap
|
|
|
|
//Failed save = major posioning
|
|
|
|
if (d20(1)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_BLOOD_LRG_GREEN,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered a death cap fungus to spew forth its spores!!",oPC,FALSE));
|
|
|
|
AssignCommand(oPC,DelayCommand(3.0,DoSavingThrow(oPC,1,25,25,oSelf)));
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 29:
|
|
|
|
{
|
|
|
|
//Fungus Icicles
|
|
|
|
//Failed save = 1-2 hp bludgeoning damage and 0-2 hp piercing damage and 0-2 cold damage.
|
|
|
|
if (d20(1)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_STRIKE_HOLY,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(4.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_ICESTORM,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered an icicle fungus to spew forth its spores!!",oPC,FALSE));
|
|
|
|
AssignCommand(oPC,DelayCommand(3.0,DoSavingThrow(oPC,4,20,24,oSelf)));
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 30:
|
|
|
|
{
|
|
|
|
//Lilac Puffball
|
|
|
|
//Failed save = sleep for 60 seconds and 0-1 new patches
|
|
|
|
if (d20(1)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_HOWL_ODD,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.3,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_HOWL_WAR_CRY,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered a lilac puffball fungus to spew forth its spores!!",oPC,FALSE));
|
|
|
|
AssignCommand(oPC,DelayCommand(3.0,DoSavingThrow(oPC,1,20,7,oSelf)));
|
|
|
|
if (Random(1000)<600) NewShroomPatch(OBJECT_SELF,oPC);
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 31:
|
|
|
|
{
|
|
|
|
//Pestle-Shaped Puffball
|
|
|
|
//Failed save = 1-4 acid damage and 0-1 new patches
|
|
|
|
if (d20(1)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_GAS_EXPLOSION_ACID,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered a pestle-shaped puffball fungus to spew forth its spores!!",oPC,FALSE));
|
|
|
|
AssignCommand(oPC,DelayCommand(3.0,DoSavingThrow(oPC,1,20,3,oSelf)));
|
|
|
|
if (Random(1000)<500) NewShroomPatch(OBJECT_SELF,oPC);
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 32:
|
|
|
|
{
|
|
|
|
//Devil's Snuffbox
|
|
|
|
//Failed save = 1d6 damage (fire) and 0-1 new patches
|
|
|
|
if (d20(1)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_SMOKE_PUFF,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectVisualEffect(VFX_DUR_TENTACLE,FALSE),OBJECT_SELF,5.0));
|
|
|
|
DelayCommand(3.5,ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectVisualEffect(VFX_DUR_ELEMENTAL_SHIELD,FALSE),OBJECT_SELF,3.0));
|
|
|
|
DelayCommand(5.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_FIREBALL,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered a devil's snuffbox fungus to spew forth its spores!!",oPC,FALSE));
|
|
|
|
AssignCommand(oPC,DelayCommand(3.0,DoSavingThrow(oPC,1,40,23,oSelf)));
|
|
|
|
if (Random(1000)<500) NewShroomPatch(OBJECT_SELF,oPC);
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 33:
|
|
|
|
{
|
|
|
|
//Puffball
|
|
|
|
//Failed save = sleep for 1 minute and 0-2 new patches
|
|
|
|
if (d20(1)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_IMPLOSION,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered a puffball fungus to spew forth its spores!!",oPC,FALSE));
|
|
|
|
AssignCommand(oPC,DelayCommand(3.0,DoSavingThrow(oPC,1,20,7,oSelf)));
|
|
|
|
if (Random(1000)<300) NewShroomPatch(OBJECT_SELF,oPC);
|
|
|
|
if (Random(1000)<500) NewShroomPatch(OBJECT_SELF,oPC);
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 34:
|
|
|
|
{
|
|
|
|
//Silver Ear
|
|
|
|
//Visual Effect and spawns 0-1 new fungi
|
|
|
|
if (d20(2)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectVisualEffect(VFX_DUR_PROT_STONESKIN,FALSE),OBJECT_SELF,30.0));
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_STORM,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered a silver ear fungus to spew forth its spores!!",oPC,FALSE));
|
|
|
|
if (Random(1000)<500) NewShroomPatch(OBJECT_SELF,oPC);
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 35:
|
|
|
|
{
|
|
|
|
//Witch's Butter
|
|
|
|
//Visual effect and spawns 0-1 new shrooms
|
|
|
|
if (d20(2)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectVisualEffect(VFX_DUR_TENTACLE,FALSE),OBJECT_SELF,30.0));
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_DISPEL_DISJUNCTION,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered a witch's butter fungus to spew forth its spores!!",oPC,FALSE));
|
|
|
|
if (Random(1000)<500) NewShroomPatch(OBJECT_SELF,oPC);
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 36:
|
|
|
|
{
|
|
|
|
//Poplar Mushroom
|
|
|
|
//Visual effect and spawns 0-2 new shrooms
|
|
|
|
if (d20(2)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_HORRID_WILTING,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered a poplar mushroom to spew forth its spores!!",oPC,FALSE));
|
|
|
|
if (Random(1000)<200) NewShroomPatch(OBJECT_SELF,oPC);
|
|
|
|
if (Random(1000)<400) NewShroomPatch(OBJECT_SELF,oPC);
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 37:
|
|
|
|
{
|
|
|
|
//Honey Mushroom
|
|
|
|
//failed save = web for 5 minutes
|
|
|
|
if (d20(1)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_GAS_EXPLOSION_EVIL,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered a honey mushroom to spew forth its spores!!",oPC,FALSE));
|
|
|
|
AssignCommand(oPC,DelayCommand(3.0,DoSavingThrow(oPC,1,20,22,oSelf)));
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 38:
|
|
|
|
{
|
|
|
|
//Slippery Lizard Tuft
|
|
|
|
//Failed save = diseased
|
|
|
|
if (d20(1)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_GAS_EXPLOSION_GREASE,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered a slippery lizard tuft to spew forth its spores!!",oPC,FALSE));
|
|
|
|
AssignCommand(oPC,DelayCommand(3.0,DoSavingThrow(oPC,1,20,21,oSelf)));
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 39:
|
|
|
|
{
|
|
|
|
//Turkey Tails
|
|
|
|
//Visual effect only.. no other effect
|
|
|
|
if (d20(1)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_HOWL_ODD,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.2,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_HIT_DIVINE,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered a turkey tails fungus to spew forth its spores!!",oPC,FALSE));
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 40:
|
|
|
|
{
|
|
|
|
//Orange Bracket
|
|
|
|
//Failed save = +1 Str/+1 Con for 10 minutes
|
|
|
|
if (d20(1)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_HIT_FIRE,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered an orange bracket fungus to spew forth its spores!!",oPC,FALSE));
|
|
|
|
AssignCommand(oPC,DelayCommand(3.0,DoSavingThrow(oPC,1,20,20,oSelf)));
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 41:
|
|
|
|
{
|
|
|
|
//Orange Pore Fungi
|
|
|
|
//Failed save = Poisoned for 2 minutes
|
|
|
|
if (d20(1)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_GAS_EXPLOSION_FIRE,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered an orange pore fungus to spew forth its spores!!",oPC,FALSE));
|
|
|
|
AssignCommand(oPC,DelayCommand(3.0,DoSavingThrow(oPC,1,20,19,oSelf)));
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 42:
|
|
|
|
{
|
|
|
|
//White Pore Fungi
|
|
|
|
//Failed save = Poisoned for 2 minutes
|
|
|
|
if (d20(1)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_GAS_EXPLOSION_MIND,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered a white pore fungus to spew forth its spores!!",oPC,FALSE));
|
|
|
|
AssignCommand(oPC,DelayCommand(3.0,DoSavingThrow(oPC,1,20,18,oSelf)));
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 43:
|
|
|
|
{
|
|
|
|
//Oyster Mushroom
|
|
|
|
//Visual effect only.. may spawn 0-2 new shroom patches
|
|
|
|
if (d20(2)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_HIT_SONIC,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered an oyster mushroom to spew forth its spores!!",oPC,FALSE));
|
|
|
|
if (Random(1000)<200) NewShroomPatch(OBJECT_SELF,oPC);
|
|
|
|
if (Random(1000)<400) NewShroomPatch(OBJECT_SELF,oPC);
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 44:
|
|
|
|
{
|
|
|
|
//Parachute Mushroom
|
|
|
|
//Failed save = Silence for 5 minutes
|
|
|
|
if (d20(1)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_GAS_EXPLOSION_ACID,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered a parachute mushroom to spew forth its spores!!",oPC,FALSE));
|
|
|
|
AssignCommand(oPC,DelayCommand(3.0,DoSavingThrow(oPC,1,20,17,oSelf)));
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 45:
|
|
|
|
{
|
|
|
|
//Golden needle mushroom
|
|
|
|
//Visual effect only.. spawns 0-1 new fungi.
|
|
|
|
if (d20(2)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_IMP_DISEASE_S,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered a golden needle mushroom to spew forth its spores!!",oPC,FALSE));
|
|
|
|
if (Random(1000)<200) NewShroomPatch(OBJECT_SELF,oPC);
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 46:
|
|
|
|
{
|
|
|
|
//Pagoda Fungus
|
|
|
|
//Visual effect and spawn 1-3 new fungi. Self-destroys.
|
|
|
|
if (d20(2)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_IMP_DEATH_L,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered a pagoda fungus to spew forth its spores!!",oPC,FALSE));
|
|
|
|
NewShroomPatch(OBJECT_SELF,oPC);
|
|
|
|
if (Random(1000)<300) NewShroomPatch(OBJECT_SELF,oPC);
|
|
|
|
if (Random(1000)<500) NewShroomPatch(OBJECT_SELF,oPC);
|
|
|
|
SetLocalInt(OBJECT_SELF,"iAmDestroyed",99);
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 47:
|
|
|
|
{
|
|
|
|
//Quivering Spine Fungus
|
|
|
|
//Failed save = Minor acid burn 1-3 hp damage
|
|
|
|
if (d20(1)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_GAS_EXPLOSION_ACID,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered a quivering spine fungus to spew forth its spores!!",oPC,FALSE));
|
|
|
|
AssignCommand(oPC,DelayCommand(3.0,DoSavingThrow(oPC,2,20,3,oSelf)));
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 48:
|
|
|
|
{
|
|
|
|
//Shaving Brush Fungus
|
|
|
|
//Failed save = +2 HP for 10 minutes
|
|
|
|
if (d20(2)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_HIT_DIVINE,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered a shaving brush fungus to spew forth its spores!!",oPC,FALSE));
|
|
|
|
AssignCommand(oPC,DelayCommand(3.0,DoSavingThrow(oPC,1,30,16,oSelf)));
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 49:
|
|
|
|
{
|
|
|
|
//Slippery Jack
|
|
|
|
//Visual effect an 0-2 new fungus patches
|
|
|
|
if (d20(2)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_HIT_ELECTRICAL,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered a slippery jack to spew forth its spores!!",oPC,FALSE));
|
|
|
|
if (Random(1000)<200) NewShroomPatch(OBJECT_SELF,oPC);
|
|
|
|
if (Random(1000)<400) NewShroomPatch(OBJECT_SELF,oPC);
|
|
|
|
if (Random(1000)<600) NewShroomPatch(OBJECT_SELF,oPC);
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 50:
|
|
|
|
{
|
|
|
|
//Split Gill Fungus
|
|
|
|
//Failed save - -2 CHR for 5 minutes due to powdery appearance
|
|
|
|
if (d20(2)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_HIT_DIVINE,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered a split gill fungus to spew forth its spores!!",oPC,FALSE));
|
|
|
|
AssignCommand(oPC,DelayCommand(3.0,DoSavingThrow(oPC,2,30,15,oSelf)));
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 51:
|
|
|
|
{
|
|
|
|
//Sugar Icing Fungus
|
|
|
|
//Visual effect only
|
|
|
|
if (d20(2)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_BLOOD_CRT_RED,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered a sugar icing fungus to spew forth its spores!!",oPC,FALSE));
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 52:
|
|
|
|
{
|
|
|
|
//Violet Crust Fungus
|
|
|
|
// Visual Effect only
|
|
|
|
if (d20(2)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_BLOOD_CRT_YELLOW,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered a violet crust fungus to spew forth its spores!!",oPC,FALSE));
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 53:
|
|
|
|
{
|
|
|
|
//Violet Potato Fungus
|
|
|
|
//Failed save = -1 dex/-1 str/-1 con from violent convulsions due to odor of spores for 5 minutes
|
|
|
|
if (d20(2)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_HIT_ACID,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered a violet potato fungus to spew forth its spores!!",oPC,FALSE));
|
|
|
|
AssignCommand(oPC,DelayCommand(3.0,DoSavingThrow(oPC,1,30,14,oSelf)));
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 54:
|
|
|
|
{
|
|
|
|
//Violet Pouch Fungus
|
|
|
|
// Failed save = sleep for 60 seconds
|
|
|
|
if (d20(2)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_HIT_ACID,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered a violet pouch fungi to spew forth its spores!!",oPC,FALSE));
|
|
|
|
AssignCommand(oPC,DelayCommand(3.0,DoSavingThrow(oPC,1,20,7,oSelf)));
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 55:
|
|
|
|
{
|
|
|
|
//Wax Gills
|
|
|
|
//Visual effect only.. may spawn 0-1 new Wax Gills
|
|
|
|
if (d10(1)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_BLOOD_LRG_YELLOW,FALSE),OBJECT_SELF,1.0));
|
|
|
|
if (Random(1000)<400) NewShroomPatch(OBJECT_SELF,oPC);
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered a wax gill to spew forth its spores!!",oPC,FALSE));
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 56:
|
|
|
|
{
|
|
|
|
//Zoned Milk Cap
|
|
|
|
//Failed save = paralyzed with a web-like structure for 60 seconds
|
|
|
|
if (d20(1)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_CHUNK_GREEN_SMALL,FALSE),OBJECT_SELF,1.0));
|
|
|
|
AssignCommand(oPC,DelayCommand(3.0,DoSavingThrow(oPC,1,20,13,oSelf)));
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered a zoned milk cap fungus to spew forth its spores!!",oPC,FALSE));
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 57:
|
|
|
|
{
|
|
|
|
//Charcoal fungus
|
|
|
|
//Failed save = blinded for 3 minutes
|
|
|
|
if (d20(2)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_CHUNK_GREEN_SMALL,FALSE),OBJECT_SELF,1.0));
|
|
|
|
AssignCommand(oPC,DelayCommand(3.0,DoSavingThrow(oPC,1,20,12,oSelf)));
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered a charcoal fungus to spew forth its dark spores!!",oPC,FALSE));
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 58:
|
|
|
|
{
|
|
|
|
//Glutinous Earth Tongue
|
|
|
|
//Failed save = slowed for 2 minutes
|
|
|
|
if (d20(2)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_BLOOD_SPARK_SMALL,FALSE),OBJECT_SELF,1.0));
|
|
|
|
AssignCommand(oPC,DelayCommand(3.0,DoSavingThrow(oPC,1,20,11,oSelf)));
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered a glutinous earth tongue to spew forth its spores!!",oPC,FALSE));
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 59:
|
|
|
|
{
|
|
|
|
//Dung Loving Bird's Nest
|
|
|
|
//Spectacular visual effect.. nothing else
|
|
|
|
if (d20(2)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_BLOOD_SPARK_SMALL,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.2,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_CHUNK_GREEN_SMALL,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.4,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_HIT_ELECTRICAL,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.6,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_HIT_SONIC,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.8,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_SPECIAL_BLUE_RED,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(4.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_SPECIAL_RED_WHITE,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered a dung-loving birdsnest fungus to spew forth its spores!!",oPC,FALSE));
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 60:
|
|
|
|
{
|
|
|
|
//Cannon Mushroom
|
|
|
|
//Failed save = confused for 15 seconds.
|
|
|
|
if (d10(1)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_SMOKE_PUFF,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered a cannon fungi to spew forth its spores!!",oPC,FALSE));
|
|
|
|
AssignCommand(oPC,DelayCommand(3.0,DoSavingThrow(oPC,1,20,1,oSelf)));
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 61:
|
|
|
|
{
|
|
|
|
//Common Ink Cap
|
|
|
|
//Failed save = -1 CON for 2 minutes
|
|
|
|
if (d20(1)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_BLOOD_SPARK_LARGE,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered a common ink cap to spew forth its debilatating spores!!",oPC,FALSE));
|
|
|
|
AssignCommand(oPC,DelayCommand(3.0,DoSavingThrow(oPC,1,20,10,oSelf)));
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 62:
|
|
|
|
{
|
|
|
|
//Shaggy Ink Cap
|
|
|
|
//Visual effect only.. May spawn 0-2 new fungi
|
|
|
|
if (d20(2)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_BLOOD_SPARK_SMALL,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered a shaggy ink cap to spew forth its spores!!",oPC,FALSE));
|
|
|
|
if (Random(1000)<300) NewShroomPatch(OBJECT_SELF,oPC);
|
|
|
|
if (Random(1000)<400) NewShroomPatch(OBJECT_SELF,oPC);
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 63:
|
|
|
|
{
|
|
|
|
//Mica ink-cap
|
|
|
|
//Failed save = -1 STR for 60 seconds
|
|
|
|
if (d20(1)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_IMP_FLAME_S,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered a mica ink cap to spew forth its debilatating spores!!",oPC,FALSE));
|
|
|
|
AssignCommand(oPC,DelayCommand(3.0,DoSavingThrow(oPC,1,40,9,oSelf)));
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 64:
|
|
|
|
{
|
|
|
|
//Dung-loving psilocybe
|
|
|
|
// Failed save = major psychadellic effects for 2 minutes
|
|
|
|
if (d20(1)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_IMP_FLAME_S,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered a dung-loving psilocybe to spew forth its hallucinogenic spores!!",oPC,FALSE));
|
|
|
|
AssignCommand(oPC,DelayCommand(3.0,DoSavingThrow(oPC,1,40,8,oSelf)));
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 65:
|
|
|
|
{
|
|
|
|
//Common Little blues
|
|
|
|
// Failed save = sleep for 60 seconds
|
|
|
|
if (d20(2)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_IMP_PULSE_NATURE,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered a common little blue to spew forth its spores!!",oPC,FALSE));
|
|
|
|
AssignCommand(oPC,DelayCommand(3.0,DoSavingThrow(oPC,1,20,7,oSelf)));
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 66:
|
|
|
|
{
|
|
|
|
//King Stropharia
|
|
|
|
//Visual effect only.. May spawn 0-5 new fungi.. self-destroys when triggered.
|
|
|
|
if (d20(2)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_IMP_PULSE_NATURE,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered a king stropharia to spew forth its spores!!",oPC,FALSE));
|
|
|
|
if (Random(1000)<100) NewShroomPatch(OBJECT_SELF,oPC);
|
|
|
|
if (Random(1000)<200) NewShroomPatch(OBJECT_SELF,oPC);
|
|
|
|
if (Random(1000)<300) NewShroomPatch(OBJECT_SELF,oPC);
|
|
|
|
if (Random(1000)<400) NewShroomPatch(OBJECT_SELF,oPC);
|
|
|
|
if (Random(1000)<500) NewShroomPatch(OBJECT_SELF,oPC);
|
|
|
|
SetLocalInt(OBJECT_SELF,"iAmDestroyed",99);
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 67:
|
|
|
|
{
|
|
|
|
//Orange Cup
|
|
|
|
//Visual effect only when spores released May spawn 0-1 new patches
|
|
|
|
if (d20(1)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_IMP_DISEASE_S,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered an orange cup fungi to spew forth its spores!!",oPC,FALSE));
|
|
|
|
if (Random(1000)<400) NewShroomPatch(OBJECT_SELF,oPC);
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 68:
|
|
|
|
{
|
|
|
|
//Fawn Cup
|
|
|
|
//Failed save = Attracts flies to PC for 15 seconds
|
|
|
|
if (d20(1)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_IMP_FROST_S,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered a fawn fungi to spew forth its spores!!",oPC,FALSE));
|
|
|
|
AssignCommand(oPC,DelayCommand(3.0,DoSavingThrow(oPC,1,20,2,oSelf)));
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 69:
|
|
|
|
{
|
|
|
|
//Giant Puffball
|
|
|
|
//Failed save = Knockdown for 30 seconds
|
|
|
|
if (d20(1)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_FIREBALL,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered a giant puffball to explode and spew forth its spores!!",oPC,FALSE));
|
|
|
|
AssignCommand(oPC,DelayCommand(3.0,DoSavingThrow(oPC,3,20,6,oSelf)));
|
|
|
|
// Spreads 1-3 new puffballs and destroys itself...
|
|
|
|
NewShroomPatch(OBJECT_SELF,oPC);
|
|
|
|
if (Random(1000)<400) NewShroomPatch(OBJECT_SELF,oPC);
|
|
|
|
if (Random(1000)<200) NewShroomPatch(OBJECT_SELF,oPC);
|
|
|
|
SetLocalInt(OBJECT_SELF,"iAmDestroyed",99);
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 70:
|
|
|
|
{
|
|
|
|
//Spring Agaric
|
|
|
|
//Failed save = Blinded for 60 seconds.
|
|
|
|
if (d20(1)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_HIT_FROST,FALSE),OBJECT_SELF,1.0));
|
2024-09-01 14:11:15 -04:00
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered a spring agaric to spew forth its spores!!",oPC,FALSE));
|
2024-06-14 10:48:20 -04:00
|
|
|
AssignCommand(oPC,DelayCommand(3.0,DoSavingThrow(oPC,1,20,5,oSelf)));
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 71:
|
|
|
|
{
|
|
|
|
//Haymaker's mushroom
|
|
|
|
//Failed save = Attracts stinging flies to PC for 15 seconds (1 damage.)
|
|
|
|
if (d20(1)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_IMP_FROST_S,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered a haymaker's mushroom to spew forth its spores!!",oPC,FALSE));
|
|
|
|
AssignCommand(oPC,DelayCommand(3.0,DoSavingThrow(oPC,1,20,4,oSelf)));
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 72:
|
|
|
|
{
|
|
|
|
//Shiitake
|
|
|
|
//Can spread from spore release.. 1-3 new patches
|
|
|
|
if (d20(2)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_IMP_FROST_S,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered a shiitake to spew forth its spores!!",oPC,FALSE));
|
|
|
|
NewShroomPatch(OBJECT_SELF,oPC);
|
|
|
|
if (Random(1000)<400) NewShroomPatch(OBJECT_SELF,oPC);
|
|
|
|
if (Random(1000)<200) NewShroomPatch(OBJECT_SELF,oPC);
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 73:
|
|
|
|
{
|
|
|
|
//Toothed Jelly Fungus
|
|
|
|
//Failed save = Minor acid burn 1-3 hp damage
|
|
|
|
if (d20(1)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_GAS_EXPLOSION_ACID,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered a toothed jelly fungi to spew forth its spores!!",oPC,FALSE));
|
|
|
|
AssignCommand(oPC,DelayCommand(3.0,DoSavingThrow(oPC,2,20,3,oSelf)));
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 74:
|
|
|
|
{
|
|
|
|
//Black Morel
|
|
|
|
//Can spread from spore release.. 0-3 new patches
|
|
|
|
if (d20(2)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_IMP_FROST_S,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered a black morel to spew forth its spores!!",oPC,FALSE));
|
|
|
|
if (Random(1000)<600) NewShroomPatch(OBJECT_SELF,oPC);
|
|
|
|
if (Random(1000)<400) NewShroomPatch(OBJECT_SELF,oPC);
|
|
|
|
if (Random(1000)<200) NewShroomPatch(OBJECT_SELF,oPC);
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 75:
|
|
|
|
{
|
|
|
|
//White Morel
|
|
|
|
//Can spread from spore release.. 0-3 new patches
|
|
|
|
if (d20(2)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_IMP_FROST_S,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered a white morel to spew forth its spores!!",oPC,FALSE));
|
|
|
|
if (Random(1000)<600) NewShroomPatch(OBJECT_SELF,oPC);
|
|
|
|
if (Random(1000)<400) NewShroomPatch(OBJECT_SELF,oPC);
|
|
|
|
if (Random(1000)<200) NewShroomPatch(OBJECT_SELF,oPC);
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 76:
|
|
|
|
{
|
|
|
|
//Grey Morel
|
|
|
|
//Can spread from spore release.. 0-3 new patches
|
|
|
|
if (d20(2)==10)
|
|
|
|
{
|
|
|
|
SetLocalInt(OBJECT_SELF,"iTriggered",99);
|
|
|
|
DelayCommand(3.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_IMP_FROST_S,FALSE),OBJECT_SELF,1.0));
|
|
|
|
DelayCommand(3.0,FloatingTextStringOnCreature("You have triggered a grey morel to spew forth its spores!!",oPC,FALSE));
|
|
|
|
if (Random(1000)<600) NewShroomPatch(OBJECT_SELF,oPC);
|
|
|
|
if (Random(1000)<400) NewShroomPatch(OBJECT_SELF,oPC);
|
|
|
|
if (Random(1000)<200) NewShroomPatch(OBJECT_SELF,oPC);
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
default:
|
|
|
|
{
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
int iMaxShroom = GetLocalInt(OBJECT_SELF,"iMaxShroom");
|
|
|
|
if (iMaxShroom==0)
|
|
|
|
{
|
|
|
|
iMaxShroom = d6(2)/2;
|
|
|
|
SetLocalInt(OBJECT_SELF,"iMaxShroom",iMaxShroom);
|
|
|
|
}
|
|
|
|
|
|
|
|
AssignCommand(oPC,ActionPlayAnimation(ANIMATION_LOOPING_GET_LOW,1.0,8.0));
|
|
|
|
PlaySound("as_na_grassmove1");
|
|
|
|
DelayCommand(2.5,PlaySound("as_na_grassmove1"));
|
|
|
|
DelayCommand(5.0,PlaySound("as_na_grassmove1"));
|
|
|
|
if (Random(1000)<=iShroomChance)
|
|
|
|
{
|
|
|
|
if (Random(1000)>=iShroomSkill)
|
|
|
|
{
|
|
|
|
if (d10(1)+1 >= iShroomChance/100) iSkillGain = 1;
|
|
|
|
}
|
|
|
|
AssignCommand(oPC,DelayCommand(7.5,PlaySound("as_cv_woodbreak3")));
|
|
|
|
DelayCommand(8.0,AssignCommand(oPC,CreateAnObject(sItemResRef,oPC,1)));
|
|
|
|
DelayCommand(8.0,FloatingTextStringOnCreature("You gathered a mushroom!",oPC,FALSE));
|
|
|
|
iMaxShroom = iMaxShroom -1;
|
|
|
|
SetLocalInt(OBJECT_SELF,"iMaxShroom",iMaxShroom);
|
|
|
|
if (iMaxShroom==0||GetLocalInt(OBJECT_SELF,"iAmDestroyed")==99)
|
|
|
|
{
|
|
|
|
object oTemp = OBJECT_INVALID;
|
|
|
|
if (iShroomStable==0)
|
|
|
|
{
|
|
|
|
oTemp = CreateObject(OBJECT_TYPE_PLACEABLE,"temporaryplaceho",GetLocation(OBJECT_SELF),FALSE);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
NewShroomPatch(OBJECT_SELF,oPC);
|
|
|
|
|
|
|
|
//Comment this next line if you do not wish multiple new patches
|
|
|
|
if (Random(1000)<100) NewShroomPatch(OBJECT_SELF,oPC);
|
|
|
|
|
|
|
|
|
|
|
|
//location lNewShroomLoc;
|
|
|
|
//location lSelf = GetLocation(OBJECT_SELF);
|
|
|
|
//vector vSelf = GetPosition(OBJECT_SELF);
|
|
|
|
//object oArea = GetArea(OBJECT_SELF);
|
|
|
|
//vector vShroom;
|
|
|
|
//int vDirection;
|
|
|
|
//float fSelf;
|
|
|
|
//float fDistance;
|
|
|
|
//location lSelf2;
|
|
|
|
//fSelf = GetFacing(OBJECT_SELF)+Random(360);
|
|
|
|
//fDistance = (IntToFloat(d6(5)+1)/5.0);
|
|
|
|
//vShroom = vSelf + (AngleToVector(fSelf) * fDistance);
|
|
|
|
//lSelf2 = Location(oArea,vShroom,fSelf);
|
|
|
|
|
|
|
|
//oTemp = CreateObject(OBJECT_TYPE_PLACEABLE,"temporaryplaceho",lSelf2,FALSE);
|
|
|
|
//if (oTemp==OBJECT_INVALID)
|
|
|
|
// {
|
|
|
|
// oTemp = CreateObject(OBJECT_TYPE_PLACEABLE,"temporaryplaceho",GetLocation(oPC),FALSE);
|
|
|
|
// }
|
|
|
|
}
|
|
|
|
DestroyObject(OBJECT_SELF,8.5);
|
|
|
|
//DestroyObject(oTemp,180.0);
|
|
|
|
//string sResSelf = GetResRef(OBJECT_SELF);
|
|
|
|
//AssignCommand(oTemp,DelayCommand(120.0,CreatePlaceable(sResSelf,GetLocation(OBJECT_SELF),0.0)));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2024-09-01 14:11:15 -04:00
|
|
|
DelayCommand(8.0,FloatingTextStringOnCreature("You fail to find any mushrooms..",oPC,FALSE));
|
2024-06-14 10:48:20 -04:00
|
|
|
if (GetLocalInt(OBJECT_SELF,"iAmDestroyed")==99)
|
|
|
|
{
|
|
|
|
object oTemp = OBJECT_INVALID;
|
|
|
|
if (iShroomStable==0)
|
|
|
|
{
|
|
|
|
oTemp = CreateObject(OBJECT_TYPE_PLACEABLE,"temporaryplaceho",GetLocation(OBJECT_SELF),FALSE);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
NewShroomPatch(OBJECT_SELF,oPC);
|
|
|
|
//Comment this next line if you do not wish multiple new patches
|
|
|
|
if (Random(1000)<100) NewShroomPatch(OBJECT_SELF,oPC);
|
|
|
|
}
|
|
|
|
DestroyObject(OBJECT_SELF,8.5);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//Ensure no more than 1 skill gain every 10 seconds to avoid token droppage.
|
|
|
|
if (iSkillGain ==1)
|
|
|
|
{
|
|
|
|
if (GetLocalInt(oPC,"iSkillGain")!= 0)
|
|
|
|
{
|
|
|
|
iSkillGain = 0;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
SetLocalInt(oPC,"iSkillGain",99);
|
|
|
|
DelayCommand(8.0,SetLocalInt(oPC,"iSkillGain",0));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (iSkillGain ==1)
|
|
|
|
{
|
|
|
|
string sOldSkill = "";
|
|
|
|
string sOldSkill2 = "";
|
|
|
|
iShroomSkill++;
|
|
|
|
sOldSkill2 = IntToString(iShroomSkill);
|
|
|
|
sOldSkill = "."+GetStringRight(sOldSkill2,1);
|
|
|
|
if (iShroomSkill > 9)
|
|
|
|
{
|
|
|
|
sOldSkill = GetStringLeft(sOldSkill2,GetStringLength(sOldSkill2)-1)+sOldSkill;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
sOldSkill = "0"+sOldSkill;
|
|
|
|
}
|
|
|
|
if (iShroomSkill <= 1000)
|
|
|
|
{
|
|
|
|
//DelayCommand(8.1,SetTokenPair(oPC,12,1,iShroomSkill));
|
2024-09-01 14:11:15 -04:00
|
|
|
DelayCommand(8.1,SetCampaignInt("UOACraft","iShroomSkill",iShroomSkill,oPC));
|
2024-06-14 10:48:20 -04:00
|
|
|
DelayCommand(8.1,SendMessageToPC(oPC,"==================================="));
|
|
|
|
DelayCommand(8.2,SendMessageToPC(oPC,"Your skill in mycology has gone up!"));
|
|
|
|
DelayCommand(8.3,SendMessageToPC(oPC,"Current mycology skill : "+ sOldSkill+"%"));
|
|
|
|
DelayCommand(8.4,SendMessageToPC(oPC,"==================================="));
|
|
|
|
if (GetLocalInt(GetModule(),"_UOACraft_XP")!=0) DelayCommand(7.9,GiveXPToCreature(oPC,GetLocalInt(GetModule(),"_UOACraft_XP")));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
void CreateAnObject(string sResource, object oPC, int iStackSize)
|
|
|
|
{
|
|
|
|
CreateItemOnObject(sResource,oPC,iStackSize);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
void CreatePlaceable(string sObject, location lPlace, float fDuration)
|
|
|
|
{
|
|
|
|
object oPlaceable = CreateObject(OBJECT_TYPE_PLACEABLE,sObject,lPlace,FALSE);
|
|
|
|
if (fDuration != 0.0)
|
|
|
|
DestroyObject(oPlaceable,fDuration);
|
|
|
|
}
|
|
|
|
|
|
|
|
void DoSavingThrow(object oPC, int iSaveType, int iDC, int iEffect, object oSelf)
|
|
|
|
{
|
|
|
|
int iFailedSave = 0;
|
|
|
|
|
|
|
|
//Do The Saving Throw
|
|
|
|
switch (iSaveType)
|
|
|
|
{
|
|
|
|
case 1:
|
|
|
|
{
|
|
|
|
if (ReflexSave(oPC,iDC,SAVING_THROW_TYPE_POISON,oSelf)==0) iFailedSave = 1;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 2:
|
|
|
|
{
|
|
|
|
if (ReflexSave(oPC,iDC,SAVING_THROW_TYPE_ACID,oSelf)==0) iFailedSave = 1;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 3:
|
|
|
|
{
|
|
|
|
if (ReflexSave(oPC,iDC,SAVING_THROW_TYPE_SONIC,oSelf)==0) iFailedSave = 1;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 4:
|
|
|
|
{
|
|
|
|
if (ReflexSave(oPC,iDC,SAVING_THROW_TYPE_COLD,oSelf)==0) iFailedSave = 1;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
default:
|
|
|
|
{
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (iFailedSave==0) return;
|
|
|
|
object oTemp = OBJECT_INVALID;
|
|
|
|
// Apply Failed saving throw effects
|
|
|
|
switch (iEffect)
|
|
|
|
{
|
|
|
|
case 1: //Confused 15 seconds.
|
|
|
|
{
|
|
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectConfused(),oPC,15.0);
|
|
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DISABLED,FALSE),oPC,15.0);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 2: //Flies around PC for 12 seconds
|
|
|
|
{
|
|
|
|
PlaySound("al_an_flies1");
|
|
|
|
DelayCommand(6.0,PlaySound("al_an_flies1"));
|
|
|
|
oTemp = CreateObject(OBJECT_TYPE_PLACEABLE,"plc_butterflies",GetLocation(oPC),FALSE);
|
|
|
|
DestroyObject(oTemp,11.5);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 3: //1-4 points of acid damage
|
|
|
|
{
|
|
|
|
//AssignCommand(oPC,ActionPlayAnimation(ANIMATION_LOOPING_TALK_FORCEFUL,1.0,3.0));
|
|
|
|
AssignCommand(oPC,PlayVoiceChat(VOICE_CHAT_PAIN1,oPC));
|
|
|
|
ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectDamage(d4(1),DAMAGE_TYPE_ACID,DAMAGE_POWER_NORMAL),oPC,1.0);
|
|
|
|
ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_HIT_ACID,FALSE),oPC,1.0);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 4: //Stinging Flies around PC for 12 seconds (1 damage)
|
|
|
|
{
|
|
|
|
PlaySound("al_an_flies1");
|
|
|
|
DelayCommand(6.0,PlaySound("al_an_flies1"));
|
|
|
|
oTemp = CreateObject(OBJECT_TYPE_PLACEABLE,"plc_butterflies",GetLocation(oPC),FALSE);
|
|
|
|
DestroyObject(oTemp,11.5);
|
|
|
|
AssignCommand(oPC,PlayVoiceChat(VOICE_CHAT_PAIN2,oPC));
|
|
|
|
ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectDamage(1,DAMAGE_TYPE_ELECTRICAL,DAMAGE_POWER_NORMAL),oPC,1.0);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 5: //Blinded for 60 seconds
|
|
|
|
{
|
|
|
|
//AssignCommand(oPC,ActionPlayAnimation(ANIMATION_LOOPING_TALK_FORCEFUL,1.0,3.0));
|
|
|
|
AssignCommand(oPC,PlayVoiceChat(VOICE_CHAT_PAIN3,oPC));
|
|
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectBlindness(),oPC,60.0);
|
|
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DISABLED,FALSE),oPC,60.0);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 6: //Knockdown for 30 seconds
|
|
|
|
{
|
|
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectKnockdown(),oPC,30.0);
|
|
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectVisualEffect(VFX_DUR_MIND_AFFECTING_DISABLED,FALSE),oPC,30.0);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 7: //Sleep for 60 seconds
|
|
|
|
{
|
|
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectBlindness(),oPC,60.0);
|
|
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectSleep(),oPC,60.0);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 8: // 2 minutes of psychadellics
|
|
|
|
{
|
|
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectStunned(),oPC,120.0);
|
|
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectVisualEffect(VFX_DUR_GLOBE_INVULNERABILITY,FALSE),oPC,90.0);
|
|
|
|
DelayCommand(100.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_IMP_HEAD_HEAL,FALSE),oPC,1.0));
|
|
|
|
DelayCommand(30.0,ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectVisualEffect(VFX_DUR_TENTACLE,FALSE),oSelf,60.0));
|
|
|
|
DelayCommand(60.0,ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectVisualEffect(VFX_DUR_WEB_MASS,FALSE),oSelf,60.0));
|
|
|
|
DelayCommand(90.0,ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectKnockdown(),oPC,30.0));
|
|
|
|
DelayCommand(6.0,PlaySound("al_an_flies1"));
|
|
|
|
DelayCommand(12.0,PlaySound("al_an_flies1"));
|
|
|
|
DelayCommand(18.0,PlaySound("al_an_flies1"));
|
|
|
|
DelayCommand(20.0,AssignCommand(oSelf,PlaySound("ss_an_lizdhiss2")));
|
|
|
|
DelayCommand(24.0,PlaySound("al_an_flies1"));
|
|
|
|
DelayCommand(30.0,PlaySound("al_an_flies1"));
|
|
|
|
DelayCommand(30.0,AssignCommand(oSelf,PlaySound("al_mg_entrmyst1")));
|
|
|
|
DelayCommand(36.0,PlaySound("al_an_flies1"));
|
|
|
|
DelayCommand(40.0,AssignCommand(oSelf,PlaySound("al_mg_entrvscry1")));
|
|
|
|
DelayCommand(42.0,PlaySound("al_an_flies1"));
|
|
|
|
DelayCommand(48.0,PlaySound("al_an_flies1"));
|
|
|
|
DelayCommand(50.0,AssignCommand(oSelf,PlaySound("al_mg_entrmyst1")));
|
|
|
|
DelayCommand(54.0,PlaySound("al_an_flies1"));
|
|
|
|
DelayCommand(30.0,AssignCommand(oSelf,PlaySound("al_mg_entrvscry1")));
|
|
|
|
DelayCommand(60.0,PlaySound("al_an_flies1"));
|
|
|
|
DelayCommand(66.0,PlaySound("al_an_flies1"));
|
|
|
|
DelayCommand(70.0,AssignCommand(oSelf,PlaySound("al_mg_cauldron1")));
|
|
|
|
DelayCommand(72.0,PlaySound("al_an_flies1"));
|
|
|
|
DelayCommand(76.0,PlaySound("al_an_flies1"));
|
|
|
|
DelayCommand(80.0,AssignCommand(oSelf,PlaySound("al_mg_entrvscry1")));
|
|
|
|
DelayCommand(80.0,PlaySound("al_mg_cauldron1"));
|
|
|
|
DelayCommand(20.0,ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectVisualEffect(VFX_DUR_GHOSTLY_PULSE,FALSE),oTemp,60.0));
|
|
|
|
oTemp = CreateObject(OBJECT_TYPE_PLACEABLE,"plc_butterflies",GetLocation(oPC),FALSE);
|
|
|
|
DestroyObject(oTemp,80.5);
|
|
|
|
DelayCommand(20.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_IMPLOSION,FALSE),oPC,20.0));
|
|
|
|
DelayCommand(40.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_HOWL_ODD,FALSE),oSelf,20.0));
|
|
|
|
DelayCommand(60.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_WAIL_O_BANSHEES,FALSE),oPC,20.0));
|
|
|
|
DelayCommand(90.0,AssignCommand(oSelf,PlaySound("as_an_crittscmp1")));
|
|
|
|
DelayCommand(91.0,PlaySound("as_cv_ropecreak1"));
|
|
|
|
DelayCommand(98.0,PlaySound("as_cv_beamcreak2"));
|
|
|
|
DelayCommand(98.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_FIRESTORM,FALSE),oPC,30.0));
|
|
|
|
DelayCommand(110.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_CHUNK_BONE_MEDIUM,FALSE),oSelf,30.0));
|
|
|
|
DelayCommand(105.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_CHUNK_RED_MEDIUM,FALSE),oSelf,30.0));
|
|
|
|
DelayCommand(100.0,AssignCommand(oSelf,PlaySound("ss_an_lizdhiss3")));
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 9:
|
|
|
|
{
|
|
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectVisualEffect(VFX_DUR_PROT_BARKSKIN,FALSE),oPC,60.0);
|
|
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectAbilityDecrease(ABILITY_STRENGTH,1),oPC,60.0);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 10:
|
|
|
|
{
|
|
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectVisualEffect(VFX_DUR_PROT_BARKSKIN,FALSE),oPC,120.0);
|
|
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectAbilityDecrease(ABILITY_CONSTITUTION,1),oPC,120.0);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 11:
|
|
|
|
{
|
|
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectVisualEffect(VFX_DUR_PROT_STONESKIN,FALSE),oPC,120.0);
|
|
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectSlow(),oPC,120.0);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 12:
|
|
|
|
{
|
|
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectVisualEffect(VFX_DUR_DARKNESS,FALSE),oPC,180.0);
|
|
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectBlindness(),oPC,180.0);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 13:
|
|
|
|
{
|
|
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectVisualEffect(VFX_DUR_WEB,FALSE),oPC,60.0);
|
|
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectParalyze(),oPC,60.0);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 14:
|
|
|
|
{
|
|
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectVisualEffect(VFX_DUR_ETHEREAL_VISAGE,FALSE),oPC,300.0);
|
|
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectAbilityDecrease(ABILITY_CONSTITUTION,1),oPC,300.0);
|
|
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectAbilityDecrease(ABILITY_STRENGTH,1),oPC,300.0);
|
|
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectAbilityDecrease(ABILITY_DEXTERITY,1),oPC,300.0);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 15:
|
|
|
|
{
|
|
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectVisualEffect(VFX_DUR_BLUR,FALSE),oPC,300.0);
|
|
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectAbilityDecrease(ABILITY_CHARISMA,2),oPC,300.0);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 16:
|
|
|
|
{
|
|
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectVisualEffect(VFX_DUR_MIND_AFFECTING_POSITIVE,FALSE),oPC,600.0);
|
|
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectTemporaryHitpoints(2),oPC,600.0);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 17:
|
|
|
|
{
|
|
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectVisualEffect(VFX_DUR_MAGICAL_SIGHT,FALSE),oPC,300.0);
|
|
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectSilence(),oPC,300.0);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 18:
|
|
|
|
{
|
|
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectVisualEffect(VFX_DUR_MAGICAL_SIGHT,FALSE),oPC,120.0);
|
|
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectPoison(POISON_HUGE_SPIDER_VENOM),oPC,120.0);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 19:
|
|
|
|
{
|
|
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectVisualEffect(VFX_DUR_MAGICAL_SIGHT,FALSE),oPC,120.0);
|
|
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectPoison(POISON_ETTERCAP_VENOM),oPC,120.0);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 20:
|
|
|
|
{
|
|
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectVisualEffect(VFX_DUR_ETHEREAL_VISAGE,FALSE),oPC,600.0);
|
|
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectAbilityIncrease(ABILITY_CONSTITUTION,1),oPC,600.0);
|
|
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectAbilityIncrease(ABILITY_STRENGTH,1),oPC,600.0);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 21:
|
|
|
|
{
|
|
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectVisualEffect(VFX_DUR_AURA_DISEASE,FALSE),oPC,120.0);
|
|
|
|
ApplyEffectToObject(DURATION_TYPE_PERMANENT,EffectDisease(DISEASE_SLIMY_DOOM),oPC,120.0);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 22:
|
|
|
|
{
|
|
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectVisualEffect(VFX_DUR_WEB,FALSE),oPC,300.0);
|
|
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectVisualEffect(VFX_DUR_WEB,FALSE),oSelf,300.0);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 23:
|
|
|
|
{
|
|
|
|
DelayCommand(2.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectDamage(d6(1),DAMAGE_TYPE_FIRE,DAMAGE_POWER_PLUS_THREE),oPC,1.0));
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 24:
|
|
|
|
{
|
|
|
|
int iDamage1 = Random(2);
|
|
|
|
int iDamage2 = Random(2);
|
|
|
|
int iDamage3 = Random(2);
|
|
|
|
DelayCommand(1.3,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectDamage(iDamage1,DAMAGE_TYPE_BLUDGEONING,DAMAGE_POWER_PLUS_ONE),oPC,1.0));
|
|
|
|
DelayCommand(1.4,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectDamage(iDamage2,DAMAGE_TYPE_PIERCING,DAMAGE_POWER_PLUS_ONE),oPC,1.0));
|
|
|
|
DelayCommand(1.5,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectDamage(iDamage3,DAMAGE_TYPE_COLD,DAMAGE_POWER_PLUS_ONE),oPC,1.0));
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 25:
|
|
|
|
{
|
|
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectVisualEffect(VFX_DUR_MAGICAL_SIGHT,FALSE),oPC,30.0);
|
|
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectPoison(POISON_PHASE_SPIDER_VENOM),oPC,30.0);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 26:
|
|
|
|
{
|
|
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectVisualEffect(VFX_DUR_AURA_DISEASE,FALSE),oPC,120.0);
|
|
|
|
ApplyEffectToObject(DURATION_TYPE_PERMANENT,EffectDisease(DISEASE_GHOUL_ROT),oPC,120.0);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 27:
|
|
|
|
{
|
|
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectVisualEffect(VFX_DUR_AURA_DISEASE,FALSE),oPC,120.0);
|
|
|
|
ApplyEffectToObject(DURATION_TYPE_PERMANENT,EffectDisease(DISEASE_ZOMBIE_CREEP),oPC,120.0);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 28:
|
|
|
|
{
|
|
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectVisualEffect(VFX_DUR_MAGICAL_SIGHT,FALSE),oPC,30.0);
|
|
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectPoison(POISON_TINY_SPIDER_VENOM),oPC,30.0);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 29:
|
|
|
|
{
|
|
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectVisualEffect(VFX_DUR_MAGICAL_SIGHT,FALSE),oPC,30.0);
|
|
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectPoison(POISON_COLOSSAL_SPIDER_VENOM),oPC,30.0);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 30:
|
|
|
|
{
|
|
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectVisualEffect(VFX_DUR_WEB,FALSE),oPC,600.0);
|
|
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectVisualEffect(VFX_DUR_WEB,FALSE),oSelf,600.0);
|
|
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectSlow(),oPC,600.0);
|
|
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectBeam(VFX_BEAM_COLD,oPC,BODY_NODE_CHEST,FALSE),oSelf,600.0);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
case 31:
|
|
|
|
{
|
|
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectVisualEffect(VFX_DUR_WEB,FALSE),oPC,600.0);
|
|
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectVisualEffect(VFX_DUR_WEB,FALSE),oSelf,600.0);
|
|
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectSlow(),oPC,600.0);
|
|
|
|
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectBeam(VFX_BEAM_MIND,oPC,BODY_NODE_CHEST,FALSE),oSelf,600.0);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
default:
|
|
|
|
{
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
void NewShroomPatch(object oSelf, object oPC)
|
|
|
|
{
|
|
|
|
location lNewShroomLoc;
|
|
|
|
location lSelf = GetLocation(OBJECT_SELF);
|
|
|
|
vector vSelf = GetPosition(OBJECT_SELF);
|
|
|
|
object oArea = GetArea(OBJECT_SELF);
|
|
|
|
vector vShroom;
|
|
|
|
int vDirection;
|
|
|
|
float fSelf;
|
|
|
|
float fDistance;
|
|
|
|
location lSelf2;
|
|
|
|
fSelf = GetFacing(OBJECT_SELF)+Random(360);
|
|
|
|
fDistance = (IntToFloat(d6(5)+1)/5.0);
|
|
|
|
vShroom = vSelf + (AngleToVector(fSelf) * fDistance);
|
|
|
|
lSelf2 = Location(oArea,vShroom,fSelf);
|
|
|
|
|
|
|
|
object oTemp = CreateObject(OBJECT_TYPE_PLACEABLE,"temporaryplaceho",lSelf2,FALSE);
|
|
|
|
if (oTemp==OBJECT_INVALID)
|
|
|
|
{
|
|
|
|
oTemp = CreateObject(OBJECT_TYPE_PLACEABLE,"temporaryplaceho",GetLocation(oPC),FALSE);
|
|
|
|
}
|
|
|
|
DestroyObject(oTemp,180.0);
|
|
|
|
string sResSelf = GetResRef(OBJECT_SELF);
|
|
|
|
AssignCommand(oTemp,DelayCommand(120.0,CreatePlaceable(sResSelf,GetLocation(OBJECT_SELF),0.0)));
|
|
|
|
|
|
|
|
return;
|
|
|
|
}
|