// September 2015 // Levee Patroller / Dijk Patrouille // This source file is (c) by Deltares. This source file is open source but only available to select users. Do not redistribute without written permission of Stichting Deltares, Delft, The Netherlands. // This header has been automatically generated. class LeveeFailureErosionInnerRegional extends LeveeFailure placeable; #exec OBJ LOAD FILE=NVIDIA_TT_V1.utx /// AKA - Overtopping. function SetFailureOptions() { /// Failure information: Mechanism = FM_ErosionInner; LinkedTile.Mechanism = Mechanism; NL_FailureName = "Overtopping"; EN_FailureName = "Overtopping"; super.SetFailureOptions(); LinkedTile.CurrentState = STA_Reportable; } function CreateObjects() { local DynamicMover M; local DynamicMeshActor sMA; local Emitter E; local DynVariableTimedMover Mv; /// ID is the same as the linked object: id = LinkedTile.Name; /// Creating World Objects: /// For the record: The likely center is: 822.99,-3544.09,-384.00 /// For the record: The likely center rotation: 0,16384,0 /// Set relative rotation, the original failure was based on a rotation of -16384. So now we need to turn it back. SetFailureRelativeRotation(-16384); sMA = CreateMesh(Location, id$"StaticMeshActor", StaticMesh'SecDikeSM.Overtopping.OverSecBase'); RotationOffset(sMA, LinkedTile.Rotation, 0,0,0); Mv = CreateVariableMover(Location, id$"Topgrass", StaticMesh'SecDikeSM.Overtopping.OverSecGrassTop' , 800.00, 2); Mv.SetKeyPos( RotateVectorNoLocation(0.00,0.00,-272.01), 1); Mv.SetKeyRot( rot(2048,0,0), 1); RotationOffset(Mv, LinkedTile.Rotation, 0,0,0); ///Test: SetDynamicMoverTime(Mv, M.MoveTime,0,2, 40,0,2); // added by hand Mv = CreateVariableMover(RotateVector(-2.00,96.00,0.00), id$"ExtraDirt", StaticMesh'SecDikeSM.Overtopping.OverSecMudBlob' , 100.00, 2); Mv.SetDrawScale(1.10); Mv.SetKeyPos( RotateVectorNoLocation(75.00,-504.00,-57.00), 1); Mv.SetKeyRot( rot(0,0,0), 1); RotationOffset(Mv, LinkedTile.Rotation, 0,0,0); SetDynamicMoverTime(Mv, M.MoveTime,0,1, 10,0,2); // added by hand Mv = CreateVariableMover(Location, id$"LowGrass", StaticMesh'SecDikeSM.Overtopping.OverSecGrassBottom' , 800.00, 2); Mv.SetKeyPos( RotateVectorNoLocation(-4.00,0.00,-484.00), 1); Mv.SetKeyRot( rot(-2048,0,0), 1); RotationOffset(Mv, LinkedTile.Rotation, 0,0,0); SetDynamicMoverTime(Mv, M.MoveTime,0,1, 40,0,2); // added by hand M = CreateMover(Location, id$"LowDirt", StaticMesh'SecDikeSM.Overtopping.OverSecMudBottom' , 140.00, 2); M.SetKeyPos( RotateVectorNoLocation(8.00,-121.00,-244.00), 1); M.SetKeyRot( rot(-1024,0,0), 1); RotationOffset(M, LinkedTile.Rotation, 0,0,0); M = CreateMover(RotateVector(0.00,0.00,-256.00), id$"MeasureSecEroTop", StaticMesh'SecDikeSM.Measures.measure_sandbagwall' , 1.00, 2); M.SetKeyPos( RotateVectorNoLocation(0.00,0.00,256.00), 1); M.SetKeyRot( rot(0,0,0), 1); RotationOffset(M, LinkedTile.Rotation, 0,0,0); M = CreateMover(RotateVector(300.09,10.10,-94.43), id$"OverTopWater", StaticMesh'SecDikeSM.ErosieInner.FabulousWater' , 20.00, 2); M.SetKeyPos( RotateVectorNoLocation(-4.00,8.00,98.00), 1); M.SetKeyRot( rot(0,0,0), 1); M.AttachTag = GetName(id$"TopDirt"); M.SetBase(GetActor(M.AttachTag), vect(0,0,1)); RotationOffset(M, LinkedTile.Rotation, 0,0,0); M = CreateMover(RotateVector(364.01,-5.91,-498.00), id$"Waterlow", StaticMesh'SecDikeSM.ErosieInner.WaterSerious' , 3.00, 2); M.SetKeyPos( RotateVectorNoLocation(8.00,22.00,490.00), 1); M.SetKeyRot( rot(-128,0,0), 1); RotationOffset(M, LinkedTile.Rotation, 0,0,0); Mv = CreateVariableMover(Location, id$"TopDirt", StaticMesh'SecDikeSM.Overtopping.OverSecMudTop' , 150.00, 2); Mv.SetKeyPos( RotateVectorNoLocation(16.00,0.00,-4.00), 1); Mv.SetKeyRot( rot(3072,0,0), 1); RotationOffset(Mv, LinkedTile.Rotation, 0,0,0); ///Test: SetDynamicMoverTime(Mv, M.MoveTime,0,1, 15,0,2); // added by hand /// Creating World Objects: E = Spawn(class'WaterSplashEmitter'); //temp E.SetLocation(RotateVector(233.01,-1600.91,-44.00)); E.SetPropertyText("Tag", id$"Waterlow"); RotationOffset(E, LinkedTile.Rotation, 0,-16384,0); AddToVIAList(E); E = Spawn(class'SplashCrashEmitterSmall'); //temp E.SetLocation(RotateVector(163.01,-214.91,352.00)); E.SetPropertyText("Tag", id$"Waterlow"); RotationOffset(E, LinkedTile.Rotation, 0,-16384,0); AddToVIAList(E); /// Call parent: Super.CreateObjects(); } function CreateTriggers() { local DScriptedTrigger sT; local int pos; sT = Spawn(class'DScriptedTrigger'); /// Tag is the same as the linked object name: sT.Tag = GetFailureName(); FailureScript = sT; /// Store in public leveetile var. /// Position is the same as the linked object: sT.SetLocation(LinkedTile.Location); sT.Actions.insert(0, 20); sT.Actions[0] = new class'ACTION_WaitForTimer'; ACTION_WaitForTimer(sT.Actions[0]).PauseTime = 10.00 * speedfactor; sT.Actions[1] = new class'ACTION_IfActive'; ACTION_IfActive(sT.Actions[1]).FailureTag = GetName(id$""); sT.Actions[2] = new class'ACTION_WaitForTimer'; ACTION_WaitForTimer(sT.Actions[2]).PauseTime = 600.00 * speedfactor; sT.Actions[3] = new class'ACTION_IfRelevant'; ACTION_IfRelevant(sT.Actions[3]).FailureTag = GetName(id$""); sT.Actions[4] = new class'ACTION_TriggerEvent'; ACTION_TriggerEvent(sT.Actions[4]).Event = GetName(id$"OverTopWater"); sT.Actions[5] = new class'ACTION_TriggerEvent'; ACTION_TriggerEvent(sT.Actions[5]).Event = GetName(id$"Topgrass"); sT.Actions[6] = new class'ACTION_TriggerEvent'; ACTION_TriggerEvent(sT.Actions[6]).Event = GetName(id$"LowGrass"); sT.Actions[7] = new class'ACTION_WaitForTimer'; ACTION_WaitForTimer(sT.Actions[7]).PauseTime = 300.00 * speedfactor; sT.Actions[8] = new class'ACTION_IfCritical'; ACTION_IfCritical(sT.Actions[8]).FailureTag = GetName(id$""); sT.Actions[9] = new class'ACTION_TriggerEvent'; ACTION_TriggerEvent(sT.Actions[9]).Event = GetName(id$"ExtraDirt"); sT.Actions[10] = new class'ACTION_WaitForTimer'; ACTION_WaitForTimer(sT.Actions[10]).PauseTime = 10.00 * speedfactor; sT.Actions[11] = new class'ACTION_TriggerEvent'; ACTION_TriggerEvent(sT.Actions[11]).Event = GetName(id$"TopDirt"); sT.Actions[12] = new class'ACTION_TriggerEvent'; ACTION_TriggerEvent(sT.Actions[12]).Event = GetName(id$"LowDirt"); sT.Actions[13] = new class'ACTION_WaitForTimer'; ACTION_WaitForTimer(sT.Actions[13]).PauseTime = 30.00 * speedfactor; sT.Actions[14] = new class'ACTION_TriggerEvent'; ACTION_TriggerEvent(sT.Actions[14]).Event = GetName(id$"ErosionInnerSecWaterFingers"); sT.Actions[15] = new class'ACTION_SetHidden'; ACTION_SetHidden(sT.Actions[15]).HideActorTag = GetName(id$"ExtraDirt"); ACTION_SetHidden(sT.Actions[15]).bHidden = True; sT.Actions[16] = new class'ACTION_TriggerEvent'; ACTION_TriggerEvent(sT.Actions[16]).Event = GetName(id$"Waterlow"); sT.Actions[17] = new class'ACTION_IfNoRightMeasuresTaken'; ACTION_IfNoRightMeasuresTaken(sT.Actions[17]).FailureTag = GetName(id$""); /// Add end trigger if we are doing minigames: /// Find "forceend" keyword string: /// After 125 secs: pos = Instr(LinkedTile.extraconfig, "forceend"); if (pos != -1) { Log("Force end found!"); sT.Actions[18] = new class'ACTION_WaitForTimer'; ACTION_WaitForTimer(sT.Actions[18]).PauseTime = 30; sT.Actions[19] = new class'ACTION_EndGame'; } } function CreateSignals() { local SignalSettlement signal0; local SignalOverToppingWash signal1; local SignalGrass signal2; local SignalReportSettlement signal0report0; local SignalReportOverToppingWash signal1report0, signal1report1; local SignalReportGrass signal2report0; /// Signals information: Signals.Insert(0,3); /// local SignalSettlement signal0; signal0 = New class'SignalSettlement'; signal0.CrossCutLocation=CUT_Top; signal0.FirstState=STA_Reportable; signal0.RevetmentType=REV_Grass; signal0.SettlementPosition=SET_Entire; signal0.SignalReports.insert(0,1); /// local SignalReportSettlement signal0report0; signal0report0 = New class'SignalReportSettlement'; signal0report0.GeoState = STA_Reportable; signal0report0.HeightDifference = SIZE_VerySmall; signal0report0.HeightDifferenceMax = SIZE_Medium; signal0report0.LengthOfDamage = SIZE_VerySmall; signal0report0.LengthOfDamageMax = SIZE_Medium; signal0.SignalReports[0] = signal0report0; Signals[0] = signal0; /// local SignalOverToppingWash signal1; signal1 = New class'SignalOverToppingWash'; signal1.CrossCutLocation=CUT_Top; signal1.TypeOcurring=OVER_Topping; signal1.SignalReports.insert(0,2); /// local SignalReportOverToppingWash signal1report0; signal1report0 = New class'SignalReportOverToppingWash'; signal1report0.FlushingSoil = GEO_No; signal1report0.FlushingSoilQuantity = QUA_None; signal1report0.GeoState = STA_Relevant; signal1report0.IsAccessible = GEO_Yes; signal1report0.InfiltrateTopInner = GEO_Yes; signal1report0.WaterFlowQuantity = QUA_Little; signal1report0.WavesDescription = WAVE_None; signal1.SignalReports[0] = signal1report0; Signals[1] = signal1; /// local SignalReportOverToppingWash signal1report1; signal1report1 = New class'SignalReportOverToppingWash'; signal1report1.FlushingSoil = GEO_Yes; signal1report1.FlushingSoilQuantity = QUA_Much; signal1report1.GeoState = STA_Critical; signal1report1.InfiltrateTopInner = GEO_Yes; signal1report1.IsAccessible = GEO_Yes; signal1report1.WaterFlowQuantity = QUA_Much; signal1report1.WavesDescription = WAVE_None; signal1.SignalReports[1] = signal1report1; Signals[1] = signal1; /// local SignalGrass signal2; signal2 = New class'SignalGrass'; signal2.FirstState=STA_Relevant; signal2.CrossCutLocation=CUT_InnerSlope; signal2.SignalReports.insert(0,1); /// local SignalReportGrass signal2report0; signal2report0 = New class'SignalReportGrass'; signal2report0.GeoState = STA_Relevant; signal2report0.LengthOfDamage = SIZE_Medium; signal2report0.LengthOfDamageMax = SIZE_Large; signal2report0.WidthOfDamage = SIZE_Medium; signal2report0.WidthOfDamageMax = SIZE_Large; signal2.SignalReports[0] = signal2report0; Signals[2] = signal2; } function CreateMeasures() { local Measure Msr; /// Creating measures: Measures.Insert(0,2); Msr = New class'Measure'; Msr.SetPropertyText("EventMeasureTaken", id$"MeasureSecEroTop"); Msr.bMeasureEffective = True; Msr.MeasureType = MEA_CoverInnerSlopeWithFoil; Measures[0] = Msr; Msr = New class'Measure'; Msr.SetPropertyText("EventMeasureTaken", id$"MeasureSecEroTop"); Msr.bMeasureEffective = True; Msr.MeasureType = MEA_SandbagsTop; Measures[1] = Msr; } function CreateMeasureScripts() { local DScriptedTrigger sT; sT = Spawn(class'DScriptedTrigger'); /// Position is the same as the linked object: sT.SetLocation(LinkedTile.Location); /// Trying to write down extra measure scriptedtriggers /// Trying to find: MeasureSecEroTop sT.Actions.insert(0, 4); sT.Actions[0] = new class'ACTION_WaitForEvent'; ACTION_WaitForEvent(sT.Actions[0]).ExternalEvent = GetName(id$"MeasureSecEroTop"); sT.Actions[1] = new class'ACTION_SetHidden'; ACTION_SetHidden(sT.Actions[1]).HideActorTag = GetName(id$"OverTopWater"); ACTION_SetHidden(sT.Actions[1]).bHidden = True; sT.Actions[2] = new class'ACTION_SetHidden'; ACTION_SetHidden(sT.Actions[2]).HideActorTag = GetName(id$"ErosionInnerSecWaterFingers"); ACTION_SetHidden(sT.Actions[2]).bHidden = True; sT.Actions[3] = new class'ACTION_SetHidden'; ACTION_SetHidden(sT.Actions[3]).HideActorTag = GetName(id$"Waterlow"); ACTION_SetHidden(sT.Actions[3]).bHidden = True; }