void SkillAlchemy(UINT8 *m_PacketBuffer, bool *pRetn) { *pRetn = true; st_Window *pServer = (st_Window*)m_PacketBuffer; INT16 cId = pServer->Header.ClientId; if(cId <= NULL || cId >= MAX_PLAYER) return; st_Mob *player = GetMobFromIndex(cId); if(pServer->Slot[0] == 0xFF || pServer->Slot[1] == 0xFF || pServer->Slot[2] == 0xFF) SendClientMessage(cId, "Coloque os três itens necessários."); else { for(char i = 0; i < 3; i ++) { if(memcmp(&pServer->ItemId[i], &player->Inventory[pServer->Slot[i]], sizeof st_Item)) return; else if(pServer->ItemId[i].Index != player->Inventory[pServer->Slot[i]].Index) return; } Composition(pServer, player); SendClientSignalParm(cId, 0x7530, 0x3A7, 2); } }
void OpenSMOKE_GasStream::lock() { if (assignedKineticScheme == false) ErrorMessage("The kinetic scheme was not defined!!"); if (assignedMassFlowRate == false && assignedMoleFlowRate == false && assignedVolumetricFlowRate == false) { // ErrorMessage("The flow rate was not defined!!"); AssignMassFlowRate(1.e-10, "kg/s"); iUndefinedFlowRate = true; } if (assignedMoleFractions == false && assignedMassFractions == false) ErrorMessage("The composition was not defined!!"); Composition(); if (assignedTemperature == true && assignedPressure == true && assignedDensity == true) ErrorMessage("Only 2 between: T || P || rho"); if (assignedTemperature == true && assignedPressure == true) { /* Nothing to do */ } else if (assignedDensity == true && assignedPressure == true) { T = P*MW/Constants::R_J_kmol/rho; } else if (assignedDensity == true && assignedTemperature == true) { P = rho*Constants::R_J_kmol*T/MW; } else ErrorMessage("2 between must be assigned: T || P || rho"); Concentrations(); Density(); FlowRates(); SpecificEnthalpies(); Enthalpy(); SpecificEntropies(); Entropy(); }
double calculateMZ(double mass, int charge, int pre_charge /* = 0 */) { Param& param = Param::Instance(); double electron_mass = param.getParameter<double>("electron_mass").first; int coef_h = (pre_charge == 0 ? charge : pre_charge); // TBD: this should be controlled by parameter. // int coef_e = (pre_charge == 0 ? 1 : 0); return (mass + coef_h * (Composition("H").getMass() - electron_mass))/abs(charge); }
double calculateMass( double mz, int charge) { // int mode = param.getParameter<int>("mode").first; // Be careful of the ion mode. Param& param = Param::Instance(); double electron_mass = param.getParameter<double>("electron_mass").first; return abs(charge) * mz - charge * (Composition("H").getMass() -electron_mass); }
void evolveComposition(CompositionHelper::UsedComposition usedComp) { std::cout << "\n==Evolving a composition==\n\n"; std::cout << "Composition Before Evolution\n"; usedComp.composition.printDebugInfo(); enemyComposition = Composition(util::game::getEnemy()->getUnits()); std::cout << "Loaded Enemy Composition\n"; //respond to units with counters if (usedComp.useCount != 0) { for each(auto unitType in enemyComposition.getTypes()) { if (unitType.isBuilding() || unitType == BWAPI::UnitTypes::Zerg_Larva) continue; //std::cout << "Responding to unit: " << unitType.c_str() << "\n"; auto counters = CompositionHelper::getCounters(unitType); auto intersection = usedComp.composition.getIntersection(counters); if (intersection.getTypes().size() == 0) { //add random unit type from counter list BWAPI::UnitType randomType = util::calc::getRandomType(counters); usedComp.composition.addType(randomType); } else { int evolveType = rand() % 100; //increase amount for existing unit type if (evolveType <= 50) { BWAPI::UnitType randomType = util::calc::getRandomType(intersection.getUnitMap()); usedComp.composition.addType(randomType); } //add a new counter unit type else if (evolveType <= 75) { BWAPI::UnitType randomType = util::calc::getRandomType(counters); usedComp.composition.addType(randomType); } } } std::cout << "\n==Composition Evolved==\n\n"; std::cout << "Composition After Evolution\n"; usedComp.composition.printDebugInfo(); ////possible mutation //int mutateProbability = rand() % 100; //if (mutateProbability < 5) // composition = mutateComposition(composition); } else {
void OpenSMOKE_GasStream::ChangeMoleFractions(BzzVector &_values) { AssignMoleFractions(_values); Composition(); Concentrations(); Density(); FlowRates(); SpecificEnthalpies(); Enthalpy(); SpecificEntropies(); Entropy(); }
Composition CompositionObj::make(Pool *pool, std::string name) { auto res = Composition((new CompositionObj(name,pool))); pool->addComponent(res); return res; }
Composition InternalSite::getCleavageShift(FunctionalGroup& fg, const size_t idx) { std::multiset<FunctionalGroup>::iterator iter = _groups.find(fg); return (iter != _groups.end()) ? iter->getCompositionByID(idx) : Composition(); }