diff --git a/scripts/radial/structure/moveable.py b/scripts/radial/structure/moveable.py index 7977d62f..1419fae6 100644 --- a/scripts/radial/structure/moveable.py +++ b/scripts/radial/structure/moveable.py @@ -2,7 +2,6 @@ from resources.common import RadialOptions import sys def createRadial(core, owner, target, radials): - radials.clear() radials.add(RadialOptions(0, 7, 1, '')) radials.add(RadialOptions(0, 11, 1, '')) diff --git a/scripts/radial/structure/structure_management_terminal.py b/scripts/radial/structure/structure_management_terminal.py index 27c00f48..d6756fec 100644 --- a/scripts/radial/structure/structure_management_terminal.py +++ b/scripts/radial/structure/structure_management_terminal.py @@ -7,26 +7,28 @@ import sys def createRadial(core, owner, target, radials): #(byte parentId, short optionId, byte optionType, String description) - radials.clear() - radials.add(RadialOptions(0, 7, 0, 'Examine')) - radials.add(RadialOptions(0, 78, 0, '@player_structure:management')) - radials.add(RadialOptions(0, 117, 0, '@player_structure:permissions')) - radials.add(RadialOptions(2, 128, 0, '@player_structure:permission_destroy')) - radials.add(RadialOptions(2, 124, 0, '@player_structure:management_status')) - radials.add(RadialOptions(2, 129, 0, '@player_structure:management_pay')) - radials.add(RadialOptions(2, 50, 0, '@base_player:set_name')) - radials.add(RadialOptions(2, 127, 0, '@player_structure:management_residence')) - radials.add(RadialOptions(2, 125, 0, '@player_structure:management_privacy : ' + core.housingService.fetchPrivacyString(target))) - radials.add(RadialOptions(2, 171, 0, '@player_structure:find_items_find_all_house_items')) - radials.add(RadialOptions(2, 173, 0, '@player_structure:move_first_item')) - radials.add(RadialOptions(2, 174, 0, '@player_structure:find_items_search_for_house_items')) - radials.add(RadialOptions(2, 175, 0, '@player_structure:delete_all_items_title')) - radials.add(RadialOptions(2, 172, 0, 'Pack Up This Building')) - radials.add(RadialOptions(3, 121, 0, '@player_structure:permission_enter')) - radials.add(RadialOptions(3, 122, 0, '@player_structure:permission_admin')) - radials.add(RadialOptions(3, 123, 0, '@player_structure:permission_banned')) - if owner.getSkillModBase('manage_vendor') >= 1: - radials.add(RadialOptions(2, 130, 0, '@player_structure:create_vendor')) + + if core.housingService.getPermissions(owner, target.getContainer()): + radials.clear() + radials.add(RadialOptions(0, 7, 0, 'Examine')) + radials.add(RadialOptions(0, 78, 0, '@player_structure:management')) + radials.add(RadialOptions(0, 117, 0, '@player_structure:permissions')) + radials.add(RadialOptions(2, 128, 0, '@player_structure:permission_destroy')) + radials.add(RadialOptions(2, 124, 0, '@player_structure:management_status')) + radials.add(RadialOptions(2, 129, 0, '@player_structure:management_pay')) + radials.add(RadialOptions(2, 50, 0, '@base_player:set_name')) + radials.add(RadialOptions(2, 127, 0, '@player_structure:management_residence')) + radials.add(RadialOptions(2, 125, 0, '@player_structure:management_privacy : ' + core.housingService.fetchPrivacyString(target))) + radials.add(RadialOptions(2, 171, 0, '@player_structure:find_items_find_all_house_items')) + radials.add(RadialOptions(2, 173, 0, '@player_structure:move_first_item')) + radials.add(RadialOptions(2, 174, 0, '@player_structure:find_items_search_for_house_items')) + radials.add(RadialOptions(2, 175, 0, '@player_structure:delete_all_items_title')) + radials.add(RadialOptions(2, 172, 0, 'Pack Up This Building')) + radials.add(RadialOptions(3, 121, 0, '@player_structure:permission_enter')) + radials.add(RadialOptions(3, 122, 0, '@player_structure:permission_admin')) + radials.add(RadialOptions(3, 123, 0, '@player_structure:permission_banned')) + if owner.getSkillModBase('manage_vendor') >= 1: + radials.add(RadialOptions(2, 130, 0, '@player_structure:create_vendor')) return diff --git a/src/resources/objects/creature/CreatureObject.java b/src/resources/objects/creature/CreatureObject.java index 2c76eff7..e6284a4e 100644 --- a/src/resources/objects/creature/CreatureObject.java +++ b/src/resources/objects/creature/CreatureObject.java @@ -1853,4 +1853,14 @@ public class CreatureObject extends TangibleObject implements Serializable { } } } + + public String getFirstName() + { + return getCustomName().split(" ")[0]; + } + + public String getLastName() + { + return getCustomName().split(" ")[1]; + } } diff --git a/src/services/housing/HousingService.java b/src/services/housing/HousingService.java index 63fcea95..55b75aa6 100644 --- a/src/services/housing/HousingService.java +++ b/src/services/housing/HousingService.java @@ -146,7 +146,6 @@ public class HousingService implements INetworkDispatch { core.objectService.destroyObject(deed); - building.setAttachment("sign", sign); // meh workaround building.setAttachment("nextMaintenance", System.currentTimeMillis() + 3600000); building.setAttachment("structureOwner", actor.getObjectID()); @@ -489,22 +488,20 @@ public class HousingService implements INetworkDispatch { owner.sendSystemMessage("Structure renamed.", DisplayType.Broadcast); } - public void createStatusSUIPage(SWGObject owner, TangibleObject target) { + public void createStatusSUIPage(CreatureObject owner, TangibleObject target) + { final BuildingObject building = (BuildingObject) target.getGrandparent(); - //final BuildingObject building = (BuildingObject) target.getAttachment("housing_parentstruct"); + String displayname = "@installation_n:"+building.getStfName(); - if (building.getCustomName()!=null) - displayname = building.getCustomName(); + if (building.getCustomName()!=null) displayname = building.getCustomName(); + final SUIWindow window = core.suiService.createSUIWindow("Script.listBox", owner, target, 0); window.setProperty("bg.caption.lblTitle:Text", "@player_structure:structure_status_t"); window.setProperty("Prompt.lblPrompt:Text", "@player_structure:structure_name_prompt" + " " + displayname); - String ownerName = owner.getCustomName(); - if (ownerName.length()>0){ - String[] helper = ownerName.split(" "); - ownerName = helper[0]; - } - + + String ownerName = core.objectService.getObject((long) building.getAttachment("structureOwner")).getFirstName(); String maintenancePool_string = ""+(int)building.getMaintenanceAmount(); + int hourlyMaintenance = building.getBMR(); float totalNumberOfHours = (float)building.getMaintenanceAmount()/hourlyMaintenance; float minuteFraction = ((totalNumberOfHours * 100) % 100) / 100; @@ -515,10 +512,10 @@ public class HousingService implements INetworkDispatch { maintenancePool_string += " (" + nDays + " days, " + nHours + " hours, " + nMinutes + " minutes)"; window.addListBoxMenuItem("@player_structure:owner_prompt" + " " + ownerName, 0); - if (building.getPrivacy()==BuildingObject.PRIVATE) - window.addListBoxMenuItem("@player_structure:structure_private", 1); - else - window.addListBoxMenuItem("@player_structure:structure_public", 1); + + if (building.getPrivacy()==BuildingObject.PRIVATE) window.addListBoxMenuItem("@player_structure:structure_private", 1); + else window.addListBoxMenuItem("@player_structure:structure_public", 1); + window.addListBoxMenuItem("@player_structure:condition_prompt" + " " + target.getConditionDamage()+"%", 2); window.addListBoxMenuItem("@player_structure:maintenance_pool_prompt " + maintenancePool_string, 3); window.addListBoxMenuItem("@player_structure:maintenance_rate_prompt " + building.getBMR() + " cr/h", 4); // @player_structure:credits_per_hour @@ -557,7 +554,7 @@ public class HousingService implements INetworkDispatch { return; } } - if(System.currentTimeMillis() < (long) owner.getAttachment("residencyCooldown") && cityActorIsIn.getMayorID() != owner.getObjectID()) { + if((owner.getAttachment("residencyCooldown") == null || System.currentTimeMillis() < (long) owner.getAttachment("residencyCooldown")) && cityActorIsIn.getMayorID() != owner.getObjectID()) { ((CreatureObject) owner).sendSystemMessage(OutOfBand.ProsePackage("@player_structure:change_residence_time", "DI", (int) ((long) owner.getAttachment("residencyCooldown") - System.currentTimeMillis()) / 3600000), (byte) 0); return; } @@ -621,16 +618,11 @@ public class HousingService implements INetworkDispatch { core.suiService.closeSUIWindow(owner, 0); } }); - core.suiService.openSUIWindow(window); - - + core.suiService.openSUIWindow(window); } - public void handleDeleteAllItems(SWGObject owner, TangibleObject target) { - final BuildingObject building = (BuildingObject) target.getGrandparent(); - //final BuildingObject building = (BuildingObject) target.getAttachment("housing_parentstruct"); - //building.getItemsList().clear(); - // confirmation needed + public void handleDeleteAllItems(SWGObject owner, TangibleObject target) + { confirmDeleteAllItems(owner, target); } @@ -676,8 +668,8 @@ public class HousingService implements INetworkDispatch { core.suiService.openSUIWindow(window); } - public void confirmDeleteAllItems2ndStage(final CreatureObject ownerC, BuildingObject building) { - + public void confirmDeleteAllItems2ndStage(final CreatureObject ownerC, BuildingObject building) + { final SUIWindow window = core.suiService.createMessageBox(2,"@player_structure:structure_status","@player_structure:structure_name_prompt", ownerC, building, 0); window.setProperty("bg.caption.lblTitle:Text", "@player_structure:confirm_destruction_t"); window.setProperty("Prompt.lblPrompt:Text", "@player_structure:delete_all_items_second_d"); diff --git a/src/services/object/ObjectService.java b/src/services/object/ObjectService.java index 9edab839..1577f502 100644 --- a/src/services/object/ObjectService.java +++ b/src/services/object/ObjectService.java @@ -528,11 +528,13 @@ public class ObjectService implements INetworkDispatch { core.simulationService.remove(object, object.getWorldPosition().x, object.getWorldPosition().z, true); } @SuppressWarnings("unchecked") Vector childObjects = (Vector) object.getAttachment("childObjects"); - for(SWGObject child : childObjects) { - if(child.getParentId() != 0) - destroyObject(child); + if(childObjects != null) + { + for(SWGObject child : childObjects) { + if(child != null && child.getParentId() != 0) + destroyObject(child); + } } - } public void destroyObject(long objectID) {