// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ . // ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌· // ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀ // ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌ // ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀ // Magicbane Emulator Project © 2013 - 2022 // www.magicbane.com package engine.devcmd.cmds; import engine.Enum.GameObjectType; import engine.devcmd.AbstractDevCmd; import engine.net.DispatchMessage; import engine.net.client.msg.ApplyBuildingEffectMsg; import engine.net.client.msg.UpdateCharOrMobMessage; import engine.objects.*; public class SetSubRaceCmd extends AbstractDevCmd { public SetSubRaceCmd() { super("setSubRace"); this.addCmdString("subrace"); } @Override protected void _doCmd(PlayerCharacter pc, String[] words, AbstractGameObject target) { if (target instanceof AbstractCharacter){ if (words[0].equals("race")){ if (target.getObjectType() != GameObjectType.PlayerCharacter) return; PlayerCharacter player = (PlayerCharacter)target; int raceID = Integer.parseInt(words[1]); player.setSubRaceID(raceID); if (raceID == 0) raceID = player.getRaceID(); UpdateCharOrMobMessage ucm = new UpdateCharOrMobMessage(player, 1,raceID); DispatchMessage.sendToAllInRange(player, ucm); return; } if (words[0].equals("all")){ for (int i = 15999; i< 16337;i++){ ApplyBuildingEffectMsg applyBuildingEffectMsg = new ApplyBuildingEffectMsg(4, 0, target.getObjectType().ordinal(), target.getObjectUUID(), i); DispatchMessage.sendToAllInRange((AbstractWorldObject) target, applyBuildingEffectMsg); try { Thread.sleep(500); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }else{ ApplyBuildingEffectMsg applyBuildingEffectMsg = new ApplyBuildingEffectMsg(4, 0, target.getObjectType().ordinal(), target.getObjectUUID(), Integer.parseInt(words[0])); DispatchMessage.sendToAllInRange((AbstractWorldObject) target, applyBuildingEffectMsg); } return; } Building building = (Building)target; building.removeAllVisualEffects(); building.addEffectBit(1<(), new ArrayList<>(), null, true); // pc.getClientConnection().sendMsg(updateInventoryMsg); //pc.getCharItemManager().updateInventory(); // Mob mob = (Mob)target; // // if (mob == null) // return; // // MobLoot mobLoot = new MobLoot(mob, ItemBase.getItemBase(Integer.parseInt(words[0])), false); // // mob.getCharItemManager().addItemToInventory(mobLoot); // if (target.getObjectType() != GameObjectType.Building) // return; // // Building warehouseBuilding = (Building)target; // // if (Warehouse.warehouseByBuildingUUID.get(warehouseBuilding.getObjectUUID()) == null) // return; // // Warehouse warehouse = Warehouse.warehouseByBuildingUUID.get(warehouseBuilding.getObjectUUID()); // // for (int ibID: Warehouse.getMaxResources().keySet()){ // ItemBase ib = ItemBase.getItemBase(ibID); // warehouse.depositFromMine(null, ib, Warehouse.getMaxResources().get(ibID)); // } // int raceID = Integer.parseInt(words[0]); // // UpdateCharOrMobMessage ucm = new UpdateCharOrMobMessage(pc, raceID); // // pc.getClientConnection().sendMsg(ucm); // LoadCharacterMsg lcm = new LoadCharacterMsg((AbstractCharacter)null,false); // try { // DispatchMessage.sendToAllInRange(pc, lcm); // } catch (MsgSendException e) { // // TODO Auto-generated catch block // e.printStackTrace(); // } // ModifyHealthMsg mhm =new ModifyHealthMsg(pc, pc, -50f, 0f, 0f, 0, null, 9999, 0); // mhm.setOmitFromChat(1); // pc.getClientConnection().sendMsg(mhm); // // int temp = 0; // boolean start = false; // // for (EffectsBase eb: EffectsBase.getAllEffectsBase()){ // // // // if (!pc.getClientConnection().isConnected()){ // Logger.info("", "PLAYER DC!" + eb.getIDString()); // break; // } // // eb = PowersManager.getEffectByIDString("WLR-018A"); // // // NoTimeJob ntj = new NoTimeJob(pc, "NONE", eb, 40); // pc.addEffect(String.valueOf(eb.getUUID()), 1000, ntj, eb, 40); // eb.sendEffectNoPower(ntj, 1000, pc.getClientConnection()); // // ThreadUtils.sleep(500); // pc.clearEffects(); // // //WorldServer.updateObject((AbstractWorldObject)target, pc); // this.throwbackInfo(pc, eb.getIDString()); // break; // //ThreadUtils.sleep(500); // // } // for (EffectsBase eb : EffectsBase.getAllEffectsBase()){ // if (eb.getToken() == 0) // continue; // int token = eb.getToken(); // ApplyEffectMsg pum = new ApplyEffectMsg(); // pum.setEffectID(token); // pum.setSourceType(pc.getObjectType().ordinal()); // pum.setSourceID(pc.getObjectUUID()); // pum.setTargetType(pc.getObjectType().ordinal()); // pum.setTargetID(pc.getObjectUUID()); // pum.setNumTrains(40); // pum.setDuration(-1); //// pum.setDuration((pb.isChant()) ? (int)pb.getChantDuration() : ab.getDurationInSeconds(trains)); // pum.setPowerUsedID(0); // // pum.setPowerUsedName("Inflict Poison"); // this.throwbackInfo(pc, eb.getName() + "Token = " + eb.getToken()); // pc.getClientConnection().sendMsg(pum); // ThreadUtils.sleep(200); // } // // UpdateObjectMsg uom = new UpdateObjectMsg(pc, 4); // try { // Location.sendToAllInRange(pc, uom); // } catch (MsgSendException e) { // // TODO Auto-generated catch block // e.printStackTrace(); // } } @Override protected String _getHelpString() { return "Temporarily Changes SubRace"; } @Override protected String _getUsageString() { return "' /subrace mobBaseID"; } }