From 2d58593be9d2b9bfc6c5c6f180cd2736abc23d76 Mon Sep 17 00:00:00 2001 From: Danial Date: Fri, 13 Dec 2019 13:37:13 +1300 Subject: [PATCH] Fixup smelting (#281) * Fixup smelting * Move iron fail check, show message * revert * More smithing refactoring --- .../content/skills/smithing/Smelting.java | 100 ++++++++---------- .../content/skills/smithing/Smelting$1.class | Bin 3174 -> 3201 bytes .../content/skills/smithing/Smelting$2.class | Bin 1372 -> 1372 bytes .../content/skills/smithing/Smelting.class | Bin 5734 -> 5572 bytes 4 files changed, 45 insertions(+), 55 deletions(-) diff --git a/2006Redone Server/src/com/rebotted/game/content/skills/smithing/Smelting.java b/2006Redone Server/src/com/rebotted/game/content/skills/smithing/Smelting.java index b9181849..dcbb7201 100644 --- a/2006Redone Server/src/com/rebotted/game/content/skills/smithing/Smelting.java +++ b/2006Redone Server/src/com/rebotted/game/content/skills/smithing/Smelting.java @@ -25,16 +25,15 @@ public class Smelting extends SkillHandler { * Handles Smelting data. */ public static int[][] data = { - // index ,lvl required, XP, item required, item2, COAL AMOUNT, - // Final item(BAR) - { 1, 1, 6, COPPER, TIN, -1, 2349 }, // Bronze + // index ,lvl required, XP, primary item required, secondary item required, secondary item amount, output item(BAR) + { 1, 1, 6, COPPER, TIN, 1, 2349 }, // Bronze { 2, 15, 12, IRON, -1, -1, 2351 }, // iron { 3, 20, 17, IRON, COAL, 2, 2353 }, // Steel { 4, 50, 30, MITH, COAL, 4, 2359 }, // Mith { 5, 70, 37, ADDY, COAL, 6, 2361 }, // Addy { 6, 85, 50, RUNE, COAL, 8, 2363 }, // Rune { 7, 20, 13, SILVER, -1, -1, 2355 }, // Silver - { 8, 40, 22, GOLD, -1, -1, 2357 } // GOLD + { 8, 40, 22, GOLD, -1, -1, 2357 }, // GOLD }; /** @@ -44,8 +43,7 @@ public class Smelting extends SkillHandler { */ public static void startSmelting(Player c, int object) { for (int j = 0; j < SMELT_FRAME.length; j++) { - c.getPacketSender().sendFrame246(SMELT_FRAME[j], 150, - SMELT_BARS[j]); + c.getPacketSender().sendFrame246(SMELT_FRAME[j], 150, SMELT_BARS[j]); } c.getPacketSender().sendChatInterface(2400); c.isSmelting = true; @@ -70,30 +68,22 @@ public class Smelting extends SkillHandler { private static void smeltBar(final Player c, int bartype) { for (int i = 0; i < data.length; i++) { if (bartype == data[i][0]) { + // Check player has the correct smithing level if (c.playerLevel[c.playerSmithing] < data[i][1]) { // Smithing level c.getDialogueHandler().sendStatement("You need a smithing level of at least "+ data[i][1] + " in order smelt this bar."); return; } - if (data[i][3] > 0 && data[i][4] > 0) { // All OTHER bars - if (!c.getItemAssistant().playerHasItem(data[i][3]) || !c.getItemAssistant().playerHasItem(data[i][4])) { - c.getPacketSender().sendMessage("You need an " + ItemAssistant.getItemName(data[i][3]).toLowerCase() + " and " + data[i][5] + " " + ItemAssistant.getItemName(data[i][4]).toLowerCase() + " to make this bar."); - c.getPacketSender().closeAllWindows(); - return; - } - } - - if (data[i][4] < 0) { // Iron bar, Gold & Silver requirements + // Check the player has all required items + if (data[i][4] <= 0) { // Bars with only a primary requirement if (!c.getItemAssistant().playerHasItem(data[i][3])) { - c.getPacketSender().sendMessage("You need an " + ItemAssistant.getItemName(data[i][3]).toLowerCase() + " to make this bar."); + c.getPacketSender().sendMessage("You need " + ItemAssistant.getItemName(data[i][3]).toLowerCase() + " to make this bar."); c.getPacketSender().closeAllWindows(); return; } - } - - if (data[i][5] > 0) { // Bars with more than 1 coal requirement - if (!c.getItemAssistant().playerHasItem(data[i][4], data[i][5])) { - c.getPacketSender().sendMessage("You need an " + ItemAssistant.getItemName(data[i][3]).toLowerCase() + " and " + data[i][5] + " coal ores to make this bar."); + } else { // Bars with a secondary requirement + if (!c.getItemAssistant().playerHasItem(data[i][3]) || !c.getItemAssistant().playerHasItem(data[i][4], data[i][5])) { + c.getPacketSender().sendMessage("You need 1 " + ItemAssistant.getItemName(data[i][3]).toLowerCase() + " and " + data[i][5] + " " + ItemAssistant.getItemName(data[i][4]).toLowerCase() + " to make this bar."); c.getPacketSender().closeAllWindows(); return; } @@ -109,10 +99,10 @@ public class Smelting extends SkillHandler { c.playerSkillProp[13][0] = data[i][0];// index c.playerSkillProp[13][1] = data[i][1];// Level required c.playerSkillProp[13][2] = data[i][2];// XP - c.playerSkillProp[13][3] = data[i][3];// item required - c.playerSkillProp[13][4] = data[i][4];// item required 2 - c.playerSkillProp[13][5] = data[i][5];// coal amount - c.playerSkillProp[13][6] = data[i][6];// Final Item + c.playerSkillProp[13][3] = data[i][3];// primary item required + c.playerSkillProp[13][4] = data[i][4];// secondary item required + c.playerSkillProp[13][5] = data[i][5];// secondary item amount + c.playerSkillProp[13][6] = data[i][6];// output item c.getPacketSender().closeAllWindows(); c.startAnimation(899); @@ -122,45 +112,33 @@ public class Smelting extends SkillHandler { @Override public void execute(CycleEventContainer container) { deleteTime(c); + // Remove primary item c.getItemAssistant().deleteItem(c.playerSkillProp[13][3], 1); - if (c.playerSkillProp[13][5] == -1) { - c.getItemAssistant().deleteItem(c.playerSkillProp[13][4], 1); - } - if (c.playerSkillProp[13][5] > 0) {// if coal amount is > 0 + // Check if required and remove secondary items + if (c.playerSkillProp[13][4] > 0 && c.playerSkillProp[13][5] > 0) { c.getItemAssistant().deleteItem(c.playerSkillProp[13][4], c.playerSkillProp[13][5]); } - if (c.playerSkillProp[13][3] == IRON && c.playerSkillProp[13][4] == -1 && Misc.random(100) >= 50) { - c.getPlayerAssistant().addSkillXP(c.playerSkillProp[13][2], c.playerSmithing); - c.getItemAssistant().addItem(c.playerSkillProp[13][6], 1);// item - c.getPacketSender().sendMessage("You receive an " + ItemAssistant.getItemName(c.playerSkillProp[13][6]).toLowerCase() + "."); - } - - if (c.playerSkillProp[13][3] == GOLD && c.playerSkillProp[13][4] == -1 && c.playerEquipment[c.playerHands] == 776) { - c.getPacketSender().sendMessage("You receive an " + ItemAssistant.getItemName(c.playerSkillProp[13][6]).toLowerCase() + "."); + if (c.playerSkillProp[13][3] == IRON && c.playerSkillProp[13][4] == -1) { + // TODO: Implement ring of forging + if (Misc.random(100) >= 50) { + c.getPlayerAssistant().addSkillXP(c.playerSkillProp[13][2], c.playerSmithing); + c.getItemAssistant().addItem(c.playerSkillProp[13][6], 1);// item + c.getPacketSender().sendMessage("You receive an " + ItemAssistant.getItemName(c.playerSkillProp[13][6]).toLowerCase() + "."); + } else { + c.getPacketSender().sendMessage("You failed to smelt the iron bar."); + } + } else if (c.playerSkillProp[13][3] == GOLD && c.playerEquipment[c.playerHands] == 776) { + c.getPacketSender().sendMessage("You receive a " + ItemAssistant.getItemName(c.playerSkillProp[13][6]).toLowerCase() + "."); c.getPlayerAssistant().addSkillXP(56.2, c.playerSmithing); c.getItemAssistant().addItem(c.playerSkillProp[13][6], 1);// item } else { - if (c.playerSkillProp[13][3] != IRON) { - c.getPacketSender().sendMessage("You receive an " + ItemAssistant.getItemName(c.playerSkillProp[13][6]).toLowerCase() + "."); - c.getPlayerAssistant().addSkillXP(c.playerSkillProp[13][2], c.playerSmithing); - c.getItemAssistant().addItem(c.playerSkillProp[13][6], 1);// item - } + c.getPacketSender().sendMessage("You receive a " + ItemAssistant.getItemName(c.playerSkillProp[13][6]).toLowerCase() + "."); + c.getPlayerAssistant().addSkillXP(c.playerSkillProp[13][2], c.playerSmithing); + c.getItemAssistant().addItem(c.playerSkillProp[13][6], 1);// item } - // ///////////////////////////////CHECKING////////////////////// - if (!c.getItemAssistant().playerHasItem(c.playerSkillProp[13][3], 1)) { - c.getPacketSender().sendMessage("You don't have enough ores to continue smelting!"); - resetSmelting(c); - container.stop(); - } - if (c.playerSkillProp[13][4] > 0) { - if (!c.getItemAssistant().playerHasItem(c.playerSkillProp[13][4], 1)) { - c.getPacketSender().sendMessage("You don't have enough ores to continue smelting!"); - resetSmelting(c); - container.stop(); - } - } + ////////////////////// CHECKING ////////////////////// if (c.doAmount <= 0) { resetSmelting(c); container.stop(); @@ -173,6 +151,18 @@ public class Smelting extends SkillHandler { resetSmelting(c); container.stop(); } + if (!c.getItemAssistant().playerHasItem(c.playerSkillProp[13][3], 1)) { + c.getPacketSender().sendMessage("You don't have enough ores to continue smelting!"); + resetSmelting(c); + container.stop(); + } + if (c.playerSkillProp[13][4] > 0) { + if (!c.getItemAssistant().playerHasItem(c.playerSkillProp[13][4], c.playerSkillProp[13][5])) { + c.getPacketSender().sendMessage("You don't have enough ores to continue smelting!"); + resetSmelting(c); + container.stop(); + } + } } diff --git a/CompiledServer/production/2006rebotted/com/rebotted/game/content/skills/smithing/Smelting$1.class b/CompiledServer/production/2006rebotted/com/rebotted/game/content/skills/smithing/Smelting$1.class index 2a328f71fbe0659f560524a67d2495a72d7b31ee..be1517d44c1c135ffecbd67179f666f408734f20 100644 GIT binary patch delta 1204 zcmaKs?Qc|75XOJ!Z0WswbGEFdX(=_Z)dISU3$&;pA_Y-FQ1Jy2(aJ&>soi#QyIo!s zmI6hn6>BfHWob)MV~z0(v2GhRBAcvV;9fZ=(84k z&SAGl1)E)-xBdkidC}t~_PFe|$Ucvk+3)g-B|Bg#UfpEvYc4J2&AV!^$y2bTuUqt> z%}RJ2;;`MeT9dS#M_k@;IO@=Lt2mhtq~Li$dN^k|Z_NdI{ZDl~f01_$m$>ZEXLyf(g^C;Ar{Cd< z;R6N~_50J^kt2z=RI)XaO-H&qlBsMYdo&qo%cMIahY}en_>dEZL43ni@`?&ul1Uy; zw&jwMM8qEakzt6uVc1@K#PBfd4c80>!*xatW1RC%py{gvflyh{ZB1|KNOyN;{hYJW z|IUdDXXsceaWa|Np6J?w+EC`1h zow%N$KioQl8*aQw#{bPtHBBmGGm3;NYl>9wo8*tbE6U?DES}&@38^i)CH_FLTGjc> zyj7tp?k<5|k){4!!6l0(Nn1qtzLnliv#`=;9?Va%Y>WyUnjsP^QeUdOCmd=j{0DyT zonVo&QjPtV@_1R1h5~i-hgB}Om%oF)^x5My`=7b>`TxteEf37Ke2@lNXAqULl$_}P zI4z>kvm($wPV>2F^n3FBPLB$5UajGRO46%NaZwF%N&U=a^(%c^b480T^&$pz4THKN zkFR4~)vFoO8yMEjjOc9?bPLyYJEJtQaQVF|bl4#|m{;jVs|Di86&mUle Xq-q{vqxdpu!zNL(s8lFchzIvC`1I*z delta 1194 zcmaizTWnNS6o$XEr_MgJvpX3`Q>c~V1+)bm>0PNvp%y`rn@Fp8tF$UeDMC@prDM4X zLJQ?6w8O0sMMW@aY$gp+^u-7D(U_hC*E;JzeI9h#1cajj~W)xY*@-;F0jl6mKz@D2^U@Ad{1gt z8j>vZS>^O<7g=Li%TqqO8&{MJ%ae6*8(h(IKF_tC_F%4?Q;xzAEgoo16|GZmWGEnDccY^6)H&GH7@Ej#Ge z?6kbeTb8%!vFu{EW{+hry_Sp<@6Z=qQRxNy*l#(&LCqn{yBzlL(v~9}*1Tsq$}vkn z-If84TTZasVGLSM(i?1yRnN2pu8sFCwbWTYa0#b4Z5d+NqbB$(R`taXv7ckf!fjjH zdOEf*YumBByQ4F>sv8o1d)MO5uAN)EgFp1VGUm%#X3K`WRLTu1rZW}6||a$U~QtZej+8F9%tGJ0}~$YZs?8d>5(c)Pl@>> zYzkH;YMY!ZN1`a|Vhoexj+V$dsi9Qdb!1yUrZ2*9UAoKk1?fX@!d`wdQ!_KNlt$%+ zQ_FG`hgjpxoSWm$iBg?DPwg$Ygk%3dz+LA^y4wGs-kmC}&XUaB61YdalboZnj~H%W zr^21?K?`rn=p`-mYo?EN>=S+-NHsC6R%ghn7S5;*oKu@QuMTiQ4KkvJxTwzZp}NdR>Kd2TD4(bse5$_Xiu#VL z>PN1rU-?}9#%M^O;)oDMdjLD2UJw)<;-^ zQDOZMB6Q$uqp}EupnX$XF_Mf#TPRAios{%Y0(Yd!XqwvZ?X-zr33UKRb!nm9FkU;&_f}~`ojS)! zK2z<+^Z>o19a(k_K~sJYhlb!bTvkn{i0m*877YO!!V4t9U4yNl>tE(^Sf?F&$5aM` z%%HTPWb(xo_!M1$uQ@{9X7ZaiOQxHq_?aXBLcQZ6tQtZkHveBzJ!?8bo4RmDYU4ye z7a-?ZC3O=NsWarLE8vez#3D=jvym&M5P7Jts237MdKYBagS!)r#~Ljibo8` z6Gr1HW6{S1^wWtKvcH#1!D}wX8!pEHbMThAc*lGU%ASX~0Uua~kF3HlH)Dj`Fv=bH z%-#6H27F^PzH<+L@DP5o1>Be*Ppo@BH^yF1~v4=+X(!|^J z;RE{eF)e&fKfYoB2N}pA2J;g`_?2NCV>lk delta 945 zcmZ{ie`wTY9LHbp=l0{a-NbIUmAmcsUGCPH^QM=>F`Xt9a~nE~=4P7nHm}vpU2d}i z!GR1)D=@!*NJmOPR(}+M^WaMol|~`hUxEMMcuD)9AS&5=1=k`SE@}pU?aK z{P=XqT+`u~%lsVlbEudUFXYUN#T=NKp7zxTwxsqtqsin>Co$>-_?Xj$oC)v=p2)Y@ zPDjXb2lDExtDK=!;z=hpmK=8`QqJzguB0>Z_!HyKU}7wmIhOZUL3xZ~nyDd1lsL<{ zmljsIeI?1FcJf(cch|a~mBed&y*BlM8S=GPoh0zl8)j?R`l`4u_L}K(D*|hl7sQV9 z{5)1@qy3E@cg<%7F^@&B5V{Q%=72QY+>t=EXTHR5kx($=QFg2UeZn49HV@WV<5A(^ z^w|OV9<_Zlw~Ah+^Y+Ynk~FP$W^Lqud;C_|fO{ek%DX#FM~=VxU;K;zL*>?#9#O4( zvUK(2%{OPjUcm-y)6`qrVQ*(W<#f_Om&Lo;XxAV;OtFazJjg5$af!`bp^rc4R~=i_ z#3NeDcCBPUJ?zjS5<0@5TprUghIO0~z0EGY%Wi$Zs6Hp9i##=~@7bd)W2S_0Q_Wrz zAtWaZi@F=S>xmV+1dM%!dwpvV95L8lh17nAFw`A$h z(vu~bIkjNSOn#vNUnq_vOhWTA1{HZ)fW`(M28jwVqOS Z5>ywJ_JnoTH)=y>HaH}i%zdFL{R1hw)OG*>