Advertisement
XpecV52

DancePlayerInteraction

Nov 21st, 2021 (edited)
1,603
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. class DancePlayerInteraction extends Interaction;
  2.  
  3. const NUM_EMOJI_ANIMS = 53;
  4. var const name EMAnims[53];
  5. var const string EMAbbrevs[53];
  6. var enum EmojiMenuState
  7. {
  8.     EMS_Main,
  9.     EMS_DancingVol_1,
  10.     EMS_DancingVol_2,
  11.     EMS_GesturingVol_1,
  12.     EMS_GesturingVol_2,
  13.     EMS_GesturingVol_3,
  14.     EMS_Fighting
  15. } EMState, PreviousStateName;
  16.  
  17. var Mutator Mut;
  18. var float EMLineSpace;
  19. var bool bIgnoreKeys;
  20. var int HighlightRow;
  21. var Sound EMOpenSound, EMAcceptSound, EMDenySound;
  22. var EInputKey LetterKeys[10];
  23. var EInputKey NumberKeys[10];
  24. var int EMOffset;
  25. var string EMMoreString;
  26. var name EMAnimArray[10];
  27. var string EMNameArray[10];
  28. var int EMIndexArray[10];
  29. var int EMArraySize;
  30. var float EMOriginX, EMOriginY, EMMargin, EMTab;
  31. var string EMStateName[10];
  32. var bool bEmojiMenuUseLetters, bEmojiMenuUseMouseWheel;
  33.  
  34. event NotifyLevelChange()
  35. {
  36.     Master.RemoveInteraction(self);
  37. }
  38.  
  39. exec function EmojiMenuToggle()
  40. {
  41.     if(ViewportOwner == none || ViewportOwner.Actor == none || ViewportOwner.Actor.Pawn == none)
  42.     {
  43.         return;
  44.     }
  45.     GotoState('EmojiMenuVisible');
  46. }
  47.  
  48. function PlayConsoleSound(Sound Sound)
  49. {
  50.     if(ViewportOwner == none || ViewportOwner.Actor == none || ViewportOwner.Actor.Pawn == none)
  51.         return;
  52.  
  53.     ViewportOwner.Actor.ClientPlaySound(Sound);
  54. }
  55.  
  56. state EmojiMenuVisible
  57. {
  58.     /* exec function EmojiMenuToggle()
  59.     {
  60.         GotoState('');
  61.     } */
  62.  
  63.     function bool KeyType(EInputKey Key, optional string Unicode)
  64.     {
  65.         if (bIgnoreKeys)
  66.             return true;
  67.  
  68.         return false;
  69.     }
  70.  
  71.     function RebuildEMArray()
  72.     {
  73.         switch(EMState)
  74.         {
  75.             case EMS_Main:
  76.                 BuildEMMainArray(7);
  77.                 break;
  78.             case EMS_DancingVol_1:
  79.                 BuildEMStateArray(0, 9);
  80.                 break;
  81.             case EMS_DancingVol_2:
  82.                 BuildEMStateArray(9, 9);
  83.                 break;
  84.             case EMS_GesturingVol_1:
  85.                 BuildEMStateArray(18, 9);
  86.                 break;
  87.             case EMS_GesturingVol_2:
  88.                 BuildEMStateArray(27, 9);
  89.                 break;
  90.             case EMS_GesturingVol_3:
  91.                 BuildEMStateArray(36, 9);
  92.                 break;
  93.             case EMS_Fighting:
  94.                 BuildEMStateArray(45, 8);
  95.                 break;
  96.         }
  97.     }
  98.  
  99.     function BuildEMMainArray(int Length)
  100.     {
  101.         local int i;
  102.         local KFPlayerReplicationInfo KFRepInfo;
  103.  
  104.         EMOffset = 0;
  105.         EMArraySize = 0;
  106.         KFRepInfo = KFPlayerReplicationInfo(ViewportOwner.Actor.PlayerReplicationInfo);
  107.  
  108.         for(i=1;i < Length;i++)
  109.         {
  110.             EMNameArray[EMArraySize] = EMStateName[i];
  111.             EMIndexArray[EMArraySize] = i;
  112.             EMArraySize++;
  113.         }
  114.     }
  115.  
  116.     // Build emojiCommands array
  117.     function BuildEMStateArray(int Index, int Length)
  118.     {
  119.         local int i;
  120.         local KFGameReplicationInfo KFGameRep;
  121.         local KFPlayerReplicationInfo KFPlayerRep;
  122.  
  123.         if(DancePlayerMut(Mut) == none)
  124.             return;
  125.  
  126.         KFGameRep = KFGameReplicationInfo(ViewportOwner.Actor.GameReplicationInfo);
  127.         KFPlayerRep =  KFPlayerReplicationInfo(ViewportOwner.Actor.PlayerReplicationInfo);
  128.         EMArraySize = 0;
  129.         PreviousStateName = EMS_Main;
  130.  
  131.         for(i=0;i < Length;i++)
  132.         {
  133.             EMAnimArray[EMArraySize] = DancePlayerMut(Mut).EMAnims[i];
  134.             EMNameArray[EMArraySize] = DancePlayerMut(Mut).EMAbbrevs[i];
  135.             EMIndexArray[EMArraySize] = i;
  136.             EMArraySize++;
  137.         }
  138.     }
  139.  
  140.     function EnterState(EmojiMenuState NewState, optional bool bNoSound)
  141.     {
  142.         EMState = NewState;
  143.         RebuildEMArray();
  144.         if(!bNoSound)
  145.         {
  146.             PlayConsoleSound(EMAcceptSound);
  147.         }
  148.     }
  149.  
  150.     function LeaveState()
  151.     {
  152.         PlayConsoleSound(EMDenySound);
  153.         if(EMState == EMS_Main)
  154.         {
  155.             GotoState('');
  156.         }
  157.         else
  158.         {
  159.             EnterState(PreviousStateName, true);
  160.         }
  161.     }
  162.  
  163.     function HandleInput(int keyIn)
  164.     {
  165.         local int selectIndex;
  166.         local KFPlayerReplicationInfo KFPRI;
  167.         local bool bInVehicle;
  168.  
  169.         if(keyIn == -1)
  170.         {
  171.             LeaveState();
  172.             HighlightRow = 0;
  173.             return;
  174.         }
  175.  
  176.         if(EMState == EMS_Main)
  177.         {
  178.             KFPRI = KFPlayerReplicationInfo(ViewportOwner.Actor.PlayerReplicationInfo);
  179.             if((ViewportOwner.Actor.Pawn != none) && ViewportOwner.Actor.Pawn.IsA('KFVehicle') || ViewportOwner.Actor.Pawn.IsA('KFVehicleWeaponPawn'))
  180.             {
  181.                 bInVehicle = true;
  182.             }
  183.             else
  184.             {
  185.                 bInVehicle = false;
  186.             }
  187.             switch(keyIn)
  188.             {
  189.                 case 1:
  190.                     // SMType = 'SUPPORT';
  191.                     EnterState(EMS_DancingVol_1);
  192.                     break;
  193.                 case 2:
  194.                     EnterState(EMS_DancingVol_2);
  195.                     break;
  196.                 case 3:
  197.                     EnterState(EMS_GesturingVol_1);
  198.                     break;
  199.                 case 4:
  200.                     EnterState(EMS_GesturingVol_2);
  201.                     break;
  202.                 case 5:
  203.                     EnterState(EMS_GesturingVol_3);
  204.                     break;
  205.                 case 6:
  206.                     EnterState(EMS_Fighting);
  207.                     break;
  208.                 // default:
  209.                 //     return;
  210.                 }
  211.             return;
  212.         }
  213.  
  214.         if(keyIn == 0)
  215.         {
  216.             if(EMArraySize - EMOffset > 9 && EMArraySize != 10)
  217.             {
  218.                 EMOffset += 9;
  219.                 return;
  220.             }
  221.             keyIn = 10;
  222.         }
  223.         if(keyIn == -2)
  224.         {
  225.             EMOffset = Max(EMOffset - 9, 0);
  226.             return;
  227.         }
  228.         selectIndex = EMOffset + keyIn - 1;
  229.         if(selectIndex < 0 || selectIndex >= EMArraySize)
  230.         {
  231.             return;
  232.         }
  233.  
  234.         if(DanceHumanPawn(ViewportOwner.Actor.Pawn) != none)
  235.         {
  236.             DanceHumanPawn(ViewportOwner.Actor.Pawn).EmojiTrigger(EMAnimArray[EMIndexArray[selectIndex]]);
  237.         }
  238.         PlayConsoleSound(EMAcceptSound);
  239.         GotoState('');
  240.     }
  241.  
  242.     function string NumberToString(int Num)
  243.     {
  244.         local EInputKey Key;
  245.  
  246.         if((Num < 0) || Num > 9)
  247.         {
  248.             return "";
  249.         }
  250.         if(bEmojiMenuUseLetters)
  251.         {
  252.             Key = LetterKeys[Num];
  253.         }
  254.         else
  255.         {
  256.             Key = NumberKeys[Num];
  257.         }
  258.         return ViewportOwner.Actor.ConsoleCommand("LOCALIZEDKEYNAME" @ string(Key));
  259.     }
  260.  
  261.     function DrawNumbers(Canvas Canvas, int NumNums, bool bIncZero, bool bSizing, out float XMax, out float YMax)
  262.     {
  263.         local int i;
  264.         local float XPos, YPos, XL, YL;
  265.  
  266.         XPos = Canvas.ClipX * (EMOriginX + EMMargin);
  267.         YPos = Canvas.ClipY * (EMOriginY + EMMargin);
  268.         Canvas.SetDrawColor(128,255,128,255);
  269.         for(i=0;i < NumNums;i++)
  270.         {
  271.             Canvas.SetPos(XPos, YPos);
  272.             if(!bSizing)
  273.             {
  274.                 Canvas.DrawText(NumberToString(i+1)$"-", false);
  275.             }
  276.             else
  277.             {
  278.                 Canvas.TextSize(NumberToString(i+1)$"-", XL, YL);
  279.                 XMax = Max(XMax, XPos + XL);
  280.                 YMax = Max(YMax, YPos + YL);
  281.             }
  282.             YPos += EMLineSpace;
  283.         }
  284.         if(bIncZero)
  285.         {
  286.             Canvas.SetPos(XPos, YPos);
  287.             if(!bSizing)
  288.             {
  289.                 Canvas.DrawText(NumberToString(0)$"-", false);
  290.             }
  291.             if(EMArraySize != 10)
  292.             {
  293.                 XPos += EMTab;
  294.                 Canvas.SetPos(XPos, YPos);
  295.                 if(!bSizing)
  296.                 {
  297.                     Canvas.DrawText(EMMoreString, false);
  298.                 }
  299.                 else
  300.                 {
  301.                     Canvas.TextSize(EMMoreString, XL, YL);
  302.                     XMax = Max(XMax, XPos + XL);
  303.                     YMax = Max(YMax, YPos + YL);
  304.                 }
  305.             }
  306.         }
  307.     }
  308.  
  309.     function DrawCurrentArray(Canvas Canvas, bool bSizing, out float XMax, out float YMax)
  310.     {
  311.         local int i, stopAt;
  312.         local float XPos, YPos, XL, YL;
  313.  
  314.         XPos = Canvas.ClipX * (EMOriginX + EMMargin) + EMTab;
  315.         YPos = Canvas.ClipY * (EMOriginY + EMMargin);
  316.         Canvas.SetDrawColor(byte(255), byte(255), byte(255), byte(255));
  317.         if(EMArraySize == 10)
  318.         {
  319.             stopAt = Min(EMOffset + 10, EMArraySize);
  320.         }
  321.         else
  322.         {
  323.             stopAt = Min(EMOffset + 9, EMArraySize);
  324.         }
  325.  
  326.         for(i = EMOffset;i < stopAt;i++)
  327.         {
  328.             Canvas.SetPos(XPos, YPos);
  329.             if(!bSizing)
  330.             {
  331.                 Canvas.DrawText(EMNameArray[i], false);
  332.             }
  333.             else
  334.             {
  335.                 Canvas.TextSize(EMNameArray[i], XL, YL);
  336.                 XMax = Max(XMax, XPos + XL);
  337.                 YMax = Max(YMax, YPos + YL);
  338.             }
  339.             YPos += EMLineSpace;
  340.         }
  341.     }
  342.  
  343.     function int KeyToNumber(EInputKey InKey)
  344.     {
  345.         local int i;
  346.  
  347.         for(i=0;i < 10;i++)
  348.         {
  349.             if(bEmojiMenuUseLetters)
  350.             {
  351.                 if(InKey == LetterKeys[i])
  352.                 {
  353.                     return i;
  354.                 }
  355.             }
  356.             if(InKey == NumberKeys[i])
  357.             {
  358.                 return i;
  359.             }
  360.         }
  361.         return -1;
  362.     }
  363.  
  364.     function bool KeyEvent(EInputKey Key, EInputAction Action, float Delta)
  365.     {
  366.         local int Input, NumNums;
  367.  
  368.         NumNums = Min(EMArraySize - EMOffset, 10);
  369.  
  370.         if(Action == IST_Press)
  371.         {
  372.             bIgnoreKeys = false;
  373.         }
  374.         if(Action != IST_Press)
  375.         {
  376.             return false;
  377.         }
  378.         if(Key == IK_Escape)
  379.         {
  380.             HandleInput(-1);
  381.             return true;
  382.         }
  383.         Input = KeyToNumber(Key);
  384.         if(Input != -1)
  385.         {
  386.             HandleInput(Input);
  387.             return true;
  388.         }
  389.         if(!bEmojiMenuUseMouseWheel)
  390.         {
  391.             return false;
  392.         }
  393.  
  394.         if(Key == IK_MouseWheelUp)
  395.         {
  396.             if((HighlightRow == 0) && EMOffset > 0)
  397.             {
  398.                 HandleInput(-2);
  399.                 HighlightRow = 9;
  400.             }
  401.             else
  402.             {
  403.                 HighlightRow = Max(HighlightRow - 1, 0);
  404.             }
  405.             return true;
  406.         }
  407.         else
  408.         {
  409.             if(Key == IK_MouseWheelDown)
  410.             {
  411.                 if((HighlightRow == 9) && EMArraySize != 10)
  412.                 {
  413.                     HandleInput(0);
  414.                     HighlightRow = 0;
  415.                 }
  416.                 else
  417.                 {
  418.                     HighlightRow = Min(HighlightRow + 1, NumNums - 1);
  419.                 }
  420.                 return true;
  421.             }
  422.             else
  423.             {
  424.                 if(Key == IK_MiddleMouse)
  425.                 {
  426.                     Input = HighlightRow + 1;
  427.                     if(Input == 10)
  428.                     {
  429.                         Input = 0;
  430.                     }
  431.                     HandleInput(Input);
  432.                     HighlightRow = 0;
  433.                     return true;
  434.                 }
  435.             }
  436.         }
  437.         return false;
  438.     }
  439.  
  440.     function PostRender(Canvas Canvas)
  441.     {
  442.         local float XL, YL;
  443.         local int SelLeft, i;
  444.         local float XMax, YMax;
  445.  
  446.         Canvas.Font = class'UT2MidGameFont'.static.GetMidGameFont(int(Canvas.ClipX));
  447.  
  448.         XMax = 0.0;
  449.         YMax = 0.0;
  450.         for(i=0;i < 20;i++)
  451.         {
  452.             Canvas.TextSize(NumberToString(i)$"- ", XL, YL);
  453.             XMax = Max(XMax, XL);
  454.             YMax = Max(YMax, YL);
  455.         }
  456.  
  457.         EMLineSpace = YMax * 1.10;
  458.         EMTab = XMax;
  459.  
  460.         SelLeft = EMArraySize - EMOffset;
  461.  
  462.         XMax = 0.0;
  463.         YMax = 0.0;
  464.         DrawNumbers(Canvas, Min(SelLeft, 9), SelLeft > 9, true, XMax, YMax);
  465.         DrawCurrentArray(Canvas, true, XMax, YMax);
  466.         Canvas.TextSize(EMStateName[EMState], XL, YL);
  467.         XMax = float(Max(int(XMax), int((Canvas.ClipX * (EMOriginX + EMMargin)) + XL)));
  468.         YMax = float(Max(int(YMax), int(((Canvas.ClipY * EMOriginY) - (1.20 * EMLineSpace)) + YL)));
  469.  
  470.         XMax -= (Canvas.ClipX * EMOriginX);
  471.         YMax -= (Canvas.ClipY * EMOriginY);
  472.         Canvas.SetDrawColor(139, 28, 28, byte(255));
  473.         Canvas.SetPos(Canvas.ClipX * EMOriginX, Canvas.ClipY * EMOriginY);
  474.         Canvas.DrawTileStretched(texture'Thin_border_SlightTransparent', XMax + (EMMargin * Canvas.ClipX), YMax + (EMMargin * Canvas.ClipY));
  475.  
  476.         if(bEmojiMenuUseMouseWheel)
  477.         {
  478.             Canvas.SetDrawColor(byte(255), 202, 180, 128);
  479.             Canvas.SetPos(Canvas.ClipX * EMOriginX, (Canvas.ClipY * (EMOriginY + EMMargin)) + (EMLineSpace * (float(HighlightRow) - 0.10)));
  480.             Canvas.DrawTileStretched(texture'Thin_border_SlightTransparent', XMax + (EMMargin * Canvas.ClipX), 1.10 * EMLineSpace);
  481.         }
  482.  
  483.         DrawNumbers(Canvas, Min(SelLeft, 9), SelLeft > 9, false, XMax, YMax);
  484.         DrawCurrentArray(Canvas, false, XMax, YMax);
  485.         Canvas.SetDrawColor(139, 28, 28, byte(255));
  486.         Canvas.SetPos(Canvas.ClipX * EMOriginX, (Canvas.ClipY * EMOriginY) - (1.50 * EMLineSpace));
  487.         Canvas.DrawTileStretched(texture'Thin_border_SlightTransparent', XMax + (EMMargin * Canvas.ClipX), 1.50 * EMLineSpace);
  488.         Canvas.SetDrawColor(byte(255), byte(255), 128, byte(255));
  489.         Canvas.SetPos(Canvas.ClipX * (EMOriginX + EMMargin), (Canvas.ClipY * EMOriginY) - (1.20 * EMLineSpace));
  490.         // Canvas.DrawText(EMStateName(EMState));
  491.         Canvas.DrawText(EMStateName[EMState]);
  492.     }
  493.  
  494.     function BeginState()
  495.     {
  496.         bVisible = true;
  497.         bIgnoreKeys = true;
  498.         HighlightRow = 0;
  499.         EnterState(EMS_Main, true);
  500.         PlayConsoleSound(EMOpenSound);
  501.     }
  502.  
  503.     function EndState()
  504.     {
  505.         bVisible = false;
  506.         // bCtrl = false;
  507.  
  508.         // PRIs.Length = 0;
  509.     }
  510.  
  511.     event NotifyLevelChange()
  512.     {
  513.         global.NotifyLevelChange();
  514.         GotoState('');
  515.     }
  516.     // stop;    
  517. }
  518.  
  519. defaultproperties
  520. {
  521.     EMOpenSound=Sound'KF_MenuSnd.Generic.msfxEdit'
  522.     EMAcceptSound=Sound'KF_MenuSnd.Generic.msfxMouseClick'
  523.     EMDenySound=Sound'KF_MenuSnd.MainMenu.CharFade'
  524.     LetterKeys(0)=IK_O//81
  525.     LetterKeys(1)=IK_W//87
  526.     LetterKeys(2)=IK_E//69
  527.     LetterKeys(3)=IK_R//82
  528.     LetterKeys(4)=IK_A//65
  529.     LetterKeys(5)=IK_S//83
  530.     LetterKeys(6)=IK_D//68
  531.     LetterKeys(7)=IK_F//70
  532.     LetterKeys(8)=IK_Z//90
  533.     LetterKeys(9)=IK_X//88
  534.     NumberKeys(0)=IK_0//48
  535.     NumberKeys(1)=IK_1//49
  536.     NumberKeys(2)=IK_2//50
  537.     NumberKeys(3)=IK_3//51
  538.     NumberKeys(4)=IK_4//52
  539.     NumberKeys(5)=IK_5//53
  540.     NumberKeys(6)=IK_6//54
  541.     NumberKeys(7)=IK_7//55
  542.     NumberKeys(8)=IK_8//56
  543.     NumberKeys(9)=IK_9//57
  544.     EMMoreString="[MORE]"
  545.     EMOriginX=0.010
  546.     EMOriginY=0.5250
  547.     EMMargin=0.0150
  548.     EMStateName[0]="Emoji Menu"
  549.     EMStateName[1]="Dancing Vol. 1"
  550.     EMStateName[2]="Dancing Vol. 2"
  551.     EMStateName[3]="Gesturing Vol. 1"
  552.     EMStateName[4]="Gesturing Vol. 2"
  553.     EMStateName[5]="Gesturing Vol. 3"
  554.     EMStateName[6]="Fighting"
  555.  
  556.     EMAnims(0)="Dance_CanCan"
  557.     EMAnims(1)="Dance_Chicken"
  558.     EMAnims(2)="Dance_MaraschinoStep"
  559.     EMAnims(3)="Dance_RunningMan"
  560.     EMAnims(4)="Dance_Twerk"
  561.     EMAnims(5)="Dance_Noodle"
  562.     EMAnims(6)="Dance_Rainbow"
  563.     EMAnims(7)="Dance_Silly"
  564.     EMAnims(8)="Dance_Snake"
  565.     EMAnims(9)="Dance_Tut"
  566.     EMAnims(10)="Dance_Twist"
  567.     EMAnims(11)="Dance_RaiseTheRoof"
  568.     EMAnims(12)="Dance_Quake"
  569.     EMAnims(13)="Dance_RibPops"
  570.     EMAnims(14)="Dance_Macarena"
  571.     EMAnims(15)="Dance_Salsa"
  572.     EMAnims(16)="Dance_Shuffling"
  573.     EMAnims(17)="Dance_YMCA"
  574.     EMAnims(18)="Gesture_Summersault"
  575.     EMAnims(19)="Gesture_Dab"
  576.     EMAnims(20)="Gesture_Agony"
  577.     EMAnims(21)="Gesture_Booty"
  578.     EMAnims(22)="Gesture_Salute"
  579.     EMAnims(23)="Gesture_LookingAround"
  580.     EMAnims(24)="Gesture_Petting"
  581.     EMAnims(25)="Gesture_Patting"
  582.     EMAnims(26)="Gesture_ThroatSlash"
  583.     EMAnims(27)="Gesture_Elbow"
  584.     EMAnims(28)="Gesture_Power"
  585.     EMAnims(29)="Gesture_Victory"
  586.     EMAnims(30)="Gesture_Star"
  587.     EMAnims(31)="Gesture_JoyfulJump"
  588.     EMAnims(32)="Gesture_Waving"
  589.     EMAnims(33)="Gesture_Hello"
  590.     EMAnims(34)="Gesture_Cheering"
  591.     EMAnims(35)="Gesture_Clapping"
  592.     EMAnims(36)="Gesture_Crazy"
  593.     EMAnims(37)="Gesture_Defeated"
  594.     EMAnims(38)="Gesture_HokeyPokey"
  595.     EMAnims(39)="Gesture_No"
  596.     EMAnims(40)="Gesture_Pain"
  597.     EMAnims(41)="Gesture_Pointing"
  598.     EMAnims(42)="Gesture_Shaking"
  599.     EMAnims(43)="Gesture_Strong"
  600.     EMAnims(44)="Gesture_Whatever"
  601.     EMAnims(45)="Fight_ElbowUppercut"
  602.     EMAnims(46)="Fight_HeadButt"
  603.     EMAnims(47)="Fight_Fireball"
  604.     EMAnims(48)="Fight_IllegalElbowPunch"
  605.     EMAnims(49)="Fight_JabToElbowPunch"
  606.     EMAnims(50)="Fight_HighKick"
  607.     EMAnims(51)="Fight_PunchingBag"
  608.     EMAnims(52)="Fight_UppercutJab"
  609.  
  610.     EMAbbrevs(0)="Can Can"
  611.     EMAbbrevs(1)="Chicken"
  612.     EMAbbrevs(2)="Maraschino Step"
  613.     EMAbbrevs(3)="Running Man"
  614.     EMAbbrevs(4)="Twerk"
  615.     EMAbbrevs(5)="Noodle"
  616.     EMAbbrevs(6)="Rainbow"
  617.     EMAbbrevs(7)="Silly"
  618.     EMAbbrevs(8)="Snake"
  619.     EMAbbrevs(9)="Tut"
  620.     EMAbbrevs(10)="Twist"
  621.     EMAbbrevs(11)="Raise The Roof"
  622.     EMAbbrevs(12)="Quake"
  623.     EMAbbrevs(13)="Rib Pops"
  624.     EMAbbrevs(14)="Macarena"
  625.     EMAbbrevs(15)="Salsa"
  626.     EMAbbrevs(16)="Shuffling"
  627.     EMAbbrevs(17)="YMCA"
  628.     EMAbbrevs(18)="Summersault"
  629.     EMAbbrevs(19)="Dab"
  630.     EMAbbrevs(20)="Agony"
  631.     EMAbbrevs(21)="Booty"
  632.     EMAbbrevs(22)="Salute"
  633.     EMAbbrevs(23)="Looking Around"
  634.     EMAbbrevs(24)="Petting"
  635.     EMAbbrevs(25)="Patting"
  636.     EMAbbrevs(26)="Throat Slash"
  637.     EMAbbrevs(27)="Elbow"
  638.     EMAbbrevs(28)="Power"
  639.     EMAbbrevs(29)="Victory"
  640.     EMAbbrevs(30)="Star"
  641.     EMAbbrevs(31)="Joyful Jump"
  642.     EMAbbrevs(32)="Waving"
  643.     EMAbbrevs(33)="Hello"
  644.     EMAbbrevs(34)="Cheering"
  645.     EMAbbrevs(35)="Clapping"
  646.     EMAbbrevs(36)="Crazy"
  647.     EMAbbrevs(37)="Defeated"
  648.     EMAbbrevs(38)="Hokey Pokey"
  649.     EMAbbrevs(39)="No"
  650.     EMAbbrevs(40)="Pain"
  651.     EMAbbrevs(41)="Pointing"
  652.     EMAbbrevs(42)="Shaking"
  653.     EMAbbrevs(43)="Strong"
  654.     EMAbbrevs(44)="Whatever"
  655.     EMAbbrevs(45)="Elbow Uppercut"
  656.     EMAbbrevs(46)="Head Butt"
  657.     EMAbbrevs(47)="Fireball"
  658.     EMAbbrevs(48)="Illegal Elbow Punch"
  659.     EMAbbrevs(49)="Jab To Elbow Punch"
  660.     EMAbbrevs(50)="High Kick"
  661.     EMAbbrevs(51)="Punching Bag"
  662.     EMAbbrevs(52)="Uppercut Jab"
  663.  
  664.     bEmojiMenuUseMouseWheel=true
  665. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement