package com.planet_ink.coffee_mud.Common; import com.planet_ink.coffee_mud.core.interfaces.*; import com.planet_ink.coffee_mud.core.*; import com.planet_ink.coffee_mud.core.collections.*; import com.planet_ink.coffee_mud.Abilities.interfaces.*; import com.planet_ink.coffee_mud.Areas.interfaces.*; import com.planet_ink.coffee_mud.Behaviors.interfaces.*; import com.planet_ink.coffee_mud.CharClasses.interfaces.*; import com.planet_ink.coffee_mud.Commands.interfaces.*; import com.planet_ink.coffee_mud.Common.interfaces.*; import com.planet_ink.coffee_mud.Exits.interfaces.*; import com.planet_ink.coffee_mud.Items.interfaces.*; import com.planet_ink.coffee_mud.Libraries.interfaces.*; import com.planet_ink.coffee_mud.Locales.interfaces.*; import com.planet_ink.coffee_mud.MOBS.interfaces.*; import com.planet_ink.coffee_mud.Races.interfaces.*; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Enumeration; import java.util.Hashtable; import java.util.Properties; import java.util.Vector; /* Copyright 2005-2016 Bo Zimmerman Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ public class DefaultArrestWarrant implements LegalWarrant { @Override public String ID() { return "DefaultArrestWarrant"; } @Override public String name() { return ID(); } @Override public CMObject newInstance() { try { return getClass().newInstance(); } catch (final Exception e) { return new DefaultArrestWarrant(); } } @Override public int compareTo(CMObject o) { return CMClass.classID(this).compareToIgnoreCase(CMClass.classID(o)); } @Override public void initializeClass() { } @Override public CMObject copyOf() { try { return (DefaultArrestWarrant) this.clone(); } catch (final CloneNotSupportedException e) { return newInstance(); } } private MOB criminal = null; private MOB victim = null; private MOB witness = null; private MOB arrestingOfficer = null; private Room jail = null; private Room releaseRoom = null; private String crime = ""; private final DVector punishmentParms = new DVector(2); private int punishment = -1; private int jailTime = 0; private int state = 0; private int offenses = 0; private long lastOffense = 0; private long travelAttemptTime = 0; private long lastStateChangeTime = 0; private String warnMsg = null; @Override public void setArrestingOfficer(Area legalArea, MOB mob) { if ((arrestingOfficer != null) && (arrestingOfficer.getStartRoom() != null) && (arrestingOfficer.location() != null) && (legalArea != null) && (arrestingOfficer.getStartRoom().getArea() != arrestingOfficer.location().getArea()) && (!legalArea.inMyMetroArea(arrestingOfficer.location().getArea()))) CMLib.tracking().wanderAway(arrestingOfficer, true, true); if ((mob == null) && (arrestingOfficer != null)) CMLib.tracking().stopTracking(arrestingOfficer); arrestingOfficer = mob; } @Override public MOB criminal() { return criminal; } @Override public MOB victim() { return victim; } @Override public MOB witness() { return witness; } @Override public MOB arrestingOfficer() { return arrestingOfficer; } @Override public Room jail() { return CMLib.map().getRoom(jail); } @Override public Room releaseRoom() { return CMLib.map().getRoom(releaseRoom); } @Override public String crime() { return crime; } @Override public int punishment() { return punishment; } @Override public String getPunishmentParm(int code) { final int index = punishmentParms.indexOf(Integer.valueOf(code)); if (index < 0) return ""; return (String) punishmentParms.elementAt(index, 2); } @Override public void addPunishmentParm(int code, String parm) { final int index = punishmentParms.indexOf(Integer.valueOf(code)); if (index >= 0) punishmentParms.removeElementAt(index); punishmentParms.addElement(Integer.valueOf(code), parm); } @Override public int jailTime() { return jailTime; } @Override public int state() { return state; } @Override public int offenses() { return offenses; } @Override public long lastOffense() { return lastOffense; } @Override public long travelAttemptTime() { return travelAttemptTime; } @Override public String warnMsg() { return warnMsg; } @Override public void setCriminal(MOB mob) { criminal = mob; } @Override public void setVictim(MOB mob) { victim = mob; } @Override public void setWitness(MOB mob) { witness = mob; } @Override public void setJail(Room R) { jail = R; } @Override public void setReleaseRoom(Room R) { releaseRoom = R; } @Override public void setCrime(String newcrime) { crime = newcrime; } @Override public void setPunishment(int code) { punishment = code; } @Override public void setJailTime(int time) { jailTime = time; } @Override public void setState(int newstate) { lastStateChangeTime=System.currentTimeMillis(); state = newstate; } @Override public long getLastStateChangeTime() { return lastStateChangeTime; } @Override public void setOffenses(int num) { offenses = num; } @Override public void setLastOffense(long last) { lastOffense = last; } @Override public void setTravelAttemptTime(long time) { travelAttemptTime = time; } @Override public void setWarnMsg(String msg) { warnMsg = msg; } }