mirror of
https://github.com/OpenFusionProject/OpenFusion.git
synced 2024-11-22 13:30:06 +00:00
Reverting back some changes + Tweaks
This commit is contained in:
parent
2b25b17bd8
commit
28276d2229
@ -286,13 +286,7 @@ void ItemManager::itemUseHandler(CNSocket* sock, CNPacketData* data) {
|
|||||||
resp->RemainItem = gumball;
|
resp->RemainItem = gumball;
|
||||||
resp->iTargetCnt = 1;
|
resp->iTargetCnt = 1;
|
||||||
resp->eST = EST_NANOSTIMPAK;
|
resp->eST = EST_NANOSTIMPAK;
|
||||||
|
resp->iSkillID = 144;
|
||||||
if (request->iNanoSlot == 1)
|
|
||||||
resp->iSkillID = 191;
|
|
||||||
else if (request->iNanoSlot == 2)
|
|
||||||
resp->iSkillID = 197;
|
|
||||||
else
|
|
||||||
resp->iSkillID = 144;
|
|
||||||
|
|
||||||
int value1 = CSB_BIT_STIMPAKSLOT1 << request->iNanoSlot;
|
int value1 = CSB_BIT_STIMPAKSLOT1 << request->iNanoSlot;
|
||||||
int value2 = ECSB_STIMPAKSLOT1 + request->iNanoSlot;
|
int value2 = ECSB_STIMPAKSLOT1 + request->iNanoSlot;
|
||||||
@ -312,8 +306,8 @@ void ItemManager::itemUseHandler(CNSocket* sock, CNPacketData* data) {
|
|||||||
// update inventory serverside
|
// update inventory serverside
|
||||||
player->Inven[resp->iSlotNum] = resp->RemainItem;
|
player->Inven[resp->iSlotNum] = resp->RemainItem;
|
||||||
|
|
||||||
std::pair<CNSocket*, int32_t> key = std::make_pair(sock, resp->iSkillID);
|
std::pair<CNSocket*, int32_t> key = std::make_pair(sock, value1);
|
||||||
time_t until = getTime() + (time_t)NanoManager::SkillTable[resp->iSkillID].durationTime[0] * 10;
|
time_t until = getTime() + (time_t)NanoManager::SkillTable[144].durationTime[0] * 10;
|
||||||
NPCManager::EggBuffs[key] = until;
|
NPCManager::EggBuffs[key] = until;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -578,12 +578,14 @@ int NPCManager::eggBuffPlayer(CNSocket* sock, int skillId, int eggId) {
|
|||||||
if (otherPlr == nullptr)
|
if (otherPlr == nullptr)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
std::pair<CNSocket*, int32_t> key = std::make_pair(sock, skillId);
|
int CBFlag = 0;
|
||||||
int bitFlag = GroupManager::getGroupFlags(otherPlr);
|
int bitFlag = GroupManager::getGroupFlags(otherPlr);
|
||||||
|
|
||||||
if (EggBuffs.find(key) == EggBuffs.end())
|
CBFlag = NanoManager::applyBuff(sock, skillId, 1, 3, bitFlag);
|
||||||
if (!NanoManager::applyBuff(sock, skillId, 1, 3, bitFlag))
|
if (CBFlag == 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
|
std::pair<CNSocket*, int32_t> key = std::make_pair(sock, CBFlag);
|
||||||
|
|
||||||
// save the buff serverside;
|
// save the buff serverside;
|
||||||
// if you get the same buff again, new duration will override the previous one
|
// if you get the same buff again, new duration will override the previous one
|
||||||
@ -629,15 +631,25 @@ void NPCManager::eggStep(CNServer* serv, time_t currTime) {
|
|||||||
// if time reached 0
|
// if time reached 0
|
||||||
else {
|
else {
|
||||||
CNSocket* sock = it->first.first;
|
CNSocket* sock = it->first.first;
|
||||||
int32_t skillId = it->first.second;
|
int32_t CBFlag = it->first.second;
|
||||||
Player* plr = PlayerManager::getPlayer(sock);
|
Player* plr = PlayerManager::getPlayer(sock);
|
||||||
Player* otherPlr = PlayerManager::getPlayerFromID(plr->iIDGroup);
|
Player* otherPlr = PlayerManager::getPlayerFromID(plr->iIDGroup);
|
||||||
|
|
||||||
if (otherPlr == nullptr)
|
if (otherPlr == nullptr)
|
||||||
return;
|
continue;
|
||||||
|
|
||||||
int bitFlag = GroupManager::getGroupFlags(otherPlr);
|
int groupFlags = GroupManager::getGroupFlags(otherPlr);
|
||||||
NanoManager::applyBuff(sock, skillId, 2, 3, bitFlag);
|
for (auto& pwr : NanoManager::NanoPowers) {
|
||||||
|
if (pwr.bitFlag == CBFlag) {
|
||||||
|
INITSTRUCT(sP_FE2CL_PC_BUFF_UPDATE, resp);
|
||||||
|
resp.eCSTB = pwr.timeBuffID;
|
||||||
|
resp.eTBU = 2;
|
||||||
|
resp.eTBT = 3; // for egg buffs
|
||||||
|
plr->iConditionBitFlag &= ~CBFlag;
|
||||||
|
resp.iConditionBitFlag = plr->iConditionBitFlag |= groupFlags | plr->iSelfConditionBitFlag;
|
||||||
|
sock->sendPacket((void*)&resp, P_FE2CL_PC_BUFF_UPDATE, sizeof(sP_FE2CL_PC_BUFF_UPDATE));
|
||||||
|
}
|
||||||
|
}
|
||||||
// remove buff from the map
|
// remove buff from the map
|
||||||
it = EggBuffs.erase(it);
|
it = EggBuffs.erase(it);
|
||||||
}
|
}
|
||||||
|
@ -305,15 +305,9 @@ void NanoManager::summonNano(CNSocket *sock, int slot) {
|
|||||||
if (SkillTable[skillID].drainType == 2) {
|
if (SkillTable[skillID].drainType == 2) {
|
||||||
int *targetData = findTargets(plr, skillID);
|
int *targetData = findTargets(plr, skillID);
|
||||||
|
|
||||||
int boost = 0;
|
for (auto& pwr : NanoPowers)
|
||||||
for (int i = 0; i < 3; i++)
|
if (pwr.skillType == SkillTable[skillID].skillType)
|
||||||
if (plr->equippedNanos[i] == plr->activeNano)
|
nanoUnbuff(sock, targetData, pwr.bitFlag, pwr.timeBuffID, 0,(SkillTable[skillID].targetType == 3));
|
||||||
if (plr->iConditionBitFlag & (CSB_BIT_STIMPAKSLOT1 << i))
|
|
||||||
boost = 1;
|
|
||||||
|
|
||||||
for (auto& pwr : NanoPowers)
|
|
||||||
if (pwr.skillType == SkillTable[skillID].skillType)
|
|
||||||
nanoUnbuff(sock, targetData, pwr.bitFlag, pwr.timeBuffID, SkillTable[skillID].powerIntensity[boost],(SkillTable[skillID].targetType == 3));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int16_t nanoID = slot == -1 ? 0 : plr->equippedNanos[slot];
|
int16_t nanoID = slot == -1 ? 0 : plr->equippedNanos[slot];
|
||||||
@ -480,9 +474,9 @@ void NanoManager::nanoUnbuff(CNSocket* sock, int targetData[], int32_t bitFlag,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool NanoManager::applyBuff(CNSocket* sock, int skillID, int eTBU, int eTBT, int32_t groupFlags) {
|
int NanoManager::applyBuff(CNSocket* sock, int skillID, int eTBU, int eTBT, int32_t groupFlags) {
|
||||||
if (SkillTable[skillID].drainType == 1)
|
if (SkillTable[skillID].drainType == 1)
|
||||||
return false;
|
return 0;
|
||||||
|
|
||||||
int32_t bitFlag = 0;
|
int32_t bitFlag = 0;
|
||||||
|
|
||||||
@ -496,30 +490,20 @@ bool NanoManager::applyBuff(CNSocket* sock, int skillID, int eTBU, int eTBT, int
|
|||||||
resp.eTBU = eTBU;
|
resp.eTBU = eTBU;
|
||||||
resp.eTBT = eTBT;
|
resp.eTBT = eTBT;
|
||||||
|
|
||||||
if (skillID == 191) { // dealing with gumballs
|
|
||||||
resp.eCSTB = pwr.timeBuffID + 1;
|
|
||||||
bitFlag = bitFlag << 1;
|
|
||||||
} else if (skillID == 197) {
|
|
||||||
resp.eCSTB = pwr.timeBuffID + 2;
|
|
||||||
bitFlag = bitFlag << 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (eTBU == 1)
|
if (eTBU == 1)
|
||||||
plr->iConditionBitFlag |= bitFlag;
|
plr->iConditionBitFlag |= bitFlag;
|
||||||
else
|
else
|
||||||
plr->iConditionBitFlag &= ~bitFlag;
|
plr->iConditionBitFlag &= ~bitFlag;
|
||||||
|
|
||||||
resp.iConditionBitFlag = plr->iConditionBitFlag |= groupFlags | plr->iSelfConditionBitFlag;
|
resp.iConditionBitFlag = plr->iConditionBitFlag |= groupFlags | plr->iSelfConditionBitFlag;
|
||||||
|
|
||||||
resp.TimeBuff.iValue = SkillTable[skillID].powerIntensity[0];
|
resp.TimeBuff.iValue = SkillTable[skillID].powerIntensity[0];
|
||||||
|
|
||||||
sock->sendPacket((void*)&resp, P_FE2CL_PC_BUFF_UPDATE, sizeof(sP_FE2CL_PC_BUFF_UPDATE));
|
sock->sendPacket((void*)&resp, P_FE2CL_PC_BUFF_UPDATE, sizeof(sP_FE2CL_PC_BUFF_UPDATE));
|
||||||
}
|
}
|
||||||
return true;
|
return bitFlag;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0=A 1=B 2=C -1=Not found
|
// 0=A 1=B 2=C -1=Not found
|
||||||
|
@ -65,7 +65,7 @@ namespace NanoManager {
|
|||||||
void setNanoSkill(CNSocket* sock, sP_CL2FE_REQ_NANO_TUNE* skill);
|
void setNanoSkill(CNSocket* sock, sP_CL2FE_REQ_NANO_TUNE* skill);
|
||||||
void resetNanoSkill(CNSocket* sock, int16_t nanoID);
|
void resetNanoSkill(CNSocket* sock, int16_t nanoID);
|
||||||
void nanoUnbuff(CNSocket* sock, int* targetData, int32_t bitFlag, int16_t timeBuffID, int16_t amount, bool groupPower);
|
void nanoUnbuff(CNSocket* sock, int* targetData, int32_t bitFlag, int16_t timeBuffID, int16_t amount, bool groupPower);
|
||||||
bool applyBuff(CNSocket* sock, int skillID, int eTBU, int eTBT, int32_t groupFlags);
|
int applyBuff(CNSocket* sock, int skillID, int eTBU, int eTBT, int32_t groupFlags);
|
||||||
int nanoStyle(int nanoID);
|
int nanoStyle(int nanoID);
|
||||||
int* findTargets(Player* plr, int skillID, CNPacketData* data = nullptr);
|
int* findTargets(Player* plr, int skillID, CNPacketData* data = nullptr);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user