//#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); 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)); 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)); 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)); 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)); 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)); 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; }