Jump to content


  • Content count

  • Joined

  • Last visited

Everything posted by twostars

  1. twostars

    Some curse (i'm guessing sweetkiss) deletes scrolls

    This was caused by the "Full Skill Gear" curse, aka the silence and fixed some time ago.
  2. twostars

    List of bugs 2017

    With a macro I can reproduce it, and it's happening because the client's trying to deal with 2 connections at once (one of which will be disconnected, but not before it screws with encryption). It's inevitably going to break things. I think this is one of these cases where the solution is simply "don't do that", because there's nothing really wrong here aside from the client not letting go of its previous connection, but that's a bug with the client -- not the server. I mean... I can try to look into fixing the client's behaviour there, but I really don't see the point. :|
  3. twostars

    Patch notes (27/04/2017)

    Changelog Required items are once again consistently removed when compounding accessories. Fixed skill timing checks being skewed by specific cases that the player didn't specifically initiate. This caused things like scrolls not being restored correctly when a corresponding debuff was removed, as well as generally increasing the fail rate of skills. Stackable/consumable items are now correctly handled by the repurchase list. Expensive items are now added to the repurchase list when they've been vendored. Bound items purchased from vendors can now be bound on equip. Fixed bug with some items not being detected as bound items. Client will no longer show impossible requirements for unbinding some items (e.g. Draki's Pendants), and will thus let you unbind normally. This was fixed in patch 2.105, so please make sure to restart and update if you haven't already done so. [Hotfixed live] Fixed the Apexis Chest rewarded by invasion quests.
  4. twostars

    List of bugs 2017

    Spent quite a while trying to reproduce this using the information provided, but no such luck. :/ I can't actually reproduce this either (on live). I have a fair idea why it might happen, but I can't really say whether or not it's worth fixing if I can't actually trigger it. I mean, is it something that happens commonly to people?
  5. It's already done, pending restart.
  6. twostars

    silverharpoon claiming something strong

    You guys even get patch notes for the upcoming patch (the "WIP" thread in the patch notes section). But yes, he's making stuff up.
  7. twostars

    List of bugs 2017

    ^ That issue's already been fixed for the next patch. Thanks. (also, maestro pots have always been broken like this... regular pots originally worked though)
  8. twostars

    Patch notes (26/04/2017)

    Changelog [Hotfixed live] Temporarily disabled server-side optimisations on movements, as it appears we're optimising out at least 1 case where we should be relaying movement updates. This has been causing players to appear as if they're speed hacking. Using potions during stealth skill casts (Hide, Stealth) will no longer interrupt the cast. When compounding accessories, the client will no longer visually remove your scroll twice. It should also no longer visually bug out the accessories you're compounding, although this was a much rarer occurrence. Fixed a bug causing monsters on the outskirts of the Forgotten Temple to be unattackable. Players with little to no resistances are now affected more by stuns/slows. Previously, there was a very small gap in rates between players with (some) resistances and those without -- this gap has been raised. For everyone else, the rate remains about the same. Removed the Specters that spawned in Forgotten Temple on wave 60 of 61. Added Garges items & Abyss Fire to the buying merchant list. Removed Roneth's AoE and reduced its melee damage. [Hotfixed live] Added Golden Earring to Knight's Medal, Royal Knight's Medal & King's Medal exchanges. Change Ronark Land Felankor's nova effect to act like Volcanic Rock's (1 nova effect instead of 1 per target). This should help with FPS drop issues. Also reduced its AoE damage. Fixed a bug with skill timing checks. As a result, these should be a lot tighter now. Fixes to bound items: When repurchasing deleted bound items, they will once again become bound. We now correctly detect which items should be bound, so these items now must be bound to equip. We also now enforce the correct quantity of "Sealed Items" required to unbind them. Renamed the inn host(ess)'s menu button for bound items, to make it clearer. It now reads "Bind item / Unbind item" (was "Seal / Cancel", which caused some confusion with the similarly named button for actual sealed items). Expiration items that don't otherwise prohibit it can now be deleted & repurchased. Their times will now also be restored correctly. It should be noted that if these expire before the 3 day repurchase period elapses, they will not be recoverable. Power-Up Store items (specifically items that state they can be traded after 72 hours) can now be deleted. Fixed a bug with the server not enforcing certain items to be deleted. Items expiring while in cospre slots will no longer visually remove items from equipped slots. Consumable expiration items are now fully removed upon expiry, instead of just consuming 1 use. The "Take the secret documents" quest now offers you the potion after accepting the quest (instead of requiring you to buy it first), and also when returning to the NPC without a potion while the quest is still in progress. This means if you logout and return to the quest later without a potion, or you fail it the first time and waste your potion, you don't have to abandon the quest. Quests now reset their progress upon loss of their required items when they're in the "before compensation" state to prevent them from getting bugged. "Finding the lost soul" quest will no longer remove [sealed Soul] upon death. The quest will also no longer reset on logout while it's in the "before compensation" state, so you can disconnect/relog and still turn it in after obtaining the [sealed Soul]. Items considered expensive (100K or above from NPCs) are now added to the repurchase list. Added [sealed Items] to Sundries at a cost of 1mil coins per. Also reduced their prices in the Power-Up Store. Renamed [sealed Items] to [unbind Items] for clarity. Removed rewards from some Moradon achievements, which were being used to farm Monster Stones at a rate much faster than intended. Fixed a bug with clan rollback logic (when a player who's contributed a significant amount of National Points left the clan), which caused clans to not lose their cape correctly on restart.
  9. twostars

    Atross/Riots NP bugged

    Which classes are you? Is there a possibility you're ranging them?
  10. twostars

    List of bugs 2017

    Are you sure? Were they the same pots both times? I'm assuming maestro pots have never worked like this but regular pots were fine. Edit: Nope. I know why it's doing this, it's because of the stealth changes. Same deal with the maestro pots, only they weren't counted before I guess. The problem is the logic to break stealth on attack/movement is also interrupting the cast (that's why I never saw a follow-up from the client). This didn't happen before because this logic wasn't called for pots before, we exempted them. That's why before pots never broke stealth (but they do now). However, now that they break stealth, they also interrupt stealth casts. As does anything else that breaks stealth. Thinking about it, this logic doesn't need to be here at all. If stealth is meant to be interrupted by attacks, this will already happen with the existing interrupt logic (at the correct rate, be it 100% or not). Pots won't trip it from there. So I can remove this logic entirely and fix both issues. Yay!
  11. twostars

    Patch notes (22/04/2017)

    Changelog Added 2.103 which fixes some movement issues (particularly with Genie). Fixed a server crash caused by yesterday's update, which caused AI to completely die. Fixed a bug with [Daily] Felankor Hunt quest not being able to be turned in if you've already turned in [Daily] The Bifrost monsters I for today. Also fixed [Daily] The Bifrost monsters I not showing up in the menu correctly on reset. Fixed a bug caused by yesterday's patch which prevented being kicked out from inaccessible zones when relogging, causing you to simply disconnect on character selection. This was temporarily fixed by forcing you back to Moradon on relog if you were in an expired instance, or in a war zone (regardless of whether the war was active). With the restart, this has been fixed properly so kickouts will work as they always have, and this workaround was removed. Tweaked mining rates to remove & reduce the drop rate of some of the more useless items, and also decrease the drop rate of Nest Scraps & Scrap of Steel slightly. Players should no longer receive the "No item found" message, but it was normal/expected regardless. Removed Silver Bars, Menissiah's Vouchers and Monster Stones from Felankor's Box and added Trina's Pieces in their place. Drop rates were improved around them.
  12. twostars

    List of bugs 2017

    The way it works is it pulls in the rankings the site uses and then goes over each of them seeing if they're online. It sets 5 commanders from the top 5 found in the list that are online. The rankings, however, are generated daily (meaning new clans aren't in it), and it was limited to the top 100, so any clans not in that top 100 were also not in it. So if no clan leaders in the top 100 ranked clans were online for the war, it wouldn't have anyone else to give commander to. That's why I rank all clans now, and update these at the 5min mark before assigning commanders. It means everyone's counted. As for the king, we do have that implemented as well.
  13. twostars

    List of bugs 2017

    I need to check this with USKO/SteamKO, because as far as I can tell this isn't our server doing this... it's the client itself. I'm not so sure this is exactly the case officially. What I know: The commanders are pulled from the same data as the website shows for clan rankings. Now, whether or not they update the rankings before every war, I don't know, but the server definitely reloads the table here. Honestly, this really only disputes one thing: "The 5 clan leaders with highest position in the overall server ranking (including clans that aren't in the website list) that are present at war should get commander status per nation." If they update the rankings/website before (or rather, 5min into every war), then that makes sense. But their website should update as well (although I don't pretend to know what goes on with their website). So I mean, we can update clan rankings at every war and that's probably all we need to do here? Everything else should be working the same. That's the way it's coded, at least. Not sure if I understood if any other part of that was actually broken. Edit 2: Alright. All clans should now be ranked, and rankings now get updated every war for war commanders to include current clans.
  14. twostars

    Help Me Please.

    Hey. Listen. http://forum.apexko.com/topic/4572-help-me/ It's still Navi gonna happen.
  15. twostars

    Help Me

    Looked into your case, and account sharing's forbidden for this reason. I won't be restoring these items, sorry. I suggest changing your password, enabling OTP, and not telling anyone your account details. Edit: There's no way for anyone to gain access to your account unless they know your details. Be safe with your details. We have never once had a case where a player's account was 'hacked' (i.e. by someone they didn't know). We've done all we can to ensure your account security. It's up to you to protect your own account with the tools provided, coupled with a sprinkling of common sense.
  16. twostars

    Help Me

    Can you provide any information whatsoever here? i.e. When this happened (approximately), what was taken (doesn't have to be everything, just something to give me an idea of what to look out for), etc.
  17. twostars

    FT: Remove Specters from Final Level

    Any specifics on how that works?
  18. twostars

    List of bugs 2017

    Honestly, I think it's fine as it is. You're thinking of it as if it's blinking, but the problem was that people start blinking after they load in. While they're still loading in, players (edit: I was wrong, this was never an issue) and monsters can see them(!), but they're not yet blinking (since they haven't yet loaded in) so they're attackable. Ouch. This just fills that gap and prevents people from being attacked while they're still loading. Ideally they wouldn't be shown at all until they've finished loading (or we start them blinking when we start loading in -- but that's unofficial), but I didn't want to break anything with this change (and I probably would have broken things fixing that up). Once they've loaded ingame, it's fair game to be able to hit them. Before then just seems unfair. I think our behaviour is pretty much the same as official now, unless officially you aren't visible until you load in (but I'm not sure about that, I think they show up still as well -- I'll check this. Possibly it's even inconsistent. edit: yeah, officially it's really inconsistent). EDIT: Ignore what I said about that. There was never any problem for player visibility, just monsters. And since that's now fixed, there's nothing here to be concerned about. So we're good on all fronts here. Players can't see (or attack) other players until they finish loading in (which is when they start blinking, if applicable). Monsters can't see/attack players until they finish loading in (and aren't blinking, once they have finished loading in). So... everything is fine now.
  19. twostars

    Patch notes (21/04/2017)

    Changelog "Disturbing the enemy base" quest now rewards Menissiah's Official List Coupon [1hr] instead of the item itself. This can be exchanged at Kayra in Moradon. Added new quests Ultima Hunt and Felankor Hunt to [Outpost Captain] in Ronark Land. Fixed siege weapons being cancelled when lowering their ladder/bridge. Cleaned up warp gate logic to prevent minor abuse (i.e. teleporting to zones accessible via any warp gate, so long as you meet all requirements to enter the zone). Players will no longer lose scrolls when an applicable debuff expires while they're silenced by the "Full Skill Gear" (great confusion / chaos) curse. Players will no longer be able to load into Ronark Land right as the war starts. Previously a small window existed while the client is loading where the player wasn't technically in the zone, so the server didn't kick them from it. This window has been removed, so players will be kicked as soon as their client loads. In addition to the above, we also fixed an issue where if the server tried to move you into another zone while loading, the client would still load into the original zone you were kicked from. In this case, the server would still see you in the new zone, so you'd still see the correct spawns and other players, but the client would be in a different zone entirely so you'd become stuck in place due to server-side collision. War commanders are now assigned at the 5 minute mark (was 10min). Heavily optimised movement-related traffic to reduce the strain on the client (as well as the reduced bandwidth and lag that comes with it). Invasion monuments now respawn instantly. Spawn timeouts are now always used; Ultima will now be despawned correctly in invasions. Fixed a bug with improper memory access, which ultimately caused players to take very little damage from other players with an item in a specific slot with very specific conditions which potentially changed every time we updated the server (I know, right?). Due to the unpredictable and obscure nature of this bug, it wasn't something that was readily abused -- and if it was, it was never for long because server updates caused the conditions for it to change. Nevertheless, this issue has been painstakingly tracked down and fixed so nobody else has that very minor chance of experiencing it (we've had only 2-3 known cases of this in the several months since the bug was introduced on 13 Sep 2016). [Manager] Eliot and [Manager] Roktar NPCs now give National Points during invasions. Fixed respawn times for objects (e.g. gates, levers) during wars; they will no longer respawn during a war. All clans are now included in rankings, and clan rankings are now updated at the start of every war for the sake of assigning commanders. This means if none of the top clan leaders are online, other clan leaders have a chance at it too, i.e. there should never not be any war commanders. Added 2.103 which fixes some movement issues (particularly with Genie).
  20. twostars

    Patch notes (19/04/2017)

    Changelog Debuffing monsters/NPCs no longer generates threat. Tweaked bracket handling in Chaos Dungeons to fix chaos cube items / rewards in instances with less than 6 players. Fixed bug causing buying merchant messages to not show up. Fixed a bug with the website / Power-Up Store causing it to not allow you to login with special characters in your display name. Removed requirement to unequip all items before rebirthing. Redistributing rebirth stats, however, still requires you to unequip your items. "Disturbing the enemy base" quest now allows you to take the quest so long as you have [Fake Information Paper], instead of if you've completed the quest which gave it sometime that day. This means you can do the prerequisite quest one day, and do the Ronark Land quest another. It also means there's no confusion if you got rid of the paper since. Expiring equipped cospre items / fairies are now properly removed, so we no longer have to disconnect players when the Oreads fairy expires. Transformations no longer break when relogging. Fixed potential bug where blink timer could break things (transformation state, etc). Players can no longer be attacked while still loading into the game. Arrows can now only cancel casts if they deal damage. This specifically fixes attacks still cancelling casts while Gab's Adamant is up. Fixed death notices showing for Aztec curse suicides in PvP zones (they previously only worked correctly in arenas). Invasion monuments now respawn every 1 minute (was 10). Tweaked skill cancellations to ensure they only ever proc once per attempt (in case this is why rates feel too high). Fixed mining rates to enable Scrap of Steel to drop. (hotfixed)
  21. twostars

    Patch notes (19/04/2017)

    This patch is now live.
  22. twostars

    List of bugs 2017

    Yes, it's just RNG. Cancellations are difficult to test (since I can't see any bad behaviour in my testing), but I have a theory that the way we're working it now, we're potentially attempting to cancel old casts as well (which is silly). It's super unlikely, because it would mean the client has to do some weird things, but... presently, technically possible. So I've tweaked logic to prevent that potential scenario. Aside from that, it all looks fine. Perhaps we'll get lucky and it was doing that for whatever reason. If not, well... need to dive back into it. It really doesn't differ from official logic otherwise, as far as I can tell, so if there is a problem with rates it has to be doing something wacky like that, I think. Also fixed a few of the other things on the list while I was looking over that. All of these changes will be applied on the next restart.
  23. twostars

    List of bugs 2017

    RNG. Each skill has an individual rate of cancellation. This is why it's harder to interrupt healers. int SuccessValue = rand()%100; if(SuccessValue >= pSkill->iPercentSuccess) // cancel the skill at a rate defined per the skill we're casting That's this. I'm not sure what you mean by that. I know arrows can interrupt, as can lightning-based magic skills because there's logic there for it. So with that in mind, going back to your original post: Taking away from the whole "at the right time" thing (unless we translate that mean "we got lucky with RNG"), it all makes complete sense with what I'm seeing. The difference between here and other servers is purely that we shifted this logic to the server, since doing it on the client's end is very abusable ("hey, I can't ever be cancelled!"). So with that in mind, we need to determine what actually is the problem here. Are we implementing it for things that shouldn't trip it, etc. Why priests in particular feel like they're getting cancelled more than they should be, and we've ruled out the window thing. So I'll look into that.
  24. twostars

    List of bugs 2017

    Since this "window logic" apparently applies to skills too, let's look at skills. It's essentially the same, but no awkward Action() call -- it's handled directly, so there's less to... interpret, I guess. So, let's look at type 3 stuff (generally mage skills) in particular, since it's the easiest to interpret (they're all handled the same way, just different triggers). The client source is really underwhelming for this, since it's lacking a lot, but the gist of it's here: void CMagicSkillMng::EffectingType3(DWORD dwMagicID) { __TABLE_UPC_SKILL_TYPE_3* pType3 = m_pTbl_Type_3->Lookup(dwMagicID); __ASSERT(pType3, "NULL type3 Pointer!!"); if(!pType3) return; StunMySelf(pType3); int key = 0; if(pType3->iStartDamage>0 || (pType3->iStartDamage==0 && pType3->iDuraDamage>0) ) key = DDTYPE_TYPE3_DUR_OUR; else key = DDTYPE_TYPE3_DUR_ENEMY; if(key==DDTYPE_TYPE3_DUR_ENEMY && pType3->iAttribute==3) StopCastingByRatio(); The important part that cancels our casts is StopCastingByRatio(). According to this, this applies for lightning based skills from enemies. StopCastingByRatio() looks like this: void CMagicSkillMng::StopCastingByRatio() { m_pGameProcMain->CommandSitDown(false, false); // ÀÏÀ¸ÄÑ ¼¼¿î´Ù. if(IsCasting()) { __TABLE_UPC_SKILL* pSkill = s_pTbl_Skill->Lookup(s_pPlayer->m_dwMagicID); if(pSkill) { int SuccessValue = rand()%100; if(SuccessValue >= pSkill->iPercentSuccess) // ½ºÅ³ Å×ÀÌºí¿¡ ÀÖ´Â È®·ü´ë·Î ½ÇÆÐÇÑ´Ù.. { FailCast(pSkill); //if( s_pPlayer->Action(PSA_BASIC, false, NULL, true); // ij½ºÆà Ãë¼Ò, ±âº»µ¿ÀÛÀ¸·Î °­Á¦ ¼¼ÆÃ.. } } }So same deal as with regular attacks, but this calls FailCast() instead to immediately fail the cast. Simple. For reference, FailCast() looks like this: void CMagicSkillMng::FailCast(__TABLE_UPC_SKILL* pSkill) { s_pPlayer->m_dwMagicID = 0xffffffff; s_pPlayer->m_fCastingTime = 0.0f; s_pPlayer->m_iSkillStep = 0; int16_t data[SkillDataFields] = {0}; data[3] = SKILLMAGIC_FAIL_CASTING; BuildAndSendSkillPacket(s_pPlayer->IDNumber(), s_pPlayer->IDNumber(), MAGIC_FAIL, pSkill->dwID, data); } All it does is resets the cast (immediately) and tells the server. In 1.298: v4 = *(_DWORD *)(this + 36); v19 = a2; sub_58D550(&v21, &v19); result = *(_DWORD *)(v4 + 24); if ( v21 != result ) { v6 = v21 + 16; if ( v21 != -16 ) { CMagicSkillMng::StunMySelf((_DWORD *)v3, v6); v7 = *(_DWORD *)(v6 + 12); if ( v7 <= 0 && (v7 || *(_DWORD *)(v6 + 16) <= 0) ) { v8 = 200; if ( *(_DWORD *)(v6 + 24) == 3 ) // pType3->iAttribute == 3 CMagicSkillMng::StopCastingByRatio(v3); } else { v8 = 100; }There's no changes there, it's just merged in the lightning-type check into the existing check, instead of checking a second time. void __thiscall CMagicSkillMng::StopCastingByRatio(int this) { int v1; // [email protected] int v2; // [email protected] int v3; // [email protected] int chance; // [email protected] signed int v5; // [email protected] int v6; // [email protected] int v7; // [email protected] __int16 v8; // [email protected] int v9; // [email protected] char v10; // [email protected] char v11; // [sp+Fh] [bp-31h]@0 int v12; // [sp+10h] [bp-30h]@4 int v13; // [sp+14h] [bp-2Ch]@4 int v14; // [sp+18h] [bp-28h]@9 int v15; // [sp+1Ch] [bp-24h]@9 int v16; // [sp+20h] [bp-20h]@9 char v17; // [sp+24h] [bp-1Ch]@9 int v18; // [sp+28h] [bp-18h]@9 int v19; // [sp+2Ch] [bp-14h]@9 int v20; // [sp+30h] [bp-10h]@9 int v21; // [sp+3Ch] [bp-4h]@9 v1 = this; sub_5D91F0(*(_DWORD **)(this + 24), 0, 0, 0); // CommandSitDown(false, false, false) if ( *(_DWORD *)(dword_818794 + 0x2FC) == 6 // These are the IsCasting() checks, just inlined because the compiler felt like it I guess. || *(_DWORD *)(dword_818794 + 0xB04) != -1 || *(_BYTE *)(dword_818794 + 0xAF4) == 1 ) { v2 = dword_818760; // __TABLE_UPC_SKILL* pSkill = s_pTbl_Skill->Lookup(s_pPlayer->m_dwMagicID); v12 = *(_DWORD *)(dword_818794 + 2820); sub_46D7E0(dword_818760 + 20, &v13, &v12); if ( v13 != *(_DWORD *)(v2 + 24) ) { v3 = v13 - 0xFFFFFFF0; if ( v13 != -0x10u ) // if (pSkill) { chance = rand() % 100; v5 = 100; if ( !*(_BYTE *)(dword_818794 + 0x470) ) // same check as in the previous example, to allow the specific transformations to have a rate of 100%. v5 = *(_DWORD *)(v3 + 0x88); if ( chance >= v5 ) { v18 = 0; // FailCast() is inlined here as well, so this is what FailCast() looks like. v17 = v11; v19 = 0; v20 = 0; v21 = 0; //4002 Casting failed sub_615080(4002, &v17); // show the fail message (client source doesn't do this) v6 = *(_DWORD *)(v1 + 24); sub_5D7250(&v17, -50373); *(_DWORD *)(dword_818794 + 2820) = -1; // s_pPlayer->m_dwMagicID = 0xffffffff; v14 = 0; *(_DWORD *)(dword_818794 + 2828) = 0; // not sure what this flag is v7 = *(_DWORD *)(dword_818794 + 1140); // prepare the packet to send v8 = *(_DWORD *)(dword_818794 + 1140); v9 = *(_DWORD *)v3; v15 = 0; v16 = 0; sub_583540(4, v9, v8, v7, &v14, -100, 0, 0); // send the packet v21 = -1; } } } } }So it's more or less the same, no window logic there either...
  25. twostars

    List of bugs 2017

    Look, I spent way more time than I should have trying to prove its existence. I'm not saying there's nothing wrong, but what I am saying is: this "window" logic doesn't appear to exist in any step of the process. I went through it, in the old client source, in 1.298 and in 2.128. I'm not just waving my arms around being all "I don't want to fix this, it doesn't exist" -- I spent my time trying to prove it exists to understand how it worked so we could make sure it worked the same here. I just happened to end up proving it didn't. You could at least attempt to prove its existence by demonstrating you can only successfully cancel during those windows? Or something?