Aschbourne_PRC8/_module/nss/_use_shroompatch.nss

1569 lines
67 KiB
Plaintext
Raw Permalink Normal View History

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);
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(""));
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));
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));
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
{
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));
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;
}