public override bool FireEvent(Event E) { //... if (E.ID == "Regenerating" && ParentObject.HasEffect("Submerged")) { int RegenerationAmountParameter = E.GetIntParameter("Amount"); RegenerationAmountParameter += (int)Math.Ceiling((float)RegenerationAmountParameter); E.SetParameter("Amount", RegenerationAmountParameter); } else if (E.ID == "BeginMove" && ParentObject.HasEffect("Submerged")) { Cell Cell = E.GetParameter("DestinationCell") as Cell; if (((!Cell.HasObjectWithPart("LiquidVolume") || (Cell.GetFirstObjectWithPart("LiquidVolume") as GameObject).LiquidVolume.Volume < 200) && ParentObject.IsPlayer() && ParentObject.HasEffect("Submerged"))) { if (Popup.ShowYesNo("Surface and go ashore?") == (int)DialogResult.Yes) { ParentObject.Splash("{{b|*}}"); ParentObject.RemoveEffect("Submerged"); } else { return(false); } } } else if (E.ID == "DiveCommand") { Cell Cell = ParentObject.GetCurrentCell(); Mutations ParentsMutations = ParentObject.GetPart <Mutations>(); if (ParentObject.HasEffect("Flying")) { if (IsPlayer()) { AddPlayerMessage("You cannot do this while flying"); } return(false); } else if (!Cell.HasObjectWithPart("LiquidVolume")) { AddPlayerMessage("You try to dive into the earth, you imagine this would be easier if the ground were, say, just a tad less hard."); return(false); } else if ((Cell.GetFirstObjectWithPart("LiquidVolume") as GameObject).LiquidVolume.Volume < 200) { AddPlayerMessage("Its too shallow to dive in!"); return(false); } else if (ParentObject.HasEffect("Submerged")) { // AddPlayerMessage("Your return to the surface."); ParentObject.Splatter("{{B|*}}"); ParentObject.RemoveEffect("Submerged"); } else if ((Cell.GetFirstObjectWithPart("LiquidVolume") as GameObject).LiquidVolume.Volume >= 200 && ParentsMutations.HasMutation("Amphibious")) { AddPlayerMessage("You feel right at home."); ParentObject.Splatter("{{B|*}}"); ParentObject.ApplyEffect(new Submerged(Duration: Effect.DURATION_INDEFINITE)); } else if ((Cell.GetFirstObjectWithPart("LiquidVolume") as GameObject).LiquidVolume.Volume >= 200 && !ParentsMutations.HasMutation("Amphibious")) { ParentObject.Splatter("{{B|*}}"); ParentObject.ApplyEffect(new Submerged(Duration: Effect.DURATION_INDEFINITE)); } } else if (E.ID == "EndTurn") { Cell Cell = ParentObject.GetCurrentCell(); if (ParentObject.HasEffect("Flying") && (ParentObject.HasEffect("Submerged"))) { ParentObject.RemoveEffect(new Flying()); AddPlayerMessage("Removing Paradox Incident."); } else if (ParentObject.IsHealingPool() && ParentObject.HasEffect("Submerged")) { ParentObject.Heal(+ParentObject.Statistics["Toughness"].Modifier); } else if (((!Cell.HasObjectWithPart("LiquidVolume") || (Cell.GetFirstObjectWithPart("LiquidVolume") as GameObject).LiquidVolume.Volume < 200) && ParentObject.HasEffect("Submerged"))) { ParentObject.Splash("{{b|*}}"); ParentObject.RemoveEffect("Submerged"); return(false); } } //...--------------------------------------------------------------------------------------------- else if (E.ID == "DeepStrikeCommand") { if (!ParentObject.HasEffect("Submerged") && ParentObject.IsPlayer()) { AddPlayerMessage("You must be submerged in deep pools of liquid to use this attack."); } else if (!ParentObject.HasEffect("Submerged") && !ParentObject.IsPlayer()) { } else if (ParentObject.HasEffect("Submerged")) { string Direction = E.GetStringParameter("Direction"); if (Direction == null) { if (ParentObject != null) { Direction = PickDirectionS(); try { Patch_PhaseAndFlightMatches.TemporarilyDisabled = true; Event e = Event.New("CommandAttackDirection", "Direction", Direction); bool num11 = FireEvent(e); ParentObject.FireEvent(e); XDidY(ParentObject, "rush", "from the depths to strike!", "!", "C", ParentObject); Patch_PhaseAndFlightMatches.TemporarilyDisabled = false; } catch { } } } } } else if (E.ID == "AIGetOffensiveMutationList") { //AddPlayerMessage("I'mma keel yo ass."); if (IsMyActivatedAbilityAIUsable(DiveActivatedAbility)) { if (!ParentObject.HasEffect("Submerged") && (ParentObject.CurrentCell.GetFirstObjectWithPart("LiquidVolume") as GameObject).LiquidVolume.Volume >= 200) { E.AddAICommand("DiveCommand"); } } int intParameter = E.GetIntParameter("Distance"); if (E.GetGameObjectParameter("Target") != null && intParameter <= 1 && !ParentObject.IsFrozen() && IsMyActivatedAbilityAIUsable(DeepStrikeActivatedAbility)) { E.AddAICommand("DeepStrikeCommand"); } } else if (E.ID == "BeginTakeAction") { if (ParentObject.HasEffect("Flying") && (ParentObject.HasEffect("Submerged"))) { ParentObject.RemoveEffect(new Flying()); AddPlayerMessage("Removing Paradox Incident."); } } return(base.FireEvent(E)); }