Shender_east

Abarcine

New Adventurer
Heroes of Dawn
Joined
Aug 12, 2015
Messages
26
Reaction score
0
Impossible to progress past the spider cave in some runs; really not sure what triggers this gamebreaking bug but it's incredibly frustrating and annoying.
 

Thothie

Administrator
Staff member
Administrator
Moderator
MSC Archivist
Joined
Apr 8, 2005
Messages
16,342
Reaction score
326
Location
lost
I thought I nixed the requirement, but if I didn't, you do have to slay the ice giant outside before visiting the caves.
 

Wishbone

New Adventurer
MSC Developer
Heroes of Dawn
Blades of Urdual
Joined
Jun 15, 2010
Messages
211
Reaction score
1
Location
Lost in my mind.
I was helping run the map too. Anyways, we did slay the giant outside first.
 

Thothie

Administrator
Staff member
Administrator
Moderator
MSC Archivist
Joined
Apr 8, 2005
Messages
16,342
Reaction score
326
Location
lost
Yeah, it's been buggy... I'll double check the map to make sure the req is completely removed - not sure if that was FEB2015, but not seeing it in the changelog, so it maybe an alpha where it's fixed.
 

zeus9860

Active Adventurer
The True Followers of the Lost
Crusaders
Blades of Urdual
Alpha Tester
Joined
Feb 28, 2008
Messages
2,581
Reaction score
37
Age
31
Location
lolwut
From what i remember, you have to kill the orcs and the bear to reduce the chances of the map bugging in the cave.

Best way to do this map is:

-kill the rabbit near the house to the right of spawn place (it's a good luck charm!);
-ignore the elf, unless you want a huge pain in the @ss or the specific drop from there;
-kill bear;
-kill orcs;
-kill frost giant;
-clean the caves.
 

greatguys1

Epic Adventurer
MSC Developer
Warriors of the North
MSC Archivist
Joined
Apr 20, 2013
Messages
339
Reaction score
62
Age
26
Location
Yes
Also players joining the server mid spider fight can kill the teleporter... Even if the player reconnects or leaves.
 

Thothie

Administrator
Staff member
Administrator
Moderator
MSC Archivist
Joined
Apr 8, 2005
Messages
16,342
Reaction score
326
Location
lost
zeus9860 said:
-kill the rabbit near the house to the right of spawn place (it's a good luck charm!);
-ignore the elf, unless you want a huge pain in the @ss or the specific drop from there;
-kill bear;
-kill orcs;
-kill frost giant;
-clean the caves.
Save for the frost giant, none of that is tied to it. (poor bunny) :p

Doing the dream quest first, however, might actually help, as it'll give enough time for the frost giant to fully spin up his XP, in case repeatedly using setskilllevel is preventing his death from registering properly - but I doubt that's what's going on.
 

zeus9860

Active Adventurer
The True Followers of the Lost
Crusaders
Blades of Urdual
Alpha Tester
Joined
Feb 28, 2008
Messages
2,581
Reaction score
37
Age
31
Location
lolwut
Thothie said:
zeus9860 said:
-kill the rabbit near the house to the right of spawn place (it's a good luck charm!);
-ignore the elf, unless you want a huge pain in the @ss or the specific drop from there;
-kill bear;
-kill orcs;
-kill frost giant;
-clean the caves.
Save for the frost giant, none of that is tied to it. (poor bunny) :p

Doing the dream quest first, however, might actually help, as it'll give enough time for the frost giant to fully spin up his XP, in case repeatedly using setskilllevel is preventing his death from registering properly - but I doubt that's what's going on.


What may be causing the issue here is that the spiders target the orcs as enemies, so sometimes they get out of the cave and go topside (or even out of the map), making the portal not showing up when you clean the cave. This is what was happening when the map initially released, some people tested many ways and figured out cleaning the orcs outside is the best way to unlock the portal, again, the spiders do teleport outside, or at least used to. In my early runs, i had spiders near the spawn of the map killing people.
 

Thothie

Administrator
Staff member
Administrator
Moderator
MSC Archivist
Joined
Apr 8, 2005
Messages
16,342
Reaction score
326
Location
lost
That, seems more likely. Could see where a player might respawn and a spider fail to release it as a valid target, and thus teleport to said player, provided there was room for the spider nearby.

Code:
{ check_teleport
	//if we're close, try to teleport to last position, if far, try to teleport closer
	local AM_CLOSE 0
	if ( $get(NPCATK_TARGET,range) < RANGE_CHASE ) local AM_CLOSE 1

	local CUR_POS $get(ent_me,origin)

	if ( !AM_CLOSE )
	{
		//pick area randomly around target
		local TELE_POINT $get(NPCATK_TARGET,origin)
		local RND_ANG $randf(0,359.99)
		vectoradd TELE_POINT $relpos($vec(0,RND_ANG,0),$vec(0,MOVERANGE_NORM,0))
		vectorset TELE_POINT z $get_ground_height(TELE_POINT)
		if ( !GROUND_MODE ) vectoradd TELE_POINT z 16 //correct for ground slopes, if tele to ground
		setvard LAST_TELE_POINT $get(ent_me,origin)
	}

	if ( AM_CLOSE )
	{
		if ( LAST_TELE_POINT isnot 'LAST_TELE_POINT' )
		{
			local TELE_POINT LAST_TELE_POINT
		}
		else
		{
			local TELE_POINT NPC_HOME_LOC
		}
	}

	//test new position
	setorigin ent_me TELE_POINT
	local L_POS TELE_POINT
	local reg.npcmove.endpos L_POS
	vectoradd reg.npcmove.endpos $relpos($vec(0,game.monster.angles.yaw,0),$vec(-16,0,0))
	local reg.npcmove.testonly	1
	npcmove ent_me NPCATK_TARGET
	if ( game.ret.npcmove.dist <= 0 )
	{
		//position failed, go back to where I was, try again next think
		dbg teleport failed AM_CLOSE game.ret.npcmove.dist TELE_POINT
		setorigin ent_me CUR_POS
	}
	else
	{
		//playsound 0 10 SOUND_TELE
		local SPR_POINT TELE_POINT
		if ( !AM_CLOSE ) vectoradd SPR_POINT z 32 //presume teleporting to ground, adjust
		clientevent new all effects/sfx_sprite_in_fancy SPR_POINT c-tele1.spr 25 2.0 (255,255,255) 512 magic/teleport.wav
		clientevent new all effects/sfx_sprite_in_fancy CUR_POS c-tele1.spr 25 2.0 (255,255,255) 512 magic/teleport.wav
		setvard NEXT_TELEPORT game.time
		local L_FREQ_TELEPORT FREQ_TELEPORT
		if ( !AM_CLOSE ) multiply L_FREQ_TELEPORT 0.5 //favors teleporting away
		add NEXT_TELEPORT L_FREQ_TELEPORT

		if !STAY_ON_GROUND

		if ( !AM_CLOSE )
		{
			//we weren't close before, but should be now, set ground mode
			//but premtively set ground mode var to prevent climb down animation
			if ( !GROUND_MODE ) playanim break
			setvard GROUND_MODE 1
			callevent ground_mode
		}
		else
		{
			//otherwise, visa versa
			if ( GROUND_MODE ) playanim break
			setvard GROUND_MODE 0
			callevent ceiling_mode
		}		
	}
}

The teleportation system works by "fake moving" the spider from the destination location for a frame - if it was off the map, the fake move would fail, and the spider would go back and begin waiting for another teleport check in the same frame. Should thus be fairly reliable about not winding up off the map, even if it winds up targeting a no-clip enemy, such as the Greater Affliction Staff ghost. But yeah, sometimes lag does make target-release on death not work right, and I could see where the spider could end up back at spawn, or elsewhere on the surface, following some player who died.

Not sure how to go about making it more reliable. A range limit might help - though, if used near a spawn, it wouldn't. Also a bit worrisome as the general teleport hunter flag and companion/battle ally catch-up routines work in much the same way.

For now, I'll move the check_teleport routine to npc_targetsighted instead of npcatk_hunt, to make sure the spider at least has eyes on the target before it makes a teleport check.
 
Top