//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // Last Changes: //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Model ("Lurker") { MeshAndTree ("Lur_Body.asc" DONT_USE_MESH) registerMesh ("Lur_Body.ASC") aniEnum { // | KEYWORD | ANI-NAME |LAYER| NEXT-ANI | BI | BO |F |ASC-FILE | DIR |FF |LF //----------------------------------------------------------------------------------------------------------------------- modelTag ("DEF_HIT_LIMB" "BIP01 L HAND") ////////////////////////// // FIST MOVEMENT ////////////////////////// // Fist-RUN ani ("s_FistRun" 1 "s_FistRun" 0.0 0.0 M. "Lur_Ambient_A01.asc" F 1 41 FPS:15) { *eventSFX (2 "LUR_AMBIENT" EMPTY_SLOT ) } // Start Running ani ("t_FistRun_2_FistRunL" 1 "s_FistRunL" 0.0 0.0 M. "Lur_Run_A01.ASC" F 1 9) // Cycle ani ("s_FistRunL" 1 "s_FistRunL" 0.0 0.1 M. "Lur_Run_A01.asc" F 10 29) { *eventSFXGrnd (17 "Run") *eventSFXGrnd (27 "Run") *eventSFX (11 "LUR_AMBIENT_SHORT" EMPTY_SLOT ) } // End Running ani ("t_FistRunL_2_FistRun" 1 "s_FistRun" 0.0 0.3 M. "Lur_Run_A01.asc" F 30 39) { *eventSFXGrnd (32 "Run") *eventSFXGrnd (37 "Run") } aniBlend ("t_FistRunR_2_FistRun" "s_FistRun" 0.2 0.2) // Backward "Jump" ani ("t_FistJumpB" 1 "s_FistRun" 0.1 0.1 M. "Lur_JumpB_M01.asc" F 1 19) // Fist-WALK aniAlias ("s_FistWalk" 1 "s_FistWalk" 0.0 0.0 M. "s_FistRun" F) // Start Walking ani ("t_FistWalk_2_FistWalkL" 1 "s_FistWalkL" 0.0 0.0 M. "Lur_Walk_Jue00.ASC" F 1 19) // Cycle ani ("s_FistWalkL" 1 "s_FistWalkL" 0.0 0.0 M. "Lur_Walk_Jue00.asc" F 20 59) { *eventSFXGrnd (20 "Run") *eventSFXGrnd (40 "Run") *eventSFX (21 "LUR_AMBIENT_SHORT" EMPTY_SLOT ) } // End Walking ani ("t_FistWalkL_2_FistWalk" 1 "s_FistWalk" 0.0 0.3 M. "Lur_Walk_Jue00.asc" F 60 79) { *eventSFXGrnd (60 "Run") *eventSFXGrnd (77 "Run") } aniBlend ("t_FistWalkR_2_FistWalk" "s_FistWalk" 0.3 0.2) // Fist-Walk Backwards Movement // Start Bw Walking aniAlias ("t_FistWalk_2_FistWalkBL" 1 "s_FistWalkBL" 0.0 0.0 M. "t_FistWalkL_2_FistWalk" R) // Bw Cycle aniAlias ("s_FistWalkBL" 1 "s_FistWalkBL" 0.0 0.0 M. "s_FistWalkL" R) // Bw End Walking aniAlias ("t_FistWalkBL_2_FistWalk" 1 "s_FistWalk" 0.0 0.0 M. "t_FistWalk_2_FistWalkL" R) aniBlend ("t_FistWalkBR_2_FistWalk" "s_FistWalk" 0.3 0.2) ///////////////////// // FIST TURNING ///////////////////// ani ("t_FistRunTurnL" 20 "t_FistRunTurnL" 0.2 0.2 M. "Lur_TurnL_Jue00.asc" F 0 24) { *eventSFXGrnd (6 "Turn") *eventSFXGrnd (18 "Turn") } ani ("t_FistRunTurnR" 20 "t_FistRunTurnR" 0.2 0.2 M. "Lur_TurnR_Jue00.asc" F 0 24) { *eventSFXGrnd (6 "Turn") *eventSFXGrnd (18 "Turn") } aniAlias ("t_FistWalkTurnL" 20 "t_FistWalkTurnL" 0.2 0.2 M. "t_FistRunTurnL" F) aniAlias ("t_FistWalkTurnR" 20 "t_FistWalkTurnR" 0.2 0.2 M. "t_FistRunTurnL" R) aniAlias ("t_WalkWTurnL" 20 "t_FistWalkTurnL" 0.2 0.2 M. "t_FistRunTurnL" F) aniAlias ("t_WalkWTurnR" 20 "t_FistWalkTurnR" 0.2 0.2 M. "t_FistRunTurnL" R) /////////////////// // TRANSITIONS /////////////////// // Movement-Modes aniBlend ("t_FistRun_2_FistWalk" "s_FistWalk") aniBlend ("t_FistWalk_2_FistRun" "s_FistRun") aniBlend ("t_FistRunL_2_FistWalkL" "s_FistWalkL") aniBlend ("t_FistWalkL_2_FistRunL" "s_FistRunL") // aus dem Rennen direkt Springen ani ("t_FistRunL_2_Jump" 1 "s_Jump" 0.3 0.0 MF "Lur_Jump_M01.asc" F 6 16) aniAlias ("t_FistRunR_2_Jump" 1 "s_Jump" 0.0 0.0 MF "t_FistRunL_2_Jump" F) // nach dem Sprung direkt weiterrennen, we nn CursorUp weiterhin gedrückt ani ("t_Jump_2_FistRunL" 1 "s_FistRunL" 0.0 0.3 MF "Lur_Jump_M01.asc" F 18 23) { *eventSFX (20 "M_FALL_SMALL" EMPTY_SLOT ) } ////////////////////////// // JUMP ////////////////////////// // Jump ani ("t_Stand_2_Jump" 1 "s_Jump" 0.0 0.0 M. "Lur_Jump_M01.asc" F 1 16) ani ("s_Jump" 1 "s_Jump" 0.0 0.0 MF "Lur_Jump_M01.asc" F 17 17) ani ("t_Jump_2_Stand" 1 "" 0.0 0.0 M. "Lur_Jump_M01.asc" F 18 29) { *eventSFX (23 "M_FALL_SMALL" EMPTY_SLOT ) } // JumpUpLow (Ohne Benutzung der Hände, rechter Fuß setzt zuerst auf) // ani1: Schwung holen, ani2: Flugphase, ani3: Kontakt mit Kante ani ("t_Stand_2_JumpUpLow" 1 "s_JumpUpLow" 0.1 0.0 M. "Lur_JumpUpLow_M01.asc" F 0 8) ani ("s_JumpUpLow" 1 "t_JumpUpLow_2_Stand" 0.0 0.0 MF "Lur_JumpUpLow_M01.asc" F 8 12) ani ("t_JumpUpLow_2_Stand" 1 "" 0.0 0.1 MF "Lur_JumpUpLow_M01.asc" F 12 42) // Strafe ani ("t_FistRunStrafeL" 1 "t_FistRunStrafeL" 0.1 0.1 M. "Lur_StrafeL_M01.ASC" F 1 19) { *eventSFX (2 "LUR_AMBIENT_SHORT" EMPTY_SLOT ) *eventSFXGrnd (6 "Turn") *eventSFXGrnd (15 "Turn") } ani ("t_FistRunStrafeR" 1 "t_FistRunStrafeR" 0.1 0.1 M. "Lur_StrafeR_M01.ASC" F 1 19) { *eventSFX (2 "LUR_AMBIENT_SHORT" EMPTY_SLOT ) *eventSFXGrnd (6 "Turn") *eventSFXGrnd (15 "Turn") } aniAlias ("t_FistWalkStrafeL" 1 "t_FistWalkStrafeL" 0.1 0.1 M. "t_FistRunStrafeL" F) aniAlias ("t_FistWalkStrafeR" 1 "t_FistWalkStrafeR" 0.1 0.1 M. "t_FistRunStrafeL" R) aniAlias ("t_WalkWStrafeL" 1 "t_WalkWStrafeL" 0.1 0.1 M. "t_FistRunStrafeL" F) aniAlias ("t_WalkWStrafeR" 1 "t_WalkWStrafeR" 0.1 0.1 M. "t_FistRunStrafeL" R) ///////////////// // FALL / SLIDE ///////////////// aniBlend ("t_Jump_2_FallDn" "s_FallDn" 0.2 0.3) ani ("s_FallDn" 1 "s_FallDn" 0.1 0.1 MF "Lur_FallDn_M01.asc" F 0 0) ani ("t_FallDn_2_Stand" 1 "" 0.0 0.0 M. "Lur_FallDn_M01.asc" F 6 29) { *eventSFX (11 "M_FALL_SMALL" EMPTY_SLOT ) } aniBlend ("t_FallDn_2_Fall" "s_Fall" 0.1 0.1) aniBlend ("t_FallDn_2_FallB" "s_FallB" 0.1 0.1) ani ("s_Fall" 1 "s_Fall" 0.2 0.0 MF "Lur_Fallen_M01.asc" F 0 0) ani ("t_Fall_2_Fallen" 1 "s_Fallen" 0.0 0.0 M. "Lur_Fallen_M01.asc" F 1 19) { *eventSFX (11 "M_FALL_SMALL" EMPTY_SLOT ) } ani ("s_Fallen" 1 "s_Fallen" 0.0 0.0 M. "Lur_Fallen_M01.asc" F 20 20) ani ("t_Fallen_2_Stand" 1 "" 0.0 0.2 M. "Lur_Fallen_M01.asc" F 21 55) aniAlias ("s_FallB" 1 "s_FallB" 0.2 0.0 MF "s_Fall" F) aniAlias ("t_FallB_2_FallenB" 1 "s_FallenB" 0.0 0.0 M. "t_Fall_2_Fallen" F) aniAlias ("s_FallenB" 1 "s_FallenB" 0.0 0.0 M. "s_Fallen" F) aniAlias ("t_FallenB_2_Stand" 1 "" 0.0 0.2 M. "t_Fallen_2_Stand" F // ani ("s_Slide" 1 "s_Slide" 0.1 0.5 M. "Lur_Fallen_M01.asc" F 3 3) // ani ("s_SlideB" 1 "s_SlideB" 0.1 0.5 M. "Lur_FallenB_M01.asc" F 3 3) ////////////////////////// // WATER-WALK SWIM - DIVE ////////////////////////// aniAlias ("t_WalkWL_2_RunL" 1 "" 0.0 0.0 M. "t_FistWalkL_2_FistWalk" F) aniAlias ("t_Walk_2_WalkWL" 1 "s_WalkWL" 0.1 0.0 M. "t_FistWalk_2_FistWalkL" F) aniAlias ("s_WalkWL" 1 "s_WalkWL" 0.0 0.0 M. "s_FistWalkL" F) aniAlias ("t_WalkWL_2_Walk" 1 "s_FistWalk" 0.0 0.0 M. "t_FistWalkL_2_FistWalk" F) aniBlend ("t_WalkWR_2_Walk" "s_FistWalk" 0.1 0.1 ) aniAlias ("t_Walk_2_WalkWBL" 1 "s_WalkWBL" 0.1 0.0 M. "t_FistWalkL_2_FistWalk" R) aniAlias ("s_WalkWBL" 1 "s_WalkWBL" 0.0 0.0 M. "s_FistWalkL" R) aniAlias ("t_WalkWBL_2_Walk" 1 "s_FistWalk" 0.0 0.0 M. "t_FistWalk_2_FistWalkL" R) aniBlend ("t_WalkWBR_2_Walk" "s_FistWalk" 0.1 0.1) // Transitions won FistWalk (im Wasser) zum Schwimmen ani ("t_WalkWL_2_SwimF" 1 "s_SwimF" 0.1 0.1 MF "Lur_Swim_Dive_Jue01.asc" F 1 19) ani ("t_SwimF_2_WalkWL" 1 "s_FistWalk" 0.3 0.3 MF "Lur_Swim_Dive_Jue01.asc" F 41 49) // SWIM ani ("t_Swim_2_SwimF" 1 "s_SwimF" 0.0 0.0 M. "Lur_Swim_Dive_Jue01.asc" R 41 54) ani ("s_SwimF" 1 "s_SwimF" 0.0 0.0 M. "Lur_Swim_Dive_Jue01.asc" F 21 39) ani ("t_SwimF_2_Swim" 1 "s_Swim" 0.0 0.0 M. "Lur_Swim_Dive_Jue01.asc" F 35 39) ani ("s_Swim" 1 "s_Swim" 0.1 0.1 M. "Lur_Swim_Dive_Jue01.asc" F 55 104 FPS:10) // Turning ani ("t_SwimTurnL" 20 "t_SwimTurnL" 0.1 0.1 M. "Lur_Swim_M01.asc" F 149 167) ani ("t_SwimTurnR" 20 "t_SwimTurnR" 0.1 0.1 M. "Lur_Swim_M01.asc" F 169 187) // DIVE aniBlend ("t_FallDn_2_Dive" "s_Dive" 0.1 0.1) ani ("t_Swim_2_Dive" 1 "s_Dive" 0.0 0.0 MF "Lur_Swim_Dive_Jue01.asc" F 106 119) aniAlias ("t_SwimF_2_Dive" 1 "s_Dive" 0.3 0.0 MF "t_swim_2_dive" F) ani ("s_Dive" 1 "s_Dive" 0.1 0.1 MF "Lur_Swim_Dive_Jue01.asc" F 120 120) aniBlend ("t_Dive_2_DiveF" "s_DiveF" 0.1 0.1) ani ("s_DiveF" 1 "s_DiveF" 0.0 0.0 MF "Lur_Swim_Dive_Jue01.asc" F 120 139) aniBlend ("t_DiveF_2_Dive" "s_Dive" 0.0 0.1) aniBlend ("t_DiveF_2_Swim" "s_Swim" 0.2 0.2) // DROWN (Lurker ertrinkt zwar nie, könnte aber allgemein für Sterben unter Wasser benutzt werden) ani ("t_Dive_2_Drowned" 1 "s_Drowned" 0.3 0.0 MF "Lur_Drown_M01.asc" F 1 54) ani ("s_Drowned" 1 "s_Drowned" 0.0 0.0 MF "Lur_Drown_M01.asc" F 55 55) // Turning aniAlias ("t_DiveTurnL" 20 "t_DiveTurnL" 0.1 0.1 M. "t_SwimTurnL" F) aniAlias ("t_DiveTurnR" 20 "t_DiveTurnR" 0.1 0.1 M. "t_SwimTurnR" F) ////////////////////////// // STUMBLE / SLIDE / FALL ////////////////////////// // Stumble ani ("t_StumbleB" 1 "" 0.1 0.1 M. "Lur_StumbleBack_01.asc" F 0 15) { *eventSFX (1 "SNA_HURT" EMPTY_SLOT ) } ani ("t_Stumble" 1 "" 0.1 0.1 M. "Lur_Stumble_01.asc" F 0 15) { *eventSFX (1 "SNA_HURT" EMPTY_SLOT ) } ////////////////////////// // DIE ////////////////////////// ani ("t_Dead" 1 "s_Dead" 0.2 0.0 M. "Lur_Fallen_M01.asc" F 3 19) { *eventSFX (4 "LUR_DIE" EMPTY_SLOT ) *eventSFX (12 "M_FALL_SMALL" EMPTY_SLOT ) } ani ("s_Dead" 1 "s_Dead" 0.0 0.1 M. "Lur_Fallen_M01.asc" F 20 20) ani ("t_DeadB" 1 "s_DeadB" 0.1 0.0 M. "Lur_DeadB_HOR01.asc" F 1 39) { *eventSFX (5 "LUR_DIE" EMPTY_SLOT ) *eventSFX (16 "M_FALL_SMALL" EMPTY_SLOT ) } ani ("s_DeadB" 1 "s_DeadB" 0.0 0.0 M. "Lur_DeadB_HOR01.asc" F 40 40) ////////////////////////// // UMSEHEN / ZEIGEN ////////////////////////// // LOOK Autoaiming // Seitenwinkel: +/- 60° Höhenwinkel: +/- 45° ani ("c_look_1" 9 "" 0.0 0.0 . "Lurker_Look_KP01.asc" F 0 0) ani ("c_look_2" 9 "" 0.0 0.0 . "Lurker_Look_KP01.asc" F 1 1) ani ("c_look_3" 9 "" 0.0 0.0 . "Lurker_Look_KP01.asc" F 2 2) ani ("c_look_4" 9 "" 0.0 0.0 . "Lurker_Look_KP01.asc" F 3 3) ani ("c_look_5" 9 "" 0.0 0.0 . "Lurker_Look_KP01.asc" F 4 4) ani ("c_look_6" 9 "" 0.0 0.0 . "Lurker_Look_KP01.asc" F 5 5) ani ("c_look_7" 9 "" 0.0 0.0 . "Lurker_Look_KP01.asc" F 6 6) ani ("c_look_8" 9 "" 0.0 0.0 . "Lurker_Look_KP01.asc" F 7 7) ani ("c_look_9" 9 "" 0.0 0.0 . "Lurker_Look_KP01.asc" F 8 8) aniComb ("t_look" 9 "t_look" 0.3 0.3 M. "c_look_" 9) // WhirlAround CCW ani ("t_surprise_CCW" 1 "s_surprise" 0.2 0.2 M. "Lur_WhirlAroundL_M01.asc" F 1 15) // WhirlAround CW aniAlias ("t_surprise_CW" 1 "s_surprise" 0.2 0.2 M. "t_surprise_CCW" F) aniAlias ("s_surprise" 1 "s_surprise" 0.1 0.1 M. "s_FistRun" F) ////////////////////////// // Kampf FIST ////////////////////////// // Attacks ani ("c_FistAt1_1" 1 "" 0.0 0.0 . "Lur_Attack_M01.asc" F 15 44) ani ("c_FistAt1_2" 1 "" 0.0 0.0 . "Lur_Attack_M01.asc" F 47 76) ani ("c_FistAt1_3" 1 "" 0.0 0.0 . "Lur_Attack_M01.asc" F 79 108) aniComb ("t_FistAttackC" 1 "" 0.0 0.0 M. "c_FistAt1_" 3) { *eventTag (0 "DEF_OPT_FRAME" "17") *eventTag (0 "DEF_HIT_LIMB" "BIP01 L HAND") } ani ("s_FistAttack" 1 "" 0.0 0.0 M. "Lur_attack_M01.asc" F 0 20) { *eventTag (0 "DEF_HIT_LIMB" "BIP01 L HAND") *eventTag (0 "DEF_OPT_FRAME" "6") *eventTag (0 "DEF_HIT_END" "20") *eventTag (0 "DEF_WINDOW" "10 20") // *eventTag (0 "DEF_DIR" "U") *eventSFX (1 "LUR_ATTACK" EMPTY_SLOT ) } ani ("t_FistAtWater" 1 "" 0.1 0.2 M. "Lur_SwimAt_M01.asc" F 40 55) { *eventTag (0 "DEF_OPT_FRAME" "17") *eventTag ("DEF_HIT_LIMB" "BIP01 L PONYTAIL1") } // während des Laufens zuschlagen ani ("t_FistAttackMove" 2 "" 0.2 0.2 M. "Lur_AttackMove_M01.ASC" F 1 15) { *eventTag (0 "DEF_HIT_LIMB" "BIP01 L HAND") *eventTag (0 "DEF_OPT_FRAME" "5") *eventSFX (1 "LUR_ATTACK" EMPTY_SLOT ) } aniAlias ("t_FistParadeJumpB" 1 "" 0.0 0.0 M. "t_FistJumpB" F) aniAlias ("t_FistParade_0" 1 "" 0.0 0.0 M. "t_FistJumpB" F) // aniAlias ("t_FistParade_U" 1 "" 0.0 0.0 M. "t_FistJumpB" F) // aniAlias ("t_FistParade_L" 1 "" 0.0 0.0 M. "t_FistJumpB" F) // aniAlias ("t_FistParade_R" 1 "" 0.0 0.0 M. "t_FistJumpB" F) ////////////////////////// // SCRIPT / RANDOM ////////////////////////// ani ("t_Perception" 2 "" 0.0 0.0 M. "Lur_perception_a01.asc" F 0 45) ani ("t_Warn" 1 "" 0.0 0.0 M. "Lur_Warn_jue00.asc" F 0 75) { *eventSFX (12 "LUR_WARN" EMPTY_SLOT ) } //--------------------------------------------------------------------------------------------------------------------------------- ani ("t_Stand_2_Sleep" 1 "s_Sleep" 0.1 0.0 M. "Lur_Sleep_M01.asc" F 1 29) ani ("s_Sleep" 1 "s_Sleep" 0.0 0.0 M. "Lur_Sleep_M01.asc" F 30 74 FPS:15) aniAlias ("t_Sleep_2_Stand" 1 "" 0.0 0.1 M. "t_Stand_2_Sleep" R) //--------------------------------------------------------------------------------------------------------------------------------- ani ("t_Stand_2_Eat" 1 "s_Eat" 0.1 0.0 M. "Lur_Eat_M01.asc" F 1 14) ani ("s_Eat" 1 "s_Eat" 0.0 0.0 M. "Lur_Eat_M01.asc" F 15 104) aniAlias ("t_Eat_2_Stand" 1 "" 0.0 0.1 M. "t_Stand_2_Eat" R) //--------------------------------------------------------------------------------------------------------------------------------- ani ("R_ScratchFloor" 2 "" 0.0 0.0 M. "Lur_ScratchFloor_Jue00.asc" F 0 100 ) { *eventSFX (15 "SCRATCH" EMPTY_SLOT ) *eventSFX (26 "SCRATCH" EMPTY_SLOT ) *eventSFX (36 "SCRATCH" EMPTY_SLOT ) *eventSFX (60 "LUR_SNIFF" EMPTY_SLOT ) } ani ("R_Sniff" 2 "" 0.0 0.0 M. "Lur_SniffFloor_Jue00.asc" F 0 65 ) { *eventSFX (29 "LUR_SNIFF" EMPTY_SLOT ) } ani ("R_Scratch" 2 "" 0.0 0.0 M. "Lur_Scratch01_Jue00.asc" F 0 60) ani ("R_Scratch2" 2 "" 0.0 0.0 M. "Lur_Scratch02_Jue00.asc" F 0 -1) // *************************************************************************************** // MM DAYCYCLE // *************************************************************************************** aniAlias ("r_Roam1" 2 "" 0.1 0.1 M. "R_ScratchFloor" F) aniAlias ("r_Roam2" 2 "" 0.1 0.1 M. "R_Sniff" F) aniAlias ("r_Roam3" 2 "" 0.1 0.1 M. "R_Scratch" F) // *************************************************************************************** /////////////////////// // MAGIC VICTIMS /////////////////////// // Feuerschaden allgemein, z.B. Fireball ... aniAlias ("s_Fire_Victim" 1 "s_Fire_Victim" 0.0 0.0 M. "s_Lightning_Victim" F) // Lightning, Chainlightning, Thunderbolt, Thunderball ani ("t_Stand_2_Lightning_Victim" 1 "s_Lightning_Victim" 0.0 0.0 M. "Lur_VicLightning_M01.asc" F 0 10) ani ("s_Lightning_Victim" 1 "s_Lightning_Victim" 0.0 0.0 M. "Lur_VicLightning_M01.asc" F 10 42) // IceCube, IceWave ani ("t_Stand_2_Freeze_Victim" 1 "s_Freeze_Victim" 0.1 0.0 M. "Lur_StumbleBack_01.asc" F 1 3) ani ("s_Freeze_Victim" 1 "s_Freeze_Victim" 0.0 0.0 M. "Lur_StumbleBack_01.asc" F 4 4) // Whirlwind aniAlias ("t_Stand_2_Whirlwind_Victim" 1 "s_Whirlwind_Victim" 0.1 0.0 M. "t_Stand_2_Freeze_Victim" F ) aniAlias ("s_Whirlwind_Victim" 1 "s_Whirlwind_Victim" 0.0 0.0 M. "s_Freeze_Victim" F ) // Sleep Victim aniAlias ("t_Stand_2_Victim_Sle" 1 "s_Victim_Sle" 0.1 0.0 M. "t_Stand_2_Sleep" F) aniAlias ("s_Victim_Sle" 1 "s_Victim_Sle" 0.1 0.1 M. "s_Sleep" F) aniAlias ("t_Victim_Sle_2_Stand" 1 "" 0.0 0.2 M. "t_Stand_2_Sleep" R) }