Jump to content
  • 0
ThyroDree

Thanatos Warper Script

Question

Hello! Anyone can share thanatos warper script? Not the ordinary warper that warps you to thana_boss

This NPC will announce if thanatos can be summoned, by talking to the npc you will be warped to thana_boss map

But only 1 player or 1 party can enter inside the thana_boss.  If party.. (Only party leader can talk because the NPC will check if you have all the fragments to summon the thanatos before you enter, same goes to solo player or non party)

Who ever click first to talk to the npc will be warped. (then NPC Hides), others will be cancelled.

 

--- If players successfully killed thanatos.

the NPC will announce that the player successfully killed thanatos and will be warped out in 3 minutes

then NPC will trigger 1 hr countdown to re-open again.

 

--- If player/s inside the map died

the NPC will kick the players to map and kill the thanatos without the drop.

and announce that the player didnt manage to kill thanatos

then NPC will trigger 1 hr countdown to re-open again.

 

Example:

Thanatos can be re-summon after 1 hr, then if 50mins past. The npc will announce Thanatos Summon will open in 10mins. So players will standby beside the npc to get till npc opens to summon thanatos.

 

Just to remove the time holding when summoning thanatos. Also to make anyone can kill thanatos

Share this post


Link to post
Share on other sites

5 answers to this question

Recommended Posts

  • 0

Found this script in rathena, it a bit similar.

prontera,117,165,5 script thanatos 757,{
 
mes "Summon Thanatos ?";
mes " ";
mes "You need:";
for ( .@i = 0; .@i < .required_item_size; .@i++ ) {
mes " > "+getitemname( .required_item[.@i] );
if ( !countitem( .required_item[.@i] ) )
.@fail++;
}
if ( select( "Take it","Cancel" ) == 1 ) {
if ( getmapusers( .map$ ) ) {
mes "Someone already inside it.";
}
else if ( !.@fail ) {
for ( .@i = 0; .@i < .required_item_size; .@i++ )
delitem .required_item[.@i],1;
warp .map$,0,0;
killmonsterall .map$;
}
else {
mes "You didnt meet the requirement.";
}
}
close;
 
OnInit:
.map$ = "thana_boss";
setarray .required_item,
7436,
7437,
7438,
7439;
.required_item_size = getarraysize( .required_item );
 
getmapxy( .@npc_map$,.@npc_x,.@npc_y,1 );
setmapflagnosave( .map$,.@npc_map$,.@npc_x,.@npc_y );
end;
OnClock0000:
OnClock0300:
OnClock0600:
announce "Thanatos NPC has spawn",bc_all,0xFFFF00;
 
    disablenpc strnpcinfo(0);
    end;
}

 

Share this post


Link to post
Share on other sites
  • 0

Anyone i know this is too much script, may I just know how can I connect when the Thanatos Dies and Thatnatos Fragment availability to the script so the npc will announce? Thank you!

Share this post


Link to post
Share on other sites
  • 0

Can you try below script? :P

prontera,150,150,0	script	Thanatos Summoner#22	4W_SAILOR,{
	mes .npc$;

	.@party_id = getcharid(1);
	
	.@i	= strnpcinfo(2);
	
	if (getd(".qwerty" + .@i)) {
		mes "Someone is talking to me!";
		emotion 23;
		close;
	}
	
	setd(".qwerty" + .@i, 1);
	
	if (.@party_id && getpartyleader(.@party_id, 2) != getcharid(0)) {
		mes "Only the party leader can talk to me";
	} else {
		mes "Hi " + strcharinfo(0) + ", What can i do for you?";
		next;
		if (select("I want to summon Thanatos:Cancel") == 1 ) {
			mes .npc$;
			mes "You need the following items to summon thanatos";
			.@a = 0;
			while (.@a < .size) {
				mes "> " + .fragments[.@a+1] + "x " + getitemname(.fragments[.@a]);
				.@a += 2;
			}
			next;
			if (select("Yes, I have those items and I'm ready to fight:I will think twice") == 1) {
				.@a = 0;
				while (.@a < .size) {
					if (countitem(.fragments[.@a]) < .fragments[.@a+1]) {
						mes .npc$;
						mes "You lack " + getitemname(.fragments[.@a]);
						setd(".qwerty" + .@i, 0);
						close;
					}
					.@a += 2;
				}
				.@a = 0;
				while (.@a < .size) {
					delitem .fragments[.@a], .fragments[.@a+1];
					.@a += 2;
				}
				if (getcharid(1)) {
					announce "Party " + getpartyname(.@party_id) + " has initiated Thanatos Summoner", 0;
					warpparty "thana_boss", 113, 165, .@party_id, true;
				} else {
					announce strcharinfo(0) + " has initiated Thanatos Summoner", 0;
					warp "thana_boss", 113, 165;
				}
				monster "thana_boss", 0, 0, "--ja--", 1708, 1, strnpcinfo(3) + "::OnKill";
				hideonnpc strnpcinfo(3);
			}
		}
	}
	
	setd(".qwerty" + .@i, 0);
	close;

	// 50 minutes mark
	On50MinMark:
		announce "Thanatos Summoner will open in 10 minutes", 0;
		addtimer 300000, strnpcinfo(3) + "::On55MinMark";
		end;
	// 55 minutes mark
	On55MinMark:
		announce "Thanatos Summoner will open in 5 minutes", 0;
		addtimer 240000, strnpcinfo(3) + "::On59MinMark";
		end;
	// 59 minutes mark
	On59MinMark:
		announce "Thanatos Summoner will open in 1 minute", 0;
		addtimer 60000, strnpcinfo(3) + "::OnEnable";
		end;
	// 60 minutes mark
	OnEnable:
		announce "Thanatos Summoner is open", 0;
		hideoffnpc strnpcinfo(3);
		end;
		
	OnKill:
		.@party_id = getcharid(1);
		if (!.@party_id) {
			announce strcharinfo(0) + " successfully killed Thanatos", 0;
			sleep2 .warp_interval * 60 * 1000;
			warp "prontera", 150, 150;
		} else {
			announce strcharinfo(0) + " of party " + getpartyname(.@party_id) + " successfully killed Thanatos", 0;
			sleep2 .warp_interval * 60 * 1000;
			warpparty "prontera", 150, 150, .@party_id, true;
		}
		announce "Thanatos summoner will open again after " + .npc_interval + " minutes", 0;
		addtimer .npc_interval * 60 * 1000, strnpcinfo(3) + "::On50MinMark";
		end;
		
	OnPCDieEvent:
		if (strcharinfo(3) == "thana_boss")
			warp "SavePoint", 0, 0;
		if (!getmapusers("thana_boss")) {
			announce "No one manage to kill Thanatos. Thanatos summoner will open again after " + .npc_interval + " minutes", 0;
			killmonsterall "thana_boss";
			addtimer .npc_interval * 60 * 1000, strnpcinfo(3) + "::On50MinMark";
		}
		end;
	
	OnInit:
		.npc$ = "[" + strnpcinfo(1) + "]";
		setarray .fragments[0], 1000, 2, 1001, 4; // <item_id>, <amount>
		.size = getarraysize(.fragments);
		.npc_interval = 50; // 50 minutes
		.warp_interval = 3; // 3 minutes
		announce "Thanatos Summoner is open", 0;
		end;
		
}

thana_boss	mapflag	nowarp
thana_boss	mapflag	noreturn
thana_boss	mapflag	nowarpto

 

Share this post


Link to post
Share on other sites
  • 0
On 4/12/2020 at 1:19 AM, Patskie said:

Can you try below script? :P

prontera,150,150,0 script Thanatos Summoner#22 4W_SAILOR,{ mes .npc$; .@party_id = getcharid(1); .@i = strnpcinfo(2); if (getd(".qwerty" + .@i)) { mes "Someone is talking to me!"; emotion 23; close; } setd(".qwerty" + .@i, 1); if (.@party_id && getpartyleader(.@party_id, 2) != getcharid(0)) { mes "Only the party leader can talk to me"; } else { mes "Hi " + strcharinfo(0) + ", What can i do for you?"; next; if (select("I want to summon Thanatos:Cancel") == 1 ) { mes .npc$; mes "You need the following items to summon thanatos"; .@a = 0; while (.@a < .size) { mes "> " + .fragments[.@a+1] + "x " + getitemname(.fragments[.@a]); .@a += 2; } next; if (select("Yes, I have those items and I'm ready to fight:I will think twice") == 1) { .@a = 0; while (.@a < .size) { if (countitem(.fragments[.@a]) < .fragments[.@a+1]) { mes .npc$; mes "You lack " + getitemname(.fragments[.@a]); setd(".qwerty" + .@i, 0); close; } .@a += 2; } .@a = 0; while (.@a < .size) { delitem .fragments[.@a], .fragments[.@a+1]; .@a += 2; } if (getcharid(1)) { announce "Party " + getpartyname(.@party_id) + " has initiated Thanatos Summoner", 0; warpparty "thana_boss", 113, 165, .@party_id, true; } else { announce strcharinfo(0) + " has initiated Thanatos Summoner", 0; warp "thana_boss", 113, 165; } monster "thana_boss", 0, 0, "--ja--", 1708, 1, strnpcinfo(3) + "::OnKill"; hideonnpc strnpcinfo(3); } } } setd(".qwerty" + .@i, 0); close; // 50 minutes mark On50MinMark: announce "Thanatos Summoner will open in 10 minutes", 0; addtimer 300000, strnpcinfo(3) + "::On55MinMark"; end; // 55 minutes mark On55MinMark: announce "Thanatos Summoner will open in 5 minutes", 0; addtimer 240000, strnpcinfo(3) + "::On59MinMark"; end; // 59 minutes mark On59MinMark: announce "Thanatos Summoner will open in 1 minute", 0; addtimer 60000, strnpcinfo(3) + "::OnEnable"; end; // 60 minutes mark OnEnable: announce "Thanatos Summoner is open", 0; hideoffnpc strnpcinfo(3); end; OnKill: .@party_id = getcharid(1); if (!.@party_id) { announce strcharinfo(0) + " successfully killed Thanatos", 0; sleep2 .warp_interval * 60 * 1000; warp "prontera", 150, 150; } else { announce strcharinfo(0) + " of party " + getpartyname(.@party_id) + " successfully killed Thanatos", 0; sleep2 .warp_interval * 60 * 1000; warpparty "prontera", 150, 150, .@party_id, true; } announce "Thanatos summoner will open again after " + .npc_interval + " minutes", 0; addtimer .npc_interval * 60 * 1000, strnpcinfo(3) + "::On50MinMark"; end; OnPCDieEvent: if (strcharinfo(3) == "thana_boss") warp "SavePoint", 0, 0; if (!getmapusers("thana_boss")) { announce "No one manage to kill Thanatos. Thanatos summoner will open again after " + .npc_interval + " minutes", 0; killmonsterall "thana_boss"; addtimer .npc_interval * 60 * 1000, strnpcinfo(3) + "::On50MinMark"; } end; OnInit: .npc$ = "[" + strnpcinfo(1) + "]"; setarray .fragments[0], 1000, 2, 1001, 4; // <item_id>, <amount> .size = getarraysize(.fragments); .npc_interval = 50; // 50 minutes .warp_interval = 3; // 3 minutes announce "Thanatos Summoner is open", 0; end; } thana_boss mapflag nowarp thana_boss mapflag noreturn thana_boss mapflag nowarpto


prontera,150,150,0	script	Thanatos Summoner#22	4W_SAILOR,{
	mes .npc$;

	.@party_id = getcharid(1);
	
	.@i	= strnpcinfo(2);
	
	if (getd(".qwerty" + .@i)) {
		mes "Someone is talking to me!";
		emotion 23;
		close;
	}
	
	setd(".qwerty" + .@i, 1);
	
	if (.@party_id && getpartyleader(.@party_id, 2) != getcharid(0)) {
		mes "Only the party leader can talk to me";
	} else {
		mes "Hi " + strcharinfo(0) + ", What can i do for you?";
		next;
		if (select("I want to summon Thanatos:Cancel") == 1 ) {
			mes .npc$;
			mes "You need the following items to summon thanatos";
			.@a = 0;
			while (.@a < .size) {
				mes "> " + .fragments[.@a+1] + "x " + getitemname(.fragments[.@a]);
				.@a += 2;
			}
			next;
			if (select("Yes, I have those items and I'm ready to fight:I will think twice") == 1) {
				.@a = 0;
				while (.@a < .size) {
					if (countitem(.fragments[.@a]) < .fragments[.@a+1]) {
						mes .npc$;
						mes "You lack " + getitemname(.fragments[.@a]);
						setd(".qwerty" + .@i, 0);
						close;
					}
					.@a += 2;
				}
				.@a = 0;
				while (.@a < .size) {
					delitem .fragments[.@a], .fragments[.@a+1];
					.@a += 2;
				}
				if (getcharid(1)) {
					announce "Party " + getpartyname(.@party_id) + " has initiated Thanatos Summoner", 0;
					warpparty "thana_boss", 113, 165, .@party_id, true;
				} else {
					announce strcharinfo(0) + " has initiated Thanatos Summoner", 0;
					warp "thana_boss", 113, 165;
				}
				monster "thana_boss", 0, 0, "--ja--", 1708, 1, strnpcinfo(3) + "::OnKill";
				hideonnpc strnpcinfo(3);
			}
		}
	}
	
	setd(".qwerty" + .@i, 0);
	close;

	// 50 minutes mark
	On50MinMark:
		announce "Thanatos Summoner will open in 10 minutes", 0;
		addtimer 300000, strnpcinfo(3) + "::On55MinMark";
		end;
	// 55 minutes mark
	On55MinMark:
		announce "Thanatos Summoner will open in 5 minutes", 0;
		addtimer 240000, strnpcinfo(3) + "::On59MinMark";
		end;
	// 59 minutes mark
	On59MinMark:
		announce "Thanatos Summoner will open in 1 minute", 0;
		addtimer 60000, strnpcinfo(3) + "::OnEnable";
		end;
	// 60 minutes mark
	OnEnable:
		announce "Thanatos Summoner is open", 0;
		hideoffnpc strnpcinfo(3);
		end;
		
	OnKill:
		.@party_id = getcharid(1);
		if (!.@party_id) {
			announce strcharinfo(0) + " successfully killed Thanatos", 0;
			sleep2 .warp_interval * 60 * 1000;
			warp "prontera", 150, 150;
		} else {
			announce strcharinfo(0) + " of party " + getpartyname(.@party_id) + " successfully killed Thanatos", 0;
			sleep2 .warp_interval * 60 * 1000;
			warpparty "prontera", 150, 150, .@party_id, true;
		}
		announce "Thanatos summoner will open again after " + .npc_interval + " minutes", 0;
		addtimer .npc_interval * 60 * 1000, strnpcinfo(3) + "::On50MinMark";
		end;
		
	OnPCDieEvent:
		if (strcharinfo(3) == "thana_boss")
			warp "SavePoint", 0, 0;
		if (!getmapusers("thana_boss")) {
			announce "No one manage to kill Thanatos. Thanatos summoner will open again after " + .npc_interval + " minutes", 0;
			killmonsterall "thana_boss";
			addtimer .npc_interval * 60 * 1000, strnpcinfo(3) + "::On50MinMark";
		}
		end;
	
	OnInit:
		.npc$ = "[" + strnpcinfo(1) + "]";
		setarray .fragments[0], 1000, 2, 1001, 4; // <item_id>, <amount>
		.size = getarraysize(.fragments);
		.npc_interval = 50; // 50 minutes
		.warp_interval = 3; // 3 minutes
		announce "Thanatos Summoner is open", 0;
		end;
		
}

thana_boss	mapflag	nowarp
thana_boss	mapflag	noreturn
thana_boss	mapflag	nowarpto

 

Hi, do I need to disable the official summon quest script before using this script? I think using this with official thanatos quest is not connected, 

Share this post


Link to post
Share on other sites
  • 0

I just based the script on your request. So I assume that you have disabled the official thanatos quest?

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.