![]() |
#71
|
||||
|
![]() Quote:
__________________
Pyglet 60 Wizard
Sloppay 60 Monk Jopp 60 Rogue Kodiakk Wintergreen 60 Druid Founder of Dial A Port Joppay 60 Paladin Twitchay 60 Necro | |||
|
#72
|
|||
|
![]() Delay Velious, this is game breaking!
| ||
|
#73
|
|||
|
![]() GIVE IT UP BROS ITS NOT GONNA HAPPEN!
__________________
| ||
|
#74
|
|||
|
![]() Don't give up! If they fixed TT they can fix this!!
| ||
|
#75
|
|||
|
![]() rogue epic particle effect is bugged too...on live you could literally see a droplet of poison drip from tip of the dagger. On p99 its there but seems to be falling like 1000 times faster than it should, so what you get is a small blur of pixels that is hardly recognizable as anything more than a blur.
I tried turning fps down but it didn't fix it.
__________________
-Aftermath-
Tasslehof - 60 Druid Barlow - 60 monk Blueberrii - 60 Mage Gigglepurr - 60 Shaman Kids - 60 Rogue Fornfamnad - 60 Cleric | ||
|
#76
|
||||
|
![]() Quote:
__________________
Amax MNK / Amalgamax ROG / maximum Begging (227) EQ Map Archive (1,000+ images) P99 Wiki • EQ Patch Chronology | |||
|
#77
|
|||
|
![]() Any devs had more luck cracking this?
| ||
|
#78
|
|||
|
![]() Wow. Really?
Extra-specialness of the hand slot bit aside, the monk epic model is ultimately a weapon graphic like any other, IT159. Should be trivial to force it into the primary and secondary slots in outgoing WearChange and client spawn packets. The only annoyance is that the EQEmu codebase has too many functions that send WearChange. I'm working under the assumption that only the ones that call GetEquipmentMaterial will matter (added lines in bold, going by the eqemu codebase as it looks right now): Code:
int32 Mob::GetEquipmentMaterial(uint8 material_slot) const { const Item_Struct *item; item = database.GetItem(GetEquipment(material_slot)); if(item != 0) { if // for primary and secondary we need the model, not the material ( material_slot == MaterialPrimary || material_slot == MaterialSecondary ) { if(strlen(item->IDFile) > 2) return atoi(&item->IDFile[2]); else //may as well try this, since were going to 0 anyways return item->Material; } else { return item->Material; } } else if ((material_slot == MaterialPrimary || material_slot == MaterialSecondary) && IsClient() && CastToClient()->MonkEpicEquipped()) { return 159; //monk epic model } return 0; } Code:
if ((inst = m_inv[MainPrimary]) && inst->IsType(ItemClassCommon)) { item = inst->GetItem(); if (strlen(item->IDFile) > 2) ns->spawn.equipment[MaterialPrimary] = atoi(&item->IDFile[2]); } if ((inst = m_inv[MainSecondary]) && inst->IsType(ItemClassCommon)) { item = inst->GetItem(); if (strlen(item->IDFile) > 2) ns->spawn.equipment[MaterialSecondary] = atoi(&item->IDFile[2]); } Code:
ns->spawn.equipment[MaterialPrimary] = GetEquipmentMaterial(MaterialPrimary); ns->spawn.equipment[MaterialSecondary] = GetEquipmentMaterial(MaterialSecondary); Code:
bool Client::MonkEpicEquipped() const { if (GetClass() == MONK) { ItemInst* inst = GetInv().GetItem(MainHands); if (inst && inst->GetItem()->ID == MONK_EPIC_ITEMID) return true; } return false; } Code:
int matslot = SlotConvert2(dst_slot_id); if (dst_slot_id<22 && matslot != 0) { SendWearChange(matslot); } if ((dst_slot_id == MainHands || src_slot_id == MainHands) && (dstitemid == MONK_EPIC_ITEMID || srcitemid == MONK_EPIC_ITEMID)) { SendWearChange(MaterialPrimary); SendWearChange(MaterialSecondary); } // Step 7: Save change to the database if (src_slot_id == MainCursor){ std::list<ItemInst*>::const_iterator s=m_inv.cursor_begin(),e=m_inv.cursor_end(); database.SaveCursor(character_id, s, e); } else database.SaveInventory(character_id, m_inv.GetItem(src_slot_id), src_slot_id); if (dst_slot_id == MainCursor) { std::list<ItemInst*>::const_iterator s=m_inv.cursor_begin(),e=m_inv.cursor_end(); database.SaveCursor(character_id, s, e); } else database.SaveInventory(character_id, m_inv.GetItem(dst_slot_id), dst_slot_id); if(RuleB(QueryServ, PlayerLogMoves)) { QSSwapItemAuditor(move_in, true); } // QS Audit // Step 8: Re-calc stats CalcBonuses(); return true; } Maybe this has already been tried, but I can't imagine any reason why it wouldn't work. May need a little finessing to be correct in all circumstances (think the above would show it in secondary when you have a 2H in primary). tired | ||
|
#79
|
|||
|
![]() ^ Tested on my own test server. Works in all the general cases I could think of (equipping, unequipping, swapping weapons in while equipped, equipping two weapons and then epic and then unequipping weapons, logging in with epic equipped, logging in without it equipped and equipping it, having the other client log in while monk is already in zone with it equipped, etc).
Works. EZPZ 30 minute fix including testing. Does show bubbles in offhand if you have a 2H equipped but if you don't want that it's a one-line fix. | ||
|
#80
|
|||
|
![]() Hot damn if this works
Nice
__________________
hello i'm cucumbers
![]() | ||
|
![]() |
|
|