forked from MagicBane/Server
				
			
				 2 changed files with 1 additions and 214 deletions
			
			
		| @ -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