void ObjectController::_handleTendWound(uint64 targetId,Message* message,ObjectControllerCmdProperties* cmdProperties) { PlayerObject* Medic = dynamic_cast<PlayerObject*>(mObject); PlayerObject* Target = dynamic_cast<PlayerObject*>(Medic->getHealingTarget(Medic)); //TODO:: add medic droid /*EMLocationType loc = Medic->getPlayerLocation(); if(loc != EMLocation_Cantina || loc != EMLocation_Camp || loc != EMLocation_PlayerStructure) { return; }*/ std::string messageResponse = gMedicManager->handleMessage(message,"(action|constitution|health|quickness|stamina|strength)"); if (messageResponse.length() == 0) { //you must specify a valid wound type gMessageLib->SendSystemMessage(::common::OutOfBand("healing_response", "healing_response_65"), Medic); return; } //check Medic has enough Mind auto ham = gWorldManager->getKernel()->GetServiceManager()->GetService<swganh::ham::HamService>("HamService"); if(!ham->checkMainPools(Medic, 0, 0, 500)) { gMessageLib->SendSystemMessage(::common::OutOfBand("healing_response", "not_enough_mind"), Medic); return; } if (gMedicManager->HealWound(Medic, Target, 0, cmdProperties, messageResponse + "tendwound")) { ham->ApplyWound(Medic, HamBar_Focus, 5); ham->ApplyWound(Medic, HamBar_Willpower, 5); Medic->AddBattleFatigue(2); //call the event gMedicManager->startWoundTreatmentEvent(Medic); return; } }
void ObjectController::_handleTendDamage(uint64 targetId,Message* message,ObjectControllerCmdProperties* cmdProperties) { PlayerObject* Medic = dynamic_cast<PlayerObject*>(mObject); PlayerObject* Target = dynamic_cast<PlayerObject*>(Medic->getHealingTarget(Medic)); //check Medic has enough Mind auto ham = gWorldManager->getKernel()->GetServiceManager()->GetService<swganh::ham::HamService>("HamService"); if(!ham->checkMainPools(Medic, cmdProperties->mHealthCost, cmdProperties->mActionCost, cmdProperties->mMindCost)){ gMessageLib->SendSystemMessage(::common::OutOfBand("healing_response", "not_enough_mind"), Medic); return; } if (gMedicManager->HealDamage(Medic, Target, 0, cmdProperties, "tendDamage")) { ham->ApplyWound(Medic, HamBar_Focus, 5); ham->ApplyWound(Medic, HamBar_Willpower, 5); Medic->AddBattleFatigue(2); //call the event gMedicManager->startInjuryTreatmentEvent(Medic); return; } }
char* _medNewWound(ubyte_t place) { int DamageSeverity = IncreaseCategory(&Body.parts[place].CurrSeverity); ApplyWound(place,DamageSeverity,&Body.parts[place]); const char* msg = WoundDescs[place][DamageSeverity].message; //temp // ArmletApi::snprintf(_buf,200,"%s-%d\n%s", // TargetNames[place], // DamageSeverity, // msg); // return _buf; return (char*)msg; }
char* _medOnKnockout () { int Target = ArmletApi::GetRandom(MaxTarget); int DamageSeverity = IncreaseCategory(&Body.parts[Target].CurrSeverity); ApplyWound(MaxTarget,DamageSeverity,&Body.parts[Target]); const char* msg = WoundDescs[MaxTarget][DamageSeverity].message; //temp // ArmletApi::snprintf(_buf,200,"%s-%d\n%s", // TargetNames[MaxTarget], // DamageSeverity, // msg); // return _buf; return (char*)msg; }
char* _medOnExplosion() { int Target = ArmletApi::GetRandom(MaxTarget); int DamageSeverity = IncreaseCategory(&Body.parts[Target].CurrSeverity); int ExplosionType = ArmletApi::GetRandom(2); if (ExplosionType == 1) ExplosionType = 2; //skip scorch ApplyWound(MaxTarget+1+ExplosionType,DamageSeverity,&Body.parts[Target]); const char* msg = WoundDescs[MaxTarget+1+ExplosionType][DamageSeverity].message; //temp // ArmletApi::snprintf(_buf,200,"%s-%d\n%s", // TargetNames[MaxTarget+1+ExplosionType], // DamageSeverity, // msg); // return _buf; return (char*)msg; }