Project 1999

Go Back   Project 1999 > General Community > Off Topic

Closed Thread
 
Thread Tools Display Modes
  #1  
Old 08-04-2023, 08:35 PM
Ekco Ekco is offline
Planar Protector

Ekco's Avatar

Join Date: Jan 2023
Location: The Internet
Posts: 2,887
Default

ah, all i know is it just doesn't feel right. i know takp got their combat formulas from packet captures off the al'kabor server or whatever but i was getting spell interrupted 100% of the time, couldn't even face tank a willowisp in erud's crossing at lvl 16
  #2  
Old 08-04-2023, 08:46 PM
Lune Lune is offline
Banned


Join Date: Mar 2013
Posts: 3,354
Default

^ sounds like my Wiz experience on classic live; P99 definitely errs a bit too far toward channeling casts, at lower levels at least.
  #3  
Old 08-04-2023, 11:07 PM
Ekco Ekco is offline
Planar Protector

Ekco's Avatar

Join Date: Jan 2023
Location: The Internet
Posts: 2,887
Default

Quote:
Originally Posted by Lune [You must be logged in to view images. Log in or Register.]
^ sounds like my Wiz experience on classic live; P99 definitely errs a bit too far toward channeling casts, at lower levels at least.
yeah i'm not talking about it compared to p99, it too easy here. they overcorrected in the wrong direction is what i'm saying. I'm sure it's accurate to 2002 al'kabor server just not actual classic, like i literally couldn't get a 2nd spell to channel with 80 skill at lvl 16 versus a lvl 11 wisp

i spent so much time on that island it's like only thing i confidently remember after 23 years and it ez pz by 16 if you don't get a add

insert shit's not classic Swish gif here
  #4  
Old 08-05-2023, 03:10 AM
Torven Torven is offline
Kobold


Join Date: Nov 2010
Posts: 153
Default

Quote:
Originally Posted by Ekco [You must be logged in to view images. Log in or Register.]
yeah i'm not talking about it compared to p99, it too easy here. they overcorrected in the wrong direction is what i'm saying. I'm sure it's accurate to 2002 al'kabor server just not actual classic, like i literally couldn't get a 2nd spell to channel with 80 skill at lvl 16 versus a lvl 11 wisp
I just made a level 16 wizard to test this. I was able to kill wisps easily even by starting the fight by punching them first. I did get channels even when I was hit.

TAKP's channeling logic was based off of a client decompile. (credit to Mackal for the decompile) It's possible the implementation is imperfect but the core logic seems accurate to me, which is this: your chance to channel is a value of channeling skill + player level and it must beat a random number from 1 to 390. There is a minimum 10% chance to channel and there is a bonus if the spell is more than 5 levels under your current level. This roll is done for every hit against you and you must win every roll during the cast. If you get pushed more than 1 unit from your starting position you will interrupt as well.

The channeling skill just doesn't work very frequently at low levels. Also if you neglect your defense skill you're gonna have a bad time because that's where your avoidance comes from. (also get at least 75 agi)

TAKP's combat formulas don't come from packet sniffing btw. Our combat logic was pieced together from several sources which include a handful of leaks from Sony developers, client decompiles, and shit ton of log parsing on Live servers using many different custom log parsing tools/scripts with some detective work to separate the modern stuff from the old stuff and fitting them all together. Much of it is precise but some of it must be approximated, like NPC statistics. A lot of NPCs were parsed on Live over half a decade for stats.
  #5  
Old 08-05-2023, 04:04 PM
Secrets Secrets is offline
VIP / Contributor

Secrets's Avatar

Join Date: Oct 2009
Posts: 1,354
Default

Quote:
Originally Posted by Ekco [You must be logged in to view images. Log in or Register.]
yeah i'm not talking about it compared to p99, it too easy here. they overcorrected in the wrong direction is what i'm saying. I'm sure it's accurate to 2002 al'kabor server just not actual classic, like i literally couldn't get a 2nd spell to channel with 80 skill at lvl 16 versus a lvl 11 wisp

i spent so much time on that island it's like only thing i confidently remember after 23 years and it ez pz by 16 if you don't get a add

insert shit's not classic Swish gif here
This is the formula for channeling:

Code:
	else if (!spells[spell_id].uninterruptable) // not bard, check movement
	{
		// special case - this item can be cast while moving, by any player, not just bards
		if ((IsClient() && ((slot == CastingSlot::Item)) && inventory_slot != 0xFFFFFFFF) &&
			CastToClient()->GetItemIDAt(inventory_slot) == 28906 /* Bracelet of the Shadow Hive */)
		{
			Log(Logs::Detail, Logs::Spells, "Casting from clicky item %s.  Allowing cast while moving.", CastToClient()->GetInv()[inventory_slot]->GetItem()->Name);
		}
		// if has been attacked, or moved while casting, try to channel
		else if (attacked_count > 0 || GetX() != GetSpellX() || GetY() != GetSpellY())
		{
			uint16 channel_chance = 0;

			if (IsClient())
			{
				// this is fairly accurate (but not perfect) and based on decompiles

				// client is holding down forward movement key or no skill
				if (animation > 0 || GetSkill(EQ::skills::SkillChanneling) == 0)
				{
					InterruptSpell();
					return;
				}

				float distance_moved, d_x, d_y;
				if (GetX() != GetSpellX() || GetY() != GetSpellY())
				{
					d_x = std::abs(std::abs(GetX()) - std::abs(GetSpellX()));
					d_y = std::abs(std::abs(GetY()) - std::abs(GetSpellY()));
					if (d_x > 1.00001f || d_y > 1.00001f)
					{
						InterruptSpell();
						return;
					}
				}
				if (attacked_count == 0)
					attacked_count = 1;

				uint16 bonus_chance = 0;
				uint16 spell_level = spells[spell_id].classes[GetClass() - 1];
				uint16 roll = 0;
				uint16 loops = 0;

				do {
					roll = zone->random.Int(1, 390);
					if (!IsFromItem && aabonuses.ChannelChanceSpells)
					{
						roll = (100 - aabonuses.ChannelChanceSpells) * roll / 100;
					}

					if (GetLevel() > (spell_level + 5))
						bonus_chance = 3 * (GetLevel() - spell_level) + 35;

					channel_chance = GetSkill(EQ::skills::SkillChanneling) + GetLevel() + bonus_chance;
					if (channel_chance > 370)
						channel_chance = 370;

					Log(Logs::Detail, Logs::Spells, "Checking Interruption: spell x: %f  spell y: %f  cur x: %f  cur y: %f channelchance %f channeling skill %d\n", GetSpellX(), GetSpellY(), GetX(), GetY(), channel_chance, GetSkill(EQ::skills::SkillChanneling));

					if (roll > channel_chance && roll >= 39)
					{
						Log(Logs::Detail, Logs::Spells, "Casting of %d canceled: interrupted.", spell_id);
						InterruptSpell(SPELL_UNKNOWN, true);
						return;
					}

					loops++;
				} while (loops < attacked_count);

				regain_conc = true;
			}
			else
			{
				// NPCs don't use channeling skill (says Rashere circa 2006) or fail spells from push
				// this is an extremely crude approximation but based on AK log greps of a handful of NPCs

				// hit NPCs typically don't even regain concentration and just finish casts
				int roll = 30;
				if (GetLevel() > 70)
					roll = 10;
				else if (GetLevel() > 30)
					roll = 20;

				// this spell id range is hardcoded to not be interruptable.
				// this was determined from a client decompile.  credit: Mackal
				if (IsNPC() && spell_id >= 859 && spell_id <= 1023)
					roll = 0;

				if (zone->random.Roll(roll))
				{
					// caster NPCs have an extremely high regains rate; almost 100% at high levels
					roll = zone->random.Int(1, 390);

					// AK logs show some warrior NPCs (e.g. Tallon Zek) not regaining concentration; maybe NPCs used channeling skill in 2002 but not 2006?  shrug
					if (GetClass() == WARRIOR || GetClass() == ROGUE || GetClass() == MONK)
						roll = 0;

					if (roll > ((GetLevel() < 51 ? 325 : 225) - GetLevel() * 3))		// not how Sony did it; replace this if you find data/evidence/leaks
						regain_conc = true;
					else
					{
						Log(Logs::Detail, Logs::Spells, "Casting of %d canceled: interrupted.", spell_id);
						InterruptSpell(SPELL_UNKNOWN, true);
						return;
					}
				}
			}

			if (regain_conc)
			{
				Message_StringID(CC_User_Spells, REGAIN_AND_CONTINUE);
				uint16 textcolor = IsNPC() ? CC_User_Default : CC_User_Spells;
				entity_list.MessageClose_StringID(this, true, 200, textcolor, OTHER_REGAIN_CAST, this->GetCleanName());
			}
		}		// mob was hit or moved from start of cast loc
	}		// class != bard
Most was taken from client decompiles. Part of the server is in the client itself, so we are accurately able to verify how stuff worked.

You should see the amount of stuff Torven had to go through to make sure this information was all correct.

This is mostly a case of EQ actually being this hard in classic, but people wanting it to feel a specific way. P99 is full of inaccuracies that basically give you the feel of classic, though arguably their content / zone populations are much better at least for classic. (for now.)
__________________
Engineer of Things and Stuff, Wearer of Many Hats

“Knowing yourself is the beginning of all wisdom.” — Aristotle
  #6  
Old 08-04-2023, 09:53 PM
branamil branamil is offline
Fire Giant


Join Date: Jan 2017
Posts: 806
Default

open source is the only ethical way to rip off someone else's content like p99 has done to daybreak. Why haven't they gone open source so bugs would actually get fixed?
  #7  
Old 08-04-2023, 10:40 PM
wuanahto wuanahto is online now
Sarnak


Join Date: Apr 2021
Posts: 259
Default

I seen over-moderation slowly kill off many third party servers, from tribes2 to WoW.
  #8  
Old 08-05-2023, 09:19 AM
Duik Duik is offline
Planar Protector

Duik's Avatar

Join Date: Oct 2017
Location: Near the largest canyon in the world!
Posts: 2,379
Default

Quote:
Originally Posted by wuanahto [You must be logged in to view images. Log in or Register.]
I seen over-moderation slowly kill off many third party servers, from tribes2 to WoW.
Moderation, but only in moderation.
Got it.
  #9  
Old 08-04-2023, 10:41 PM
Castle2.0 Castle2.0 is offline
Planar Protector

Castle2.0's Avatar

Join Date: Aug 2014
Posts: 2,467
Default

Can play on PC or must be mac?
  #10  
Old 08-04-2023, 10:42 PM
Castle2.0 Castle2.0 is offline
Planar Protector

Castle2.0's Avatar

Join Date: Aug 2014
Posts: 2,467
Default

Also, manastone in at launch or nah? This is obvs the deciding factor.

A Macintosh can be bought. A manastone cannot.
Closed Thread


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 12:29 AM.


Everquest is a registered trademark of Daybreak Game Company LLC.
Project 1999 is not associated or affiliated in any way with Daybreak Game Company LLC.
Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.