NPE checks for Ceremony of Chaos.
This commit is contained in:
		| @@ -282,7 +282,7 @@ public class CeremonyOfChaosEvent extends AbstractEvent<CeremonyOfChaosMember> | ||||
| 		 | ||||
| 		final List<CeremonyOfChaosMember> winners = getWinners(); | ||||
| 		final List<CeremonyOfChaosMember> members = new ArrayList<>(getMembers().size()); | ||||
| 		final SystemMessage msg; | ||||
| 		SystemMessage msg = null; | ||||
| 		if (winners.isEmpty() || (winners.size() > 1)) | ||||
| 		{ | ||||
| 			msg = SystemMessage.getSystemMessage(SystemMessageId.THERE_IS_NO_VICTOR_THE_MATCH_ENDS_IN_A_TIE); | ||||
| @@ -290,92 +290,95 @@ public class CeremonyOfChaosEvent extends AbstractEvent<CeremonyOfChaosMember> | ||||
| 		else | ||||
| 		{ | ||||
| 			final PlayerInstance winner = winners.get(0).getPlayer(); | ||||
| 			msg = SystemMessage.getSystemMessage(SystemMessageId.CONGRATULATIONS_C1_YOU_WIN_THE_MATCH); | ||||
| 			msg.addString(winner.getName()); | ||||
| 			 | ||||
| 			// Rewards according to https://l2wiki.com/Ceremony_of_Chaos | ||||
| 			final int marksRewarded = Rnd.get(2, 4); | ||||
| 			winner.addItem("CoC-Winner", 34900, marksRewarded, winner, true); // Mysterious Marks | ||||
| 			 | ||||
| 			// Possible additional rewards | ||||
| 			 | ||||
| 			// Improved Life Stone | ||||
| 			if (Rnd.get(10) < 3) // Chance to get reward (30%) | ||||
| 			if (winner != null) | ||||
| 			{ | ||||
| 				switch (Rnd.get(4)) | ||||
| 				msg = SystemMessage.getSystemMessage(SystemMessageId.CONGRATULATIONS_C1_YOU_WIN_THE_MATCH); | ||||
| 				msg.addString(winner.getName()); | ||||
| 				 | ||||
| 				// Rewards according to https://l2wiki.com/Ceremony_of_Chaos | ||||
| 				final int marksRewarded = Rnd.get(2, 4); | ||||
| 				winner.addItem("CoC-Winner", 34900, marksRewarded, winner, true); // Mysterious Marks | ||||
| 				 | ||||
| 				// Possible additional rewards | ||||
| 				 | ||||
| 				// Improved Life Stone | ||||
| 				if (Rnd.get(10) < 3) // Chance to get reward (30%) | ||||
| 				{ | ||||
| 					case 0: | ||||
| 					switch (Rnd.get(4)) | ||||
| 					{ | ||||
| 						winner.addItem("CoC-Winner", 18570, 1, winner, true); // Improved Life Stone (R95-grade) | ||||
| 						break; | ||||
| 					} | ||||
| 					case 1: | ||||
| 					{ | ||||
| 						winner.addItem("CoC-Winner", 18571, 1, winner, true); // Improved Life Stone (R95-grade) | ||||
| 						break; | ||||
| 					} | ||||
| 					case 2: | ||||
| 					{ | ||||
| 						winner.addItem("CoC-Winner", 18575, 1, winner, true); // Improved Life Stone (R99-grade) | ||||
| 						break; | ||||
| 					} | ||||
| 					case 3: | ||||
| 					{ | ||||
| 						winner.addItem("CoC-Winner", 18576, 1, winner, true); // Improved Life Stone (R99-grade) | ||||
| 						break; | ||||
| 						case 0: | ||||
| 						{ | ||||
| 							winner.addItem("CoC-Winner", 18570, 1, winner, true); // Improved Life Stone (R95-grade) | ||||
| 							break; | ||||
| 						} | ||||
| 						case 1: | ||||
| 						{ | ||||
| 							winner.addItem("CoC-Winner", 18571, 1, winner, true); // Improved Life Stone (R95-grade) | ||||
| 							break; | ||||
| 						} | ||||
| 						case 2: | ||||
| 						{ | ||||
| 							winner.addItem("CoC-Winner", 18575, 1, winner, true); // Improved Life Stone (R99-grade) | ||||
| 							break; | ||||
| 						} | ||||
| 						case 3: | ||||
| 						{ | ||||
| 							winner.addItem("CoC-Winner", 18576, 1, winner, true); // Improved Life Stone (R99-grade) | ||||
| 							break; | ||||
| 						} | ||||
| 					} | ||||
| 				} | ||||
| 			} | ||||
| 			// Soul Crystal Fragment | ||||
| 			else if (Rnd.get(10) < 3) // Chance to get reward (30%) | ||||
| 			{ | ||||
| 				switch (Rnd.get(6)) | ||||
| 				// Soul Crystal Fragment | ||||
| 				else if (Rnd.get(10) < 3) // Chance to get reward (30%) | ||||
| 				{ | ||||
| 					case 0: | ||||
| 					switch (Rnd.get(6)) | ||||
| 					{ | ||||
| 						winner.addItem("CoC-Winner", 19467, 1, winner, true); // Yellow Soul Crystal Fragment (R99-Grade) | ||||
| 						break; | ||||
| 					} | ||||
| 					case 1: | ||||
| 					{ | ||||
| 						winner.addItem("CoC-Winner", 19468, 1, winner, true); // Teal Soul Crystal Fragment (R99-Grade) | ||||
| 						break; | ||||
| 					} | ||||
| 					case 2: | ||||
| 					{ | ||||
| 						winner.addItem("CoC-Winner", 19469, 1, winner, true); // Purple Soul Crystal Fragment (R99-Grade) | ||||
| 						break; | ||||
| 					} | ||||
| 					case 3: | ||||
| 					{ | ||||
| 						winner.addItem("CoC-Winner", 19511, 1, winner, true); // Yellow Soul Crystal Fragment (R95-Grade) | ||||
| 						break; | ||||
| 					} | ||||
| 					case 4: | ||||
| 					{ | ||||
| 						winner.addItem("CoC-Winner", 19512, 1, winner, true); // Teal Soul Crystal Fragment (R95-Grade) | ||||
| 						break; | ||||
| 					} | ||||
| 					case 5: | ||||
| 					{ | ||||
| 						winner.addItem("CoC-Winner", 19513, 1, winner, true); // Purple Soul Crystal Fragment (R95-Grade) | ||||
| 						break; | ||||
| 						case 0: | ||||
| 						{ | ||||
| 							winner.addItem("CoC-Winner", 19467, 1, winner, true); // Yellow Soul Crystal Fragment (R99-Grade) | ||||
| 							break; | ||||
| 						} | ||||
| 						case 1: | ||||
| 						{ | ||||
| 							winner.addItem("CoC-Winner", 19468, 1, winner, true); // Teal Soul Crystal Fragment (R99-Grade) | ||||
| 							break; | ||||
| 						} | ||||
| 						case 2: | ||||
| 						{ | ||||
| 							winner.addItem("CoC-Winner", 19469, 1, winner, true); // Purple Soul Crystal Fragment (R99-Grade) | ||||
| 							break; | ||||
| 						} | ||||
| 						case 3: | ||||
| 						{ | ||||
| 							winner.addItem("CoC-Winner", 19511, 1, winner, true); // Yellow Soul Crystal Fragment (R95-Grade) | ||||
| 							break; | ||||
| 						} | ||||
| 						case 4: | ||||
| 						{ | ||||
| 							winner.addItem("CoC-Winner", 19512, 1, winner, true); // Teal Soul Crystal Fragment (R95-Grade) | ||||
| 							break; | ||||
| 						} | ||||
| 						case 5: | ||||
| 						{ | ||||
| 							winner.addItem("CoC-Winner", 19513, 1, winner, true); // Purple Soul Crystal Fragment (R95-Grade) | ||||
| 							break; | ||||
| 						} | ||||
| 					} | ||||
| 				} | ||||
| 			} | ||||
| 			// Mysterious Belt | ||||
| 			else if (Rnd.get(10) < 1) // Chance to get reward (10%) | ||||
| 			{ | ||||
| 				winner.addItem("CoC-Winner", 35565, 1, winner, true); // Mysterious Belt | ||||
| 			} | ||||
| 			 | ||||
| 			// Save monthly progress. | ||||
| 			final int totalMarks = winner.getVariables().getInt(PlayerVariables.CEREMONY_OF_CHAOS_MARKS, 0) + marksRewarded; | ||||
| 			winner.getVariables().set(PlayerVariables.CEREMONY_OF_CHAOS_MARKS, totalMarks); | ||||
| 			if (totalMarks > GlobalVariablesManager.getInstance().getInt(GlobalVariablesManager.COC_TOP_MARKS, 0)) | ||||
| 			{ | ||||
| 				GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MARKS, totalMarks); | ||||
| 				GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MEMBER, winner.getObjectId()); | ||||
| 				// Mysterious Belt | ||||
| 				else if (Rnd.get(10) < 1) // Chance to get reward (10%) | ||||
| 				{ | ||||
| 					winner.addItem("CoC-Winner", 35565, 1, winner, true); // Mysterious Belt | ||||
| 				} | ||||
| 				 | ||||
| 				// Save monthly progress. | ||||
| 				final int totalMarks = winner.getVariables().getInt(PlayerVariables.CEREMONY_OF_CHAOS_MARKS, 0) + marksRewarded; | ||||
| 				winner.getVariables().set(PlayerVariables.CEREMONY_OF_CHAOS_MARKS, totalMarks); | ||||
| 				if (totalMarks > GlobalVariablesManager.getInstance().getInt(GlobalVariablesManager.COC_TOP_MARKS, 0)) | ||||
| 				{ | ||||
| 					GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MARKS, totalMarks); | ||||
| 					GlobalVariablesManager.getInstance().set(GlobalVariablesManager.COC_TOP_MEMBER, winner.getObjectId()); | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| 		 | ||||
| @@ -385,7 +388,10 @@ public class CeremonyOfChaosEvent extends AbstractEvent<CeremonyOfChaosMember> | ||||
| 			if (player != null) | ||||
| 			{ | ||||
| 				// Send winner message | ||||
| 				player.sendPacket(msg); | ||||
| 				if (msg != null) | ||||
| 				{ | ||||
| 					player.sendPacket(msg); | ||||
| 				} | ||||
| 				 | ||||
| 				// Send result | ||||
| 				player.sendPacket(new ExCuriousHouseResult(member.getResultType(), this)); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 MobiusDevelopment
					MobiusDevelopment