void SignObjectImplementation::sendSignNameTo(CreatureObject* player) { ManagedReference<SuiMessageBox*> suiBox = new SuiMessageBox(player, SuiWindowType::NONE); suiBox->setPromptTitle("@sui:swg"); //Star Wars Galaxies suiBox->setPromptText(getDisplayedName()); player->sendMessage(suiBox->generateMessage()); }
Friend::Friend(uint32_t FriendId, const ToxId &UserId) : userName{Core::getInstance()->getPeerName(UserId)}, userID{UserId}, friendId{FriendId} { hasNewEvents = 0; friendStatus = Status::Offline; if (userName.size() == 0) userName = UserId.publicKey; userAlias = Settings::getInstance().getFriendAlias(UserId); widget = new FriendWidget(friendId, getDisplayedName()); chatForm = new ChatForm(this); }
void WeaponObjectImplementation::decreasePowerupUses(CreatureObject* player) { if (hasPowerup()) { powerupObject->decreaseUses(); if (powerupObject->getUses() < 1) { Locker locker(_this.getReferenceUnsafeStaticCast()); StringIdChatParameter message("powerup", "prose_pup_expire"); //The powerup on your %TT has expired. message.setTT(getDisplayedName()); player->sendSystemMessage(message); powerupObject = NULL; } sendAttributeListTo(player); } }
void CreatureImplementation::loadTemplateDataForBaby(CreatureTemplate* templateData) { loadTemplateData(templateData); setCustomObjectName(getDisplayedName() + " (baby)", false); setHeight(templateData->getScale() * 0.46, false); int newLevel = level / 10; if (newLevel < 1) newLevel = 1; setLevel(newLevel, false); setBaby(true); clearPvpStatusBit(CreatureFlag::AGGRESSIVE, false); clearPvpStatusBit(CreatureFlag::ENEMY, false); setCreatureBitmask(getCreatureBitmask() + CreatureFlag::BABY); }
void WeaponObjectImplementation::decreasePowerupUses(CreatureObject* player) { if (hasPowerup()) { powerupObject->decreaseUses(); if (powerupObject->getUses() < 1) { Locker locker(_this.getReferenceUnsafeStaticCast()); StringIdChatParameter message("powerup", "prose_pup_expire"); //The powerup on your %TT has expired. message.setTT(getDisplayedName()); player->sendSystemMessage(message); ManagedReference<PowerupObject*> pup = removePowerup(); if(pup != NULL) { Locker plocker(pup); pup->destroyObjectFromWorld( true ); pup->destroyObjectFromDatabase( true ); } } sendAttributeListTo(player); } }
void ManufactureSchematicImplementation::createFactoryBlueprint() { for (int i = 0; i < ingredientSlots.size(); ++i) { Reference<IngredientSlot*> ingredientSlot = ingredientSlots.get(i); if(ingredientSlot == NULL) { error("NULL ingredient slot in createFactoryBlueprint: " + getDisplayedName()); continue; } if(ingredientSlot->isOptional()) { if(ingredientSlot->getFactoryIngredient() == NULL) continue; } else if (ingredientSlot->getFactoryIngredient() == NULL) { warning("NULL ingredient in createFactoryBlueprint"); continue; } factoryBlueprint.addIngredient(ingredientSlot->getFactoryIngredient(), ingredientSlot->getQuantityNeeded(), ingredientSlot->requiresIdentical()); } }
void VehicleObjectImplementation::sendRepairConfirmTo(CreatureObject* player) { ManagedReference<SuiListBox*> listbox = new SuiListBox(player, SuiWindowType::GARAGE_REPAIR); listbox->setCallback(new RepairVehicleSuiCallback(server->getZoneServer())); listbox->setPromptTitle("@pet/pet_menu:confirm_repairs_t"); //Confirm Vehicle Repairs listbox->setPromptText("@pet/pet_menu:vehicle_repair_d"); //You have chosen to repair your vehicle. Please review the listed details and confirm your selection. listbox->setUsingObject(_this.getReferenceUnsafeStaticCast()); listbox->setCancelButton(true, "@cancel"); int repairCost = calculateRepairCost(player); int totalFunds = player->getBankCredits(); int tax = 0; ManagedReference<CityRegion*> city = getCityRegion(); if(city != NULL && city->getGarageTax() > 0){ repairCost += repairCost * city->getGarageTax() / 100; } listbox->addMenuItem("@pet/pet_menu:vehicle_prompt " + getDisplayedName()); //Vehicle: listbox->addMenuItem("@pet/pet_menu:repair_cost_prompt " + String::valueOf(repairCost)); //Repair Cost: listbox->addMenuItem("@pet/pet_menu:total_funds_prompt " + String::valueOf(totalFunds)); //Total Funds Available: player->getPlayerObject()->addSuiBox(listbox); player->sendMessage(listbox->generateMessage()); }
void TangibleObjectImplementation::repair(CreatureObject* player) { if(player == NULL || player->getZoneServer() == NULL) return; if(!isASubChildOf(player)) return; if (getConditionDamage() == 0) { player->sendSystemMessage("That item is not in need of repair."); return; } //Condition is unrepairable if ((getMaxCondition() - getConditionDamage()) <= 0) { StringIdChatParameter cantrepair("error_message", "sys_repair_unrepairable"); cantrepair.setTT(getDisplayedName()); player->sendSystemMessage(cantrepair); //%TT's condition is beyond repair even for your skills. return; } SceneObject* inventory = player->getSlottedObject("inventory"); if(inventory == NULL) return; ManagedReference<RepairTool*> repairTool = NULL; Reference<RepairToolTemplate*> repairTemplate = NULL; for(int i = 0; i < inventory->getContainerObjectsSize(); ++i) { ManagedReference<SceneObject*> item = inventory->getContainerObject(i); if(item->isRepairTool()) { repairTemplate = cast<RepairToolTemplate*>(item->getObjectTemplate()); if (repairTemplate == NULL) { error("No RepairToolTemplate for: " + String::valueOf(item->getServerObjectCRC())); return; } if(repairTemplate->getRepairType() & getGameObjectType()) { repairTool = cast<RepairTool*>(item.get()); break; } repairTemplate = NULL; } } if(repairTool == NULL) return; /// Luck Roll + Profession Mod(25) + Luck Tapes /// + Station Mod - BF /// Luck Roll int roll = System::random(100); int repairChance = roll; /// Profession Bonus if(player->hasSkill(repairTemplate->getSkill())) repairChance += 35; /// Get Skill mods repairChance += player->getSkillMod(repairTemplate->getSkillMod()); repairChance += player->getSkillMod("crafting_repair"); repairChance += player->getSkillMod("force_repair_bonus"); /// use tool quality to lower chances if bad tool float quality = 1.f - (((100.f - repairTool->getQuality()) / 2) / 100.f); repairChance *= quality; ManagedReference<PlayerManager*> playerMan = player->getZoneServer()->getPlayerManager(); /// Increase if near station if(playerMan->getNearbyCraftingStation(player, repairTemplate->getStationType()) != NULL) { repairChance += 15; } /// Subtract battle fatigue repairChance -= (player->getShockWounds() / 2); /// Subtract complexity repairChance -= (getComplexity() / 3); /// 5% random failure if(getMaxCondition() < 20 || roll < 5) repairChance = 0; if(roll > 95) repairChance = 100; String result = repairAttempt(repairChance); Locker locker(repairTool); repairTool->destroyObjectFromWorld(true); repairTool->destroyObjectFromDatabase(true); player->sendSystemMessage(result); }