diff --git a/src/engine/gameManager/HotzoneManager.java b/src/engine/gameManager/HotzoneManager.java index 21cfb02a..45109e98 100644 --- a/src/engine/gameManager/HotzoneManager.java +++ b/src/engine/gameManager/HotzoneManager.java @@ -2,14 +2,15 @@ package engine.gameManager; import engine.Enum; import engine.InterestManagement.WorldGrid; +import engine.net.Dispatch; import engine.net.DispatchMessage; +import engine.net.client.msg.HotzoneChangeMsg; import engine.net.client.msg.chat.ChatSystemMsg; -import engine.objects.Guild; -import engine.objects.Mob; -import engine.objects.Zone; +import engine.objects.*; import org.pmw.tinylog.Logger; import java.util.Random; +import java.util.concurrent.ThreadLocalRandom; public class HotzoneManager { @@ -55,7 +56,101 @@ public class HotzoneManager { created.runAfterLoad(); WorldGrid.addObject(created,created.bindLoc.x,created.bindLoc.z); created.teleport(created.bindLoc); + created.BehaviourType = Enum.MobBehaviourType.Aggro; hotzoneMob = created; HellgateManager.SpecialLootHandler(created,true,true); + + for(PlayerCharacter player : SessionManager.getAllActivePlayerCharacters()) { + HotzoneChangeMsg hcm = new HotzoneChangeMsg(Enum.GameObjectType.Zone.ordinal(), ZoneManager.hotZone.getObjectUUID()); + Dispatch dispatch = Dispatch.borrow(player, hcm); + DispatchMessage.dispatchMsgDispatch(dispatch, Enum.DispatchChannel.SECONDARY); + } + } + + public static void GenerateHotzoneEpicLoot(Mob mob){ + mob.getCharItemManager().clearInventory(); + Random random = new Random(); + int roll = random.nextInt(100); + int itemId; + ItemBase runeBase; + if(roll >= 90){ + //35 or 40 + roll = ThreadLocalRandom.current().nextInt(HellgateManager.static_rune_ids_high.size() + 1); + itemId = HellgateManager.static_rune_ids_high.get(0); + try { + itemId = HellgateManager.static_rune_ids_high.get(roll); + } catch (Exception e) { + + } + runeBase = ItemBase.getItemBase(itemId); + if (runeBase != null) { + MobLoot rune = new MobLoot(mob, runeBase, true); + + if (rune != null) + mob.getCharItemManager().addItemToInventory(rune); + } + }else if (roll >= 76 && roll <= 89){ + //30,35 or 40 + roll = ThreadLocalRandom.current().nextInt(HellgateManager.static_rune_ids_mid.size() + 1); + itemId = HellgateManager.static_rune_ids_mid.get(0); + try { + itemId = HellgateManager.static_rune_ids_mid.get(roll); + } catch (Exception e) { + + } + runeBase = ItemBase.getItemBase(itemId); + if (runeBase != null) { + MobLoot rune = new MobLoot(mob, runeBase, true); + + if (rune != null) + mob.getCharItemManager().addItemToInventory(rune); + } + }else{ + //5-30 + roll = ThreadLocalRandom.current().nextInt(HellgateManager.static_rune_ids_low.size() + 1); + itemId = HellgateManager.static_rune_ids_low.get(0); + try { + itemId = HellgateManager.static_rune_ids_low.get(roll); + } catch (Exception e) { + + } + runeBase = ItemBase.getItemBase(itemId); + if (runeBase != null) { + MobLoot rune = new MobLoot(mob, runeBase, true); + + if (rune != null) + mob.getCharItemManager().addItemToInventory(rune); + } + } + if(roll >= 95){ + //glass + int glassRoll = ThreadLocalRandom.current().nextInt(1,101); + if(glassRoll < 5){ + int glassID = LootManager.rollRandomItem(126); + ItemBase glassItem = ItemBase.getItemBase(glassID); + if (glassItem != null) { + MobLoot glass = new MobLoot(mob, glassItem, true); + + if (glass != null) + mob.getCharItemManager().addItemToInventory(glass); + } + } + } + + //guard captain + roll = ThreadLocalRandom.current().nextInt(LootManager.racial_guard_uuids.size() + 1); + itemId = LootManager.racial_guard_uuids.get(0); + try { + itemId = LootManager.racial_guard_uuids.get(roll); + } catch (Exception e) { + + } + runeBase = ItemBase.getItemBase(itemId); + if (runeBase != null) { + MobLoot rune = new MobLoot(mob, runeBase, true); + + if (rune != null) + mob.getCharItemManager().addItemToInventory(rune); + } } }