Thanatos Warper Script

ThyroDree

New member
Messages
556
Points
0
Location
Philippines
Github
bosxkate23
Emulator
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

 
Found this script in rathena, it a bit similar.

Code:
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;
}
 
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!

 
Can you try below script? :P

Code:
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
 
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, 

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

 
Back
Top