; The CMD file. ; ; Two parts: 1. Command definition and 2. State entry ; (state entry is after the commands def section) ; ; 1. Command definition ; --------------------- ; Note: The commands are CASE-SENSITIVE, and so are the command names. ; The eight directions are: ; B, DB, D, DF, F, UF, U, UB (all CAPS) ; corresponding to back, down-back, down, downforward, etc. ; The six buttons are: ; a, b, c, x, y, z (all lower case) ; In default key config, abc are are the bottom, and xyz are on the ; top row. For 2 button characters, we recommend you use a and b. ; For 6 button characters, use abc for kicks and xyz for punches. ; ; Each [Command] section defines a command that you can use for ; state entry, as well as in the CNS file. ; The command section should look like: ; ; [Command] ; name = some_name ; command = the_command ; time = time (optional -- defaults to 15 if omitted) ; ; - some_name ; A name to give that command. You'll use this name to refer to ; that command in the state entry, as well as the CNS. It is case- ; sensitive (QCB_a is NOT the same as Qcb_a or QCB_A). ; ; - command ; list of buttons or directions, separated by commas. ; Directions and buttons can be preceded by special characters: ; slash (/) - means the key must be held down ; egs. command = /D ;hold the down direction ; command = /DB, a ;hold down-back while you press a ; tilde (~) - to detect key releases ; egs. command = ~a ;release the a button ; command = ~D, F, a ;release down, press fwd, then a ; If you want to detect "charge moves", you can specify ; the time the key must be held down for (in game-ticks) ; egs. command = ~30a ;hold a for at least 30 ticks, then release ; dollar ($) - Direction-only: detect as 4-way ; egs. command = $D ;will detect if D, DB or DF is held ; command = $B ;will detect if B, DB or UB is held ; plus (+) - Buttons only: simultaneous press ; egs. command = a+b ;press a and b at the same time ; command = x+y+z ;press x, y and z at the same time ; You can combine them: ; eg. command = ~30$D, a+b ;hold D, DB or DF for 30 ticks, release, ; ;then press a and b together ; It's recommended that for most "motion" commads, eg. quarter-circle-fwd, ; you start off with a "release direction". This matches the way most ; popular fighting games implement their command detection. ; ; - time (optional) ; Time allowed to do the command, given in game-ticks. Defaults to 15 ; if omitted ; ; If you have two or more commands with the same name, all of them will ; work. You can use it to allow multiple motions for the same move. ; ; Some common commands examples are given below. ; ; [Command] ;Quarter circle forward + x ; name = "QCF_x" ; command = ~D, DF, F, x ; ; [Command] ;Half circle back + a ; name = "HCB_a" ; command = ~F, DF, D, DB, B, a ; ; [Command] ;Two quarter circles forward + y ; name = "2QCF_y" ; command = ~D, DF, F, D, DF, F, y ; ; [Command] ;Tap b rapidly ; name = "5b" ; command = b, b, b, b, b ; time = 30 ; ; [Command] ;Charge back, then forward + z ; name = "charge_B_F_z" ; command = ~60$B, F, z ; time = 10 ; ; [Command] ;Charge down, then up + c ; name = "charge_D_U_c" ; command = ~60$D, U, c ; time = 10 ; ;-| Super Motions |-------------------------------------------------------- ;The following two have the same name, but different motion. ;Either one will be detected by a "command = TripleKFPalm" trigger. ;Time is set to 20 (instead of default of 15) to make the move ;easier to do. ; ;-| Special Motions |------------------------------------------------------ [Command] name = "CPU1" command = D, D, U, U, D, U time = 1 [Command] name = "CPU2" command = D, U, U, D, D, U time = 1 [Command] name = "CPU3" command = D, D, D, U, U, U time = 1 [Command] name = "CPU4" command = D, U, U, U, U, U time = 1 [Command] name = "CPU5" command = D, D, U, U, U, U time = 1 [Command] name = "CPU6" command = D, D, U, D, U, U time = 1 [Command] name = "CPU7" command = D, U, U, U, D, D time = 1 [Command] name = "CPU8" command = D, D, U, U, U, D time = 1 [Command] name = "CPU9" command = D, U, D, U, U, D time = 1 [Command] name = "CPU10" command = U, D, D, U, U, D time = 1 [Command] name = "CPU11" command = U, U, D, U, D, U time = 1 [Command] name = "CPU12" command = U, D, U, D, U, D time = 1 [Command] name = "CPU13" command = D, U, D, U, D, U time = 1 [Command] name = "CPU14" command = U, D, U, U, D, U time = 1 [Command] name = "CPU15" command = D, U, D, D, D, U time = 1 [Command] name = "CPU16" command = D, D, D, U, D, U time = 1 [Command] name = "CPU17" command = U, U, U, D, U, D time = 1 [Command] name = "CPU18" command = D, U, U, D, U, D time = 1 [Command] name = "CPU19" command = U, D, D, U, D, U time = 1 [Command] name = "CPU20" command = U, U, D, D, U, U time = 1 [Command] name = "CPU21" command = D, D, U, U, D, D time = 1 [Command] name = "CPU22" command = U, D, U, U, D, U time = 1 [Command] name = "CPU23" command = U, U, D, D, D, U time = 1 [Command] name = "CPU24" command = D, D, U, U, U, D time = 1 [Command] name = "shoot" command = /$D, x time = 1 [Command] name = "triple" command = ~D, D, x time = 20 [Command] name = "a" command = ~B, DB, D, DF, F, x [Command] name = "as_c" command = ~B, DB, D, DB, B, x [Command] name = "f" command = D+s time = 1 [Command] name = "m" command = ~B, DB, D, DF, F, z [Command] name = "d" command = ~D, DF, F, z [Command] name = "sp2" command = ~F, DF, D, DB, B, x [Command] name = "shen_z" command = ~F, D, DF, x [Command] name = "shen_y" command = ~F, D, DF, y [Command] name = "hadoken_x" command = ~D, DF, F, x [Command] name = "hadoken_y" command = ~D, DF, F, y [Command] name = "hadoken_z" command = ~D, DF, F, z [Command] name = "sp1" command = ~D, DB, B, x [command] name = "idash" command = ~D, DF, F, b [Command] name = "sp3" command = ~D, DB, B, z [Command] name = "QCB_y" command = ~D, DB, B, x ;-| Double Tap |----------------------------------------------------------- [Command] name = "FF" ;Required (do not remove) command = F, F time = 10 [Command] name = "BB" ;Required (do not remove) command = B, B time = 10 ;-| 2/3 Button Combination |----------------------------------------------- [Command] name = "recovery";Required (do not remove) command = x+y time = 1 ;-| Dir + Button |--------------------------------------------------------- [Command] name = "down_a" command = /$D,a time = 1 [Command] name = "down_b" command = /$D,b time = 1 ;-| Single Button |--------------------------------------------------------- [Command] name = "b" command = ~D, DB, B, x [Command] name = "e" command = ~D, DF, F, D, DF, F, z [Command] name = "dc" command = /$D, c time = 1 [Command] name = "k" command = c+y time = 1 [Command] name = "c" command = c time = 1 [Command] name = "g" command = a time = 1 [Command] name = "h" command = b time = 1 [Command] name = "x" command = x time = 1 [Command] name = "y" command = y time = 1 [Command] name = "z" command = z time = 1 [Command] name = "fow" command = F time = 1 [Command] name = "back" command = B time = 1 [Command] name = "down" command = D time = 1 [Command] name = "start" command = s time = 1 ;-| Hold Dir |-------------------------------------------------------------- [Command] name = "holdfwd";Required (do not remove) command = /$F time = 1 [Command] name = "holdback";Required (do not remove) command = /$B time = 1 [Command] name = "holdup" ;Required (do not remove) command = /$U time = 1 [Command] name = "holddown";Required (do not remove) command = /$D time = 1 ;--------------------------------------------------------------------------- ; 2. State entry ; -------------- ; This is where you define what commands bring you to what states. ; ; Each state entry block looks like: ; [State -1, Label] ;Change Label to any name you want to use to ; ;identify the state with. ; type = ChangeState ;Don't change this ; value = new_state_number ; trigger1 = command = command_name ; . . . (any additional triggers) ; ; - new_state_number is the number of the state to change to ; - command_name is the name of the command (from the section above) ; - Useful triggers to know: ; - statetype ; S, C or A : current state-type of player (stand, crouch, air) ; - ctrl ; 0 or 1 : 1 if player has control. Unless "interrupting" another ; move, you'll want ctrl = 1 ; - stateno ; number of state player is in - useful for "move interrupts" ; - movecontact ; 0 or 1 : 1 if player's last attack touched the opponent ; useful for "move interrupts" ; ; Note: The order of state entry is important. ; State entry with a certain command must come before another state ; entry with a command that is the subset of the first. ; For example, command "fwd_a" must be listed before "a", and ; "fwd_ab" should come before both of the others. ; ; For reference on triggers, see CNS documentation. ; ; Just for your information (skip if you're not interested): ; This part is an extension of the CNS. "State -1" is a special state ; that is executed once every game-tick, regardless of what other state ; you are in. ; Don't remove the following line. It's required by the CMD standard. [Statedef -1] ;=========================================================================== ;=========================================================================== [State -1, Activate AI] type = VarSet trigger1 = command = "CPU1" trigger2 = command = "CPU2" trigger3 = command = "CPU3" trigger4 = command = "CPU4" trigger5 = command = "CPU5" trigger6 = command = "CPU6" trigger7 = command = "CPU7" trigger8 = command = "CPU8" trigger9 = command = "CPU9" trigger10 = command = "CPU10" trigger11 = command = "CPU11" trigger12 = command = "CPU12" trigger13 = command = "CPU13" trigger14 = command = "CPU14" trigger15 = command = "CPU15" trigger16 = command = "CPU16" trigger17 = command = "CPU17" trigger18 = command = "CPU18" trigger19 = command = "CPU19" trigger20 = command = "CPU20" trigger21 = command = "CPU21" trigger22 = command = "CPU22" trigger23 = command = "CPU23" trigger24 = command = "CPU24" v = 20 value = 1 ; ========================== ; AI Standing Guard ; ========================== [State -1] type = ChangeState triggerall = var(20) = 1 ;AI trigger used triggerall = Statetype != A ;Player is not in the air triggerall = P2statetype != C ;Player is not crouching triggerall = Statetype = S ;Player is currently standing triggerall = P2Movetype = A ;Opponent is attacking triggerall = Pos Y != [-1,-999] triggerall = ctrl = 1 trigger1 = random <= 800 ;triggers at 80% probability value = 130 ;Default standing guard state ; ============================= ; AI Stand to Crouch Guard Transition ; ============================= [State -1] type = ChangeState triggerall = var(20) = 1 triggerall = StateType != A triggerall = P2statetype = C triggerall = P2Movetype = A triggerall = Pos Y != [-1,-999] trigger1 = stateno = 150 trigger1 = 1 value = 152 ; ============================= ; AI Crouching Guard ; ============================= [State -1] type = ChangeState triggerall = var(20) = 1 triggerall = StateType != A triggerall = P2statetype = C triggerall = P2Movetype = A triggerall = Pos Y != [-1,-999] triggerall = ctrl = 1 trigger1 = random <= 800 value = 131 ; ============================= ; AI Crouch to Stand Guard Transition ; ============================= [State -1] type = ChangeState triggerall = var(20) = 1 triggerall = Statetype != A triggerall = P2statetype != C triggerall = P2Movetype = A trigger1 = 1 trigger1 = stateno = 152 value = 150 ; ============================= ; AI Aerial Guard ; ============================= [State -1] type = ChangeState triggerall = var(20) = 1 triggerall = Statetype = A triggerall = P2Movetype = A triggerall = ctrl = 1 trigger1 = random <= 800 value = 132 [State -1, cpu lava] type = ChangeState value = 6050 triggerall = var(20) = 1 triggerall = statetype = S triggerall = statetype != L triggerall = movetype != H triggerall = P2life != 0 triggerall = life <= 500 triggerall = power = 3000 trigger1 = (ctrl = 1) && (random <= 700) [State -1, cpu smash] type = ChangeState value = 7864 triggerall = var(20) = 1 triggerall = statetype = S triggerall = statetype != L triggerall = movetype != H triggerall = P2life != 0 trigger1 = numhelper(8997) = 1 triggerall = p2dist x > 20 triggerall = p2dist x < 75 trigger1 = (ctrl = 1) && (random <= 15) trigger2 = numhelper(8919) = 1 trigger2 = (ctrl = 1) && (random <= 15) ;Standing Strong Kick ;立ち強キック [State -1, cpu triple shot] type = ChangeState value = 7914 triggerall = var(20) = 1 triggerall = statetype = S triggerall = statetype != L triggerall = movetype != H triggerall = P2life != 0 triggerall = p2dist x > 200 trigger1 = numhelper(8997) = 1 trigger2 = numhelper(8919) = 1 trigger1 = (ctrl = 1) && (random <= 15) trigger2 = (ctrl = 1) && (random <= 15) [State -1, cpu Jump light dpunch] type = ChangeState value = 7995 triggerall = var(20) = 1 triggerall = statetype = A triggerall = statetype != L triggerall = movetype != H triggerall = P2life != 0 triggerall = numproj = 0 triggerall = p2dist x < 10 triggerall = p2dist x >-10 triggerall = p2dist y > 0 trigger1 = numhelper(8997) = 1 trigger2 = numhelper(8919) = 1 trigger1 = (ctrl = 1) && (random <= 15) trigger2 = (ctrl = 1) && (random <= 15) [State -1, cpu Jump light punch] type = ChangeState value = 7996 triggerall = var(20) = 1 triggerall = statetype = A triggerall = statetype != L triggerall = movetype != H triggerall = P2life != 0 triggerall = numproj = 0 triggerall = p2dist y > 0 trigger1 = numhelper(8997) = 1 trigger2 = numhelper(8919) = 1 trigger1 = (ctrl = 1) && (random <= 15) trigger2 = (ctrl = 1) && (random <= 15) [State -1, cpu Standing light punch] type = ChangeState value = 7997 triggerall = var(20) = 1 triggerall = statetype = S triggerall = statetype != L triggerall = movetype != H triggerall = P2life != 0 triggerall = numproj = 0 triggerall = p2dist x > 50 triggerall = p2dist y > -25 trigger1 = numhelper(8997) = 1 trigger2 = numhelper(8919) = 1 trigger1 = (ctrl = 1) && (random <= 15) trigger2 = (ctrl = 1) && (random <= 15) [State -1, cpu throw] type = ChangeState value = 830 triggerall = var(20) = 1 triggerall = statetype = S triggerall = statetype != L triggerall = movetype != H triggerall = P2life != 0 triggerall = p2dist x < 75 triggerall = p2dist y > -25 trigger1 = numhelper(8997) = 1 trigger2 = numhelper(8919) = 1 trigger1 = (ctrl = 1) && (random <= 15) trigger2 = (ctrl = 1) && (random <= 15) [State -1, cpu throw] type = ChangeState value = 800 triggerall = var(20) = 1 triggerall = statetype = S triggerall = statetype != L triggerall = movetype != H triggerall = P2life != 0 triggerall = p2dist x < 75 triggerall = p2dist y > -25 trigger1 = (ctrl = 1) && (random <= 15) ;Standing Strong Kick ;立ち強キック [State -1, cpu taunt] type = ChangeState value = 8999 triggerall = var(20) = 1 triggerall = statetype = S triggerall = statetype != L triggerall = movetype != H triggerall = P2life != 0 triggerall = power > 1499 trigger1 = p2dist x > 300 && random <= 25 trigger2 = (P2statetype = L) && (ctrl = 1) ;Standing Strong Kick ;立ち強キック [State -1, cpu taunt] type = ChangeState value = 8998 triggerall = var(20) = 1 triggerall = statetype = S triggerall = statetype != L triggerall = movetype != H triggerall = P2life != 0 triggerall = power > 749 trigger1 = p2dist x > 300 && random <= 25 trigger2 = (P2statetype = L) && (ctrl = 1) ;Standing Strong Kick ;立ち強キック [State -1, cpu triple shot] type = ChangeState value = 8964 triggerall = var(20) = 1 triggerall = statetype = S triggerall = statetype != L triggerall = movetype != H triggerall = P2life != 0 triggerall = p2dist x > 200 triggerall = numhelper(8997) < 1 triggerall = numhelper(8919) < 1 trigger1 = (ctrl = 1) && (random <= 15) ;Standing Strong Kick ;立ち強キック [State -1, triple shot] type = ChangeState value = 8554 triggerall = var(20) = 1 triggerall = statetype = S triggerall = statetype != L triggerall = movetype != H triggerall = P2life != 0 triggerall = numproj = 0 triggerall = p2dist x > 50 triggerall = p2dist y > -25 triggerall = numhelper(8997) < 1 triggerall = numhelper(8919) < 1 trigger1 = (ctrl = 1) && (random <= 15) [State -1, cpu smash] type = ChangeState value = 7864 triggerall = statetype = S triggerall = command = "shen_y" triggerall = ctrl trigger1 = numhelper(8997) = 1 trigger2 = numhelper(8919) = 1 ;Standing Strong Kick ;立ち強キック [State -1, smash] type = ChangeState value = 8864 triggerall = command = "shen_y" triggerall = statetype = S trigger1 = ctrl ;=========================================================================== ;--------------------------------------------------------------------------- ;Run Fwd ;ダッシュ [State -1, Run Fwd] type = ChangeState value = 100 trigger1 = command = "FF" trigger1 = statetype = S trigger1 = ctrl ;--------------------------------------------------------------------------- ;Run Back ;後退ダッシュ [State -1, Run Back] type = ChangeState value = 105 trigger1 = command = "BB" trigger1 = statetype = S trigger1 = ctrl ;--------------------------------------------------------------------------- ;=========================================================================== ;Standing Strong Kick ;立ち強キック [State -1, lava] type = ChangeState value = 6050 triggerall = command = "f" triggerall = statetype = S triggerall = power > 0 trigger1 = ctrl ;Standing Strong Kick ;立ち強キック [State -1, smash] type = ChangeState value = 7864 triggerall = command = "shen_y" triggerall = statetype = S trigger1 = numhelper(8997) = 1 trigger2 = numhelper(8919) = 1 trigger1 = ctrl ;Standing Strong Kick ;立ち強キック [State -1, triple shot] type = ChangeState value = 7914 triggerall = command = "as_c" triggerall = statetype = S trigger1 = numhelper(8997) = 1 trigger2 = numhelper(8919) = 1 trigger1 = ctrl ;Jump Strong Kick ;空中強キック [State -1, Jump light dpunch] type = ChangeState value = 7995 triggerall = command = "shoot" triggerall = numproj = 0 trigger1 = numhelper(8997) = 1 trigger2 = numhelper(8919) = 1 trigger2 = statetype = A trigger1 = statetype = A trigger1 = ctrl ;Jump Strong Kick ;空中強キック [State -1, Jump light punch] type = ChangeState value = 7996 triggerall = command = "x" triggerall = numproj = 0 triggerall = statetype != S trigger1 = numhelper(8997) = 1 trigger2 = numhelper(8919) = 1 trigger1 = statetype = A trigger2 = statetype = A trigger1 = ctrl ;Standing Strong Kick ;立ち強キック [State -1, Standing light punch] type = ChangeState value = 7997 triggerall = command = "x" triggerall = numproj = 0 trigger1 = numhelper(8997) = 1 trigger2 = numhelper(8919) = 1 trigger1 = statetype = S trigger2 = statetype = S trigger1 = ctrl [State -1, throw] type = ChangeState value = 830 triggerall = command = "m" triggerall = statetype = S trigger1 = numhelper(8997) = 1 trigger2 = numhelper(8919) = 1 trigger1 = ctrl [State -1, throw] type = ChangeState value = 800 triggerall = command = "m" triggerall = statetype = S trigger1 = ctrl ;Standing Strong Kick ;立ち強キック [State -1, taunt] type = ChangeState value = 8999 triggerall = command = "k" triggerall = statetype = S triggerall = power > 0 trigger1 = ctrl ;Standing Strong Kick ;立ち強キック [State -1, taunt] type = ChangeState value = 8998 triggerall = command = "c" triggerall = statetype = S triggerall = power > 749 trigger1 = ctrl ;Standing Strong Kick ;立ち強キック [State -1, triple shot] type = ChangeState value = 8964 triggerall = command = "as_c" triggerall = statetype = S trigger1 = ctrl ;Standing Strong Kick ;立ち強キック [State -1, triple shot] type = ChangeState value = 8554 triggerall = command = "a" triggerall = numproj = 0 triggerall = statetype = S triggerall = numhelper(8997) < 1 triggerall = numhelper(8919) < 1 trigger1 = ctrl ;Standing Strong Kick ;立ち強キック [State -1, smash] type = ChangeState value = 8864 triggerall = command = "shen_y" triggerall = statetype = S trigger1 = ctrl ;--------------------------------------------------------------------------- ;Standing Strong Kick ;立ち強キック [State -1, Standing light punch] type = ChangeState value = 241 triggerall = command = "x" triggerall = command != "holddown" triggerall = numproj = 0 trigger1 = statetype = S trigger1 = ctrl trigger2 = (stateno = 200) && time > 5 trigger3 = (stateno = 230) && time > 6 ;--------------------------------------------------------------------------- ;Stand Strong Punch ;立ち強パンチ [State -1, Stand Strong Punch] type = ChangeState value = 210 triggerall = command = "y" triggerall = command != "holddown" trigger1 = statetype = S trigger1 = ctrl trigger2 = (stateno = 200) && time > 5 trigger3 = (stateno = 230) && time > 6 ;--------------------------------------------------------------------------- ;Standing Strong Kick ;立ち強キック [State -1, Standing Strong Kick] type = ChangeState value = 240 triggerall = command = "z" triggerall = command != "holddown" trigger1 = statetype = S trigger1 = ctrl trigger2 = (stateno = 200) && time > 5 trigger3 = (stateno = 230) && time > 6 ;--------------------------------------------------------------------------- ;Crouching Strong Punch ;しゃがみ強パンチ [State -1, Crouching light Punch] type = ChangeState value = 405 triggerall = command = "x" triggerall = command = "holddown" triggerall = numhelper(8997) < 1 triggerall = numhelper(8919) < 1 trigger1 = statetype = C trigger1 = ctrl trigger2 = (stateno = 400) || (stateno = 430) trigger2 = (time > 9) || (movecontact && time > 5) ;--------------------------------------------------------------------------- ;Crouching Strong Punch ;しゃがみ強パンチ [State -1, Crouching Strong Punch] type = ChangeState value = 410 triggerall = command = "y" triggerall = command = "holddown" trigger1 = statetype = C trigger1 = ctrl trigger2 = (stateno = 400) || (stateno = 430) trigger2 = (time > 9) || (movecontact && time > 5) ;--------------------------------------------------------------------------- ;Crouching Strong Kick ;しゃがみ強キック [State -1, Crouching Strong Kick] type = ChangeState value = 440 triggerall = command = "z" triggerall = command = "holddown" trigger1 = statetype = C trigger1 = ctrl trigger2 = (stateno = 400) || (stateno = 430) trigger2 = (time > 9) || (movecontact && time > 5) ;--------------------------------------------------------------------------- ;Jump Strong Kick ;空中強キック [State -1, Jump light dtpunch] type = ChangeState value = 8764 triggerall = command = "triple" triggerall = numhelper(8997) < 1 triggerall = numhelper(8919) < 1 trigger1 = statetype = A trigger1 = ctrl ;Jump Strong Kick ;空中強キック [State -1, Jump light tpunch] type = ChangeState value = 8454 triggerall = command = "shen_z" triggerall = numhelper(8997) < 1 triggerall = numhelper(8919) < 1 trigger1 = statetype = A trigger1 = ctrl ;Jump Strong Kick ;空中強キック [State -1, Jump light dpunch] type = ChangeState value = 8564 triggerall = command = "shoot" trigger1 = statetype = A trigger1 = ctrl trigger2 = stateno = 600 || stateno = 630 ;jump_x or jump_a trigger2 = movecontact ;Jump Strong Kick ;空中強キック [State -1, Jump light punch] type = ChangeState value = 600 triggerall = command = "x" trigger1 = statetype = A trigger1 = ctrl trigger2 = stateno = 600 || stateno = 630 ;jump_x or jump_a trigger2 = movecontact ;--------------------------------------------------------------------------- ;Jump Strong Punch [State -1, Jump Strong Punch] type = ChangeState value = 610 triggerall = command = "y" trigger1 = statetype = A trigger1 = ctrl trigger2 = movecontact ;--------------------------------------------------------------------------- ;Jump Strong Kick ;空中強キック [State -1, Jump Strong Kick] type = ChangeState value = 640 triggerall = command = "z" triggerall = stateno != 8342 triggerall = stateno != 8343 triggerall = stateno != 8344 trigger1 = statetype = A trigger1 = ctrl trigger2 = stateno = 600 || stateno = 630 ;jump_x or jump_a trigger2 = movecontact