void CatchOpportunity(object oPC, location eLoc, float fReaction) { SetLocalInt(oPC, "FishChance", TRUE); //effect eEffect = EffectVisualEffect(93); //splash effect //ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eEffect, eLoc, 0.5); PlaySound("as_na_splash2"); FloatingTextStringOnCreature("!", oPC, FALSE); DelayCommand(fReaction, DeleteLocalInt(oPC, "FishChance")); } void main() { object oPC = GetPCSpeaker(); object oFishingSpot = GetLocalObject(oPC, "oFishingSpot"); location eLoc = GetLocation(oFishingSpot); //effect eEffect = EffectVisualEffect(93); //splash effect //ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eEffect, eLoc, 0.5); PlaySound("as_na_splash1"); //Let's remove one instance of fishing bait from the PC's inventory object oBait = GetItemPossessedBy(oPC, "fish_bait"); if (GetIsObjectValid(oBait)) DestroyObject(oBait); //Now we need to fire the opportunity event at a random time int nDelay = Random(18)+3; float fDelay = IntToFloat(nDelay); float fReaction = 1.0; //The PC will have this many seconds to catch the fish if (Random(100)+1 <= 75) DelayCommand(fDelay, CatchOpportunity(oPC, eLoc, fReaction)); }