Jump to content
  • 0

Script crashes mapserver.


Erebos

Question


  • Group:  Members
  • Topic Count:  26
  • Topics Per Day:  0.01
  • Content Count:  65
  • Reputation:   4
  • Joined:  10/25/18
  • Last Seen:  

In this Temple of Demon God script when i'm going to start the instance it crashes the map-server, no information in the console, just a "Server received crash signal! attempting to save all online characters".

 

//===== Alayne Scripts =======================================
//= Temple of Demon God Instance
//===== By: ================================================== 
//= Alayne
//===== Current Version: ===================================== 
//= 1.0
//===== Compatible With: ===================================== 
//= rAthena SVN
//= hercules SVN
//===== Description: ========================================= 
//= The official instance Temple of Demon God transcription
//===== Todo Remaining: ======================================
//
//===== Additional Comments: =================================
//
//
//============================================================

moro_vol,108,88,5	script	Commander Hiva Agip::alatdgcha	4_M_REDSWORD,{
	set .@npcname$, "[Commander Hiva Agip]";
	cutin "ep13_captin_edq", 2;
	mes .@npcname$;
	if(checkquest(.questId) == -1)
	{
		mes "Hey! You! Come here.";
		mes "I need you help.";
		mes "Morocc is regaining his power! We absolutely need to defy him, and defeat him before he raised again.";
		mes "But I'm affraid we're not strong enough to fight him...";
		mes "Can you help us?";
		if(select("Yes","No") == 1)
		{
			next;
			mes .@npcname$;
			mes "Good! I'm couting on you!";
			mes "I'll pray for your victory!";
			setquest .questId;
		}
	}
	else if(checkquest(.questId, HUNTING) < 2)
	{
		//uncomplete quest
		mes "You didn't fullfill the quest yet, do you?";
	}
	else if(checkquest(.questId, HUNTING) == 2)
	{
		//complete quest
		mes "*Whistle* Good work!";
		mes "How's the Temple of Demon God? Still the same?";
		getitem 22537,1;
		//getitem reward
		completequest .questId;
		erasequest .questId;
	}
	else
	{
		mes "Now that we've taken care of the main body, we can take things slow.";
		mes "Why don't you go rest for now? Leave the rest to us.";
	}
	cutin "", 255;
	close;
	
OnInit:
	set .questId, 7593;
	end;
}	


moro_vol,110,90,3	script	Abidal::alatdga	4_M_KNIGHT_GOLD,{
	set .@npcname$, "[Abidal]";
	mes .@npcname$;
	if(checkquest(.questId) == -1)
	{
		mes "Hey! I've heard the Commander gave you a quest.";
		mes "I have also something to ask you.";
		mes "Two monsters protect Morocc. Brinaranea and Muspelskoll.";
		mes "If you defeat them, it'll weakened this Demon...";
		mes "Can you handle that?";
		if(select("Yes","No") == 1)
		{
			next;
			mes .@npcname$;
			mes "Good! I'm couting on you!";
			mes "I'll pray for your victory!";
			setquest .questId;
		}
	}
	else if(checkquest(.questId, HUNTING) < 2)
	{
		//uncomplete quest
		mes "You didn't fullfill the quest yet, do you?";
	}
	else if(checkquest(.questId, HUNTING) == 2)
	{
		//complete quest"
		mes "You did it! I knew you would!";
		mes "Congratulations!";
		mes "But I'm affraid this is not over yet.";
		mes "I have this nagging sense of misgiving.";
		mes "I'm sorry. Maybe I'm thinking irrationally.";
		next;
		mes .@npcname$;
		mes "Take this as a reward, and a thanks from me.";
		//getitem 
		completequest .questId;
		erasequest .questId;
	}
	else
	{
		mes "Take some rest now.";
	}
	close;
	
OnInit:
	set .questId, 7594;
	end;
}	

moro_cav,43,73,3	script	Yggdrasil Lookalike::alatdgyl	HIDDEN_NPC,{
OnStart:
	set .@party_id, getcharid(1);
	set .@tdg_leader, ( getcharid(0) == getpartyleader(.@party_id,2) );

	set .@has_instance, TDG_INSTANCE_ID > 0;
	
	set .@instance_delay, ( instance_delay_templedg - gettimetick(2) );

	set .@npcname$, "[Yggdrasil Lookalike]";
	mes .@npcname$;
	mes "You touched the tree and felt a strange flow of mana.";
	mes "Perhaps the flow of mana will guide to the depth of the temple.";
	if( ep14_3_morse == 0 )
		next;
	if( .@instance_delay > 0 )
	{
		mes "You have to wait : ^FF0000"+.@instance_delay+" Seconds.^000000";
		close;
	}
	
	switch( select( 
		(( .@party_id && .@tdg_leader && !.@has_instance )?"Create " + .instance_name$:""),
		(( .@party_id && .@has_instance )?"Enter " + .instance_name$:""),
		(( .@party_id && .@tdg_leader && .@has_instance )?"Destroy " + .instance_name$:""),
	"Nevermind."
		)){
	case 1:
		getpartymember .@party_id,2;
		if( .min_party_member >= 1 ){
			set .@origin, getcharid(3);
			set .@gettimetick, gettimetick(2);
			for( set .@i, 0; .@i < $@partymembercount; set .@i, .@i+1 )
				if( attachrid( $@partymemberaid[.@i] ) ){
					set .@member_count, .@member_count + 1;
					if( BaseLevel < .base_level[0] || BaseLevel > .base_level[1] ) set .@fail, .@fail|1;
					if( Zeny < .instance_zeny ) set .@fail, .@fail|2;
					if( instance_delay_templedg > .@gettimetick ) set .@fail, .@fail|4;
					if( .@fail ){
						set .@name$, strcharinfo(0);
						break;
					}
				}
			attachrid( .@origin );
		}
		
		//clean any previously remaining instance
		if(TDG_INSTANCE_ID > 0)
		{			
			getpartymember getcharid(1),2;
			for( set .@i, 0; .@i < $@partymembercount; set .@i, .@i+1 )
				if( attachrid( $@partymemberaid[.@i] ) && TDG_INSTANCE_ID > 0){
					set TDG_INSTANCE_ID, -1;
				}
			instance_destroy instance_id();
		}
		
		if( .@name$ != "" && .@fail ){
			mes "^FF0000[ Failed ]^000000";
			mes "^0055FF"+.@name$+"^000000, You cannot join right now.";
			mes " ";
			mes "^FF0000[ Reason: ]^000000";
			if( .@fail & 1 ) mes "^777777You must be Level: "+.base_level[0]+" - "+.base_level[1]+"^000000";
			if( .@fail & 2 ) mes "^777777You need "+ .instance_zeny +" Zeny^000000";
			if( .@fail & 4 ) mes "^777777You still have cooldown.^000000";
			break;
		}
		
		getpartymember getcharid(1),0;
		if (instance_check_party(.@party_id, .min_party_member, .base_level[0], .base_level[1]) == 0) {
			mes "^0055FF[ "+.instance_name$+" ]^000000";
			mes "Make or join a party with at least "+.min_party_member+" member and try again, with level between " +.base_level[0] + " and " + .base_level[1] + ".";
		}
		else{
			set .@instance, instance_create( .instance_name$ );
			if( .@instance < 0 ) {
				npctalk .instance_name$ + " reservation failed.";
				mes "^0000FF"+ .instance_name$ +" ^000000 - Reservation Failed!";
				close;
			}
			mes "^0055FF[ "+.instance_name$+" ]^000000";
			mes "^0000FF"+.instance_name$+" ^000000 - Reserved";
			set .@gettimetick, gettimetick(2);
			getpartymember .@party_id,2;
			for( set .@i, 0; .@i < $@partymembercount; set .@i, .@i+1 )
				if( attachrid( $@partymemberaid[.@i] ) )
					set TDG_INSTANCE_ID, .@instance;
			attachrid( .@origin );
			npctalk .instance_name$ + " has been generated for Party - " + getpartyname( .@party_id );
			
			//disable unused npcs for now
			disablenpc instance_npcname( "tdgWarp#1", instance_id() );
			disablenpc instance_npcname( "tdgWarp#2", instance_id() );
			disablenpc instance_npcname( "tdgWarp#3", instance_id() );
			disablenpc instance_npcname( "tdgWarp#4", instance_id() );
			disablenpc instance_npcname( "tdgWarp#5", instance_id() );
 		}
	case 2:
		if( TDG_INSTANCE_ID <= 0 ){
			mes .instance_name$ + " doesn't exist for Party - "+getpartyname( .@party_id );
		}
		else{
			getmapxy(.@map$, .@x, .@y, UNITTYPE_PC);
			//save .@map$, .@x, .@y;
			set instance_delay_templedg, ( .@gettimetick + ( .instance_delay ));
			switch(instance_enter(.instance_name$)) {
				default:
					mes "An unknown error has occurred.";
					close;
				case 2:
					mes "The memorial dungeon " + .instance_name$ + " does not exist.";
					mes "The party leader did not generate the dungeon yet.";
					close;
				case 1:
					mes "You can enter the dungeon after making the party.";
					close;
				case 0:
					mapannounce .@map$, strcharinfo(0)+" from party, " +getpartyname( .@party_id )+", tdg entering the dungeon, "+.instance_name$+".",bc_map,"0x00ff99",FW_NORMAL,12;
					close;
			}
		}
		break;
	case 3:
		mes .instance_name$ + " Destroyed.";
		getpartymember getcharid(1),2;
		for( set .@i, 0; .@i < $@partymembercount; set .@i, .@i+1 )
			if( attachrid( $@partymemberaid[.@i] ) && TDG_INSTANCE_ID > 0){
				set TDG_INSTANCE_ID, -1;
			}
		instance_destroy instance_id();
		break;
	default: 
		break;
}
close;

OnPCLoginEvent:
OnPCLogoutEvent:
	set TDG_INSTANCE_ID, -1;
	end;

OnInit:
	setarray .base_level[0],145, 175;
	setarray .map$[0],"1@eom";
	set .map_size, getarraysize( .map$ );
	set .min_party_member, 1;
	set .instance_delay, 7200;
	set $tdg_timer_delay, 3600; //1 hour to clean the instance
	set .instance_name$, "Temple of Demon God";
	end;
}


1@eom,101,107,4	script	temple_demon_god	HIDDEN_WARP_NPC,2,2,{
function summon_normal;
function summon_guardian;
end;

OnInstanceInit:
	set .@map$, strnpcinfo(4);
	
	set 'instance_tdg_level, 0;
	set .max_tdg_level, 6;
	
	set .moroccId, -1;
	
	instance_announce instance_id(), "[Temple of Demon God] Eliminate the Demon God's Apostles, Ahat and Shnaim.",bc_map,0x00ff99;
	sleep 1500;
	instance_announce instance_id(), "[Temple of Demon God] Then collect their Souls. Those are the key to open the Temple.",bc_map,0x00ff99;

	set 'ahatSoul, 6713;
	set 'shnaimSoul, 6714;
	set 'tdgMercenaryOn, 0;
	set .@npc_name$, instance_npcname( strnpcinfo(0), instance_id() );
	summon_normal( .@map$,.@npc_name$, 1 );
	
	set .timerCount, 0;
	initnpctimer;
	end;

function	summon_normal	{
	set .@map$, getarg(0);
	set .@npcname$, getarg(1);
	set .@increaseFloor, getarg(2);
	
	if(.@increaseFloor == 1)
	{
		'instance_tdg_level++;
	}
	
	switch( 'instance_tdg_level ){
		case 1:
			//ahat and shnaim
			setarray .@monster,3041,3039,3040;
			setarray .@amount,1,1,1;
			setarray .@coordinate,89,13,111,49;
			setarray .@label$, "OnAhatDied","OnShnaimDied",0;
			break;
		case 2:
			//dolomedes
			setarray .@monster,3088;
			setarray .@amount,5;
			setarray .@coordinate,54,97,33,138;
			break;
		case 3:
			//kasa
			setarray .@monster,3089;
			setarray .@amount,5;
			setarray .@coordinate,153,91,173,140;
			break;
		case 4:
			//two satan morocc
			setarray .@monster,3098,3099;
			setarray .@amount,1,1;
			setarray .@coordinate,90,208,116,176;
			break;
		case 6:
			//random pop salamander or dolomedes
			if(rand(0,1) == 1)
			{
				setarray .@monster,3088;
			}
			else
			{
				setarray .@monster,3090;
			}
			setarray .@amount,5;
			setarray .@coordinate,90,208,116,176;
			break;
	}
	set .@monster_size, getarraysize( .@monster );
	for( set .@i, 0; .@i < .@monster_size; set .@i,.@i+1 ){
		set .@target_amount, ( .@amount[.@i] );
		set .@size, 0;
		if(getarraysize(.@label$) == 0)
		{
			set .@clabel$, .@npcname$ + "::OnNormalDied";
		}
		else
		{
			set .@clabel$, .@npcname$ + "::" + .@label$[.@i];
		}	
		areamonster .@map$,.@coordinate[0],.@coordinate[1],.@coordinate[2],.@coordinate[3],"--ja--",.@monster[.@i],.@target_amount,.@clabel$,.@size;
	}
	return;
}

function	summon_guardian	{
	set .@map$, getarg(0);
	set .@label$, getarg(1);
			
	switch( 'instance_tdg_level ){
		case 2:
			//brynarea
			setarray .@monster,3091;
			setarray .@coordinate,54,97,33,138;
			break;
		case 3:
			//muspelskoll
			setarray .@monster,3092;
			setarray .@coordinate,153,91,173,140;
			break;
		case 4:
			//morocc boy
			setarray .@monster,3096;
			setarray .@coordinate,90,208,116,176;
			break;
		case 5:
			//morocc boy, 20% left
			setarray .@monster,3096;
			setarray .@coordinate,90,208,116,176;
			break;
		case 6:
			//morocc adult
			setarray .@monster,3097;
			setarray .@coordinate,90,208,116,176;
			break;
		default: 
			mapannounce .@map$,"[ Temple of Demon God ] : Cleared!! Congratulation!!",bc_map,0x00FF99;
			return;
	}
	set .@monster_size, getarraysize( .@monster );
	for( set .@i, 0; .@i < .@monster_size; set .@i,.@i+1 ){
		set .@target_amount, 1;
		set .@size, 0;
		if('instance_tdg_level == 4)
		{
			//RATHENA
			areamonster(.@map$,.@coordinate[0],.@coordinate[1],.@coordinate[2],.@coordinate[3],"--ja--",.@monster[.@i],.@target_amount,.@label$,.@size);
			set .moroccId, $@mobid[0];
			//HERCULES
			//set .moroccId, areamonster(.@map$,.@coordinate[0],.@coordinate[1],.@coordinate[2],.@coordinate[3],"--ja--",.@monster[.@i],.@target_amount,.@label$,.@size);
		}
		else if('instance_tdg_level == 5)
		{
			//RATHENA
			areamonster(.@map$,.@coordinate[0],.@coordinate[1],.@coordinate[2],.@coordinate[3],"--ja--",.@monster[.@i],.@target_amount,.@label$,.@size);
			set .moroccId, $@mobid[0];
			getunitdata(.moroccId, .@moroccData);
			setunitdata .moroccId, 2, .@moroccData[UMOB_MAXHP] * 20 / 100;
			//HERCULES
			//set .moroccId, areamonster(.@map$,.@coordinate[0],.@coordinate[1],.@coordinate[2],.@coordinate[3],"--ja--",.@monster[.@i],.@target_amount,.@label$,.@size);
			//set .@mhp, getunitdata($moroccId, UDT_MAXHP);
			//setunitdata $moroccId, UDT_HP, .@mhp * 20 / 100;
		}
		else
		{
			areamonster(.@map$,.@coordinate[0],.@coordinate[1],.@coordinate[2],.@coordinate[3],"--ja--",.@monster[.@i],.@target_amount,.@label$,.@size);
		}
	}
	return;
}

OnAhatDied:
	//get item
	getitem 'ahatSoul, 1;
	set .@map$, strnpcinfo(4);
	set .@npc_name$, instance_npcname( strnpcinfo(0), instance_id() );
	set .@mob_dead_num, mobcount(.@map$,.@npc_name$+"::OnShnaimDied" );
	if(.@mob_dead_num == 0)
	{
		instance_announce instance_id(), "[Temple of Demon God] Activate the Soul Globe to open the Temple.",bc_map,0x00ff99;
		enablenpc instance_npcname( "alatdgor", instance_id() );
	}
	end;

OnShnaimDied:
	//get item
	getitem 'shnaimSoul, 1;
	set .@map$, strnpcinfo(4);
	set .@npc_name$, instance_npcname( strnpcinfo(0), instance_id() );
	set .@mob_dead_num, mobcount(.@map$,.@npc_name$+"::OnAhatDied" );
	if(.@mob_dead_num == 0)
	{
		instance_announce instance_id(), "[Temple of Demon God] Activate the Soul Globe to open the Temple.",bc_map,0x00ff99;
		enablenpc instance_npcname( "alatdgor", instance_id() );
	}
	end;

OnNormalDied:
	set .@map$, strnpcinfo(4);
	set .@npc_name$, instance_npcname( strnpcinfo(0), instance_id() );
	set .@mob_dead_num, mobcount(.@map$,.@npc_name$+"::OnNormalDied" );
	if( .@mob_dead_num == 0 && .@mob_dead_num2 == 0 ){
		if('instance_tdg_level == 4)
		{
			'instance_tdg_level++;
			//summon morocc boy again
			summon_guardian( .@map$,.@npc_name$+"::OnGuardianDied" );
		}	
	}
	end;
	
OnGuardianDied:
	set .@map$, strnpcinfo(4);
	set .@npc_name$, instance_npcname( strnpcinfo(0), instance_id() );
	set .@mob_dead_num, mobcount(.@map$,.@npc_name$+"::OnGuardianDied" );
	set .@party_id, getcharid(1);
	
	if( !.@mob_dead_num ){
	
		if('instance_tdg_level == 2)
		{
			killmonster strnpcinfo(4), "All";
			//nydhogg pop
			enablenpc instance_npcname( "alatdgny2", instance_id() );
			donpcevent instance_npcname( "alatdgny2", instance_id() ) + "::OnDialog2";
		}
		else if('instance_tdg_level == 3)
		{
			killmonster strnpcinfo(4), "All";
			//nydhogg pop
			enablenpc instance_npcname( "alatdgny3", instance_id() );	
			donpcevent instance_npcname( "alatdgny3", instance_id() ) + "::OnDialog3";	
		}
		else if('instance_tdg_level == 5)
		{
			'instance_tdg_level++;
			//morocc boy death
			instance_announce instance_id(), "[Morocc] This is getting more interesting, humans!",bc_map,0xFF0000;
			sleep 1500;
			instance_announce instance_id(), "[Morocc] You don't think this is already over, do you?!",bc_map,0xFF0000;
			sleep 1500;
			set .randomPop, 1;
			summon_guardian( .@map$, .@npc_name$ + "::OnGuardianDied" );
		}
		else if ('instance_tdg_level == .max_tdg_level)
		{			
			killmonster strnpcinfo(4), "All";
			stopnpctimer;
			instance_announce instance_id(), "Do...Don't think...It's over...You! You're allready...Dead!!",bc_map,0xFF0000;
			sleep 1500;
			
			//enable portal
			enablenpc instance_npcname( "alatdgny4", instance_id() );
			
			end;
		}
	}
	end;
	
OnTimer10000:
	//each 10s, increase timer
	set .timerCount, .timerCount + 10;
	if(.timerCount == $tdg_timer_delay)
	{
		instance_announce instance_id(), "[ Temple of Demon God ] The Dimension collapse! I have to get you out of there!", bc_map, 0xFF0000;
		sleep 5000;
		getpartymember getcharid(1),2;
		for( set .@i, 0; .@i < $@partymembercount; set .@i, .@i+1 )
			if( attachrid( $@partymemberaid[.@i] ) && TDG_INSTANCE_ID > 0){
				set TDG_INSTANCE_ID, -1;
			}
		instance_destroy instance_id();
		stopnpctimer;
	}
	if(.randomPop == 1)
	{
		set .@map$, strnpcinfo(4);
		set .@npc_name$, instance_npcname( strnpcinfo(0), instance_id() );
		set .@mob_dead_num, mobcount(.@map$,.@npc_name$+"::OnNormalDied" );
		if(.@mob_dead_num == 0)
		{
			summon_normal( .@map$,.@npc_name$, 0 );
		}
	}
	if(.checkHP == 1)
	{
		callsub OnCheckMoroccHP;
	}
	setnpctimer 0;
	end;
	
OnCheckMoroccHP:	
	//RATHENA
	getunitdata(.moroccId, .@moroccData);
	if(.@moroccData[UMOB_HP] <= .@moroccData[UMOB_MAXHP] / 2)
	//HERCULES
	//set .@hp, getunitdata($stefanId, UDT_HP);
	//set .@mhp, getunitdata($stefanId, UDT_MAXHP);
	//if(.@hp <= .@mhp / 2)
	{
		set .@map$, strnpcinfo(4);
		set .@npc_name$, strnpcinfo(3);
		killmonster strnpcinfo(4), "All";
		set .checkHP, 0;
		//stop, kill monster and pop 2 morocc
		summon_normal( .@map$, strnpcinfo(3), 0 );
	}	
	return;
	
OnFirstFloorOn:
	set .@map$, strnpcinfo(4);
	set .@npc_name$, instance_npcname( strnpcinfo(0), instance_id() );
	//pop furious incarnation of morroc	
	summon_normal( .@map$, .@npc_name$, 1 );
	end;
	
OnSecondFloorOn:
	set .@map$, strnpcinfo(4);
	set .@npc_name$, instance_npcname( strnpcinfo(0), instance_id() );
	//pop dolomedes
	summon_normal( .@map$, .@npc_name$, 1 );
	//pop brynarea	
	summon_guardian( .@map$, .@npc_name$ + "::OnGuardianDied" );
	enablenpc instance_npcname( "tdgWarp#1", instance_id() );
	end;
	
OnThirdFloorOn:
	set .@map$, strnpcinfo(4);
	set .@npc_name$, instance_npcname( strnpcinfo(0), instance_id() );
	//pop kasa
	summon_normal( .@map$, .@npc_name$, 1 );
	//pop muspelskoll	
	summon_guardian( .@map$, .@npc_name$ + "::OnGuardianDied" );
	enablenpc instance_npcname( "tdgWarp#3", instance_id() );
	end;
	
OnFourthFloorOn:
	set .@map$, strnpcinfo(4);
	set .@npc_name$, instance_npcname( strnpcinfo(0), instance_id() );
	'instance_tdg_level++;
	//pop morocc boy	
	summon_guardian( .@map$, .@npc_name$ + "::OnGuardianDied");
	enablenpc instance_npcname( "tdgWarp#5", instance_id() );
	set .checkHP, 1;
	end;
}

1@eom,101,62,3	script	Temple Entrance::alatdgwe	HIDDEN_WARP_NPC,2,2,{
	end;
	
OnTouch:
	warp strnpcinfo(4), 98, 115;
	end;
	
OnInit:
OnInstanceInit:
	disablenpc strnpcinfo(3);
	end;
}

1@eom,98,56,3	script	Soul Globe::alatdgor	HIDDEN_WARP_NPC,2,2,{
	set .@npcname$, "[Soul Globe]";
	mes .@npcname$;
	mes "Do you wish to insert the Souls?";
	if(select("Yes","No") == 1)
	{
		if(countitem('ahatSoul) > 0)
		{
			delitem 'ahatSoul, 1;
			set .ahat, 1;
		}
		if(countitem('shnaimSoul) > 0)
		{
			delitem 'shnaimSoul, 1;
			set .shnaim, 1;
		}
		if(.ahat == 1 && .shnaim == 1)
		{
			set .warpingOn, 1;
			npctalk "[Soul Globe] The Door is open.";
			instance_announce instance_id(), "[Soul Globe] The Door is open.", bc_map, 0x00FF99;
			//enable warp
			enablenpc instance_npcname( "alatdgwe", instance_id() );
			enablenpc instance_npcname( "alatdge", instance_id() );
			enablenpc instance_npcname( "alatdgmo", instance_id() );
			enablenpc instance_npcname( "alatdglo", instance_id() );
			enablenpc instance_npcname( "alatdgny", instance_id() );
		}
		else
		{
			next;
			mes "[Soul Globe]";
			mes "Insert the Ahat and Shnaim Souls to open the Door.";
		}
	}
	close;
	
OnInstanceInit:
OnInit:
	enablenpc strnpcinfo(3);
	set .ahat, 0;
	set .shnaim, 0;
	end;
}

1@eom,98,115,3	script	entrance::alatdge	HIDDEN_WARP_NPC,2,2,{
	end;
	
OnTouch:
	if('instance_tdg_level == 1)
	{
		sleep 5000;
		donpcevent instance_npcname( "alatdgmo", instance_id() ) + "::OnDialog1_1";
	}
	end;

OnInstanceInit:
OnInit:
	disablenpc strnpcinfo(3);
	end;
}

1@eom,102,124,3	script	Morocc::alatdgmo	4_F_MOCBOY,2,2,{
	end;
	
OnDialog1_1:
	if(.moTalking == 0)
	{
		set .moTalking, 1;
		npctalk "I'll create a new world and become its creator.";
		instance_announce instance_id(), "[Morocc] I'll create a new world and become its creator.",  bc_map, 0xFF0000;
		sleep 1500;
		npctalk "Let me ask you, the first creatures that have stepped in my newborn land.";
		instance_announce instance_id(), "[Morocc] Let me ask you, the first creatures that have stepped in my newborn land.", bc_map, 0xFF0000;
		sleep 1500;
		npctalk "How'd you like to follow me and watch the birth of a new world?";
		instance_announce instance_id(), "[Morocc] How'd you like to follow me and watch the birth of a new world?", bc_map, 0xFF0000;
		sleep 1500;
		donpcevent instance_npcname( "alatdglo", instance_id() ) + "::OnDialog1_2";
	}
	end;
	
OnDialog1_4:
	npctalk "Let me ask you, the first creatures that have stepped in my newborn land.";
	instance_announce instance_id(), "[Morocc] Let me ask you, the first creatures that have stepped in my newborn land.",bc_map, 0xFF0000;
	sleep 1500;
	npctalk "How'd you like to follow me and watch the birth of a new world?";
	instance_announce instance_id(), "[Morocc] How'd you like to follow me and watch the birth of a new world?",bc_map, 0xFF0000;
	sleep 1500;
	donpcevent instance_npcname( "alatdglo", instance_id() ) + "::OnDialog1_5";
	end;

OnInstanceInit:
OnInit:
	disablenpc strnpcinfo(3);
	set .moTalking, 0;
	end;
}

1@eom,95,125,5	script	Loki::alatdglo	4_M_BLACKMAN,2,2,{
	end;
	
OnDialog1_2:
	npctalk "Enough with your nonsense. Just say you like destroying things!";
	instance_announce instance_id(), "[Loki] Enough with your nonsense. Just say you like destroying things!", bc_map, 0x00FF99;
	sleep 1500;
	npctalk "Create a new world and become its creator? If this is the new world you're talking about, then I'm disappointed!";
	instance_announce instance_id(), "[Loki] Create a new world and become its creator? If this is the new world you're talking about, then I'm disappointed!", bc_map, 0x00FF99;
	sleep 1500;
	npctalk "Even if you burn your body, you power is not as potent as that of Ymir of the Genesis!";
	instance_announce instance_id(), "[Loki] Even if you burn your body, you power is not as potent as that of Ymir of the Genesis!",bc_map, 0x00FF99;
	sleep 1500;
	npctalk "Just the fact that you had to steal Yggdrasil shows you lack of creativity!";
	instance_announce instance_id(), "[Loki] Just the fact that you had to steal Yggdrasil shows you lack of creativity!",bc_map, 0x00FF99;
	sleep 1500;
	npctalk "Take a look at yourself. You're delusional if you think that you look like a creator of any kind!";
	instance_announce instance_id(), "[Loki] Take a look at yourself. You're delusional if you think that you look like a creator of any kind!",bc_map, 0x00FF99;
	sleep 1500;
	
	donpcevent instance_npcname( "alatdgny", instance_id() ) + "::OnDialog1_3";
	end;
	
OnDialog1_5:
	disablenpc instance_npcname( "alatdgmo", instance_id() );
	npctalk "Are you running?!";
	instance_announce instance_id(), "[Loki] Are you running?!",bc_map, 0x00FF99;
	
	disablenpc strnpcinfo(3);
	sleep 1500;
	set 'tdgMercenaryOn, 1;
		
	donpcevent instance_npcname( "temple_demon_god", instance_id() ) + "::OnSecondFloorOn";
	end;

OnInstanceInit:
OnInit:
	disablenpc strnpcinfo(3);
	end;
}

1@eom,93,122,5	script	Nydhogg::alatdgny	4_F_NYDHOG,{
	if (getcharid(0) == getpartyleader(getcharid(1),2)) {
		mes "[Nydhogg]";
		mes "Listen carefully.";
		next;
		mes "[Nydhogg]";
		mes "Morocc will soon overpower us all. We need to defeat him before it arrives.";
		next;
		mes "[Nydhogg]";
		mes "We need your powers to defeat him. We're not strong enough to defeat him by our own.";
		next;
		mes "[Nydhogg]";
		mes "I will offer you my strength in exchange for you to help me.";
		close2;
		summon "Nydhogg",3087,99999999;
		disablenpc strnpcinfo(3);
		end;
	}
	mes "[Nydhogg]";
	mes "I'm talking to your leader.";
	close;
	
OnDialog1_3:
	npctalk "I second that. You're unnecessary to this world. You don't belong here!";
	instance_announce instance_id(), "[Nydhogg] I second that. You're unnecessary to this world. You don't belong here!",bc_map, 0x0000FF;
	sleep 1500;
	npctalk "Even Yggdrasil denies your existence!";
	instance_announce instance_id(), "[Nydhogg] Even Yggdrasil denies your existence!",bc_map, 0x0000FF;
	sleep 1500;
	npctalk "As the Guardian of Yggdrasil, I have to erase your existence from this world.";
	instance_announce instance_id(), "[Nydhogg] As the Guardian of Yggdrasil, I have to erase your existence from this world.",bc_map, 0x0000FF;
	sleep 1500;

	donpcevent instance_npcname( "alatdgmo", instance_id() ) + "::OnDialog1_4";
	end;

OnInstanceInit:
OnInit:
	disablenpc strnpcinfo(3);
	set .endTalking, 0;
	end;
}

1@eom,102,124,3	script	Morocc::alatdgmoa	3097,2,2,{
	end;
	
OnTouch:
	if(.moTalking == 0)
	{
		set .moTalking, 1;
		npctalk "You exceeded my expectations.";
		instance_announce instance_id(), "[Morocc] You exceeded my expectations.",bc_map, 0xFF0000;
		sleep 1500;
		npctalk "I'll accept your challenge.";
		instance_announce instance_id(), "[Morocc] I'll accept your challenge.",bc_map, 0xFF0000;
		sleep 1500;
		npctalk "I shall drench the land with your flowing blood, and nourish it with your torn flesh.";
		instance_announce instance_id(), "[Morocc] I shall drench the land with your flowing blood, and nourish it with your torn flesh.",bc_map, 0xFF0000;
		sleep 1500;
		npctalk "I'll show you the true depth of despair.";
		instance_announce instance_id(), "[Morocc] I'll show you the true depth of despair.",bc_map, 0xFF0000;
		sleep 1500;
		disablenpc strnpcinfo(3);
		donpcevent instance_npcname( "temple_demon_god", instance_id() ) + "::OnFourthFloorOn";
	}
	end;

OnInstanceInit:
OnInit:
	disablenpc strnpcinfo(3);
	set .moTalking, 0;
	end;
}

1@eom,61,149,3	script	Nydhogg::alatdgny2	4_F_NYDHOG,{
	set .@npcname$, "[Nydhogg]";
	mes .@npcname$;
	mes "That was a tought battle.";
	mes "This may not be good enough, but I hope it'll help your growth.";
	if(NYDBRYN == 0)
	{
		//getexp 
		next;
		mes "Nydhogg rewarded you with a large amount of EXP for defeating Brinnaranea.";
		set NYDBRYN, 1;
	}
	close;
	
OnDialog2:
	instance_announce instance_id(), "[Nyddhog] Brinnaranea's influence has dissipated, and a new warp gate has appeared.",bc_map, 0x0000FF;
	enablenpc instance_npcname( "tdgWarp#2", instance_id() );
	donpcevent instance_npcname( "temple_demon_god", instance_id() ) + "::OnThirdFloorOn";
	end;
	
OnInstanceInit:
OnInit:
	disablenpc strnpcinfo(3);
	end;
}

1@eom,154,155,3	script	Nydhogg::alatdgny3	4_F_NYDHOG,{
	set .@npcname$, "[Nydhogg]";
	mes .@npcname$;
	mes "Good job again.";
	mes "This may not be good enough, but I hope it'll help your growth.";
	if(NYDMUS == 0)
	{
		//getexp 
		next;
		mes "Nydhogg rewarded you with a large amount of EXP for defeating Muspelskoll.";
		set NYDMUS, 1;
	}
	close;
	
OnDialog3:
	instance_announce instance_id(), "[Nyddhog] Muspelskoll's influence has dissipated, and a new warp gate has appeared.",bc_map, 0x0000FF;
	enablenpc instance_npcname( "tdgWarp#4", instance_id() );
	enablenpc instance_npcname( "alatdgmoa", instance_id() );
	end;
	
OnInstanceInit:
OnInit:
	disablenpc strnpcinfo(3);
	end;
}

1@eom,106,197,3	script	Nydhogg::alatdgny4	4_F_NYDHOG,{
	set .@npcname$, "[Nydhogg]";
	cutin "ep14_nyd01",1;
	mes .@npcname$;
	mes "I don't know what to say...";
	mes "We stopped the God in waiting.";
	mes "We ascomplished our goal.";
	mes "But I'm still unnerved...";
	next;
	mes .@npcname$;
	mes "This world is created in the mind of Morocc.";
	mes "He'll live forever in this garden he couldn't finish.";
	next;
	mes .@npcname$;
	mes "He probably doesn't know his body is destroyed forever.";
	mes "He was far too ambitious, even for him.";
	mes "He wanted to create a new world and become its creator.";
	next;
	mes .@npcname$;
	mes "But he couldn't create anything on his own.";
	mes "He abandonned his demon body, just to become a mere facsimile of an existing god.";
	next;
	mes .@npcname$;
	mes "He look the snape of a man.";
	mes "He wasn't creative enough to reinvent the concept of a God.";
	mes "He was some kind of paradox.";
	next;
	mes .@npcname$;
	mes "Now we need to get out of this trap in time and get back to reality.";
	mes "This world only exists in the Demon's mind, and this day will repeat endlessly.";
	next;
	mes .@npcname$;
	mes "Everyone entering this world will be dragged in this loop.";
	mes "In that sense, he succeeded in making his own world.";
	next;
	mes .@npcname$;
	mes "I've talked to much.";
	mes "The commander must be waiting. Let me validate your feat so you can report to him.";
	mes "You did a great job today.";
	cutin "", 255;
	next;
	getpartymember getcharid(1),2;
	for( set .@i, 0; .@i < $@partymembercount; set .@i, .@i+1 )
		if( attachrid( $@partymemberaid[.@i] ) && TDG_INSTANCE_ID > 0){
			set TDG_INSTANCE_ID, -1;
			getitem 22537,1;
			getitem 6715,1;
			getitem 22567,3;
		}
	instance_destroy instance_id();
	close;

OnInstanceInit:
OnInit:
	disablenpc strnpcinfo(3);
	end;
}

1@eom,91,120	warp	tdgWarp#1	2,2,1@eom,61,88
1@eom,69,149	warp	tdgWarp#2	2,2,1@eom,98, 115
1@eom,105,120	warp	tdgWarp#3	2,2,1@eom,133,93
1@eom,147,156	warp	tdgWarp#4	2,2,1@eom,98, 115
1@eom,98,127	warp	tdgWarp#5	2,2,1@eom,101,176

 

Link to comment
Share on other sites

6 answers to this question

Recommended Posts

  • 0

  • Group:  Members
  • Topic Count:  23
  • Topics Per Day:  0.01
  • Content Count:  228
  • Reputation:   19
  • Joined:  10/27/12
  • Last Seen:  

Update script line containing 
getmapxy(.@map$, .@x, .@y, UNITTYPE_PC);

 

getmapxy(.@map$, .@x, .@y, BL_PC);
Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  18
  • Topics Per Day:  0.00
  • Content Count:  2044
  • Reputation:   682
  • Joined:  10/09/12
  • Last Seen:  

I didn't get a crash, but got a nullpo

--- nullpo info --------------------------------------------
d:\ragnarok\rathena\src\map\instance.cpp:377: in func `instance_create'

 

yeah, very common mistakes, rathena has to add a line in db\re\instance_db.txt

50,Temple of Demon God,7200,300,1@eom,102,16

then it work fine

 

that's why rathena instance is currently being rewritten

Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  26
  • Topics Per Day:  0.01
  • Content Count:  65
  • Reputation:   4
  • Joined:  10/25/18
  • Last Seen:  

4 hours ago, utofaery said:

Update script line containing 
getmapxy(.@map$, .@x, .@y, UNITTYPE_PC);

 


getmapxy(.@map$, .@x, .@y, BL_PC);

Thanks guys!! solved.

Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  23
  • Topics Per Day:  0.01
  • Content Count:  228
  • Reputation:   19
  • Joined:  10/27/12
  • Last Seen:  

2 hours ago, Brizyous said:

Thanks guys!! solved.

Word of advice:

Read git changes before you update your server files! 

then update your script file accordingly to prevent this kind of stuff from happening in future.

  • Like 1
Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  26
  • Topics Per Day:  0.01
  • Content Count:  65
  • Reputation:   4
  • Joined:  10/25/18
  • Last Seen:  

12 minutes ago, utofaery said:

Word of advice:

Read git changes before you update your server files! 

then update your script file accordingly to prevent this kind of stuff from happening in future.

Yes i'm doing some research about that xD, some other instances script are crashing the server too.

Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  23
  • Topics Per Day:  0.01
  • Content Count:  228
  • Reputation:   19
  • Joined:  10/27/12
  • Last Seen:  

11 minutes ago, Brizyous said:

Yes i'm doing some research about that xD, some other instances script are crashing the server too.

Have fun doing research!~

Link to comment
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.   Paste as plain text instead

  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.

×
×
  • Create New...