Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Guide for gating features #4357

Open
ElrozBriggs opened this issue May 28, 2024 · 2 comments
Open

Guide for gating features #4357

ElrozBriggs opened this issue May 28, 2024 · 2 comments

Comments

@ElrozBriggs
Copy link

ElrozBriggs commented May 28, 2024

--Different kinds of Gating Content Filters :
-Gating NPC spawn points
A good example for this would be an NPC in Cazic-Thule and Feerrott named "a lizard ritualist". There's 2 eras of Cazic-Thule, Pre and Post-Luclin. This Specific NPC doesn't start spawning until Velious-era when Stonebrunt Mountains are added. So From Vanilla --> Kunark, we have the Original-era Cazic-Thule, and this NPC doesn't exist.
image
Once Velious launches, this NPC starts spawning. When the Luclin-era Cazic-Thule revamp happens, this NPC stops spawning. In the Database this spawn point is gated to only spawn at min expansion 2 (velious), to max expansion 2 (velious).
image
Other NPC's in Cazic-Thule are generally gated to the Original version of the zone, min expansion 0 (vanilla), max expansion 2 (velious)
image
or the Luclin-era, min expansion 3 (luclin), max expansion 99 (the end of the server's timeline)
image

-Gating NPC spawn groups
Sometimes gating the spawn point isn't necessary, and just gating the spawn table works better. For instance, original era zone collects show a npc spawning on a specific location, but in later eras a new NPC gets added to that spawn group. In this example, "a giant scarab" spawned 100% of the time, but in luclin era, it was replaced with 3 versions of scarabs, which add up to 100% spawn. This shows a 200% spawn chance in the table, but the important thing is that the spawns add up to 100% in each era effected.
image
imageimageimageimage

-Gating Loot Tables
Some NPCs had loot added in later expansions, the Luclin newbie armor quest items are a good example for this. Depending how the loot tables were added, sometimes individual items are gated, and sometimes an entire loot table is gated. In this example, the gray wolf in qeynos hills has 3 loot tables with the center table being gated to min expansion 3 (Luclin) , max expansion 99 (end of timeline)
image
In some cases, gating an individual item on a loot table is more accurate. In this example, the decaying skeletons only ever dropped 1 weapon maximum per kill (no evidence of one dual wielding). The Rusty Ulak and other h2h weapons were added with Luclin era, so there's 1 weapon loot table and only the ulak is gated to luclin+
image

-Gating via scripts (NPC Dialogue, mostly)
In some cases, dialogue for NPCs changed over time, as some of them had quest chains that were expanded upon as expansions launched. A good example of this is "an iksar master" in Timorous Deep. During Kunark era, the highest iksar monk shackle quest was Shackle of Bronze. In Velious, the Shackle of Steel quest was added, and in Luclin, Shackle of Tynonnium and Whistling fists quests. In script form, the dialogue looks like this

function event_say(e)
	if(e.message:findi("hail")) then
		e.self:Emote("is humming and chanting softly. He seems oblivious to your presence.");
	elseif(e.message:findi("master rinmark")) then
		e.self:Emote("squints one eye open, then returns to his meditation.");
	elseif(e.message:findi("talon southpaw")) then
		e.self:Emote("waves his arms in the air. 'The great master. His soul is the wind. He speaks to us in words of thunder. He strikes Norrath with bolts of lightning. I seek to be as he is. I have traveled the globe in search of his fists. I have found only one. Another is said to be with [Gomoz]. I shall return it when I am finished with my seasons-long meditation or perhaps I shall find a monk to [return the hand to Cabilis].'");
	elseif(e.message:findi("Gomoz")) then
		e.self:Say("Disciple Gomoz was once Talon Southpaw's pupil. It is rumored that he has only one hand. Unfortunately, a horde of ogre raiders swiped his bones, along with others, from their place in Kurn's Tower. What those simple oafs plan to do with them is a mystery. Only one who has studied the arcane sciences could use them. They most likely used them as soup bones.");
	elseif(e.message:findi("return the hand to Cabilis")) then
		e.self:Emote("hands you an old tattered sack. 'This shall be your proof of allegiance. Prove that you are strong with an intact mandible of a skulking brutling and the claws of a burynai excavator. Prove that you are a monk of fist and tail with a sash of an exiled human monk and the sparring gloves of a goblin pit fighter. Combined, these items make the sack full. This will earn my trust and the hand.'");
		e.other:SummonCursorItem(17036); -- Item: Tattered Sack from Rinmark
	elseif(e.message:findi("assist old Rinmark in completing his rock garden")) then
		e.self:Emote("pours the pebbles into his pocket and hands the box to you. 'Take my box. Fill and combine within my box the following; a radiant meteorite, frontier fool's gold, petrified redwood, Rile's sand coin, sulfur stone, fragment of tektite, plains pebble, jade magma, heart of ice and an unholy coldstone. Return the full tin box to me and I shall reward you with a shackle of bronze.'");
		e.other:SummonCursorItem(17039); -- Item: Empty Tin Box
	elseif(e.message:findi("whistling fists")) then
		e.self:Say("The Whistling Fists are rumored to be magical instruments of destruction which can only be wielded by monks. The founder, Supreme Master Tynn, was the only lizard to ever gaze upon the weapon. He only spoke of it to his student Marthor. Marthor rarely spoke of it and when he did it was usually after a few flagons of Trog Brew. That is why many consider it to be babble.");
	elseif(eq.is_the_scars_of_velious_enabled()) then
		if(e.message:findi("student")) then
			e.self:Emote("hands you what appears to be the base of a key. 'This was delivered to me by a dying student. He collapsed just after handing it to me. He was accompanying a student of mine named Veltar. They were questing for the legendary Whistling Fists. The key is made of a metal I have never felt or heard of. Find him.'");
			e.other:SummonCursorItem(17040); -- Item: Part of a Large Key
		end
	elseif(eq.is_the_shadows_of_luclin_enabled()) then
		if(e.message:findi("test of patience") or e.message:findi("trial of patience")) then
			e.self:Say("So your time has finally come to be tested for the final rung. To show your patience you shall spar with me. When you have gained the insight and strategy to strike you will know when. Strike me too soon and you will perish, too late and I will be gone. Come at me when the time is right. Let us begin.");
			eq.unique_spawn(96318,0,0,e.self:GetX(),e.self:GetY(),e.self:GetZ(),e.self:GetHeading());
			eq.depop_with_timer();
		end
	end
end

If velious is enabled, the line of dialogue for Shackle of Steel quest starter works, if Luclin is enabled, the lines for Shackle of Tynonnium and Whistling Fists quest starters work, otherwise, all other dialogue lines will work.

-Gating Spells
As expansions launched, NPC spellsets were updated and included the current eras spells. A good example for filtering spellsets would be Overking Bathezid in Chardok. He's a kunark-era wizard NPC who used Sunstrike as his most powerful nuke in Kunark. After Luclin launches, he begins using Garrison's Superior Sundering which is a much heavier damage spell and doesn't exist until Luclin-era. This is the generic default wizard spellset
image
Looking at Sunstrike on the left, and Garrison's Superior Sundering on the right
imageimage

@ElrozBriggs
Copy link
Author

ElrozBriggs commented May 28, 2024

-Using Content Flag instead of Expansion Gating
Expansion gating sometimes is too liberal of a timeframe needed, and making more specific timeframes is better. This is when Content Flags are better than Expansion Flags. For instance, vanilla-era drops like Manastone. These can be controlled to drop without being relegated to an expansion. This is the evil eye's loot table
image
There are 2 main loot tables, each controlled to start and stop using a Content Flag. The Manastone table will be active when the "OldWorldDrops" are turned on
image
the Manastone stops dropping when that Content Flag is disabled, at that time, the other loot table with just the Bag of the Sewn Evil Eye will begin
image

@fryguy503
Copy link
Contributor

fryguy503 commented May 28, 2024

I bet this would belong best in the docs:

https://docs.eqemu.io/
https://docs.eqemu.io/contributing/how-to-doc/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants