From: <lpa...@us...> - 2012-06-01 22:49:44
|
Revision: 8346 http://planeshift.svn.sourceforge.net/planeshift/?rev=8346&view=rev Author: lpancallo Date: 2012-06-01 22:49:36 +0000 (Fri, 01 Jun 2012) Log Message: ----------- Changed the way we assign experience and practice points. A new script is needed: "Calculate Transformation Practice", the call to Worker:CalculateAddExperience should now be removed from the transform script. Added a check to see if the transformed item is the same as the starting item and avoid giving practice/exp in this case. Modified Paths: -------------- trunk/src/server/database/mysql/math_scripts.sql trunk/src/server/workmanager.cpp trunk/src/server/workmanager.h Modified: trunk/src/server/database/mysql/math_scripts.sql =================================================================== --- trunk/src/server/database/mysql/math_scripts.sql 2012-06-01 12:30:19 UTC (rev 8345) +++ trunk/src/server/database/mysql/math_scripts.sql 2012-06-01 22:49:36 UTC (rev 8346) @@ -235,10 +235,6 @@ ResultModifier = if(Success, 25, 2); "); -INSERT INTO math_scripts VALUES( "Calculate Transformation Experience", -" -Exp = if(StartQuality < CurrentQuality, 2*(CurrentQuality-StartQuality), 0); -"); INSERT INTO math_scripts VALUES( "Calculate Skill Experience", " @@ -282,20 +278,21 @@ { if(Secure) { - Worker:SendSystemInfo('Processless transforms give no practice points or quality change.',0); + Worker:SendSystemInfo('Processless transforms gives no quality change.',0); } exit = 1; } -Quality = 100; PriSkill = Process:PrimarySkillId; PriPoints = Process:PrimarySkillPracticePoints; -Worker:CalculateAddExperience(PriSkill, PriPoints, 1); +// add here quality logic + +Quality = 100; + if(Secure) { Worker:SendSystemInfo('Event took %f seconds.', 1, CalculatedTime); - Worker:SendSystemInfo('Giving practice points %f to skill %f.', 2, PriPoints, PriSkill); } " ); @@ -310,7 +307,26 @@ Time = Transform:TransformPoints; }"); +INSERT INTO math_scripts VALUES( "Calculate Transformation Experience", +" +Exp = if(StartQuality < CurrentQuality, 2*(CurrentQuality-StartQuality), 0); +"); +INSERT INTO math_scripts VALUES( "Calculate Transformation Practice", +" + PriPoints = Process:PrimarySkillPracticePoints; + PriPoints = PriPoints*CalculatedTime/4; + + SecSkill = Process:SecondarySkillId; + if(SecSkill > 0) { + SecPoints = Process:SecondarySkillPracticePoints; + SecPoints = SecPoints*CalculatedTime/4; + } else { + SecPoints = 0; + } +"); + + INSERT INTO math_scripts VALUES( "CalculateDodgeValue" , " LightRes = (LightPoints * Actor:GetSkillValue(7)); MediumRes = (MediumPoints * Actor:GetSkillValue(8)); @@ -550,8 +566,8 @@ // do not change quality or modifiers if nothing happened if (Executed=0) { Worker:SendSystemInfo('Setting quality BACK to original %f / %f', 2, OldItem:Quality, OldItem:MaxQuality); - NewItem:SetQuality(10); - NewItem:SetMaxQuality(10); + NewItem:SetQuality(OldItem:Quality); + NewItem:SetMaxQuality(OldItem:MaxQuality); NewItem:SetItemModifier(0, OldItem:GetItemModifier(0)); NewItem:SetItemModifier(1, OldItem:GetItemModifier(1)); NewItem:SetItemModifier(2, OldItem:GetItemModifier(2)); Modified: trunk/src/server/workmanager.cpp =================================================================== --- trunk/src/server/workmanager.cpp 2012-06-01 12:30:19 UTC (rev 8345) +++ trunk/src/server/workmanager.cpp 2012-06-01 22:49:36 UTC (rev 8346) @@ -120,10 +120,10 @@ //----------------------------------------------------------------------------- WorkManager::WorkManager(CacheManager* cachemanager, EntityManager* entitymanager) -{ +{ - cacheManager = cachemanager; - entityManager = entitymanager; + cacheManager = cachemanager; + entityManager = entitymanager; currentQuality = 1.00; Subscribe(&WorkManager::HandleWorkCommand, MSGTYPE_WORKCMD, REQUIRE_READY_CLIENT | REQUIRE_ALIVE); @@ -138,6 +138,7 @@ psserver->GetMathScriptEngine()->CheckAndUpdateScript(calc_mining_chance, "Calculate Mining Odds"); psserver->GetMathScriptEngine()->CheckAndUpdateScript(calc_mining_exp, "Calculate Mining Experience"); psserver->GetMathScriptEngine()->CheckAndUpdateScript(calc_transform_exp, "Calculate Transformation Experience"); + psserver->GetMathScriptEngine()->CheckAndUpdateScript(calc_transform_practice, "Calculate Transformation Practice"); psserver->GetMathScriptEngine()->CheckAndUpdateScript(calc_lockpick_time, "Lockpicking Time"); psserver->GetMathScriptEngine()->CheckAndUpdateScript(calc_transform_apply_skill, "Calculate Transformation Apply Skill"); psserver->GetMathScriptEngine()->CheckAndUpdateScript(calc_transform_time, "Calculate Transformation Time"); @@ -150,6 +151,7 @@ CS_ASSERT_MSG("Could not load mathscript 'Calculate Mining Odds'", calc_mining_chance.IsValid()); CS_ASSERT_MSG("Could not load mathscript 'Calculate Mining Experience'", calc_mining_exp.IsValid()); CS_ASSERT_MSG("Could not load mathscript 'Calculate Transformation Experience'", calc_transform_exp.IsValid()); + CS_ASSERT_MSG("Could not load mathscript 'Calculate Transformation Practice'", calc_transform_practice.IsValid()); CS_ASSERT_MSG("Could not load mathscript 'Lockpicking Time'", calc_lockpick_time); //optional for now //CS_ASSERT_MSG("Could not load mathscript 'Calculate Transformation Apply Skill'", calc_transform_apply_skill); @@ -169,11 +171,11 @@ { Result res(db->Select("select * from natural_resources")); - if (res.IsValid()) + if(res.IsValid()) { - for (unsigned int i=0; i<res.Count(); i++) + for(unsigned int i=0; i<res.Count(); i++) { - NaturalResource *nr = new NaturalResource; + NaturalResource* nr = new NaturalResource; nr->sector = res[i].GetInt("loc_sector_id"); nr->loc.x = res[i].GetFloat("loc_x"); @@ -182,7 +184,7 @@ nr->radius = res[i].GetFloat("radius"); nr->visible_radius = res[i].GetFloat("visible_radius"); nr->probability = res[i].GetFloat("probability"); - nr->skill = cacheManager->GetSkillByID( res[i].GetInt("skill") ); + nr->skill = cacheManager->GetSkillByID(res[i].GetInt("skill")); nr->skill_level = res[i].GetInt("skill_level"); nr->item_cat_id = res[i].GetUInt32("item_cat_id"); nr->item_quality = res[i].GetFloat("item_quality"); @@ -190,7 +192,7 @@ nr->anim_duration_seconds = res[i].GetInt("anim_duration_seconds"); nr->reward = res[i].GetInt("item_id_reward"); nr->reward_nickname = res[i]["reward_nickname"]; - + size_t actionNum = resourcesActions.FindCaseInsensitive(res[i]["action"]); if(actionNum == csArrayItemNotFound) actionNum = resourcesActions.Push(res[i]["action"]); @@ -198,37 +200,37 @@ nr->action = actionNum; resources.Push(nr); - + } } else { Error2("Database error loading natural_resources: %s\n", - db->GetLastError() ); + db->GetLastError()); } } -void WorkManager::HandleWorkCommand(MsgEntry* me,Client *client) +void WorkManager::HandleWorkCommand(MsgEntry* me,Client* client) { psWorkCmdMessage msg(me); - if (msg.command == "use" ) + if(msg.command == "use") { HandleUse(client); } - else if (msg.command == "combine") + else if(msg.command == "combine") { HandleCombine(client); } - else if (msg.command == "repair") + else if(msg.command == "repair") { HandleRepair(client, msg.repairSlotName); } - else if (msg.command == "construct") + else if(msg.command == "construct") { HandleConstruct(client); - } + } else { size_t result = resourcesActions.FindCaseInsensitive(msg.command); @@ -243,19 +245,19 @@ } } -void WorkManager::HandleLockPick(MsgEntry* me,Client *client) +void WorkManager::HandleLockPick(MsgEntry* me,Client* client) { gemObject* target = client->GetTargetObject(); // Check if target is action item gemActionLocation* gemAction = dynamic_cast<gemActionLocation*>(target); - if(gemAction) + if(gemAction) { target = gemAction->GetAction()->GetRealItem(); } // Check target gem and range ignoring Y co-ordinate - if (!target || client->GetActor()->RangeTo(client->GetTargetObject(), true, true) > RANGE_TO_USE) + if(!target || client->GetActor()->RangeTo(client->GetTargetObject(), true, true) > RANGE_TO_USE) { psserver->SendSystemInfo(client->GetClientNum(),"You need to be closer to the lock to try this."); return; @@ -263,7 +265,7 @@ // Get item psItem* item = target->GetItem(); - if ( !item ) + if(!item) { Error1("Found gemItem but no psItem was attached!\n"); return; @@ -277,10 +279,10 @@ // Repair //----------------------------------------------------------------------------- -void WorkManager::HandleRepair(Client *client, const csString &repairSlotName) +void WorkManager::HandleRepair(Client* client, const csString &repairSlotName) { // Make sure client isn't already busy digging, etc. - if ( client->GetActor()->GetMode() != PSCHARACTER_MODE_PEACE ) + if(client->GetActor()->GetMode() != PSCHARACTER_MODE_PEACE) { psserver->SendSystemError(client->GetClientNum(),"You cannot repair anything because you are %s.", client->GetActor()->GetModeStr()); return; @@ -290,52 +292,52 @@ // Check for repairable item in precised or default(right hand) slot int slotTarget; - if ( repairSlotName.IsEmpty() ) + if(repairSlotName.IsEmpty()) slotTarget = PSCHARACTER_SLOT_RIGHTHAND; else slotTarget = cacheManager->slotNameHash.GetID(repairSlotName); - psItem *repairTarget = client->GetCharacterData()->Inventory().GetInventoryItem((INVENTORY_SLOT_NUMBER)slotTarget); - if (repairTarget==NULL) + psItem* repairTarget = client->GetCharacterData()->Inventory().GetInventoryItem((INVENTORY_SLOT_NUMBER)slotTarget); + if(repairTarget==NULL) { if(slotTarget == -1) { - psserver->SendSystemError(client->GetClientNum(),"The Slot %s doesn't exists.", repairSlotName.GetData() ); + psserver->SendSystemError(client->GetClientNum(),"The Slot %s doesn't exists.", repairSlotName.GetData()); } else if(repairSlotName.IsEmpty()) { - psserver->SendSystemError(client->GetClientNum(),"The Default Slot (Right Hand) is empty.", repairSlotName.GetData() ); + psserver->SendSystemError(client->GetClientNum(),"The Default Slot (Right Hand) is empty.", repairSlotName.GetData()); } else { - psserver->SendSystemError(client->GetClientNum(),"The Slot %s is empty.", repairSlotName.GetData() ); + psserver->SendSystemError(client->GetClientNum(),"The Slot %s is empty.", repairSlotName.GetData()); } return; } - if (repairTarget->GetItemQuality() >= repairTarget->GetMaxItemQuality() ) + if(repairTarget->GetItemQuality() >= repairTarget->GetMaxItemQuality()) { - psserver->SendSystemError(client->GetClientNum(),"Your %s is in perfect condition.", repairTarget->GetName() ); + psserver->SendSystemError(client->GetClientNum(),"Your %s is in perfect condition.", repairTarget->GetName()); return; } // Check for required repair kit item in any inventory slot int toolstatid = repairTarget->GetRequiredRepairTool(); - psItemStats *tool = cacheManager->GetBasicItemStatsByID(toolstatid); - psItem *repairTool = NULL; - if (tool) + psItemStats* tool = cacheManager->GetBasicItemStatsByID(toolstatid); + psItem* repairTool = NULL; + if(tool) { size_t index = client->GetCharacterData()->Inventory().FindItemStatIndex(tool); - if (index == SIZET_NOT_FOUND) + if(index == SIZET_NOT_FOUND) { - psserver->SendSystemError(client->GetClientNum(),"You must have a %s to repair your %s.", tool->GetName(), repairTarget->GetName() ); + psserver->SendSystemError(client->GetClientNum(),"You must have a %s to repair your %s.", tool->GetName(), repairTarget->GetName()); return; } repairTool = client->GetCharacterData()->Inventory().GetInventoryIndexItem(index); } else { - psserver->SendSystemError(client->GetClientNum(),"The %s cannot be repaired!", repairTarget->GetName() ); - return; + psserver->SendSystemError(client->GetClientNum(),"The %s cannot be repaired!", repairTarget->GetName()); + return; } // Calculate if current skill is enough to repair the item @@ -351,14 +353,14 @@ int skillid = repairTarget->GetBaseStats()->GetCategory()->repairSkillId; int repairskillrank = client->GetCharacterData()->Skills().GetSkillRank(PSSKILL(skillid)).Current(); - if (repairskillrank<rankneeded) + if(repairskillrank<rankneeded) { - psserver->SendSystemError(client->GetClientNum(),"This item is too complex for your current repair skill. You cannot repair it." ); + psserver->SendSystemError(client->GetClientNum(),"This item is too complex for your current repair skill. You cannot repair it."); return; } // If skill=0, check if it has at least theoretical training in that skill - if (repairskillrank == 0 && client->GetCharacterData()->Skills().Get(PSSKILL(skillid)).CanTrain()) + if(repairskillrank == 0 && client->GetCharacterData()->Skills().Get(PSSKILL(skillid)).CanTrain()) { psserver->SendSystemInfo(client->GetClientNum(),"You don't have the skill to repair your %s.",repairTarget->GetName()); return; @@ -391,7 +393,7 @@ // Queue time event to trigger when repair is complete, if not canceled. csVector3 dummy = csVector3(0,0,0); - psWorkGameEvent *evt = new psWorkGameEvent(this, client->GetActor(),repairDuration,REPAIR,dummy,NULL,client,repairTarget,repairResult); + psWorkGameEvent* evt = new psWorkGameEvent(this, client->GetActor(),repairDuration,REPAIR,dummy,NULL,client,repairTarget,repairResult); psserver->GetEventManager()->Push(evt); // wake me up when repair is done client->GetActor()->SetTradeWork(evt); @@ -404,25 +406,25 @@ void WorkManager::HandleRepairEvent(psWorkGameEvent* workEvent) { - psItem *repairTarget = workEvent->object; + psItem* repairTarget = workEvent->object; // We're done work, clear the mode workEvent->client->GetActor()->SetMode(PSCHARACTER_MODE_PEACE); repairTarget->SetInUse(false); // Check for presence of required tool int toolstatid = repairTarget->GetRequiredRepairTool(); - psItemStats *tool = cacheManager->GetBasicItemStatsByID(toolstatid); - psItem *repairTool = NULL; - if (tool) + psItemStats* tool = cacheManager->GetBasicItemStatsByID(toolstatid); + psItem* repairTool = NULL; + if(tool) { size_t index = workEvent->client->GetCharacterData()->Inventory().FindItemStatIndex(tool); - if (index == SIZET_NOT_FOUND) + if(index == SIZET_NOT_FOUND) { - psserver->SendSystemError(workEvent->client->GetClientNum(),"You must have a %s to repair your %s.", tool->GetName(), repairTarget->GetName() ); + psserver->SendSystemError(workEvent->client->GetClientNum(),"You must have a %s to repair your %s.", tool->GetName(), repairTarget->GetName()); return; } repairTool = workEvent->client->GetCharacterData()->Inventory().GetInventoryIndexItem(index); - if (repairTool == repairTarget) + if(repairTool == repairTarget) { psserver->SendSystemError(workEvent->client->GetClientNum(), "You can't use your repair tool on itself."); return; @@ -430,11 +432,11 @@ } // Now consume the item if we need to - if (repairTarget->GetRequiredRepairToolConsumed() && repairTool) + if(repairTarget->GetRequiredRepairToolConsumed() && repairTool) { // Always assume 1 item is consumed, not stacked - psItem *item = workEvent->client->GetCharacterData()->Inventory().RemoveItemID(repairTool->GetUID(),1); - if (item) + psItem* item = workEvent->client->GetCharacterData()->Inventory().RemoveItemID(repairTool->GetUID(),1); + if(item) { // This message must come first because item is about to be deleted. psserver->SendSystemResult(workEvent->client->GetClientNum(), @@ -442,7 +444,7 @@ item->GetName()); cacheManager->RemoveInstance(item); - psserver->GetCharManager()->UpdateItemViews( workEvent->client->GetClientNum() ); + psserver->GetCharManager()->UpdateItemViews(workEvent->client->GetClientNum()); } } else @@ -503,9 +505,9 @@ // Production //----------------------------------------------------------------------------- -void WorkManager::HandleProduction(gemActor* actor, size_t type, const char *reward, Client *client) +void WorkManager::HandleProduction(gemActor* actor, size_t type, const char* reward, Client* client) { - if ( client && !LoadLocalVars(client) ) + if(client && !LoadLocalVars(client)) { return; } @@ -513,9 +515,9 @@ int mode = actor->GetMode(); // Make sure client isn't already busy digging, etc. - if ( mode != PSCHARACTER_MODE_PEACE ) + if(mode != PSCHARACTER_MODE_PEACE) { - if ( client ) + if(client) { psserver->SendSystemError(client->GetClientNum(),"You cannot %s because you are already busy.",resourcesActions.Get(type)); } @@ -527,9 +529,9 @@ } // check stamina - if ( !CheckStamina( actor->GetCharacterData() ) ) + if(!CheckStamina(actor->GetCharacterData())) { - if ( client ) + if(client) { psserver->SendSystemError(client->GetClientNum(),"You cannot %s because you are too tired.",resourcesActions.Get(type)); } @@ -545,7 +547,7 @@ // Make sure they are not in the same loc as the last dig. // skip this check for NPCs actor->GetLastProductionPos(pos); - if (client && SameProductionPosition(actor, pos)) + if(client && SameProductionPosition(actor, pos)) { psserver->SendSystemError(client->GetClientNum(), "You cannot %s in the same place twice in a" @@ -554,7 +556,7 @@ } // Search for a natural resource at the current player location - iSector *sector; + iSector* sector; actor->GetPosition(pos, sector); csArray<NearNaturalResource> resources = FindNearestResource(sector,pos,type,(reward == NULL || !strcmp(reward,""))? NULL : reward); @@ -571,16 +573,16 @@ } return; } - + // Validate the skill // If skill == 0 and can still be trained it's not possible to execute this operation // check all the resources to check if one validates, else the resource is removed from the array. // if the array ends up empty it means we don't have a resource to attempt because of our skills. for(size_t i = 0; i < resources.GetSize(); i++) { - NaturalResource *nr = resources.Get(i).resource; - if (actor->GetCharacterData()->Skills().GetSkillRank((PSSKILL)nr->skill->id).Current() == 0 && - actor->GetCharacterData()->Skills().Get((PSSKILL)nr->skill->id).CanTrain()) + NaturalResource* nr = resources.Get(i).resource; + if(actor->GetCharacterData()->Skills().GetSkillRank((PSSKILL)nr->skill->id).Current() == 0 && + actor->GetCharacterData()->Skills().Get((PSSKILL)nr->skill->id).CanTrain()) { //we can't attempt this resource so we remove it from our array of possibilities resources.DeleteIndex(i); @@ -608,13 +610,13 @@ // if the array ends up empty it means we don't have a resource to attempt because of our tools. for(size_t i = 0; i < resources.GetSize(); i++) { - NaturalResource *nr = resources.Get(i).resource; - psItem *item = actor->GetCharacterData()->Inventory().GetInventoryItem(PSCHARACTER_SLOT_RIGHTHAND); - if (!item || nr->item_cat_id != item->GetCategory()->id) + NaturalResource* nr = resources.Get(i).resource; + psItem* item = actor->GetCharacterData()->Inventory().GetInventoryItem(PSCHARACTER_SLOT_RIGHTHAND); + if(!item || nr->item_cat_id != item->GetCategory()->id) { //try the left hand item = actor->GetCharacterData()->Inventory().GetInventoryItem(PSCHARACTER_SLOT_LEFTHAND); - if (!item || nr->item_cat_id != item->GetCategory()->id) + if(!item || nr->item_cat_id != item->GetCategory()->id) { //we can't attempt this resource so we remove it from our array of possibilities resources.DeleteIndex(i); @@ -623,7 +625,7 @@ } } } - + //if we ended up with an empty array it means we don't have the tool to do any of these if(resources.IsEmpty()) { @@ -637,9 +639,9 @@ } return; } - + //get the first resource data for use in time calculation (will be the most difficult to get) - NaturalResource *nr = resources.Get(0).resource; + NaturalResource* nr = resources.Get(0).resource; // Calculate time required int time_req = nr->anim_duration_seconds; @@ -654,7 +656,7 @@ actor->SetProductionStartPos(pos); // Queue up game event for success - psWorkGameEvent *ev = new psWorkGameEvent(this,actor,time_req*1000,PRODUCTION,pos,&resources,client); + psWorkGameEvent* ev = new psWorkGameEvent(this,actor,time_req*1000,PRODUCTION,pos,&resources,client); psserver->GetEventManager()->Push(ev); // wake me up when digging is done actor->SetTradeWork(ev); @@ -672,44 +674,44 @@ // Function used by super client // TODO generalize the npcclient for now it has no way to specify a specific type it can only dig // TODO remove this little bogus function somehow -void WorkManager::HandleProduction(gemActor *actor,const char *restype,const char *reward) +void WorkManager::HandleProduction(gemActor* actor,const char* restype,const char* reward) { size_t type = resourcesActions.FindCaseInsensitive(restype); HandleProduction(actor, type, reward); } -bool WorkManager::SameProductionPosition(gemActor *actor, - const csVector3& startPos) +bool WorkManager::SameProductionPosition(gemActor* actor, + const csVector3 &startPos) { csVector3 pos; - iSector *sector; + iSector* sector; actor->GetPosition(pos, sector); return ((startPos - pos).SquaredNorm() < 1); } -csArray<NearNaturalResource> WorkManager::FindNearestResource(iSector *sector, csVector3& pos, const size_t action,const char *reward) +csArray<NearNaturalResource> WorkManager::FindNearestResource(iSector* sector, csVector3 &pos, const size_t action,const char* reward) { csArray<NearNaturalResource> nearResources; - psSectorInfo *playersector= cacheManager->GetSectorInfoByName(sector->QueryObject()->GetName()); + psSectorInfo* playersector= cacheManager->GetSectorInfoByName(sector->QueryObject()->GetName()); int sectorid = playersector->uid; Debug2(LOG_TRADE,0, "Finding nearest resource for %s\n", reward ? reward : "any resource"); - for (size_t i = 0; i < resources.GetSize(); i++) + for(size_t i = 0; i < resources.GetSize(); i++) { - NaturalResource *curr=resources[i]; - if (curr->sector==sectorid) + NaturalResource* curr=resources[i]; + if(curr->sector==sectorid) { - if (curr->action == action && (!reward || curr->reward_nickname.CompareNoCase(reward))) + if(curr->action == action && (!reward || curr->reward_nickname.CompareNoCase(reward))) { csVector3 diff = curr->loc - pos; float dist = diff.Norm(); // Add the resource if dist is less than radius - if (dist < curr->visible_radius) + if(dist < curr->visible_radius) { nearResources.Push(NearNaturalResource(curr,dist)); } @@ -717,14 +719,14 @@ } } - if (nearResources.IsEmpty()) + if(nearResources.IsEmpty()) Debug2(LOG_TRADE,0, "No resource found for %s\n", reward ? reward : "any resource"); nearResources.Sort(); - + for(size_t i= 0; i < nearResources.GetSize(); i++) { - NearNaturalResource & res = nearResources.Get(i); + NearNaturalResource &res = nearResources.Get(i); Debug6(LOG_TRADE,0, "found res %zu(%s): dist %f, probability %f, level %d\n", i, res.resource->reward_nickname.GetData(), res.dist, res.resource->probability, res.resource->skill_level); } @@ -733,12 +735,12 @@ void WorkManager::HandleProductionEvent(psWorkGameEvent* workEvent) { - if (!workEvent->worker.IsValid()) // Worker has disconnected + if(!workEvent->worker.IsValid()) // Worker has disconnected return; // Make sure clients are in the same loc as they started to dig. - if (workEvent->client && !SameProductionPosition(workEvent->client->GetActor(), - workEvent->client->GetActor()->GetProductionStartPos())) + if(workEvent->client && !SameProductionPosition(workEvent->client->GetActor(), + workEvent->client->GetActor()->GetProductionStartPos())) { psserver->SendSystemError(workEvent->client->GetClientNum(), "You were unsuccessful since you moved away " @@ -750,23 +752,23 @@ } //we check the first item only as that's the one we had at the start - psCharacter *workerchar = workEvent->worker->GetCharacterData(); + psCharacter* workerchar = workEvent->worker->GetCharacterData(); psItem* tool = workerchar->Inventory().GetInventoryItem(PSCHARACTER_SLOT_RIGHTHAND); - if (!tool || workEvent->nrr.Get(0).resource->item_cat_id != tool->GetCategory()->id) + if(!tool || workEvent->nrr.Get(0).resource->item_cat_id != tool->GetCategory()->id) { tool = workerchar->Inventory().GetInventoryItem(PSCHARACTER_SLOT_LEFTHAND); - if (!tool || workEvent->nrr.Get(0).resource->item_cat_id != tool->GetCategory()->id) + if(!tool || workEvent->nrr.Get(0).resource->item_cat_id != tool->GetCategory()->id) { - if (workEvent->client) + if(workEvent->client) { psserver->SendSystemInfo(workEvent->worker->GetClientID(),"You were unsuccessful since you no longer have the tool."); } - + workEvent->worker->SetMode(PSCHARACTER_MODE_PEACE); // Actor isn't working anymore return; } } - + bool successfullProduction = false; //used for giving experience later. size_t resNum = 0; //used to store the last resource checked //iterate all resources from the most difficult to the most easy to find @@ -779,25 +781,25 @@ float cur_skill = workerchar->Skills().GetSkillRank((PSSKILL)workEvent->nrr.Get(resNum).resource->skill->id).Current(); // If skill=0, check if it has at least theoretical training in that skill - if (cur_skill==0) + if(cur_skill==0) { bool fullTrainingReceived = !workerchar->Skills().Get((PSSKILL)workEvent->nrr.Get(resNum).resource->skill->id).CanTrain(); - if (fullTrainingReceived) + if(fullTrainingReceived) cur_skill = 0.7F; // consider the skill somewhat usable } // Calculate complexity factor for skill float f1 = cur_skill / workEvent->nrr.Get(resNum).resource->skill_level; - if (f1 > 1.0) f1 = 1.0; // Clamp value 0..1 + if(f1 > 1.0) f1 = 1.0; // Clamp value 0..1 // Calculate factor for tool quality float f2 = tool->GetItemQuality() / workEvent->nrr.Get(resNum).resource->item_quality; - if (f2 > 1.0) f2 = 1.0; // Clamp value 0..1 + if(f2 > 1.0) f2 = 1.0; // Clamp value 0..1 // Calculate factor for distance from center of resource float dist = workEvent->nrr.Get(resNum).dist; float f3 = 1 - (dist / workEvent->nrr.Get(resNum).resource->radius); - if (f3 < 0.0) f3 = 0.0f; // Clamp value 0..1 + if(f3 < 0.0) f3 = 0.0f; // Clamp value 0..1 MathEnvironment env; env.Define("Distance", f3); // Distance from mine to the actual mining @@ -807,17 +809,17 @@ //update the script if needed. Here we don't protect against bad scripts as before for now. psserver->GetMathScriptEngine()->CheckAndUpdateScript(calc_mining_chance, "Calculate Mining Odds"); calc_mining_chance->Evaluate(&env); - MathVar *varTotal = env.Lookup("Total"); + MathVar* varTotal = env.Lookup("Total"); float total = varTotal->GetValue(); csString debug; - debug.AppendFmt( "Probability: %1.3f\n",workEvent->nrr.Get(resNum).resource->probability); - debug.AppendFmt( "Skill Factor: %1.3f\n",f1); - debug.AppendFmt( "Quality Factor: %1.3f\n",f2); - debug.AppendFmt( "Distance Factor: %1.3f\n",f3); - debug.AppendFmt( "Total Factor: %1.3f\n",total); - debug.AppendFmt( "Roll: %1.3f\n",roll); - if (workEvent->client) + debug.AppendFmt("Probability: %1.3f\n",workEvent->nrr.Get(resNum).resource->probability); + debug.AppendFmt("Skill Factor: %1.3f\n",f1); + debug.AppendFmt("Quality Factor: %1.3f\n",f2); + debug.AppendFmt("Distance Factor: %1.3f\n",f3); + debug.AppendFmt("Total Factor: %1.3f\n",total); + debug.AppendFmt("Roll: %1.3f\n",roll); + if(workEvent->client) { Debug2(LOG_TRADE, workEvent->client->GetClientNum(), "%s", debug.GetData()); } @@ -827,33 +829,33 @@ } - if (roll < total) // successful! + if(roll < total) // successful! { - psItemStats *newitem = cacheManager->GetBasicItemStatsByID(workEvent->nrr.Get(resNum).resource->reward); + psItemStats* newitem = cacheManager->GetBasicItemStatsByID(workEvent->nrr.Get(resNum).resource->reward); // Save resourceNick for reporting to the npcclient csString resourceNick = workEvent->nrr.Get(resNum).resource->reward_nickname; - if (!newitem) + if(!newitem) { Bug2("Natural Resource reward item #%d not found!\n",workEvent->nrr.Get(resNum).resource->reward); } else { - psItem *item = newitem->InstantiateBasicItem(); - if (!item) + psItem* item = newitem->InstantiateBasicItem(); + if(!item) { Bug2("Failed instantizing reward item #%d!\n",workEvent->nrr.Get(resNum).resource->reward); return; } - if (!workerchar->Inventory().AddOrDrop(item)) + if(!workerchar->Inventory().AddOrDrop(item)) { Debug5(LOG_ANY, workerchar->GetPID().Unbox(), "HandleProductionEvent() could not give item of stat %u (%s) to character %s[%s])", - newitem->GetUID(), newitem->GetName(), workerchar->GetCharName(), ShowID(workerchar->GetPID())); + newitem->GetUID(), newitem->GetName(), workerchar->GetCharName(), ShowID(workerchar->GetPID())); - if (workEvent->client) + if(workEvent->client) { // Assume it's full - psserver->SendSystemInfo(workEvent->client->GetClientNum(),"You found %s, but you can't carry anymore of it so you dropped it", newitem->GetName() ); + psserver->SendSystemInfo(workEvent->client->GetClientNum(),"You found %s, but you can't carry anymore of it so you dropped it", newitem->GetName()); } else { @@ -864,10 +866,10 @@ } else { - if (workEvent->client) + if(workEvent->client) { psserver->GetCharManager()->UpdateItemViews(workEvent->client->GetClientNum()); - psserver->SendSystemResult(workEvent->client->GetClientNum(),"You've got some %s!", newitem->GetName() ); + psserver->SendSystemResult(workEvent->client->GetClientNum(),"You've got some %s!", newitem->GetName()); } else { @@ -879,7 +881,7 @@ item->SetLoaded(); // Item is fully created item->Save(false); // First save - if (!workEvent->client) + if(!workEvent->client) { // Inform the npcclient about the item it's npc just got psserver->GetNPCManager()->WorkDoneNotify(workEvent->worker->GetEID(), newitem->GetName(), resourceNick); @@ -893,11 +895,11 @@ workEvent->worker->GetPosition(pos, sector); // Store the mining position for the next check. - if (workEvent->client) + if(workEvent->client) { workEvent->client->GetActor()->SetLastProductionPos(pos); } - + //as we found an ore we set we were successfull and exit from the loop (so we don't give the player //more than one ore at a time successfullProduction = true; @@ -910,10 +912,10 @@ //if we didn't succed in the previous part just tell the player if(!successfullProduction) { - if (workEvent->client) + if(workEvent->client) { psserver->SendSystemInfo(workEvent->worker->GetClientID(),"You were not successful."); - } + } else { Debug2(LOG_SUPERCLIENT,workEvent->worker->GetEID().Unbox(),"%s where not successful.",workEvent->worker->GetName()); @@ -921,7 +923,7 @@ } //Assign experience and practice points - if (workEvent->client) + if(workEvent->client) { int practicePoints; int experiencePoints; @@ -938,7 +940,7 @@ calc_mining_exp->Evaluate(&env); practicePoints = env.Lookup("ResultPractice")->GetRoundValue(); modifier = env.Lookup("ResultModifier")->GetValue(); - MathVar *varResult = env.Lookup("Exp"); //optional variable + MathVar* varResult = env.Lookup("Exp"); //optional variable if(varResult) experiencePoints = varResult->GetRoundValue(); else @@ -954,7 +956,7 @@ { workEvent->client->GetCharacterData()->AddExperiencePointsNotify(experiencePoints); } - + } else { @@ -1040,13 +1042,13 @@ void WorkManager::StopWork(Client* client, psItem* item) { // Assign the member vars - if ( !LoadLocalVars(client) ) + if(!LoadLocalVars(client)) { return; } // Check for bad item pointer - if (!item) + if(!item) { Error1("Bad item pointer in StopWork"); return; @@ -1054,23 +1056,23 @@ // if no event for item then return psWorkGameEvent* curEvent = item->GetTransformationEvent(); - if( !curEvent ) + if(!curEvent) { return; } // Check for ending clean up event - if (curEvent->category == CLEANUP) + if(curEvent->category == CLEANUP) { - Debug2(LOG_TRADE,clientNum, "Stopping cleaning up %s item.\n", item->GetName()); - StopCleanupWork(client, item); + Debug2(LOG_TRADE,clientNum, "Stopping cleaning up %s item.\n", item->GetName()); + StopCleanupWork(client, item); } else { Debug3(LOG_TRADE, clientNum, "Player %s stopped working on %s item.\n", ShowID(worker->GetPID()), item->GetName()); // Handle all the different transformation types - if( curEvent->GetTransformationType() == TRANSFORMTYPE_AUTO_CONTAINER ) + if(curEvent->GetTransformationType() == TRANSFORMTYPE_AUTO_CONTAINER) { StopAutoWork(client, item); } @@ -1083,16 +1085,16 @@ /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Handle /use command -void WorkManager::HandleUse(Client *client) +void WorkManager::HandleUse(Client* client) { // Assign the member vars - if ( !LoadLocalVars(client) ) + if(!LoadLocalVars(client)) { return; } //Check if we are starting or stopping use - if ( owner->GetMode() != PSCHARACTER_MODE_WORK ) + if(owner->GetMode() != PSCHARACTER_MODE_WORK) { StartUseWork(client); } @@ -1107,34 +1109,34 @@ void WorkManager::StartUseWork(Client* client) { // Check to see if we have everything we need to do any trade work - if (!ValidateWork()) + if(!ValidateWork()) { return; } // Check to see if we have pattern - if (!ValidateMind()) + if(!ValidateMind()) { return; } // Check to see if player has stamina for work - if (!ValidateStamina(client)) + if(!ValidateStamina(client)) { return; } // Check for any targeted item or container in hand - if (!ValidateTarget(client)) + if(!ValidateTarget(client)) { return; } - if ( workItem && workItem->GetIsContainer() ) // Check if the target is a container + if(workItem && workItem->GetIsContainer()) // Check if the target is a container { // cast a gem container to iterate through - gemContainer *container = dynamic_cast<gemContainer*> (workItem->GetGemObject()); - if (!container) + gemContainer* container = dynamic_cast<gemContainer*>(workItem->GetGemObject()); + if(!container) { Error1("Could not instantiate gemContainer"); return; @@ -1143,27 +1145,27 @@ // Load item array from the container csArray<psItem*> itemArray; gemContainer::psContainerIterator it(container); - while (it.HasNext()) + while(it.HasNext()) { // Only check the stuff that player owns psItem* item = it.Next(); - if ((item->GetGuardingCharacterID() == owner->GetPID()) - || (item->GetGuardingCharacterID() == 0)) + if((item->GetGuardingCharacterID() == owner->GetPID()) + || (item->GetGuardingCharacterID() == 0)) { itemArray.Push(item); } } // Check for too many items - if (itemArray.GetSize() > 1 ) + if(itemArray.GetSize() > 1) { // Tell the player they are trying to work on too many items - SendTransformError( clientNum, TRANSFORM_TOO_MANY_ITEMS ); + SendTransformError(clientNum, TRANSFORM_TOO_MANY_ITEMS); return; } // Only one item from container can be transformed at once - if (itemArray.GetSize() == 1) + if(itemArray.GetSize() == 1) { // Check to see if item can be transformed uint32 itemID = itemArray[0]->GetBaseStats()->GetUID(); @@ -1171,7 +1173,7 @@ // Verify there is a valid transformation for the item that was dropped unsigned int transMatch = AnyTransform(patterns, patternKFactor, itemID, count); - if (( transMatch == TRANSFORM_MATCH ) || (transMatch == TRANSFORM_GARBAGE )) + if((transMatch == TRANSFORM_MATCH) || (transMatch == TRANSFORM_GARBAGE)) { // Set up event for transformation StartTransformationEvent( @@ -1185,21 +1187,21 @@ else { // The transform could not be created so send the reason back to the user. - SendTransformError( clientNum, transMatch, itemID, count ); + SendTransformError(clientNum, transMatch, itemID, count); return; } } // nothing (owned by the player) in the container to use else { - SendTransformError( clientNum, TRANSFORM_BAD_USE ); + SendTransformError(clientNum, TRANSFORM_BAD_USE); } } else // check for in hand use { // Check if player has any transformation items in right hand psItem* rhand = owner->GetCharacterData()->Inventory().GetInventoryItem(PSCHARACTER_SLOT_RIGHTHAND); - if ( rhand != NULL ) + if(rhand != NULL) { // Find out if we can do a transformation on items in hand uint32 handId = rhand->GetBaseStats()->GetUID(); @@ -1207,7 +1209,7 @@ // Verify there is a valid transformation for the item that was dropped unsigned int rhandMatch = AnyTransform(patterns, patternKFactor, handId, handCount); - if (( rhandMatch == TRANSFORM_MATCH ) || (rhandMatch == TRANSFORM_GARBAGE )) + if((rhandMatch == TRANSFORM_MATCH) || (rhandMatch == TRANSFORM_GARBAGE)) { // Set up event for transformation StartTransformationEvent( @@ -1218,17 +1220,17 @@ msg.SendMessage(); return; } - else if (rhandMatch != TRANSFORM_UNKNOWN_ITEM) + else if(rhandMatch != TRANSFORM_UNKNOWN_ITEM) { // The transform could not be created so send the reason back to the user. - SendTransformError( clientNum, rhandMatch, handId, handCount ); + SendTransformError(clientNum, rhandMatch, handId, handCount); return; } } // Check if player has any transformation items in left hand psItem* lhand = owner->GetCharacterData()->Inventory().GetInventoryItem(PSCHARACTER_SLOT_LEFTHAND); - if ( lhand != NULL ) + if(lhand != NULL) { // Find out if we can do a transformation on items in hand uint32 handId = lhand->GetBaseStats()->GetUID(); @@ -1236,7 +1238,7 @@ // Verify there is a valid transformation for the item that was dropped unsigned int lhandMatch = AnyTransform(patterns, patternKFactor, handId, handCount); - if (( lhandMatch == TRANSFORM_MATCH ) || (lhandMatch == TRANSFORM_GARBAGE )) + if((lhandMatch == TRANSFORM_MATCH) || (lhandMatch == TRANSFORM_GARBAGE)) { // Set up event for transformation StartTransformationEvent( @@ -1247,30 +1249,30 @@ msg.SendMessage(); return; } - else if (lhandMatch != TRANSFORM_UNKNOWN_ITEM) + else if(lhandMatch != TRANSFORM_UNKNOWN_ITEM) { // The transform could not be created so send the reason back to the user. - SendTransformError( clientNum, lhandMatch, handId, handCount ); + SendTransformError(clientNum, lhandMatch, handId, handCount); } } // Since either hand can fail to transform normally send general message if we get to here - SendTransformError( clientNum, TRANSFORM_MISSING_ITEM ); + SendTransformError(clientNum, TRANSFORM_MISSING_ITEM); } } /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Stop doing use work -void WorkManager::StopUseWork(MsgEntry* me,Client *client) +void WorkManager::StopUseWork(MsgEntry* me,Client* client) { // Check for any targeted item or container in hand - if ( !ValidateTarget(client)) + if(!ValidateTarget(client)) { return; } // Kill the work event if it exists - if( client->GetActor()->GetMode() == PSCHARACTER_MODE_WORK ) + if(client->GetActor()->GetMode() == PSCHARACTER_MODE_WORK) { client->GetActor()->SetMode(PSCHARACTER_MODE_PEACE); psserver->SendSystemOK(client->GetClientNum(),"You stop working."); @@ -1279,16 +1281,16 @@ //////////////////////////////////////////////////////////////////////// // Handle /combine command -void WorkManager::HandleCombine(Client *client) +void WorkManager::HandleCombine(Client* client) { // Assign the member vars - if ( !LoadLocalVars(client) ) + if(!LoadLocalVars(client)) { return; } // Check if we are starting or stopping use - if ( owner->GetMode() != PSCHARACTER_MODE_WORK ) + if(owner->GetMode() != PSCHARACTER_MODE_WORK) { StartCombineWork(client); } @@ -1303,25 +1305,25 @@ void WorkManager::StartCombineWork(Client* client) { // Check to see if we have everything we need to do any trade work - if (!ValidateWork()) + if(!ValidateWork()) { return; } // Check to see if we have pattern - if (!ValidateMind()) + if(!ValidateMind()) { return; } // Check for any targeted item or container in hand - if (!ValidateTarget(client)) + if(!ValidateTarget(client)) { return; } // Check if targeted item is container - if ( workItem && workItem->GetIsContainer() ) + if(workItem && workItem->GetIsContainer()) { // Combine anything can be combined in container CombineWork(); @@ -1337,24 +1339,24 @@ uint32 combinationId = 0; int combinationQty = 0; int resultQuality = 0; - if ( IsContainerCombinable( combinationId, combinationQty ) ) + if(IsContainerCombinable(combinationId, combinationQty)) { //now we know the result quality as this function is going to destroy it we take a copy //TODO: loadlocalvariables is a big nuinseance which should it does unexpected effect to the environment. - resultQuality = currentQuality; + resultQuality = currentQuality; // Transform all items in container into the combination item - psItem* newItem = CombineContainedItem( combinationId, combinationQty, currentQuality, workItem ); - if (newItem) + psItem* newItem = CombineContainedItem(combinationId, combinationQty, currentQuality, workItem); + if(newItem) { //restore the valid current quality currentQuality = resultQuality; ValidateMind(); //unfortunately the bad loadlocalvariables is damaging this data so we restore it // Find out if we can do a combination transformation - unsigned int transMatch = AnyTransform(patterns, patternKFactor, combinationId, combinationQty ); - if (( transMatch == TRANSFORM_MATCH ) || (transMatch == TRANSFORM_GARBAGE )) + unsigned int transMatch = AnyTransform(patterns, patternKFactor, combinationId, combinationQty); + if((transMatch == TRANSFORM_MATCH) || (transMatch == TRANSFORM_GARBAGE)) { // Set up event for transformation - if (workItem->GetCanTransform()) + if(workItem->GetCanTransform()) { StartTransformationEvent( TRANSFORMTYPE_AUTO_CONTAINER, PSCHARACTER_SLOT_NONE, @@ -1373,14 +1375,14 @@ { // The transform could not be created so send "wrong" message and the reason back to the user. psserver->SendSystemError(clientNum, "You started to combine items, but could not go any further."); - SendTransformError( clientNum, transMatch, combinationId, combinationQty ); + SendTransformError(clientNum, transMatch, combinationId, combinationQty); return true; } } } else { - SendTransformError( clientNum, TRANSFORM_BAD_COMBINATION); + SendTransformError(clientNum, TRANSFORM_BAD_COMBINATION); return false; } return false; @@ -1391,13 +1393,13 @@ void WorkManager::StopCombineWork(Client* client) { // Check for any targeted item or container in hand - if ( !ValidateTarget(client)) + if(!ValidateTarget(client)) { return; } // Kill the work event if it exists - if( worker->GetMode() == PSCHARACTER_MODE_WORK ) + if(worker->GetMode() == PSCHARACTER_MODE_WORK) { worker->SetMode(PSCHARACTER_MODE_PEACE); } @@ -1408,16 +1410,16 @@ /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Handle /construct command -void WorkManager::HandleConstruct(Client *client) +void WorkManager::HandleConstruct(Client* client) { // Assign the member vars - if ( !LoadLocalVars(client) ) + if(!LoadLocalVars(client)) { return; } //Check if we are starting or stopping use - if ( owner->GetMode() != PSCHARACTER_MODE_WORK ) + if(owner->GetMode() != PSCHARACTER_MODE_WORK) { StartConstructWork(client); } @@ -1432,19 +1434,19 @@ void WorkManager::StartConstructWork(Client* client) { // Check to see if we have everything we need to do any trade work - if (!ValidateWork()) + if(!ValidateWork()) { return; } // Check to see if we have pattern - if (!ValidateMind()) + if(!ValidateMind()) { return; } // Check for any targeted item or container in hand - if (!ValidateTarget(client)) + if(!ValidateTarget(client)) { return; } @@ -1465,8 +1467,8 @@ { // Check to see if item can be transformed uint32 itemID = workItem->GetBaseStats()->GetUID(); - unsigned int transMatch = AnyTransform(patterns, patternKFactor, itemID, 1 ); - if (transMatch == TRANSFORM_MATCH) + unsigned int transMatch = AnyTransform(patterns, patternKFactor, itemID, 1); + if(transMatch == TRANSFORM_MATCH) { // Set up event for transformation StartTransformationEvent( @@ -1477,7 +1479,7 @@ else { // The transform could not be created so send the reason back to the user. - SendTransformError( clientNum, transMatch, itemID, 1 ); + SendTransformError(clientNum, transMatch, itemID, 1); return; } } @@ -1492,13 +1494,13 @@ void WorkManager::StopConstructWork(Client* client) { // Check for any targeted item or container in hand - if ( !ValidateTarget(client)) + if(!ValidateTarget(client)) { return; } // Kill the work event if it exists - if( worker->GetMode() == PSCHARACTER_MODE_WORK ) + if(worker->GetMode() == PSCHARACTER_MODE_WORK) { worker->SetMode(PSCHARACTER_MODE_PEACE); } @@ -1512,12 +1514,12 @@ void WorkManager::StartAutoWork(Client* client, gemContainer* container, psItem* droppedItem, int count) { // Assign the member vars - if ( !LoadLocalVars(client) ) + if(!LoadLocalVars(client)) { return; } - if ( !droppedItem ) + if(!droppedItem) { Error1("Bad item passed to start AutoWork."); return; @@ -1525,17 +1527,17 @@ // Interrupt the first event of the dropped item if any to handle stacking psWorkGameEvent* stackEvent = droppedItem->GetTransformationEvent(); - if( stackEvent ) + if(stackEvent) { droppedItem->SetTransformationEvent(NULL); stackEvent->Interrupt(); } // We know it is a container so check if it's a transform container - if ( container->GetCanTransform() ) + if(container->GetCanTransform()) { // Check to see if we have everything we need to do any trade work - if (!ValidateWork()) + if(!ValidateWork()) { return; } @@ -1546,11 +1548,11 @@ uint32 autoID = autoItem->GetBaseStats()->GetUID(); // Check to see if we have pattern - if (ValidateMind()) + if(ValidateMind()) { // Verify there is a valid transformation for the item that was dropped - unsigned int transMatch = AnyTransform(patterns, patternKFactor, autoID, count ); - switch( transMatch ) + unsigned int transMatch = AnyTransform(patterns, patternKFactor, autoID, count); + switch(transMatch) { case TRANSFORM_MATCH: { @@ -1571,7 +1573,7 @@ default: { // The transform could not be created so send the reason back to the user. - SendTransformError( clientNum, transMatch, autoID, count ); + SendTransformError(clientNum, transMatch, autoID, count); break; } } @@ -1589,7 +1591,7 @@ void WorkManager::StopAutoWork(Client* client, psItem* autoItem) { // Check for proper autoItem - if ( !autoItem ) + if(!autoItem) { Error1("StopAutoWork does not have a good autoItem pointer."); return; @@ -1597,15 +1599,15 @@ // Stop the auto item's work event psWorkGameEvent* workEvent = autoItem->GetTransformationEvent(); - if (workEvent) + if(workEvent) { - if( !workEvent->GetTransformation()) + if(!workEvent->GetTransformation()) { Error1("StopAutoWork does not have a good transformation pointer."); } // Unless it's some garbage item let players know - if( workEvent->GetTransformation()->GetResultId() > 0) + if(workEvent->GetTransformation()->GetResultId() > 0) { psserver->SendSystemOK(clientNum,"You stop working on %s.", autoItem->GetName()); } @@ -1624,8 +1626,8 @@ bool WorkManager::IsContainerCombinable(uint32 &resultId, int &resultQty) { // cast a gem container to iterate thru - gemContainer *container = dynamic_cast<gemContainer*> (workItem->GetGemObject()); - if (!container) + gemContainer* container = dynamic_cast<gemContainer*>(workItem->GetGemObject()); + if(!container) { Error1("Could not instantiate gemContainer"); return false; @@ -1635,18 +1637,18 @@ csArray<psItem*> itemArray; gemContainer::psContainerIterator it(container); currentQuality = 1.00; - while (it.HasNext()) + while(it.HasNext()) { // Only check the stuff that player owns or is public psItem* item = it.Next(); - if ((item->GetGuardingCharacterID() == owner->GetPID()) - || (item->GetGuardingCharacterID() == 0)) + if((item->GetGuardingCharacterID() == owner->GetPID()) + || (item->GetGuardingCharacterID() == 0)) { itemArray.Push(item); // While we are here find the item with the least quality float quality = item->GetItemQuality(); - if (currentQuality < quality) + if(currentQuality < quality) { currentQuality = quality; } @@ -1654,7 +1656,7 @@ } // Check if specific combination is possible - if( ValidateCombination(itemArray, resultId, resultQty)) + if(ValidateCombination(itemArray, resultId, resultQty)) return true; // Check if any combination is possible @@ -1667,13 +1669,13 @@ { // check if player owns anything in conatiner size_t itemCount = itemArray.GetSize(); - if (itemCount != 0) + if(itemCount != 0) { // Get all possible combinations for those patterns and group csArray<csPDelArray<CombinationConstruction>*> combArray; csArray<csPDelArray<CombinationConstruction>*> combGroupArray; - + for(size_t i = 0; i < patterns.GetSize(); i++) { //get the combinations for the pattern @@ -1708,16 +1710,16 @@ for(size_t u = 0; u < combArray.GetSize(); u++) { if(secure) psserver->SendSystemInfo(clientNum,"Checking combinations for patterns."); - for (size_t i=0; i<combArray.Get(u)->GetSize(); i++) + for(size_t i=0; i<combArray.Get(u)->GetSize(); i++) { // Check for matching lists CombinationConstruction* current = combArray.Get(u)->Get(i); - if (secure) psserver->SendSystemInfo(clientNum,"Checking combinations for result id %u quantity %d.", current->resultItem, current->resultQuantity); - if( MatchCombinations(itemArray,current) ) + if(secure) psserver->SendSystemInfo(clientNum,"Checking combinations for result id %u quantity %d.", current->resultItem, current->resultQuantity); + if(MatchCombinations(itemArray,current)) { resultId = current->resultItem; resultQty = current->resultQuantity; - if (secure) psserver->SendSystemInfo(clientNum,"Found matching combination."); + if(secure) psserver->SendSystemInfo(clientNum,"Found matching combination."); return true; } } @@ -1726,17 +1728,17 @@ // Check all the possible combination in this data set for(size_t u = 0; u < combGroupArray.GetSize(); u++) { - if (secure) psserver->SendSystemInfo(clientNum,"Checking combinations for group patterns."); - for (size_t i=0; i<combGroupArray.Get(u)->GetSize(); i++) + if(secure) psserver->SendSystemInfo(clientNum,"Checking combinations for group patterns."); + for(size_t i=0; i<combGroupArray.Get(u)->GetSize(); i++) { // Check for matching lists CombinationConstruction* current = combGroupArray.Get(u)->Get(i); - if (secure) psserver->SendSystemInfo(clientNum,"Checking combinations for result id %u quantity %d.", current->resultItem, current->resultQuantity); - if( MatchCombinations(itemArray,current) ) + if(secure) psserver->SendSystemInfo(clientNum,"Checking combinations for result id %u quantity %d.", current->resultItem, current->resultQuantity); + if(MatchCombinations(itemArray,current)) { resultId = current->resultItem; resultQty = current->resultQuantity; - if (secure) psserver->SendSystemInfo(clientNum,"Found matching group combination."); + if(secure) psserver->SendSystemInfo(clientNum,"Found matching group combination."); return true; } } @@ -1744,7 +1746,7 @@ } else { - if (secure) psserver->SendSystemInfo(clientNum,"Failed to find any items you own in container."); + if(secure) psserver->SendSystemInfo(clientNum,"Failed to find any items you own in container."); return false; } return false; @@ -1756,7 +1758,7 @@ { // check if player owns anything in conatiner size_t itemCount = itemArray.GetSize(); - if (itemCount != 0) + if(itemCount != 0) { //This is a bit weird but looked more elegant. Essentially we want to first //do one run where we only check the patte... [truncated message content] |