void StructureMaintenanceTask::sendMailDecay(CreatureObject* owner, StructureObject* structure) { ManagedReference<ChatManager*> chatManager = structure->getZoneServer()->getChatManager(); if (chatManager != NULL) { UnicodeString subject = "@player_structure:mail_structure_damage_sub"; //Your %TT %TO is currently at %DI percent condition. It will be destroyed if it reaches 0. If you wish to keep this structure, you should immediately add maintenance. String bodyName = "mail_structure_damage"; if (structure->isBuildingObject()) { //Your %TT %TO is currently at %DI percent condition. It will be condemned if it reaches 0. If you wish to keep this structure, you should immediately add maintenance. bodyName = "mail_structure_damage_condemn"; } String zoneName = "the void"; if (structure->getZone() != NULL) { zoneName = structure->getZone()->getZoneName(); } StringIdChatParameter emailBody("@player_structure:" + bodyName); emailBody.setTT(structure->getObjectName()); emailBody.setTO("(" + String::valueOf((int)structure->getPositionX()) + ", " + String::valueOf((int)structure->getPositionY()) + " on " + zoneName + ")"); emailBody.setDI(structure->getDecayPercentage()); chatManager->sendMail("@player_structure:your_structure_prefix", subject, emailBody, owner->getFirstName()); } }
int PlaceStructureSessionImplementation::completeSession() { if (constructionBarricade != NULL) constructionBarricade->destroyObjectFromWorld(true); String serverTemplatePath = deedObject->getGeneratedObjectTemplate(); StructureManager* structureManager = StructureManager::instance(); ManagedReference<StructureObject*> structureObject = structureManager->placeStructure(creatureObject, serverTemplatePath, positionX, positionY, directionAngle); removeTemporaryNoBuildZone(); if (structureObject == NULL) { ManagedReference<SceneObject*> inventory = creatureObject->getSlottedObject("inventory"); if (inventory != NULL) inventory->transferObject(deedObject, -1, true); return cancelSession(); } structureObject->setDeedObjectID(deedObject->getObjectID()); deedObject->notifyStructurePlaced(creatureObject, structureObject); ManagedReference<PlayerObject*> ghost = creatureObject->getPlayerObject(); if (ghost != NULL) { ghost->addOwnedStructure(structureObject); //Create Waypoint ManagedReference<WaypointObject*> waypointObject = ( zone->getZoneServer()->createObject(String("object/waypoint/world_waypoint_blue.iff").hashCode(), 1)).castTo<WaypointObject*>(); waypointObject->setCustomObjectName(structureObject->getDisplayedName(), false); waypointObject->setActive(true); waypointObject->setPosition(positionX, 0, positionY); waypointObject->setPlanetCRC(zone->getZoneCRC()); ghost->addWaypoint(waypointObject, false, true); //Create an email. ManagedReference<ChatManager*> chatManager = zone->getZoneServer()->getChatManager(); if (chatManager != NULL) { UnicodeString subject = "@player_structure:construction_complete_subject"; StringIdChatParameter emailBody("@player_structure:construction_complete"); emailBody.setTO(structureObject->getObjectName()); emailBody.setDI(ghost->getLotsRemaining()); chatManager->sendMail("@player_structure:construction_complete_sender", subject, emailBody, creatureObject->getFirstName(), waypointObject); } if (structureObject->isBuildingObject() && !structureObject->isGCWBase()) { BuildingObject* building = cast<BuildingObject*>(structureObject.get()); building->setCustomObjectName(creatureObject->getFirstName() + "'s House", true); //Set the house sign. } } return cancelSession(); //Canceling the session just removes the session from the player's map. }
void StructureMaintenanceTask::sendMailMaintenanceWithdrawnFromBank(CreatureObject* owner, StructureObject* structure) { ManagedReference<ChatManager*> chatManager = structure->getZoneServer()->getChatManager(); if (chatManager != NULL) { UnicodeString subject = "@player_structure:structure_maintenance_empty_subject"; String zoneName = "the void"; if (structure->getZone() != NULL) { zoneName = structure->getZone()->getZoneName(); } //Your %TT %TO has an empty maintenance pool. It will start deducting from your bank account automatically. StringIdChatParameter emailBody("@player_structure:structure_maintenance_empty_body"); emailBody.setTT(structure->getObjectName()); emailBody.setTO("(" + String::valueOf((int)structure->getPositionX()) + ", " + String::valueOf((int)structure->getPositionY()) + " on " + zoneName + ")"); chatManager->sendMail("@player_structure:your_structure_prefix", subject, emailBody, owner->getFirstName()); } }
void StructureMaintenanceTask::sendMailCondemned(CreatureObject* owner, StructureObject* structure) { //Create an email. ManagedReference<ChatManager*> chatManager = structure->getZoneServer()->getChatManager(); if (chatManager != NULL) { UnicodeString subject = "@player_structure:structure_condemned_subject"; String zoneName = "the void"; if (structure->getZone() != NULL) { zoneName = structure->getZone()->getZoneName(); } //Your %TT %TO has been condemned by the order of the Empire due to lack of maintenance. You must pay %DI credits to uncondemn this structure. StringIdChatParameter emailBody("@player_structure:structure_condemned_body"); emailBody.setTT(structure->getObjectName()); emailBody.setTO("(" + String::valueOf((int)structure->getPositionX()) + ", " + String::valueOf((int)structure->getPositionY()) + " on " + zoneName + ")"); emailBody.setDI(-structure->getSurplusMaintenance()); chatManager->sendMail("@player_structure:your_structure_prefix", subject, emailBody, owner->getFirstName()); } }