Advertisement
Owyn

Owyn's UI mods for TERA online

May 24th, 2016
6,403
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. original mods thread on forum of RU-Tera - http://forum.tera-online.ru/topic/22838/
  2. new english thread - https://www.undertow.club/threads/owyns-tera-ui-mods-elin-gunner-update.11709/
  3.  
  4. software used: FFDEC, WinHex, TeraHelper ( https://github.com/GoneUp/GPK_RePack/releases ), UTHelper, Paint.net
  5.  
  6. example tutorial on using FFDEC+terahelper to do code edits: https://github.com/neowutran/S1UI_chat2/wiki
  7.  
  8.  
  9. // some swf specs: // http://www-lehre.inf.uos.de/~fbstark/diplom/docs/swf/BasicTypes.htm
  10.  
  11. The ScaleX, ScaleY, RotateSkew0 and RotateSkew1 fields are stored as 16.16 fixed-point values.  
  12. The TranslateX and TranslateY values are stored as signed values in twips.
  13.  
  14.  
  15. ///////////// S1UI_Message
  16.  
  17. disable lock-on message when you use a lock skill
  18. replace:
  19. else if(type == 44) // line 551
  20. {
  21.     mLockOn.id = id;
  22.     totalMsg_array.push(mLockOn);
  23.     mLockOn.mText.textField.text = msg;
  24.     mLockOn.gotoAndPlay(2);
  25.     mLockOn._visible = true;
  26. }
  27.  
  28. with
  29.  
  30. if(type == 44)
  31. {
  32.     return undefined;
  33. }
  34.  
  35. /////////////
  36.  
  37. move message when ppl lock onto you to center:
  38.  
  39. lockOnContainer._y = lib.info.AlignInfo.yRatioToPixel(70); // line 697
  40. to
  41. lockOnContainer._y = lib.info.AlignInfo.yRatioToPixel(45);
  42.  
  43. && party notice to center
  44. staticMessageContainer._y = lib.info.AlignInfo.yRatioToPixel(80);
  45. to
  46. staticMessageContainer._y = lib.info.AlignInfo.yRatioToPixel(55);
  47.  
  48. /////////////
  49.  
  50. max killed lines change
  51.  
  52. var maxBFLine = 3;
  53. to
  54. var maxBFLine = 5;
  55.  
  56. /////////////
  57.  
  58. remove skill resets (via option F disabling) and applied effects/glyphs
  59.  
  60. add after:
  61. myListener.OnGame_SystemMessage_Add = function(str, color, container, maxLine, size) { // line 725
  62.  
  63. if(!bShowType4 || str.indexOf("сброшено") == -1 && str.indexOf("reset") == -1)
  64. {
  65.   if(size == undefined || size == "undefined" || size == "")
  66.   {
  67.      if(color == undefined || color == "undefined" || color == "" || color == 0)
  68.      {
  69.         if(str.indexOf("<") < 0)
  70.         {
  71.            return undefined;
  72.         }
  73.      }
  74.   }
  75.   if(str.indexOf("получает звание") >= 0)
  76.   {
  77.      return undefined;
  78.   }
  79.   if(str.indexOf("успешно зачаровал(а)") >= 0)
  80.   {
  81.      return undefined;
  82.   }
  83.   if(str.indexOf("получил(а)") >= 0)
  84.   {
  85.      return undefined;
  86.   }
  87.   if(str.indexOf("enchanted") >= 0)
  88.   {
  89.      return undefined;
  90.   }
  91.   if(str.indexOf("obtained") >= 0)
  92.   {
  93.      return undefined;
  94.   }
  95. }
  96.  
  97. ///////////// S1UI_Message (old)
  98.  
  99. disable system messages:
  100. if(type == 1)   { ... } // Line 1637 / change to
  101.  
  102. if(type == 1)
  103. {
  104.   return undefined;
  105. }
  106. =
  107. Push register18 1
  108. Equals2
  109. Not
  110. If label
  111. Push undefined
  112. Return
  113. label:
  114.  
  115. /////////////
  116.  
  117. disable lock-on messages:
  118. if(type == 3)   { ... } // Line 1645 / change to
  119.  
  120. else if(type == 3)
  121. {
  122.   if(Arguments == "0\t26\t0xFF9900" && msg.indexOf("size=") == -1)
  123.   {
  124.      return undefined;
  125.   }
  126.   addStaticMsg(id,msg,addParam[0],addParam[1],addParam[2]);
  127. }
  128. =
  129. Push register13 "0\t26\t0xFF9900"
  130. Equals2
  131. PushDuplicate
  132. Not
  133. If label3
  134. Pop
  135. Push "size=" 1 "msg"
  136. GetVariable
  137. Push "indexOf"
  138. CallMethod
  139. Push -1
  140. Equals2
  141. label3:Not
  142. If label4
  143. Push undefined
  144. Return
  145. label4:
  146.  
  147. /////////////
  148.  
  149. add debug information:
  150. var addParam = Arguments.split("\t"); } // Line 1637 / insert before
  151.  
  152. myListener.OnGame_SystemMessage_Add(type + "\t" + Arguments + "\t" + msg,10040064,systemMessageContainer);
  153. =
  154. Push "systemMessageContainer"
  155. GetVariable
  156. Push 10040064 register18 "\t"
  157. Add2
  158. Push register13
  159. Add2
  160. Push "\t"
  161. Add2
  162. Push "msg"
  163. GetVariable
  164. Add2
  165. Push 3 "myListener"
  166. GetVariable
  167. Push "OnGame_SystemMessage_Add"
  168. CallMethod
  169. Pop
  170.  
  171. &&
  172.  
  173. _loc1_.txt.htmlText = str; // line 2184
  174. to
  175. _loc1_.txt.text = str;
  176.  
  177. /////////////
  178.  
  179. remove background:
  180.  
  181. rewardBg texture
  182.  
  183. /////////////
  184.  
  185. remove hotkey background:
  186.  
  187. Message_I113 texture
  188.  
  189. & text
  190.  
  191. Pbtn text (edit it out)
  192.  
  193. /////////////
  194.  
  195. pushBFMessage - remove BattleField kill messages
  196.  
  197.  
  198. ////////////// S1UI_Crosshair
  199.  
  200. remove lock-on animation:
  201.  
  202.  _loc1_ = container_mc.attachMovie("lockMc","lockMc",3); // Line 220
  203.  _loc1_._x = 0;
  204.  _loc1_._y = 0;
  205.  var _loc2_ = _loc1_.attachMovie("lockonMc","lockonMc",_loc1_.getNextHighestDepth());
  206.  gs.TweenLite.to(_loc2_,0.2,{_width:76,_height:76,onComplete:playLockOn,onCompleteParams:[_loc1_]});
  207.  container_mc.lockNumFd._visible = true;
  208. to
  209. *nothing*
  210. =
  211. 961000070300000008620862070300000008001c9602000819528701000117960d000401081a0600000000000000004f960d000401081b0600000000000000004f960d000600000000000000000401081752960d00086308630703000000040108195287010002179612000864074c0000000865074c000000086608671c96090008680401070100000042960500070400000043961200069999c93f9a9999990402070300000008691c960200086a4e960200086b5217
  212. to
  213. 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202
  214.  
  215. & avoid removing normal crosshair
  216. container_mc.clear(); // Line 237
  217. to
  218. *nothing*
  219. =
  220. 960b0006000000000000000008001c96020008015217
  221. to
  222. 02020202020202020202020202020202020202020202
  223.  
  224. & avoid overlapping normal crosshair with itself
  225. lib.display.DrawBitmapData.draw(container_mc,UI[type + "BgBm"],UI[type + "Pos"],UI[type + "Pos"],0,0,UI[type + "Size"],UI[type + "Size"]);
  226. to
  227. *nothing*
  228. =
  229. 96020008021c96020008031c9602000804474e96020008021c96020008031c9602000804474e96140006000000000000000006000000000000000008021c96020008031c9602000805474e96020008021c96020008031c9602000805474e96020008021c96020008031c9602000806474e96020008001c960700070800000008071c96020008084e96020008094e960200080a5217 (3rd occur only)
  230. to
  231. 0202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202
  232.  
  233.  
  234. ////////////// S1UI_Abnormality
  235.  
  236. enlarge stack count text:
  237.  
  238. <p align="right"><font face="$NumberFont" size="13" color="#ffffff" letterSpacing="0.000000" kerning="1">0</font></p> // DefineEditText(11)
  239. to
  240. <p align="right"><font face="$NumberFont" size="20" color="#ffffff" letterSpacing="0.000000" kerning="1">0</font></p>
  241. &&
  242. Ymax to 500
  243. &&
  244. fontHeight to 400
  245.  
  246. & move it a bit to top:
  247. TranslateY = 480 // PlaceObject3 (11) in DefineSprite (107)
  248. to
  249. TranslateY = 350
  250.  
  251.  
  252. change font from numberFont to normalFont: // (like it was before awekening update)
  253.  
  254. $NumberFont // Other -> importassets2 -> string=GfxFontLib.swf
  255. to
  256. $NormalFont
  257.  
  258. ///////////// S1UI_PaperDoll
  259.  
  260. make dungeon clears visible:
  261. _loc1_.countFd._visible = visibleCount == "1"; // line 2024
  262.  to
  263. _loc1_.countFd._visible = "1";
  264. =
  265. Push register1 "countFd"
  266. GetMember
  267. Push "_visible" "1"
  268. SetMember
  269.  
  270. ///////////// S1UI_EpWindow
  271.  
  272. make talents level numbers visible:
  273. container_mc.persentTxt.text = _loc2_ + "%"; // line 705
  274.  to
  275. container_mc.persentTxt.text = exp.split("\t").join(" / ") + " ( " + _loc2_ + "% )";
  276. container_mc.persentTxt.autoSize = "center";
  277.  
  278. ///////////// S1UI_PCInventory
  279.  
  280. autohide panel on character action:
  281.  
  282. container_mc.titleFd._visible = bShow; // Line 13
  283. to
  284. container_mc._visible = bShow;
  285. =
  286. 960200080B4E960400080C04
  287. to
  288. 020202020202960400080C04
  289.  
  290. /////////////
  291.  
  292. remove background:
  293.  
  294. container_mc.titleFd._visible = true; // Line 133
  295. to
  296. container_mc.titleFd._visible = false;
  297. =
  298. 4e960400080C0501
  299. to
  300. 4e960400080C0500
  301.  
  302. /////////////
  303.  
  304. remove draglimit to right:
  305.  
  306. container_mc.UIDrager.adjustDragLimit(0,3000,0,0);
  307. =
  308. Push 0 0 3000 0 4 "container_mc"
  309. GetVariable
  310. Push "UIDrager"
  311. GetMember
  312. Push "adjustDragLimit"
  313. CallMethod
  314. Pop
  315.  
  316.  
  317. ///////////// S1UI_MainMenu
  318.  
  319. invisible mainmenu border:
  320.  
  321. 4F 96 02 00 08 07 1C 12 9D 02 00 63 00 96 0B 00 08 69 07 64 00 00 00 08 42 08 3F 1C 96 02 00 08 43 4E 96 02 00 08 44 4E 96 02 00 08 45 4E 96 0C 00 08 7F 07 01 00 00 00 07 03 00 00 00 43 96 0B 00 06 33 33 D3 3F 33 33 33 33 08 08 1C 96 02 00 08 38 4E 96 07 00 07 03 00 00 00 08 3F 1C 96 02 00 08 40 4E 96 02 00 08 46 52 17 99 02 00 58 00
  322. to
  323. 4F 02 02 02 02 02 02 02 02 02 02 02 02 96 0B 00 08 69 07 00 00 00 00 08 42 08 3F 1C 96 02 00 08 43 4E 96 02 00 08 44 4E 96 02 00 08 45 4E 96 0C 00 08 7F 07 01 00 00 00 07 03 00 00 00 43 96 0B 00 06 33 33 D3 3F 33 33 33 33 08 08 1C 96 02 00 08 38 4E 96 07 00 07 03 00 00 00 08 3F 1C 96 02 00 08 40 4E 96 02 00 08 46 52 17 02 02 02 02 02
  324.  
  325. /////////////
  326.  
  327. no DragLimit for mainmenu:
  328.  
  329. to
  330. container_mc.UIDrager.adjustDragLimit(-750,3000,40,60); // Line 89
  331. =
  332. 96 1b 00 07 2e 00 00 00 07 32 00 00 00 07 ee 02 00 00 07 ee 02 00 00 07 04 00 00 00 08 08
  333. to
  334. 96 1b 00 07 3c 00 00 00 07 28 00 00 00 07 b8 0b 00 00 07 12 fd ff ff 07 04 00 00 00 08 08
  335.  
  336. /////////////
  337.  
  338. hide mainmenu pinned guide
  339.  
  340. 96020008094E960400080A0501
  341. to
  342. 96020008094E960400080A0500
  343.  
  344.  
  345. ///////////// S1UI_Chat2 (new)
  346.  
  347. inspect on shift+click on name:
  348.  
  349. inside
  350. function chatNameAction(data) // g4.view.chat.Chat
  351. change contents of condition below to this:
  352. if(_global.shift)
  353. {
  354.     g4.model.GameModel.chatModel.ToGame_Chat_SendWriting(0,"<FONT>/inspect " + _loc5_ + "</FONT>",undefined,"/inspect " + _loc5_);
  355. }
  356.  
  357. /////////////
  358.  
  359. use outlines
  360.  
  361. edit at
  362. text (100):
  363.  
  364. useoutlines 0
  365. to
  366. useoutlines 1
  367.  
  368. ////////////
  369.  
  370. enable copying of chat:
  371.  
  372. edit at
  373. text (100):
  374.  
  375. noselect 1
  376. to
  377. noselect 0
  378.  
  379. && fix underline leak bug when noselect is set to 0:
  380.  
  381. at the end of
  382. function chatNameAction(data) //  g4.view.chat.Chat
  383. add:
  384.  
  385. this.mainChat.updateWholeChat();
  386.  
  387. &
  388.  
  389. inside function configUI() // g4.view.chat.MainChat
  390. add:
  391.  
  392. _global.updateWholeChat = gfx.utils.Delegate.create(this,this.updateWholeChat);
  393.  
  394. &
  395.  
  396. at the end of
  397. function chatLinkAction(id) // g4.view.chat.ChatInput
  398. add:
  399.  
  400. _global.updateWholeChat();
  401.  
  402. &
  403. inside function setWholeChat(text) // g4.view.chat.TextArea
  404. change:
  405.  
  406. this.updateAfterTextFieldChanged(true);
  407. to
  408. this.updateAfterTextFieldChanged(false);
  409.  
  410. ///////////// S1UI_Chat2 (old)
  411.  
  412. change minimal basechat width:
  413.  
  414. 96080009??0107d0020000
  415.  
  416. to
  417.  
  418. 96080009??01072c010000
  419.  
  420. /////////////
  421.  
  422. &separate min chat width
  423. 960800093b0107fd010000
  424. to
  425. 960800093b01072c010000
  426.  
  427. /////////////
  428.  
  429. enable copying of chat:
  430.  
  431. text (105):
  432.  
  433. noselect 1
  434. to
  435. noselect 0
  436.  
  437. && fix underline leaking bug:
  438. @lines 2099, 2112, 2137, 2672 after everything add
  439.  
  440. refreshTexts();
  441. =
  442. Push 0.0 "refreshTexts"
  443. CallFunction
  444. Pop
  445.  
  446. /////////////
  447. disasble chat auto-scroll to end on opening input:
  448.  
  449. delete line 2656:
  450. sc.scroll = sc.scrollMax;
  451.  
  452. /////////////
  453.  
  454. fix large inter-line spacing:
  455.  
  456. text (105):
  457.  
  458. leading 120
  459. to
  460. leading -60
  461.  
  462. /////////////
  463.  
  464. disable shout\notice background:
  465. 04014A9608000701000000092A023D4F960C
  466. to
  467. 05000202020202020202020202020202960C
  468.  
  469. /////////////
  470.  
  471. disable shouts (rupors):
  472. 1C96030009CC014E960400087004014A9608000701000000092A023D
  473. to
  474. 1C96030009CC014E9604000870050002020202020202020202020202
  475. &
  476. SetShout
  477. to
  478. NotShout
  479.  
  480. /////////////
  481.  
  482. disable notices (events):
  483.  
  484. SetNotice
  485. to
  486. NotNotice
  487.  
  488. /////////////
  489.  
  490. change time after chat goes invisible:
  491. var invisibleSecond = 30; // Line 30
  492. to
  493. var invisibleSecond = 5;
  494. =
  495. 9607000881071e000000
  496. to
  497. 96070008810705000000
  498.  
  499. /////////////
  500.  
  501. auto-inspect (write inspect + name into chatfield) on shift\ctrl + click
  502.  
  503. getURL("FSCommand:ToGame_Chat_ClickName",name + "\t" + chatType + "\t" + strTalk + "\t" + combinationKey);  // Line 2074
  504. to
  505. container_mc.input_mc.txt.text = "/inspect " + name;
  506. myListener.OnGame_Chat_ChangeChatMode(true);
  507. =
  508. Push "container_mc"
  509. GetVariable
  510. Push "input_mc"
  511. GetMember
  512. Push "txt"
  513. GetMember
  514. Push "text" "/inspect " register1
  515. Add2
  516. SetMember
  517. Push true 1 "myListener"
  518. GetVariable
  519. Push "OnGame_Chat_ChangeChatMode"
  520. CallMethod
  521. Pop
  522.  
  523.  
  524. or - for auto-inspect right away without writing into chat:
  525. myListener.OnGame_Chat_RemakeToHtml(1,"/inspect " + name,undefined);
  526. =
  527. Push undefined "/inspect " register1
  528. Add2
  529. Push 1 3 "myListener"
  530. GetVariable
  531. Push "OnGame_Chat_RemakeToHtml"
  532. CallMethod
  533. Pop
  534.  
  535.  
  536. ///////////// S1UI_TargetInfo:
  537.  
  538. remove target buffs:
  539.  
  540. _loc11_ = _loc5_.buff_container; // Line 835
  541. buffTotalWidth = _loc5_.buff_array;
  542. _loc12_ = buffTotalWidth.length;
  543. _loc7_ = "buff_";
  544. to
  545. §§pop();
  546. return undefined;
  547. =
  548. 960400040508c5 (1st occur)
  549. to
  550. 17960100033E02
  551.  
  552. ///////////// S1UI_PartyWindow (new)
  553.  
  554. move debuffs to right:
  555.  
  556. function rearrangeSlotAtMainArea(array, startX, startY) // class g4.view.party.BuffArea
  557.    {
  558.       var buffTotalWidth = startX;
  559.       var startXdebuff = 150;
  560.       var startYdebuff = startY - 20;
  561.       var NewSlot = undefined;
  562.       var buffEntry = undefined;
  563.       var i = undefined;
  564.       var arraySize = array != null?array.length:0;
  565.       if(!_global.bShowType6)  // requires p-code fix after
  566.       {
  567.         startXdebuff = startX;
  568.         startYdebuff = g4.view.party.PartyConstants.BUFF_SLOT_WIDTH + g4.view.party.PartyConstants.BUFF_SLOT_GAP + 1;
  569.       }
  570.       var debuffTotalWidth = startXdebuff;
  571.       i = 0;
  572.       while(i < arraySize)
  573.       {
  574.          buffEntry = (g4.view.party.BuffData)array[i]; // requires p-code fix after
  575.          NewSlot = this.getOrCreateBuffSlot(buffEntry.id);
  576.          NewSlot.setData(buffEntry);
  577.          if(NewSlot.type == 0) // buff
  578.          {
  579.              NewSlot.__get__targetMovieClip()._x = buffTotalWidth;
  580.              NewSlot.__get__targetMovieClip()._y = startY;
  581.              NewSlot.__get__targetMovieClip()._visible = true;
  582.              buffTotalWidth = buffTotalWidth + g4.view.party.PartyConstants.BUFF_SLOT_WIDTH + g4.view.party.PartyConstants.BUFF_SLOT_GAP;
  583.          }
  584.          else // debuff
  585.          {
  586.              NewSlot.__get__targetMovieClip()._x = debuffTotalWidth;
  587.              NewSlot.__get__targetMovieClip()._y = startYdebuff;
  588.              NewSlot.__get__targetMovieClip()._visible = true;
  589.              debuffTotalWidth = debuffTotalWidth + g4.view.party.PartyConstants.BUFF_SLOT_WIDTH + g4.view.party.PartyConstants.BUFF_SLOT_GAP;
  590.          }
  591.          i = i + 1;
  592.       }
  593.    }
  594.  
  595. && add option
  596.  
  597. var customizeData = lib.gamedata.CustomizedUIDataCollection.getInstance(); // into main frame
  598. customizeData.valueOf(lib.gamedata.CustomizedUIDataKey.MESSAGE_TYPE6_VISIBLE,this,"messageType6Handler");
  599. customizeData.addEventListener(gfx.events.EventTypes.VALUE_CHANGE,this,"valueChangeHandler");
  600.  
  601. function messageType6Handler(value)
  602. {
  603.    if(value != null)
  604.    {
  605.       _global.bShowType6 = Number(value);
  606.    }
  607. }
  608. function valueChangeHandler(event)
  609. {
  610.    if(event.key == lib.gamedata.CustomizedUIDataKey.MESSAGE_TYPE6_VISIBLE)
  611.    {
  612.       messageType6Handler(Number(event.value));
  613.    }
  614. }
  615.  
  616. /////////////
  617.  
  618. fix buff hiding settings not aplying untill settings window opened:
  619.  
  620.    this.wasfixed = false;
  621.  
  622.    function OnGameEventPartyWindowShow(memberID, bShow) // g4.view.party.Party
  623.    {
  624.       memberID = Number(memberID);
  625.       bShow = g4.util.Converter.toBoolean(bShow);
  626.       this.showUI();
  627.       if(bShow)
  628.       {
  629.          this.addMember(memberID);
  630.       }
  631.       else
  632.       {
  633.          this.removeMember(memberID);
  634.       }
  635.       if(!this.wasfixed)
  636.       {
  637.         setTimeout(this,"godlyFix",1000, true);
  638.         this.wasfixed = true;
  639.       }
  640.    }
  641.    function godlyFix(state)
  642.    {
  643.     if(state)
  644.     {
  645.         getURL("FSCommand:ToGame_PartyAbnormalitySetting_Open",""); // requires p-code fix after
  646.         setTimeout(this,"godlyFix",100, false);
  647.     }
  648.     else
  649.     {
  650.         getURL("FSCommand:ToGame_PartyAbnormalitySetting_Close",""); // requires p-code fix after
  651.     }
  652.    }
  653.  
  654. ///////////// S1UI_PartyWindow (old)
  655.  
  656. remove party buffs: // for pre mage update
  657.  
  658. _loc10_ = buffTotalWidth.buff_container; // Line 800
  659. _loc4_ = buffTotalWidth.buff_array;
  660. _loc11_ = _loc4_.length;
  661. _loc6_ = "buff_";
  662. to
  663. §§pop();
  664. return null;
  665. =
  666. 9605000403090e01 (1st occur)
  667. to
  668. 17960100023E0202
  669.  
  670. /////////////
  671.  
  672. move debuffs right:
  673.  
  674. (change formula for X coordinates)
  675. var buffTotalWidth = _loc4_ * (buffGap + buffWidth); // Line 496
  676. to
  677. var buffTotalWidth = _loc4_ * buffGap + buffWidth;
  678. =
  679. 96020008(??)1C470C
  680. to
  681. 0C96020008(??)1C47
  682.  
  683. &
  684. (change variables for X coordinates)
  685. var buffGap = 3; // Line 1117
  686. var buffWidth = 30;
  687. to
  688. var buffGap = 33;
  689. var buffWidth = 270;
  690. =
  691. 96070008??07040000003c96070008??071e000000
  692. to
  693. 96070008??07210000003c96070008??070e010000
  694.  
  695. &
  696. (change Y coordinates)
  697. buffTotalWidth._y = 46; // Line 497
  698. to
  699. buffTotalWidth._y = -43;
  700. =
  701. 08??072e000000
  702. to
  703. 08??07d5ffffff
  704.  
  705. /////////////
  706.  
  707. move debuffs to buffs place
  708. buffTotalWidth._y = 46; // Line 497
  709. to
  710. buffTotalWidth._y = 0;
  711. =
  712. 08??072e000000
  713. to
  714. 08??0700000000
  715.  
  716. /////////////
  717.  
  718. move buffs to debuffs place
  719.  
  720. buffTotalWidth._y = 0; // Line 481
  721. to
  722. buffTotalWidth._y = 46;
  723. =
  724. 0308??060000000000000000 (1st occur)
  725. to
  726. 0308??072e00000002020202
  727.  
  728. /////////////
  729.  
  730. change gage type for everyone to yellow:
  731. if(Class == 9) // Line 1389
  732. to
  733. if(gageType > 0)
  734. =
  735. 9607000402070900000049 (1st occur)
  736. to
  737. 9607000403070000000067
  738.  
  739. /////////////
  740.  
  741. remove all gageBars
  742. if(Class == 9) // Line 1389
  743. {
  744.   gageType = 2;
  745. }
  746. to
  747. if(gageType > 0)
  748. {
  749.   gageType = 0;
  750. }
  751. =
  752. 9607000402070900000049129D02000D009605000702
  753. to
  754. 9607000405070000000067129D02000D009605000700
  755.  
  756.  
  757. ///////////// S1UI_CharacterWindow
  758.  
  759. delete stamina icon: container_mc.statMc.attachMovie("conditionMc","RestIcon",container_mc.statMc.getNextHighestDepth());
  760.  
  761. Push 0.0 "container_mc"
  762. GetVariable
  763. Push "statMc"
  764. GetMember
  765. Push "getNextHighestDepth"
  766. CallMethod
  767. Push "RestIcon" "conditionMc" 3 "container_mc"
  768. GetVariable
  769. Push "statMc"
  770. GetMember
  771. Push "attachMovie"
  772. CallMethod
  773. Pop
  774.  
  775. 960b0006000000000000000008091c960200080d4e960200084e52960d00098c01093b02070300000008091c960200080d4e96020008505217
  776. to
  777. 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202
  778. /////////////
  779.  
  780. HP bar = min \ max
  781. hpStrN = hp + " <img src=\'slash\' width=\'12\' height=\'16\' vspace=\'-2\'>" + maxHp + "<FONT ALPHA=\'#66\' COLOR=\'#FFFFFF\'>" + "   +" + maxHpAdd + "</FONT>"; // Line 1201
  782. to
  783. hpStrN = hp + " <img src=\'slash\' width=\'12\' height=\'16\' vspace=\'-2\'>" + (maxHp + maxHpAdd);
  784. =
  785. 4796030009??014796030009??014796020004014796030009??0147 (1st occur)
  786. to
  787. 02020202020202020202020202020296020004014747020202020202
  788.  
  789. /////////////
  790.  
  791. MP bar = min \ max
  792. mpStrN = mp + " <img src=\'slash\' width=\'12\' height=\'16\' vspace=\'-2\'>" + maxMp + "<FONT ALPHA=\'#66\' COLOR=\'#FFFFFF\'>" + "   +" + maxMpAdd + "</FONT>"; // Line 1274
  793. to
  794. mpStrN = mp + " <img src=\'slash\' width=\'12\' height=\'16\' vspace=\'-2\'>" + (maxMp + maxMpAdd);
  795. =
  796. 4796030009??014796030009??014796020004024796030009??0147 (1st occur)
  797. to
  798. 02020202020202020202020202020296020004024747020202020202
  799.  
  800. /////////////
  801.  
  802. Remove item_level icon
  803. if(num == 0) // Line 1813
  804. to
  805. if(num > 0)
  806. =
  807. 0206000000000000000049129D0200??00960B
  808. to
  809. 0206000000000000000067129D0200??00960B
  810.  
  811. /////////////
  812.  
  813. Change all gagebar types to one of Gunner
  814.  
  815. lib.manager.ToolTip.add(container_mc.classTooltip,_loc4_,1); // Line 1268
  816. to
  817. if(gageType > 0) { gageType = 2; }
  818. =
  819. 9609000701000000040208091c96030009??014e960700070300000008041c96030009??014e96030009??014e96020008??52
  820. to
  821. 020202020202020202020202020202020202020202029607000403070000000067129D02000D00960500070200000087010003
  822.  
  823. 029607000403070200000049124c129d02000d0017960700040307060000004912129d02000d00960500070200000087010003
  824.  
  825. /////////////
  826.  
  827. Change all gagebar types to one of Gunner (except warrior\lancer one) (lancer = 1, warrior = 5)
  828.  
  829. lib.manager.ToolTip.add(container_mc.classTooltip,_loc4_,1); // Line 1268
  830. to
  831. if(gageType > 1 && gageType != 5) { gageType = 2; }
  832. =
  833.  
  834. 9609000701000000040208091c96030009??014e960700070300000008041c96030009??014e96030009??014e96020008??52
  835. to
  836. 020296070004030701000000674c129d02000d0017960700040307050000004912129d02000d00960500070200000087010003
  837. /////////////
  838.  
  839. Show only current gage without maxgage
  840.  
  841. stStrN = str + " <img src=\'slash\' width=\'12\' height=\'16\' vspace=\'-2\'>" + maxStr; // Line 1493
  842. to
  843. stStrN = str;
  844. =
  845. 960700086f04??09????4796020004??471d (all 3 occur-s for 3 global types of gagebars - lancer\warrior is last)
  846. to
  847. 960400086f04??1d02020202020202020202
  848.  
  849. /////////////
  850.  
  851. Show only current gage without maxgage (in black text color)
  852.  
  853. <FONT ALPHA='#66' COLOR='#FFFFFF'>
  854. to
  855. <FONT COLOR='#000000'>
  856.  
  857. &
  858. stStrN = str + " <img src=\'slash\' width=\'12\' height=\'16\' vspace=\'-2\'>" + maxStr; // Line 1493
  859. to
  860. stStrN = "<FONT COLOR=\'#000000\'>" + str;
  861. =
  862. 960700086f04??09????4796020004??471d (all 3 occur-s for 3 global types of gagebars - lancer\warrior is last)
  863. to
  864. 960700086f0967010406471d020202020202
  865.  
  866. /////////////
  867.  
  868. Move charge number (N of X) for gagebar to left (and a bit up) so it would be in the center
  869. container_mc.st_txt._x = 750; // Line 139
  870. to
  871. container_mc.st_txt._x = 401;
  872. =
  873. 96070008??07EE020000
  874. to
  875. 96070008??0791010000
  876.  
  877. &
  878. container_mc.st_txt._y = 90; // Line 140
  879. to
  880. container_mc.st_txt._y = 80;
  881. =
  882. 96070008??075a000000
  883. to
  884. 96070008??0750000000
  885.  
  886. /////////////
  887.  
  888. Remove shining on max gage
  889.  
  890. if(st == maxSt) // Line 235
  891. to
  892. if(st == buffTotalWidth)
  893. =
  894. 3E9604000404040249
  895. to
  896. 3E9604000404040349
  897.  
  898. ///////////// S1UI_PremiumSlotPanel.gpk
  899.  
  900. hide whole panel on non-UI mode:
  901.  
  902. this._title._visible =  // line 36 & 41
  903. to
  904. this.__get__targetMovieClip().container_mc._visible =
  905.  
  906.  
  907. ///////////// S1UIRES_Component.gpk
  908.  
  909. remove bossbar buff icon border:
  910.  
  911. delete "G4Component/Sprites/BuffIcon/Frame 1/mRect"
  912.  
  913.  
  914. ///////////// S1UI_GageBoss (new)
  915.  
  916. enrage timer and sound: // g4.view.gaugeBoss.BossGauge
  917.  
  918. function setDanger($value)
  919.    {
  920.       this.mDanger._visible = $value;
  921.       if($value)
  922.       {
  923.          this.mMark.gotoAndStop(2);
  924.          this.mBackground.gotoAndStop(2);
  925.          var buffTotalWidth = this.mNameGroup.textField.text;
  926.          this.mNameGroup.gotoAndStop(2);
  927.          this.mNameGroup.textField.text = buffTotalWidth;
  928.          this.mDanger.gotoAndStop(2);
  929.          if(this._levelType == 1)
  930.          {
  931.             this.tName.textColor = 16741749;
  932.          }
  933.          else
  934.          {
  935.             this.tName.textColor = 15329772;
  936.          }
  937.          if(this.RagedInt == 0)
  938.          {
  939.             var _loc4_ = new Date();
  940.             this.RagedDate = _loc4_.getTime();
  941.             this.tMultiple.text = 37 + "s";
  942.             this.RagedInt = setInterval(this,"EnragedTick",100);
  943.             getURL("FSCommand:ToGame_PlaySound",2095);
  944.          }
  945.       }
  946.       else
  947.       {
  948.          this.mMark.gotoAndStop(1);
  949.          this.mBackground.gotoAndStop(1);
  950.          buffTotalWidth = this.mNameGroup.textField.text;
  951.          this.mNameGroup.gotoAndStop(1);
  952.          this.mNameGroup.textField.text = buffTotalWidth;
  953.          this.mDanger.gotoAndStop(1);
  954.          if(this._levelType == 1)
  955.          {
  956.             this.tName.textColor = 10885144;
  957.          }
  958.          else
  959.          {
  960.             this.tName.textColor = 15329772;
  961.          }
  962.          if(this.RagedInt)
  963.          {
  964.             clearInterval(this.RagedInt);
  965.             this.RagedInt = 0;
  966.             this.RagePercent = "R: " + (this.percent - 10) + "%";
  967.             if(this.percent < 10)
  968.             {
  969.                this.RagePercent = " ";
  970.             }
  971.             this.tMultiple.text = this.RagePercent;
  972.          }
  973.       }
  974.    }
  975.  
  976.    function EnragedTick()
  977.    {
  978.       var _loc2_ = new Date();
  979.       this.tMultiple.text = 37 + Math.round((this.RagedDate - _loc2_.getTime()) / 1000) + "s";
  980.    }
  981.    
  982.  
  983. and getURL() should be:
  984. Push "FSCommand:ToGame_PlaySound" 2095
  985. GetURL2 false false 0
  986.  
  987. /////////////
  988.  
  989. hide poison\bleed useless debuffs: // g4.view.gaugeBoss.GaugeBoss
  990.  
  991.    function OnGame_GageBoss_AddBuff($id, $stack, $type, $bRelax, $img, $remain, $total)
  992.    {
  993.       if($type != 3)
  994.       {
  995.          this.gaugeBuff.addBuff($id,$stack,$type,$bRelax,$img,$remain,$total);
  996.       }
  997.    }
  998.  
  999. ///////////// S1UI_GageBoss (old)
  1000.  
  1001. remove bossbar rage flickering:
  1002. 96070004010728000000
  1003. to
  1004. 96070004010764000000
  1005.  
  1006. /////////////
  1007.  
  1008. remove bossbar shaking on critical hits:
  1009. 96070004090701000000
  1010. to
  1011. 96070004090709000000
  1012.  
  1013. /////////////
  1014.  
  1015. move boss pattern icon down: // @ line 627
  1016.    var _loc4_ = 0; // 85
  1017.    var _loc1_ = 5;
  1018.    while(_loc1_ >= 0)
  1019.    {
  1020.       var _loc2_ = patternMc["pBox" + _loc1_];
  1021.       if(_loc2_)
  1022.       {
  1023.          _loc2_._x = _loc4_; // _y =
  1024.          _loc4_ = _loc4_ - 35; // + 42
  1025.       }
  1026. :
  1027. 521796090006000000000000000087010004
  1028. to
  1029. 521796050007550000000202020287010004
  1030.  
  1031. &
  1032. 9606000402081b0404
  1033. to
  1034. 9606000402081c0404
  1035.  
  1036. &
  1037. 960700040407230000000B
  1038. to
  1039. 9607000404072A00000047
  1040.  
  1041. /////////////
  1042. change maximum time to display in seconds
  1043.  
  1044. if(_loc2_ <= 60) // Line 71 in lib util cooltime (instance)
  1045. to
  1046. if(_loc2_ <= 600)
  1047. =
  1048. 179607000402073c000000 (both occur-s)
  1049. to
  1050. 1796070004020758020000
  1051.  
  1052. &
  1053.  
  1054. =
  1055. 9607000402073c00000067
  1056. to
  1057. 9607000402075802000067
  1058.  
  1059. /////////////
  1060.  
  1061. hide poison\bleed (ticking type) debuffs on boss (useless debuffs = useless to see those)
  1062.  
  1063. maked.frame_mc.gotoAndStop(4); // Line 690
  1064. to
  1065. maked.removeMovieClip();
  1066. return undefined;
  1067. =
  1068.  
  1069. 960c000704000000070100000008b31c96020008b94e96020008a15217
  1070. to
  1071. 960700070000000008b31c960200089e5217960100033e020202020202
  1072.  
  1073. =
  1074.  
  1075. Push 0 "maked"
  1076. GetVariable
  1077. Push "removeMovieClip"
  1078. CallMethod
  1079. Pop
  1080. Push undefined
  1081.  
  1082. ////////////
  1083.  
  1084. 1.5x the size of boss (de)buffs:
  1085. (4 hits)
  1086. 00071c000000071c000000 // 28
  1087. to
  1088. 00072a000000072a000000 // to 42
  1089. &
  1090. 1.5x the size of buffs reserved place (width + gap):
  1091. 960700081a071e000000 // 30
  1092. to
  1093. 960700081a072c000000 // to 44
  1094. &
  1095. move count and stack numbers - in sprites (27) (svg)
  1096. =
  1097. <use height="20.0" id="stack" transform="matrix(1.0, 0.0, 0.0, 1.0, 17.0, 23.5)" width="26.8" xlink:href="#text0"/>
  1098. <use height="16.0" id="Count" transform="matrix(1.0, 0.0, 0.0, 1.0, 7.0, 45.0)" width="30.05" xlink:href="#sprite3"/>
  1099.  
  1100. ////////////
  1101.  
  1102. add Rage Timer and next Rage:
  1103.  
  1104. @ line 280:
  1105. function dangerEffect(type)
  1106. {
  1107.    gs.TweenLite.killTweensOf(container_mc.dangerBg,false);
  1108.    if(type)
  1109.    {
  1110.       if(!Raged)
  1111.       {
  1112.          RageLeft = 37;
  1113.       }
  1114.       RageLeft--;
  1115.       Raged = true;
  1116.       if(RageLeft > -1)
  1117.       {
  1118.          container_mc.rankTxt.text = RageLeft + "s";
  1119.       }
  1120.       else
  1121.       {
  1122.          container_mc.rankTxt.text = "";
  1123.       }
  1124.       gs.TweenLite.to(container_mc.dangerBg,1,{_alpha:80,onComplete:dangerEffect,onCompleteParams:[true]});
  1125.    }
  1126.    else
  1127.    {
  1128.       if(Raged)
  1129.       {
  1130.          Raged = false;
  1131.          container_mc.rankTxt.text = "R: " + (gageTop.percentGage - 10) + "%";
  1132.       }
  1133.       gs.TweenLite.to(container_mc.dangerBg,0.5,{_alpha:0});
  1134.    }
  1135. }
  1136. function textUpData(rankMotion)
  1137. {
  1138.    container_mc.percentTxt.text = gageTop.percentGage + "%";
  1139.    if(rankMotion)
  1140.    {
  1141.       container_mc.rankTxt._alpha = 100;
  1142.       container_mc.rankTxt._x = 370;
  1143.       gs.TweenLite.killTweensOf(container_mc.rankTxt,false);
  1144.       gs.TweenLite.from(container_mc.rankTxt,0.3,{_alpha:0,_x:410,ease:Regular.easeOut});
  1145.    }
  1146. }
  1147. var Raged = false;
  1148. var RageLeft = 37;
  1149. var UI = this;
  1150.  
  1151. =
  1152.  
  1153. DefineFunction2 "dangerEffect" 1 6 false false true false true false true false false 5 "type"  {
  1154. Push false "container_mc"
  1155. GetVariable
  1156. Push "dangerBg"
  1157. GetMember
  1158. Push 2 "gs"
  1159. GetVariable
  1160. Push "TweenLite"
  1161. GetMember
  1162. Push "killTweensOf"
  1163. CallMethod
  1164. Pop
  1165. Push register5
  1166. Not
  1167. If loc1d54
  1168. Push "Raged"
  1169. GetVariable
  1170. Not
  1171. Not
  1172. If loc1c7c
  1173. Push "RageLeft" 37
  1174. SetVariable
  1175. loc1c7c:Push "RageLeft" "RageLeft"
  1176. GetVariable
  1177. Decrement
  1178. SetVariable
  1179. Push "Raged" true
  1180. SetVariable
  1181. Push "RageLeft"
  1182. GetVariable
  1183. Push -1
  1184. Greater
  1185. Not
  1186. If loc1ce9
  1187. Push "container_mc"
  1188. GetVariable
  1189. Push "rankTxt"
  1190. GetMember
  1191. Push "text" "RageLeft"
  1192. GetVariable
  1193. Push "s"
  1194. Add2
  1195. SetMember
  1196. Jump loc1cfd
  1197. loc1ce9:Push "container_mc"
  1198. GetVariable
  1199. Push "rankTxt"
  1200. GetMember
  1201. Push "text" ""
  1202. SetMember
  1203. loc1cfd:Push "_alpha" 80 "onComplete" "dangerEffect"
  1204. GetVariable
  1205. Push "onCompleteParams" true 1
  1206. InitArray
  1207. Push 3
  1208. InitObject
  1209. Push 1.0 "container_mc"
  1210. GetVariable
  1211. Push "dangerBg"
  1212. GetMember
  1213. Push 3 "gs"
  1214. GetVariable
  1215. Push "TweenLite"
  1216. GetMember
  1217. Push "to"
  1218. CallMethod
  1219. Pop
  1220. Jump loc1de3
  1221. loc1d54:Push "Raged"
  1222. GetVariable
  1223. Not
  1224. If loc1da2
  1225. Push "Raged" false
  1226. SetVariable
  1227. Push "container_mc"
  1228. GetVariable
  1229. Push "rankTxt"
  1230. GetMember
  1231. Push "text" "R: " "gageTop"
  1232. GetVariable
  1233. Push "percentGage"
  1234. GetMember
  1235. Push 10
  1236. Subtract
  1237. Add2
  1238. Push "%"
  1239. Add2
  1240. SetMember
  1241. loc1da2:Push "_alpha" 0.0 1
  1242. InitObject
  1243. Push 0.5 "container_mc"
  1244. GetVariable
  1245. Push "dangerBg"
  1246. GetMember
  1247. Push 3 "gs"
  1248. GetVariable
  1249. Push "TweenLite"
  1250. GetMember
  1251. Push "to"
  1252. CallMethod
  1253. Pop
  1254. }
  1255. loc1de3:Push "Raged" false
  1256. DefineLocal
  1257. Push "RageLeft" 37
  1258. DefineLocal
  1259. DefineFunction2 "textUpData" 1 5 false false true false true false true false false 4 "rankMotion"  {
  1260. Push "container_mc"
  1261. GetVariable
  1262. Push "percentTxt"
  1263. GetMember
  1264. Push "text" "gageTop"
  1265. GetVariable
  1266. Push "percentGage"
  1267. GetMember
  1268. Push "%"
  1269. Add2
  1270. SetMember
  1271. Push register4
  1272. Not
  1273. If loc1efa
  1274. Push "container_mc"
  1275. GetVariable
  1276. Push "rankTxt"
  1277. GetMember
  1278. Push "_alpha" 100
  1279. SetMember
  1280. Push "container_mc"
  1281. GetVariable
  1282. Push "rankTxt"
  1283. GetMember
  1284. Push "_x" 370
  1285. SetMember
  1286. Push false "container_mc"
  1287. GetVariable
  1288. Push "rankTxt"
  1289. GetMember
  1290. Push 2 "gs"
  1291. GetVariable
  1292. Push "TweenLite"
  1293. GetMember
  1294. Push "killTweensOf"
  1295. CallMethod
  1296. Pop
  1297. Push "_alpha" 0.0 "_x" 410 "ease" "Regular"
  1298. GetVariable
  1299. Push "easeOut"
  1300. GetMember
  1301. Push 3
  1302. InitObject
  1303. Push 0.3 "container_mc"
  1304. GetVariable
  1305. Push "rankTxt"
  1306. GetMember
  1307. Push 3 "gs"
  1308. GetVariable
  1309. Push "TweenLite"
  1310. GetMember
  1311. Push "from"
  1312. CallMethod
  1313. Pop
  1314. }
  1315. loc1efa:Push "UI" "this"
  1316. GetVariable
  1317. DefineLocal
  1318.  
  1319. ////////////
  1320.  
  1321. add sound on enrage:
  1322.  
  1323. @ near line "RageLeft = 37;" in previous edit:
  1324.  
  1325. getURL("FSCommand:ToGame_PlaySound",2095);
  1326.  
  1327. =
  1328.  
  1329. Push "FSCommand:ToGame_PlaySound" 2095
  1330. GetURL2 false false 0
  1331.  
  1332. ////////////
  1333.  
  1334. move boss percent hp and text at right a bit up:
  1335.  
  1336. in sprite (215) (container_mc)
  1337. of RankTxt and PercetTxt change TranslateY from 40 to 0
  1338.  
  1339.  
  1340. ///////////// S1UI_TestQuickSlot
  1341.  
  1342. replace cooltime animation with disabled effect:
  1343. this.coolTimeMc.gotoAndStop(...); // line 83 @ com.bluehole.tera.view.core.SlotButton
  1344. to
  1345. this.coolTimeMc.gotoAndStop(1);
  1346. =
  1347. Push 1 1 register1 "coolTimeMc"
  1348. GetMember
  1349. Push "gotoAndStop"
  1350. CallMethod
  1351. Pop
  1352.  
  1353. & to make better solid square:
  1354. in sprite (155) in frame 1 put
  1355. PlaceObject2 (65) (one from previous sprite - impossibleMc) and remove other objects
  1356. &
  1357. in DefineSphae (65) change one width from 51.65 to 52.35
  1358. &
  1359. edit actual image TestQuickSlot_I40 (64x64 DXT_5)
  1360.  
  1361. ///////////// S1UI_Nameplate
  1362.  
  1363. filter displayed text:
  1364.  
  1365. add before this line:
  1366. _loc6_ = _loc6_ + ("<font color=\'" + _loc3_[1] + "\'>" + _loc3_[0] + "</font><br />"); // line 149 @ g4.view.namePlate.NamePlate
  1367. this:
  1368. if(_loc3_[1] == "#cccccc")
  1369. {
  1370.     _loc3_[0] = " ";
  1371. }
  1372.  
  1373. =
  1374. Push register3 1
  1375. GetMember
  1376. Push "#cccccc"
  1377. Equals2
  1378. Not
  1379. If label
  1380. Push register3 0 " "
  1381. SetMember
  1382. label:
  1383.  
  1384. ///////////// FX_ skill files
  1385.  
  1386. remove skill effects:
  1387. null ParticleSystem inclusions to get rid of skill effects -
  1388.  
  1389. those are mostly named with "_PS", you can hex search-and-replace "_PS" to anything else,
  1390. just make sure occurencies are actual effects and not random "_PS" in the middle of the data
  1391.  
  1392. ///////////// FX_Awaken_Engineer.gpk
  1393.  
  1394. A_14103102_re01_PS - AB moving ball
  1395. E_41114_re01_PS - Mana rockets
  1396. A_14103110_re01_PS - Time bomb
  1397. A_14103111_re01_PS - Time bomb self-boom on expire
  1398. A_14103114_re01_PS - stun grenade
  1399. O_18022901_PS - ether
  1400.  
  1401. /////////////
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement