forked from MagicBane/Server
				
			
				 2 changed files with 1 additions and 214 deletions
			
			
		| @ -1,212 +0,0 @@@@ -1,212 +0,0 @@ | ||||
| // • ▌ ▄ ·.  ▄▄▄·  ▄▄ • ▪   ▄▄· ▄▄▄▄·  ▄▄▄·  ▐▄▄▄  ▄▄▄ .
 | ||||
| // ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
 | ||||
| // ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
 | ||||
| // ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
 | ||||
| // ▀▀  █▪▀▀▀ ▀  ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀  ▀  ▀ ▀▀  █▪ ▀▀▀
 | ||||
| //      Magicbane Emulator Project © 2013 - 2022
 | ||||
| //                www.magicbane.com
 | ||||
| 
 | ||||
| 
 | ||||
| package engine.devcmd.cmds; | ||||
| 
 | ||||
| import engine.InterestManagement.WorldGrid; | ||||
| import engine.devcmd.AbstractDevCmd; | ||||
| import engine.gameManager.BuildingManager; | ||||
| import engine.gameManager.ChatManager; | ||||
| import engine.gameManager.DbManager; | ||||
| import engine.gameManager.ZoneManager; | ||||
| import engine.math.Vector3f; | ||||
| import engine.math.Vector3fImmutable; | ||||
| import engine.mbEnums.ProtectionState; | ||||
| import engine.objects.*; | ||||
| import org.pmw.tinylog.Logger; | ||||
| 
 | ||||
| /** | ||||
|  * @author Eighty | ||||
|  */ | ||||
| public class MakeBaneCmd extends AbstractDevCmd { | ||||
| 
 | ||||
|     public MakeBaneCmd() { | ||||
|         super("makebane"); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     protected void _doCmd(PlayerCharacter pc, String[] words, | ||||
|                           AbstractGameObject target) { | ||||
|         if (words.length < 1 || words.length > 2) { | ||||
|             this.sendUsage(pc); | ||||
|             return; | ||||
|         } | ||||
| 
 | ||||
|         int attackerID = 0; | ||||
|         int rank = 8; | ||||
| 
 | ||||
|         if (words.length == 2) { | ||||
|             try { | ||||
|                 attackerID = Integer.parseInt(words[0]); | ||||
|                 rank = Integer.parseInt(words[1]); | ||||
|             } catch (NumberFormatException e) { | ||||
|                 throwbackError(pc, "AttackerGuildID must be a number, " + words[0] + " is invalid"); | ||||
|                 return; | ||||
|             } | ||||
|         } else if (words.length == 1) { | ||||
|             if (target == null) { | ||||
|                 throwbackError(pc, "No target specified"); | ||||
|                 return; | ||||
|             } | ||||
| 
 | ||||
|             if (!(target instanceof PlayerCharacter)) { | ||||
|                 throwbackError(pc, "Target is not a player"); | ||||
|                 return; | ||||
|             } | ||||
|             attackerID = target.getObjectUUID(); | ||||
| 
 | ||||
|             try { | ||||
|                 rank = Integer.parseInt(words[0]); | ||||
|             } catch (NumberFormatException e) { | ||||
|                 throwbackError(pc, "Rank must be specified, 1 through 8"); | ||||
|                 return; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         if (rank < 1 || rank > 8) { | ||||
|             throwbackError(pc, "Rank must be 1 through 8"); | ||||
|             return; | ||||
|         } | ||||
| 
 | ||||
|         PlayerCharacter player = PlayerCharacter.getPlayerCharacter(attackerID); | ||||
| 
 | ||||
| 
 | ||||
|         if (player.getGuild().isEmptyGuild()) { | ||||
|             throwbackError(pc, "Errant's can not place banes"); | ||||
|             return; | ||||
|         } | ||||
| 
 | ||||
|         AbstractCharacter attackerAGL = Guild.GetGL(player.getGuild()); | ||||
| 
 | ||||
|         if (attackerAGL == null) { | ||||
|             throwbackError(pc, "No guild leader found for attacking guild."); | ||||
|             return; | ||||
|         } | ||||
| 
 | ||||
|         if (!(attackerAGL instanceof PlayerCharacter)) { | ||||
|             throwbackError(pc, "Attacking guild leader is an NPC."); | ||||
|             return; | ||||
|         } | ||||
| 
 | ||||
|         if (player.getGuild().isNPCGuild()) { | ||||
|             throwbackError(pc, "The guild used is an npc guild. They can not bane."); | ||||
|             return; | ||||
|         } | ||||
| 
 | ||||
|         //		if (player.getGuild().getOwnedCity() != null) {
 | ||||
|         //			throwbackError(pc, "The attacking guild already has a city.");
 | ||||
|         //			return;
 | ||||
|         //		}
 | ||||
| 
 | ||||
|         Zone zone = ZoneManager.findSmallestZone(pc.getLoc()); | ||||
| 
 | ||||
|         if (zone == null) { | ||||
|             throwbackError(pc, "Unable to find the zone you're in."); | ||||
|             return; | ||||
|         } | ||||
| 
 | ||||
|         if (!zone.guild_zone) { | ||||
|             throwbackError(pc, "This is not a player city."); | ||||
|             return; | ||||
|         } | ||||
| 
 | ||||
|         City city = City.getCity(zone.playerCityUUID); | ||||
|         if (city == null) { | ||||
|             throwbackError(pc, "Unable to find the city associated with this zone."); | ||||
|             return; | ||||
|         } | ||||
| 
 | ||||
|         if (city.getTOL() == null) { | ||||
|             throwbackError(pc, "Unable to find the tree of life for this city."); | ||||
|             return; | ||||
|         } | ||||
| 
 | ||||
|         if (city.getBane() != null) { | ||||
|             throwbackError(pc, "This city is already baned."); | ||||
|             return; | ||||
|         } | ||||
| 
 | ||||
|         if (Bane.getBaneByAttackerGuild(player.getGuild()) != null) { | ||||
|             throwbackError(pc, "This guild is already baning someone."); | ||||
|             return; | ||||
|         } | ||||
| 
 | ||||
|         Blueprint blueprint = Blueprint.getBlueprint(24300); | ||||
| 
 | ||||
|         if (blueprint == null) { | ||||
|             throwbackError(pc, "Unable to find building set for banestone."); | ||||
|             return; | ||||
|         } | ||||
| 
 | ||||
|         Vector3f rot = new Vector3f(0, 0, 0); | ||||
| 
 | ||||
|         // *** Refactor : Overlap test goes here
 | ||||
| 
 | ||||
|         //Let's drop a banestone!
 | ||||
|         Vector3fImmutable localLocation = ZoneManager.worldToLocal(pc.getLoc(), zone); | ||||
| 
 | ||||
|         if (localLocation == null) { | ||||
|             ChatManager.chatSystemError(pc, "Failed to convert world location to zone location. Contact a CCR."); | ||||
|             Logger.info("Failed to Convert World coordinates to local zone coordinates"); | ||||
|             return; | ||||
|         } | ||||
| 
 | ||||
|         Building stone = DbManager.BuildingQueries.CREATE_BUILDING( | ||||
|                 zone.getObjectUUID(), pc.getObjectUUID(), blueprint.getName(), blueprint.getBlueprintUUID(), | ||||
|                 localLocation, 1.0f, blueprint.getMaxHealth(rank), ProtectionState.PROTECTED, 0, rank, | ||||
|                 null, blueprint.getBlueprintUUID(), 1, 0.0f); | ||||
| 
 | ||||
|         if (stone == null) { | ||||
|             ChatManager.chatSystemError(pc, "Failed to create banestone."); | ||||
|             return; | ||||
|         } | ||||
|         stone.addEffectBit((1 << 19)); | ||||
|         BuildingManager.setRank(stone, (byte) rank); | ||||
|         stone.setMaxHitPoints(blueprint.getMaxHealth(stone.getRank())); | ||||
|         stone.setCurrentHitPoints(stone.getMaxHitPoints()); | ||||
|         BuildingManager.setUpgradeDateTime(stone, null, 0); | ||||
| 
 | ||||
|         //Make the bane
 | ||||
| 
 | ||||
|         Bane bane = Bane.makeBane(player, city, stone); | ||||
| 
 | ||||
|         if (bane == null) { | ||||
| 
 | ||||
|             //delete bane stone, failed to make bane object
 | ||||
|             DbManager.BuildingQueries.DELETE_FROM_DATABASE(stone); | ||||
| 
 | ||||
|             throwbackError(pc, "Failed to create bane."); | ||||
|             return; | ||||
|         } | ||||
| 
 | ||||
|         WorldGrid.addObject(stone, pc); | ||||
| 
 | ||||
|         //Add baned effect to TOL
 | ||||
|         city.getTOL().addEffectBit((1 << 16)); | ||||
|         city.getTOL().updateEffects(); | ||||
| 
 | ||||
|         Vector3fImmutable movePlayerOutsideStone = player.getLoc(); | ||||
|         movePlayerOutsideStone = movePlayerOutsideStone.setX(movePlayerOutsideStone.x + 10); | ||||
|         movePlayerOutsideStone = movePlayerOutsideStone.setZ(movePlayerOutsideStone.z + 10); | ||||
|         player.teleport(movePlayerOutsideStone); | ||||
| 
 | ||||
|         throwbackInfo(pc, "The city has been succesfully baned."); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     protected String _getHelpString() { | ||||
|         return "Creates an bane."; | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     protected String _getUsageString() { | ||||
|         return "'./makebane playerUUID baneRank'"; | ||||
|     } | ||||
| 
 | ||||
| } | ||||
					Loading…
					
					
				
		Reference in new issue