Jump to content

drifterxxxx2

Members
  • Posts

    83
  • Joined

  • Last visited

Everything posted by drifterxxxx2

  1. ty for your help I did all you mention but still, everytime I log in (after user pass), the client closes without any warning message :/ I think i'll stick with 2016 for now @_@..
  2. I'm using lua files from this https://github.com/zackdreaver/ROenglishRE And I was testing this client, 20170614 but i've encounter several errors like after logging in the client simply close (without any warning or message), and so on.. Is it stable for you? I'm a bit blind here
  3. Hi guys Added devil tower instance recently and I'm having 2 minor problems //===== rAthena Script ======================================= //= Devil Tower //===== Description: ========================================= //= [Walkthrough Conversion] //= Devil Tower Instance //===== Changelogs: ========================================== //= 1.0 First version. [Capuche] //============================================================ dali02,134,119,5 script Historian Shep#tnm01 4_F_NOVICE,{ if (BaseLevel < 130) { mes "[Shep]"; mes "Are you volunteering to explore the Devil's Tower?"; mes "It's extremely dangerous so you need to be at least ^4d4dffLevel 130^000000."; next; mes "[Shep]"; mes "Will you come back when you get stronger?"; mes "You know what I mean right?"; close; } switch( checkquest(7577,PLAYTIME) ) {// daily timer case -1: break; case 0: case 1: mes "[Shep]"; mes "You want to explore again so soon?"; mes "Your body needs to recover from the time traveling."; next; mes "[Shep]"; mes "Take a rest day and come back tomorrow.!"; mes "You understand?"; close; case 2: mes "[Shep]"; mes "Have you rested long enough?"; mes "I am scheduled to explore today!"; mes "I have always been waiting for a member of the expedition!"; erasequest 7577;// Space distortion devil_tower_can_reenter = 0; devil_tower_enter = 0; next; mes "!- Notice -!"; mes "You can now re-enter the Devil's Tower."; close; } if (isbegin_quest(7576) > 0) {// instance completed mes "[Shep]"; mes "So time and space seem to have converged there?"; mes "I'm amazed that time travel is possible."; next; mes "[Shep]"; mes "This is all you have."; mes "You did a good job."; mes "I look forward to more discoveries!"; setquest 7577;// Space distortion erasequest 7568;// Explore the tower erasequest 7571;// Tower Expedition erasequest 7574;// Thanatos Tower erasequest 7576;// Morocc castle seal getexp 450000,450000; devil_tower_can_reenter = 0; devil_tower_enter = 0; mes "Please come back tomorrow!"; close; } if (isbegin_quest(7574) > 0) {// failed after seal mes "[Shep]"; mes "Oh, you are back so soon..."; mes "Ok, I see what happened."; next; mes "[Shep]"; mes "This is all you have."; mes "You did a good job."; mes "I look forward to more discoveries!"; setquest 7577;// Space distortion erasequest 7568;// Explore the tower erasequest 7571;// Tower Expedition erasequest 7574;// Thanatos Tower getexp 300000,300000; devil_tower_can_reenter = 0; devil_tower_enter = 0; mes "Please come back tomorrow!"; close; } if (isbegin_quest(7571) > 0) {// failed at stair 2 tnm1 mes "[Shep]"; mes "Oh, you are back."; mes "Let me see... you mean this tower has a passage to connect to the demon world."; next; mes "[Shep]"; mes "This is all you have."; mes "You did a good job."; mes "I look forward to more discoveries!"; setquest 7577;// Space distortion erasequest 7568;// Explore the tower erasequest 7571;// Tower Expedition if (isbegin_quest(7572)) erasequest 7572;// Lucile...? if (isbegin_quest(7573)) erasequest 7573;// Magic Swordman Thanatos getexp 200000,200000; devil_tower_can_reenter = 0; devil_tower_enter = 0; mes "Please come back tomorrow!"; close; } switch( checkquest(7568,PLAYTIME) ) {// entrance timer - 1h30 to enter case -1: mes "[Shep]"; mes "Are you volunteering to explore the Devil's Tower? I have been waiting for someone like you!"; next; mes "[Shep]"; mes "Finally, someone to share the mysteries of the tower for me."; mes "No one has been volunteering up this point so I was getting worried."; next; mes "[Shep]"; mes "Please report anything you find in the tower to me."; mes "The better the info~ the better the zeny I'll pay you!"; next; mes "[Shep]"; mes "That Laphine scholar over there will open up the dimensional gap with this time device."; mes "It is still unstable so your time for exploring will be limited."; next; mes "[Shep]"; mes "If you are unexpectedly bounced back to here again, you should return quickly."; mes "If you do you may or may not be able to re-enter depending on how fast you are."; next; mes "[Shep]"; mes "But if you run out of time, the access to the tower will disappear."; mes "So do you want to volunteer?"; next; if (select( "Volunteer", "No Thanks" ) == 2) { mes "[Shep]"; mes "Oh that's too bad"; mes "There is nothing I can do I guess."; mes "I'll just find someone else..."; close; } mes "[Shep]"; mes "Thank you."; mes "Okay, gather your party and remember to report to me what you find."; next; mes "[Shep]"; mes "^4d4dffExploring time limit is for your safety^000000!"; setquest 7568;// Explore the tower close; case 0: case 1: if (devil_tower_can_reenter == 0)// player can re-enter break; // fall through case 2: mes "[Shep]"; mes "You seem to be late."; mes "You took an extraordinarily long time."; mes "....."; mes "I can't use any of your info."; next; mes "[Shep]"; mes "There is nothing we can do ."; mes "There's always opportunities for other expeditions."; setquest 7577;// Space distortion erasequest 7568; if (isbegin_quest(7569)) erasequest 7569;// Treat the injured if (isbegin_quest(7570)) erasequest 7570;// Destroy the demons devil_tower_can_reenter = 0; devil_tower_enter = 0; close; } mes "[Shep]"; mes "First of all, you need to reserve a queue at the gate."; mes "The Laphine Scholar Artie will reserve your queue for you."; next; mes "[Shep]"; mes "Time is limited because the dimensional gap is still unstable."; mes "Make your exploration short and sweet."; next; mes "[Shep]"; mes "Rewards will be different depending on your time."; mes "Good luck!"; next; if (select( "Trust me!", "Cancel my reservation" ) == 1) { mes "[Shep]"; mes "I believe that you can manage under these restrictions."; mes "I believe in you!"; close; } if (devil_tower_enter == 1) { mes "[Shep]"; mes "You seem to be tired of exploring."; mes "^4d4dffIf you cancel now. You will be able to challenge one day after.^000000"; mes "Is that okay?"; next; if (select( "Yes Cancel.", "Wait, don't cancel!" ) == 2) { mes "[Shep]"; mes "Ok, I won't cancel."; close; } mes "[Shep]"; mes "Really."; mes "then, come back tomorrow."; setquest 7577;// Space distortion erasequest 7568; if (isbegin_quest(7569)) erasequest 7569;// Treat the injured if (isbegin_quest(7570)) erasequest 7570;// Destroy the demons devil_tower_enter = 0; devil_tower_can_reenter = 0; close; } mes "[Shep]"; mes "Really?"; mes "After listening to all this explanation?"; erasequest 7568;// Explore the tower close; } dali02,137,121,3 script Magic Scholar Artie#tnm 4_M_FAIRYKID6,{ .@party_id = getcharid(1); if (.@party_id == 0) { mes "[Artie]"; mes "let's have fun since we just left bifrost."; mes "No?"; mes "you are applying as a volunteer?"; mes "You'd better gather a party for this expedition."; next; mes "[Artie]"; mes "Don't take any unncessary risks, okay?"; close; } if (getpartyleader(.@party_id,2) != getcharid(0)) { mes "[Artie]"; mes "Bring the Expedition Chief."; mes "Devil's Tower is not a place to visit alone."; mes "Bring the manager."; close; } if (devil_tower_enter == 1) { mes "[Artie]"; mes "You have already entered by connecting it."; mes "Connect to the space again? I can not do that."; close; } switch( checkquest(7568,PLAYTIME) ) { case 0: case 1: break; case -1: case 2: mes "[Artie]"; mes "Hrm... It is difficult to connect to unless it is an appointed exploration time."; mes "Not to mention dangerous as well."; close; } mes "[Artie]"; mes "Are you a volunteer to explore the Devil's Tower?"; mes "Do you want me to activate the Dimensional Device?"; next; mes "[Artie]"; mes "Decide quickly because you only have a finite amount of time in there."; next; if (select( "Yes, activate the device.", "Wait for a minute." ) == 2) { mes "[Artie]"; mes "Your time to explore is dwindling."; mes "Time is very important."; mes "What are you waiting for?"; close; } mes "[Artie]"; mes "The Dimensional Device is activated."; mes "If you're lucky, you can get through this quickly."; mes "I look forward to hearing good news."; instance_create("Devil's Tower"); close; } dali02,141,120,3 script Dimensional Device#tnm0 PORTAL,{ if (devil_tower_can_reenter == 1) {// can't re-enter mes "[Artie]"; mes "Hey, Hey"; mes "It is difficult to send to you through the device right now."; mes "We should stop exploring today and let's go again another day."; close; } switch( checkquest(7568,PLAYTIME) ) { case 0: case 1: break; case -1: case 2: mes "[Artie]"; mes "Look, I am sorry but it is not allowed to enter except during the allowed time, Devil's Tower is dangerous."; close; } mes "[Artie]"; mes "Yes, this is the Dimensional Device."; mes "It is used to travel time."; mes "It will be difficult to enter again if you leave."; next; mes "[Artie]"; mes "Don't worry though, I'm a genius scholar~"; mes "Anyway, ready to enter?"; next; if (select( "Enter the device.", "Stop." ) == 2) { mes "[Artie]"; mes "Right."; mes "It seems like quite a long time has passed since you activated the device. Am I right?"; close; } .@md_name$ = "Devil's Tower"; switch( instance_enter(.@md_name$) ) { case IE_OTHER: mes "An unknown error occurred."; close; case IE_NOINSTANCE: mes "[Shep]"; mes "The Dimensional Device needs to be activated first before entering."; mes "It doesn't seem to be activated yet."; next; mes "[Shep]"; mes "Please get a permission to activate it by talking to the Magic Scholar Artie."; close; case IE_NOMEMBER: mes "[Artie]"; mes "Exploring Devil's Tower will be permitted only for expeditions in parties."; mes "Make sure you are ready."; close; case IE_OK: mapannounce "dali02", "Party member " + strcharinfo(0) + " of party's " + getpartyname( getcharid(1) ) + " enters Room " + .@md_name$ + "", bc_map,0xFF99; // warp "1@tnm1",50,104; devil_tower_enter = 1; end; } } dali02,134,112,3 script #tnmtks01 HIDDEN_WARP_NPC,3,3,{ end; OnTouch_: disablenpc "#tnmtks01"; initnpctimer; end; OnTimer1000: npctalk "Artie: Hey, you! How is your research going?", "Magic Scholar Artie#tnm"; end; OnTimer3000: npctalk "Shep: Who are you calling hey you? You're just a dusty little fairy!", "Historian Shep#tnm01"; end; OnTimer6000: npctalk "Artie: A dusty little what? I'll have you know, I have superior genes to your species you ape!", "Magic Scholar Artie#tnm"; end; OnTimer9000: npctalk "Shep: What do I care what you say? Even our kids are bigger than you tiny little fairies!", "Historian Shep#tnm01"; end; OnTimer12000: npctalk "Shep: Think you're so big just because you're a magic scholar huh?", "Historian Shep#tnm01"; end; OnTimer14000: npctalk "Artie: You know nothing human. Remind me again who found this tower entrance?", "Magic Scholar Artie#tnm"; end; OnTimer18000: npctalk "Shep: *Sigh*... Y....You did.", "Historian Shep#tnm01"; end; OnTimer21000: npctalk "Artie: Y....You? Did I stutter? And who solved the formula calculating the dimensional gap connected to the tower?", "Magic Scholar Artie#tnm"; end; OnTimer24000: npctalk "Shep: Yes, yes it was you!", "Historian Shep#tnm01"; end; OnTimer27000: npctalk "Artie: So I take it you're no longer questioning how smart I am right?", "Magic Scholar Artie#tnm"; end; OnTimer30000: npctalk "Shep: Alright, alright. I need an adventurer to explore the tower for us.", "Historian Shep#tnm01"; end; OnTimer33000: npctalk "Shep: No one has volunteered because everyone says it's too dangerous!", "Historian Shep#tnm01"; end; OnTimer36000: npctalk "Artie: No volunteers? Come on. Harness your motivational skills and find someone.", "Magic Scholar Artie#tnm"; end; OnTimer37000: emotion ET_KIK, getnpcid(0, "Magic Scholar Artie#tnm"); end; OnTimer39000: npctalk "Shep: Hello!!! Now recruiting new members to exploring the Devil's Tower!", "Historian Shep#tnm01"; end; OnTimer42000: npctalk "Shep: Please come! Now's your chance to possibly come face to face with the infamous minions of Satan Morocc himself!", "Historian Shep#tnm01"; end; OnTimer45000: npctalk "Artie: You sure that's the right thing to say? Maybe your recruiting tactics need refining...", "Magic Scholar Artie#tnm"; stopnpctimer; enablenpc "#tnmtks01"; end; } // Entrance 1@tnm1,50,104,0 script #event01 HIDDEN_WARP_NPC,1,1,{ end; OnTouch: disablenpc instance_npcname("#event01"); initnpctimer; end; OnTimer2000: npctalk "Officer Heim: This is an emergency.. How things are going?", instance_npcname("Officer Heim#heim0"); end; OnTimer5000: npctalk "A tirailleur: Next floor is the highest one... but there are so many demons...", instance_npcname("A tirailleur#tnm01"); end; OnTimer6000: emotion ET_THINK, getnpcid(0, instance_npcname("Officer Heim#heim0")); end; OnTimer8000: npctalk "A tirailleur: It is impossible to break through with the number of our people.", instance_npcname("A tirailleur#tnm01"); emotion ET_PROFUSELY_SWEAT, getnpcid(0, instance_npcname("A tirailleur#tnm01")); end; OnTimer11000: npctalk "Officer Heim: How many soldiers have survived now? When is the support team arriving?", instance_npcname("Officer Heim#heim0"); end; OnTimer12000: emotion ET_THINK, getnpcid(0, instance_npcname("An aide#tnm02")); end; OnTimer16000: npctalk "An aide: There aren't enough to call in...", instance_npcname("An aide#tnm02"); end; OnTimer17000: npctalk "An aide: The good news is the demons have stopped attacking.", instance_npcname("An aide#tnm02"); end; OnTimer21000: npctalk "Officer Heim: We can't just be stuck here and can go further. Why did the demons stop attacking ?", instance_npcname("Officer Heim#heim0"); end; OnTimer24000: npctalk "A tirailleur: It seems like there is something going on up there...", instance_npcname("A tirailleur#tnm01"); end; OnTimer26000: disablenpc instance_npcname("Officer Heim#heim0"); enablenpc instance_npcname("Officer Heim#heim"); npctalk "Officer Heim: Who are you?", instance_npcname("Officer Heim#heim"); stopnpctimer; end; } 1@tnm1,57,112,5 script Officer Heim#heim0 4_TOWER_05,{ end; } 1@tnm1,56,110,3 script Officer Heim#heim 4_TOWER_05,{ if (getpartyleader(getcharid(1),2) != getcharid(0)) { mes "[Officer Heim]"; mes "Who brought you all here?"; mes "I will talk to a representative."; close; } switch('devil_tower) { case 0: mes "[Officer Heim]"; mes "Back up soldiers? So why are you just standing there?"; npctalk "Officer Heim: Back up soldiers? So why are you just standing there?"; next; select("Right now?"); enablenpc instance_npcname("Healer Fama#feima"); 'devil_tower = 1; mes "[Healer Fama]"; mes "Commander please help me. I can't do it by myself~!"; npctalk "Healer Fama: Commander please help me. I can't do it by myself~!", instance_npcname("Healer Fama#feima"); next; mes "[Officer Heim]"; mes "Do you hear that?"; mes "Help Fama take care of the injured soldiers."; mes "Fama will give you first aid-kits, use it to help the injured people."; // close2;// still attached npctalk "Officer Heim: Do you hear that?"; sleep2 2000; npctalk "Officer Heim: Help Fama take care of the injured soldiers."; sleep2 2000; npctalk "Healer Fama: Okay~ You are going to help me? Come here and receive the first aid kit~!"; end; case 1: mes "[Officer Heim]"; mes "It is priority to treat the injured soldiers by assisting Fama."; mes "Please do your best even if the environment is the worst."; close; default: mes "[Officer Heim]"; mes "Luckily, no one is dead yet."; mes "I do not want to see my soldiers die."; close; } } 1@tnm1,47,109,3 script Healer Fama#feima 4_TOWER_10,{ if ('devil_tower == 1) { if (countitem(7641) < 1) { mes "[Healer Fama]"; mes "Please cure the injured with this first aid kit."; mes "It's not difficult. Just follow the instructions."; next; mes "[Healer Fama]"; mes "We are low on supplies. So I will give them once at a time."; mes "Sorry, please request again if you run out."; getitem 7641,1;// Medical_Cure_Box close; } mes "[Healer Fama]"; mes "Sorry... procurement is not good right now so I can only provide one first-aid kit at a time."; mes "Please request again if you run out."; close; } mes "[Healer Fama]"; mes "Huh... Okay, we can take a break now."; mes "Thank you very much!"; close; } 1@tnm1,39,114,3 script Injured Soldier#1_1 4_TOWER_01,3,3,{ if ('devil_tower != 1) end; if (countitem(7641) < 1) { mes "I need 1 first-aid-kit to treat the injured soldier."; close; } mes "This soldier has lost consciousness and groaning."; mes "Should I use the first-aid kit?"; next; if (select( "Use first-aid kit.", "Observe condition." ) == 2) { mes "You decide to observe the condition of the injured soldier more."; close; } mes "You administer the first-aid-kit to the soldier."; next; specialeffect EF_SPHERE; progressbar "000000",10; delitem 7641,1; specialeffect EF_ENTRY; disablenpc instance_npcname( strnpcinfo(0) ); enablenpc instance_npcname( strnpcinfo(1) + "#" + replacestr( strnpcinfo(2), "_1", "" ) ); specialeffect EF_ENTRY,AREA, instance_npcname( strnpcinfo(1) + "#" + replacestr( strnpcinfo(2), "_1", "" ) ); mes "It worked."; 'heal_count++; if ('heal_count == 7) { 'devil_tower = 2; npctalk "Healer Fama: Assassins?!", instance_npcname("Healer Fama#feima"); enablenpc instance_npcname("Lucile#tnm01"); enablenpc instance_npcname("Magic Swordman#tnm01"); enablenpc instance_npcname("Assassin Huey#tnm01"); enablenpc instance_npcname("Assassin Louie#tnm01"); } close; OnTouch: .@num = atoi( replacestr( strnpcinfo(2), "_1", "" ) ); if (.@num == 1) npctalk "Injured Soldier: groaning...."; else if (.@num == 2) npctalk "Injured Soldier: Owww..."; else if (.@num == 3) npctalk "Injured Soldier: .... aah.. aah.."; else if (.@num == 4) npctalk "Injured Soldier: Owww..."; else if (.@num == 5) npctalk "Injured Soldier: I do not want to die..."; else if (.@num == 6) npctalk "Injured Soldier: Owww~"; else npctalk "Injured Soldier: Groaning..."; end; } 1@tnm1,30,120,3 duplicate(Injured Soldier#1_1) Injured Soldier#2_1 4_TOWER_03,3,3 1@tnm1,25,117,5 duplicate(Injured Soldier#1_1) Injured Soldier#3_1 4_TOWER_06,3,3 1@tnm1,19,118,4 duplicate(Injured Soldier#1_1) Injured Soldier#4_1 4_TOWER_08,3,3 1@tnm1,18,110,4 duplicate(Injured Soldier#1_1) Injured Soldier#5_1 4_TOWER_11,3,3 1@tnm1,24,104,7 duplicate(Injured Soldier#1_1) Injured Soldier#6_1 4_TOWER_13,3,3 1@tnm1,31,110,3 duplicate(Injured Soldier#1_1) Injured Soldier#7_1 4_TOWER_03,3,3 1@tnm1,39,114,3 script Injured Soldier#1 4_TOWER_02,{ mes "[Injured soldiers]"; mes "whew.. it seems to be okay now."; mes "Thank you."; close; } 1@tnm1,30,120,3 script Injured Soldier#2 4_TOWER_04,{ mes "[Injured soldiers]"; mes "Groaning... Just let me die."; mes "No it hurts too much."; close; } 1@tnm1,25,117,5 script Injured Soldier#3 4_TOWER_07,{ mes "[Injured soldiers]"; mes "His conscious seems to be blur still."; mes "Leave him to get some rest."; close; } 1@tnm1,19,118,4 script Injured Soldier#4 4_TOWER_09,{ mes "[Injured soldiers]"; mes "I thought I was going to die."; mes "But I'm alive!"; close; } 1@tnm1,18,110,4 script Injured Soldier#5 4_TOWER_12,{ mes "[Injured soldiers]"; mes "I can't die here. I have to propose to my beloved when I get home."; mes "We will be happy for sure?"; close; } 1@tnm1,24,104,7 script Injured Soldier#6 4_TOWER_14,{ mes "[Injured soldiers]"; mes "I feel much better but I still can't move."; mes "Still I'm lucky to be alive."; close; } 1@tnm1,31,110,3 script Injured Soldier#7 4_TOWER_04,{ mes "[Injured soldiers]"; mes "Thank you.. Thank you.."; close; } 1@tnm1,61,110,3 script An aide#tnm02 4_M_MOCASS2,{ mes "[An aide]"; mes "The calamity that happened hundreds of years ago will not happen again right?"; mes "Why have the demons showed up again so suddenly?"; close; } 1@tnm1,61,113,3 script A tirailleur#tnm01 4_M_MOCASS1,{ mes "[A tirailleur]"; mes "Are you a member of back-up team?"; mes "Good. things are getting worse here."; mes "Glad that you all are here to help."; close; } 1@tnm1,46,105,5 script Lucile#tnm01 4_F_LUCILE,{ if (getpartyleader(getcharid(1),2) != getcharid(0)) { cutin "tnm_lucile01.bmp",2; mes "[Lucile]"; mes "Who is in charge of the back-up team?"; close3; } if ('devil_tower == 2) { .@lucile$ = instance_npcname("Lucile#tnm01"); .@heim$ = instance_npcname("Officer Heim#heim"); 'devil_tower = 3; mes ""; // todo fix me "workinprogress" cutin "tnm_lucile01.bmp",2; sleep2 1500; npctalk "Lucile: I am Lucile from the Assassin Guild.", .@lucile$; sleep2 2000; npctalk "Officer Heim: Our back-up is from the Assassin Guild? Thanks for arriving in time.", .@heim$; sleep2 3000; npctalk "Lucile: The situation doesn't seem to be good.", .@lucile$; sleep2 3000; npctalk "Lucile: What happened to the brave knights of Prontera?", .@lucile$; sleep2 3000; npctalk "Officer Heim: Are you mocking me?", .@heim$; sleep2 3000; npctalk "Lucile: Not at all. I really want to know. What's going on upstairs?", .@lucile$; sleep2 2500; emotion ET_OHNO, getnpcid(0, .@heim$); sleep2 1000; npctalk "Officer Heim: How did you know that? Yes, the demons have stopped their attack from upstairs.", .@heim$; sleep2 3000; emotion ET_SMILE, getnpcid(0, .@lucile$); npctalk "Lucile: What do you think about the situation Magic Swordman?", .@lucile$; cutin "tnm_lucile01.bmp",0; sleep2 3000; npctalk "Magic swordman: Hmm, I will go and investigate.", instance_npcname("Magic Swordman#tnm01"); cutin "tnm_loki.bmp",2; sleep2 2000; cutin "",255; disablenpc instance_npcname("Magic Swordman#tnm01"); sleep2 1000; npctalk "Lucile: How are you so fast?", .@lucile$; cutin "tnm_lucile01.bmp",2; sleep2 2000; npctalk "Officer Heim: What are you doing? If you go alone you will be killed!", .@heim$; sleep2 3000; npctalk "Lucile: I won't be alone. There are still some uninjured soldiers!", .@lucile$; sleep2 2500; npctalk "Lucile: All right, I will ask you to be my back up. Hahaha right Dewey?", .@lucile$; sleep2 500; enablenpc instance_npcname("Assassin Dewey#tnm01"); enablenpc instance_npcname("#tnm1stepmob"); npctalk "Dewey: Okay, I will.", instance_npcname("Assassin Dewey#tnm01"); 'devil_tower = 4; sleep2 500; cutin "",255; disablenpc .@lucile$; disablenpc instance_npcname("Assassin Huey#tnm01"); disablenpc instance_npcname("Assassin Louie#tnm01"); sleep2 2000; npctalk "Officer Heim: They are so unpredictable. You know what is going on right? Back them up...", .@heim$; sleep2 2500; npctalk "Officer Heim: Help us take care of the demons coming down from upstairs.", .@heim$; end; } } 1@tnm1,52,104,2 duplicate(Officer Heim#heim0) Magic Swordman#tnm01 4_M_ROKI 1@tnm1,42,104,4 duplicate(Officer Heim#heim0) Assassin Huey#tnm01 4_TOWER_15 1@tnm1,44,101,5 duplicate(Officer Heim#heim0) Assassin Louie#tnm01 4_M_ACROSS 1@tnm1,70,108,3 script Assassin Dewey#tnm01 4_M_ACROSS,{ if ('devil_tower < 4) end; if (isbegin_quest(7569) == 0) setquest 7569;// Treat the injured if (isbegin_quest(7570) == 0) setquest 7570;// Destroy the demons mes "[Dewey]"; mes "I will guide you to the upper floor."; mes "Do not forget to get rid of any demons that you encounter on the way."; next; if (select( "Move now", "I need more time to prepare." ) == 2) { mes "[Dewey]"; mes "Be prepared for anything."; close; } mes "[Dewey]"; mes "Travel carefully."; close2; warp 'map_tnm1$,91,23; devil_tower_can_reenter = 1;// nb. different from official (condition overcomplicated) end; } // Stairs tnm1 // spawn inaccurate 1@tnm1,91,23,0 script #tnm1stepmob HIDDEN_WARP_NPC,1,1,{ end; OnTouch: if ('devil_tower != 4) end; disablenpc instance_npcname("#tnm1stepmob"); enablenpc instance_npcname("Assassin Louie#tnm02"); enablenpc instance_npcname("Lucile#tnm02"); initnpctimer; monster 'map_tnm1$,99,24,"Evil Shadow",2939,1, instance_npcname("#tnm1stepmob") + "::OnMobDead"; // MM_EVIL_SHADOW1 'mob_id = $@mobid[0]; end; OnTimer2000: if (unitexists('mob_id) == true) unittalk 'mob_id, "What is this? A human? How dare they must have lost their minds!"; end; OnTimer5000: monster 'map_tnm1$,103,21,"Evil Shadow",2940,1, instance_npcname("#tnm1stepmob") + "::OnMobDead"; // MM_EVIL_SHADOW2 unittalk $@mobid[0], "Did you make a resolution?"; monster 'map_tnm1$,103,26,"Evil Shadow",2941,1, instance_npcname("#tnm1stepmob") + "::OnMobDead"; // MM_EVIL_SHADOW3 unittalk $@mobid[0], "Ha ha ha ha....Let's fight..!!!"; end; OnTimer11000: monster 'map_tnm1$,106,25,"Evil Shadow",2939,1, instance_npcname("#tnm1stepmob") + "::OnMobDead"; // MM_EVIL_SHADOW1 monster 'map_tnm1$,106,27,"Evil Shadow",2939,1, instance_npcname("#tnm1stepmob") + "::OnMobDead"; // MM_EVIL_SHADOW1 monster 'map_tnm1$,110,20,"Evil Shadow",2940,1, instance_npcname("#tnm1stepmob") + "::OnMobDead"; // MM_EVIL_SHADOW2 monster 'map_tnm1$,112,24,"Evil Shadow",2940,1, instance_npcname("#tnm1stepmob") + "::OnMobDead"; // MM_EVIL_SHADOW2 monster 'map_tnm1$,107,22,"Evil Shadow",2941,1, instance_npcname("#tnm1stepmob") + "::OnMobDead"; // MM_EVIL_SHADOW3 monster 'map_tnm1$,114,24,"Evil Shadow",2941,1, instance_npcname("#tnm1stepmob") + "::OnMobDead"; // MM_EVIL_SHADOW3 end; OnTimer17000: monster 'map_tnm1$,120,20,"Evil Shadow",2939,1, instance_npcname("#tnm1stepmob") + "::OnMobDead"; // MM_EVIL_SHADOW1 monster 'map_tnm1$,122,23,"Evil Shadow",2939,1, instance_npcname("#tnm1stepmob") + "::OnMobDead"; // MM_EVIL_SHADOW1 end; OnTimer23000: monster 'map_tnm1$,116,25,"Evil Shadow",2940,1, instance_npcname("#tnm1stepmob") + "::OnMobDead"; // MM_EVIL_SHADOW2 monster 'map_tnm1$,116,21,"Evil Shadow",2940,1, instance_npcname("#tnm1stepmob") + "::OnMobDead"; // MM_EVIL_SHADOW2 end; OnTimer29000: monster 'map_tnm1$,134,21,"Evil Shadow",2939,1, instance_npcname("#tnm1stepmob") + "::OnMobDead"; // MM_EVIL_SHADOW1 monster 'map_tnm1$,130,25,"Evil Shadow",2939,1, instance_npcname("#tnm1stepmob") + "::OnMobDead"; // MM_EVIL_SHADOW1 monster 'map_tnm1$,129,27,"Evil Shadow",2940,1, instance_npcname("#tnm1stepmob") + "::OnMobDead"; // MM_EVIL_SHADOW2 monster 'map_tnm1$,120,27,"Evil Shadow",2941,1, instance_npcname("#tnm1stepmob") + "::OnMobDead"; // MM_EVIL_SHADOW3 monster 'map_tnm1$,118,22,"Evil Shadow",2941,1, instance_npcname("#tnm1stepmob") + "::OnMobDead"; // MM_EVIL_SHADOW3 end; OnTimer35000: monster 'map_tnm1$,138,27,"Evil Shadow",2939,1, instance_npcname("#tnm1stepmob") + "::OnMobDead"; // MM_EVIL_SHADOW1 monster 'map_tnm1$,144,23,"Evil Shadow",2939,1, instance_npcname("#tnm1stepmob") + "::OnMobDead"; // MM_EVIL_SHADOW1 monster 'map_tnm1$,129,20,"Evil Shadow",2940,1, instance_npcname("#tnm1stepmob") + "::OnMobDead"; // MM_EVIL_SHADOW2 end; OnTimer41000: monster 'map_tnm1$,140,24,"Evil Shadow",2940,1, instance_npcname("#tnm1stepmob") + "::OnMobDead"; // MM_EVIL_SHADOW2 monster 'map_tnm1$,144,20,"Evil Shadow",2940,1, instance_npcname("#tnm1stepmob") + "::OnMobDead"; // MM_EVIL_SHADOW2 monster 'map_tnm1$,130,27,"Evil Shadow",2941,1, instance_npcname("#tnm1stepmob") + "::OnMobDead"; // MM_EVIL_SHADOW3 monster 'map_tnm1$,127,24,"Evil Shadow",2941,1, instance_npcname("#tnm1stepmob") + "::OnMobDead"; // MM_EVIL_SHADOW3 monster 'map_tnm1$,142,27,"Evil Shadow",2941,1, instance_npcname("#tnm1stepmob") + "::OnMobDead"; // MM_EVIL_SHADOW3 monster 'map_tnm1$,140,22,"Evil Shadow",2941,1, instance_npcname("#tnm1stepmob") + "::OnMobDead"; // MM_EVIL_SHADOW3 stopnpctimer; end; OnMobDead: end; } 1@tnm1,158,24,3 script Assassin Louie#tnm02 4_M_ACROSS,{ if ('devil_tower < 4) end; if (checkquest(7570,HUNTING) != 2) { mes "[Louie]"; mes "The Captain says that we need to get rid of all of the demons..."; mes "Better get to it."; close; } mes "[Louie]"; mes "A lot of soldiers still survived the attacks."; mes "They got rid of all the demons."; next; mes "[Louie]"; mes "I was making sure that no one goes upstairs, I was afraid something might happen again."; next; mes "[Louie]"; mes "I wish you would help me."; mes "I will guide you."; if (isbegin_quest(7571) == 0) { erasequest 7569;// Treat the injured erasequest 7570;// Destroy the demons setquest 7571;// Tower Expedition } next; mes "I have been exploring the passages of this tower for a while now."; close2; warp 'map_tnm1$,124,86; end; } // Stairs 2 tnm1 1@tnm1,138,96,3 script Lucile#tnm02 4_F_LUCILE,{ if (isbegin_quest(7571) == 0) end; if (getpartyleader(getcharid(1),2) != getcharid(0)) { mes "You wave your hand in front of her but she doesn't react."; close; } if ('devil_tower < 4) end; if ('devil_tower < 6) { if ('devil_tower == 4) { mes "[Lucile]"; mes "I am sorry if I'm giving you any attitude but I can't move."; npctalk "Lucile: I am sorry if I'm giving you any attitude but I can't move."; cutin "tnm_lucile02.bmp",2; next; select("Can I help?"); mes "[Lucile]"; mes "I can use self-recovery but I don't have time for that."; mes "Will you share your power with me?"; npctalk "Lucile: I can use self-recovery but I don't have time for that. Will you share your power with me?"; next; mes "[Lucile]"; mes "I need your help to activate my restoration system."; mes "Please hold tight."; npctalk "Lucile: I need your help to activate my restoration system."; next; sleep2 750; npctalk "Lucile: Please hold tight."; donpcevent instance_npcname("Huey#hui02") + "::OnEnable"; 'devil_tower = 5; percentheal -30,0; } cutin "tnm_lucile03.bmp",2; mes "Lucile seems to be a machine."; mes "I can hear mechanical sounds all of a sudden."; specialeffect EF_LEVEL99_3; progressbar "000000",40; if (isbegin_quest(7572) == 0) setquest 7572;// Lucile...? mes "System is restored."; 'devil_tower = 6; next; mes "[Lucile]"; mes "Wow! You fixed it faster than I thought."; mes "Did that surprise you?"; mes "I have to be fixed occasionally because I don't have a normal body"; cutin "tnm_lucile02.bmp",2; next; mes "[Lucile]"; mes "This body was a gift from the gods."; mes "Do you see the gate in the middle?"; cutin "tnm_lucile01.bmp",2; next; mes "[Lucile]"; mes "Hurry up or this world will be in a danger."; close2; cutin "",255; // continue } if ('devil_tower == 6) { sleep 1500; npctalk "Lucile: Let me excuse myself, follow me if you want to save the world."; sleep 2000; npctalk "Huey: sister...", instance_npcname("Huey#hui02"); disablenpc instance_npcname("Lucile#tnm02"); enablenpc instance_npcname("Lucile#tnm03"); enablenpc instance_npcname("Magic Swordman#tnm02"); enablenpc instance_npcname("Demon Morocc#tnm01"); 'devil_tower = 7; } end; } 1@tnm1,135,99,5 script Huey#hui02 4_TOWER_15,{ if ('devil_tower < 5) end; if ('devil_tower == 5 || 'devil_tower == 6) { mes "[Huey]"; mes "I am concerned about her."; mes "It happens whenever she's wounded."; mes "Because she's mostly machine..."; close; } if ('mob_count > 0) { mes "[Huey]"; mes "I know the path upstairs..."; mes "First of all, we have to get rid of these demons!"; close; } mes "[Huey]"; mes "I wonder how the others are doing..."; mes "Only Thanatos and Lucile have ever entered to upper floor..."; next; mes "[Huey]"; mes "If you want to assist them, you must hurry."; mes "I will guide the way for you."; next; if (select( "Move immediately.", "Do not follow." ) == 2) { mes "[Huey]"; mes "...I see."; close; } mes "[Huey]"; mes "This way."; mes "Be careful."; close2; warp 'map_tnm2$,152,130; end; OnEnable: enablenpc instance_npcname("Huey#hui02"); initnpctimer; end; OnTimer3000: npctalk "Huey: Oh no, sister watch out! Demons have suddenly appeared!"; 'mob_count = 16; monster 'map_tnm1$,142,90,"Evil Shadow",2939,1, instance_npcname("Huey#hui02") + "::OnMobDead"; // MM_EVIL_SHADOW1 monster 'map_tnm1$,139,91,"Evil Shadow",2940,1, instance_npcname("Huey#hui02") + "::OnMobDead"; // MM_EVIL_SHADOW2 monster 'map_tnm1$,130,86,"Evil Shadow",2940,1, instance_npcname("Huey#hui02") + "::OnMobDead"; monster 'map_tnm1$,143,95,"Evil Shadow",2941,1, instance_npcname("Huey#hui02") + "::OnMobDead"; // MM_EVIL_SHADOW3 monster 'map_tnm1$,134,90,"Evil Shadow",2941,1, instance_npcname("Huey#hui02") + "::OnMobDead"; end; OnTimer6000: npctalk "Huey: Where are they coming from? Demons again......"; end; OnTimer8000: monster 'map_tnm1$,137,103,"Evil Shadow",2939,1, instance_npcname("Huey#hui02") + "::OnMobDead"; // MM_EVIL_SHADOW1 monster 'map_tnm1$,140,102,"Evil Shadow",2939,1, instance_npcname("Huey#hui02") + "::OnMobDead"; monster 'map_tnm1$,132,103,"Evil Shadow",2940,1, instance_npcname("Huey#hui02") + "::OnMobDead"; // MM_EVIL_SHADOW2 monster 'map_tnm1$,146,100,"Evil Shadow",2940,1, instance_npcname("Huey#hui02") + "::OnMobDead"; monster 'map_tnm1$,142,105,"Evil Shadow",2940,1, instance_npcname("Huey#hui02") + "::OnMobDead"; monster 'map_tnm1$,135,107,"Evil Shadow",2941,1, instance_npcname("Huey#hui02") + "::OnMobDead"; // MM_EVIL_SHADOW3 end; OnTimer11000: npctalk "Huey: Oh, no..."; end; OnTimer12000: monster 'map_tnm1$,135,107,"Evil Shadow",2939,1, instance_npcname("Huey#hui02") + "::OnMobDead"; // MM_EVIL_SHADOW1 monster 'map_tnm1$,146,100,"Evil Shadow",2939,1, instance_npcname("Huey#hui02") + "::OnMobDead"; monster 'map_tnm1$,130,86,"Evil Shadow",2940,1, instance_npcname("Huey#hui02") + "::OnMobDead"; // MM_EVIL_SHADOW2 monster 'map_tnm1$,137,103,"Evil Shadow",2940,1, instance_npcname("Huey#hui02") + "::OnMobDead"; monster 'map_tnm1$,143,95,"Evil Shadow",2941,1, instance_npcname("Huey#hui02") + "::OnMobDead"; // MM_EVIL_SHADOW3 stopnpctimer; end; OnMobDead: 'mob_count--; if ('mob_count == 0) npctalk "Huey: This way. This way... we can go upstairs by using the gap that the demons were coming from!"; end; } // Morocc - Thanatos Battle 1@tnm2,136,139,3 script Magic Swordman#tnm02 THANATOS_KEEP,{ mes "[Magic Swordman Thanatos]"; mes "I am sorry but I have been through tough time..."; close; } 1@tnm2,133,139,5 duplicate(Officer Heim#heim0) Demon Morocc#tnm01 1916 1@tnm2,144,137,3 script Lucile#tnm03 4_F_LUCILE,{ if (getpartyleader(getcharid(1),2) != getcharid(0)) { mes "[Lucile]"; mes "I am talking to your party leader now so please step back for a while."; cutin "tnm_lucile01.bmp",2; close3; } if ('devil_tower == 7) { mes "[Lucile]"; mes "Oh. You just have arrived in time."; mes "Do you want to take a look over there?"; cutin "tnm_lucile01.bmp",2; next; mes "[Lucile]"; mes "We need to stop the demon..."; mes "Can you do that?"; npctalk "Lucile: We need to stop the demon... Can you do that?"; if (isbegin_quest(7573) == 0) setquest 7573;// Magic Swordman Thanatos 'demon$ = instance_npcname("Demon Morocc#tnm01"); 'thanatos$ = instance_npcname("Magic Swordman#tnm02"); initnpctimer; 'devil_tower = 8; close3; } mes "[Lucile]"; mes "We need to hold this spot until the trap is set by the Magic Swordman."; cutin "tnm_lucile01.bmp",2; close3; OnTimer2000: npctalk "Demon Morocc: You silly human. How long do you think you can manage to tie me up!", 'demon$; end; OnTimer5000: npctalk "Demon Morocc: Shadows! Come out and kill all enemies of darkness!", 'demon$; end; OnTimer6000: donpcevent instance_npcname("#devil_seal_timer") + "::OnStart"; end; OnTimer8000: npctalk "Thanatos: You are so desperate that you're begging me to save you.", 'thanatos$; end; OnTimer11500: npctalk "Lucile: Thanatos. Sir, should you be bluffing like that?"; end; OnTimer12000: npctalk "Demon Morocc: Be afraid of the destruction that I will bring when I'm released!", 'demon$; end; OnTimer15000: npctalk "Thanatos: Shut up! You will never leave here unless I kill you!", 'thanatos$; end; OnTimer16500: npctalk "Thanatos: Lucile! Watch my back while I conjure up a shield to hold him!", 'thanatos$; end; OnTimer19500: npctalk "Lucile: Yes sir."; end; OnTimer22500: npctalk "Lucile: Okay everyone, now we know what to do. We have to prevent the Magic Seal from reaching here!"; stopnpctimer; end; } 1@tnm2,1,1,0 script #devil_flamecross HIDDEN_WARP_NPC,{ end; OnStart: npctalk "Demon Morocc: No way!! Troublemakers!", 'demon$; mapannounce 'map_tnm2$, "Demon Morocc: No way!! Troublemakers!", bc_map,0xFF0000; initnpctimer; end; OnTimer1000: setarray .@north[0], 138,151, 138,160, 140,165, 140,176, 140,170, 140,181, 140,186, 140,191; setarray .@north_west[0], 126,149, 122,151, 118,153, 113,154, 107,156, 101,158, 96,160, 91,161, 86,162, 81,163; setarray .@south_west[0], 128,130, 125,127, 122,124, 118,121, 115,118, 112,115, 109,114, 106,106, 102,102, 99,98; setarray .@south_east[0], 145,130, 148,126, 151,122, 156,120, 160,117, 164,113, 168,109, 172,105, 176,101, 180,97; setarray .@north_east[0], 146,149, 148,149, 150,151, 155,152, 162,153, 167,154, 173,156, 179,158, 185,160, 191,161; .@label$ = instance_npcname("#devil_flamecross") + "::OnFlameDead"; for ( .@i = 0; .@i < 20; .@i += 2 ) { if (.@north[.@i] > 0) // 8 mobs for north monster 'map_tnm2$,.@north[.@i],.@north[.@i+1], "",2960,1, .@label$; monster 'map_tnm2$,.@north_west[.@i],.@north_west[.@i+1], "",2960,1, .@label$; monster 'map_tnm2$,.@south_west[.@i],.@south_west[.@i+1], "",2960,1, .@label$; monster 'map_tnm2$,.@south_east[.@i],.@south_east[.@i+1], "",2960,1, .@label$; monster 'map_tnm2$,.@north_east[.@i],.@north_east[.@i+1], "",2960,1, .@label$; sleep 200; } end; OnTimer6000: killmonster 'map_tnm2$, instance_npcname("#devil_flamecross") + "::OnFlameDead"; end; OnTimer20000: stopnpctimer; donpcevent instance_npcname("#devil_flamecross") + "::OnStart"; end; OnStop: stopnpctimer; killmonster 'map_tnm2$, instance_npcname("#devil_flamecross") + "::OnFlameDead"; end; OnFlameDead: end; } 1@tnm2,1,1,0 script #devil_seal_timer HIDDEN_WARP_NPC,{ end; OnStart: enablenpc instance_npcname("#devil_seal_timer"); enablenpc instance_npcname("#devil_flamecross"); for ( .@i = 1; .@i < 6; .@i++ ) { enablenpc instance_npcname("devil_seal_spawn#" + .@i); enablenpc instance_npcname("devil_seal_reach_center#" + .@i); } enablenpc instance_npcname("#devil_seal_dead"); donpcevent instance_npcname("#devil_seal_spawn_global") + "::OnCoord"; initnpctimer; end; OnTimer5000: mapannounce 'map_tnm2$, "A Magic Seal has just appeared in southeast direction of the tower.", bc_map,0xFFFFFF; donpcevent instance_npcname("#devil_seal_spawn_global") + "::OnFirstSpawn"; end; OnTimer10000: donpcevent instance_npcname("#devil_flamecross") + "::OnStart"; end; OnTimer25000: mapannounce 'map_tnm2$, "Lucile: We should stop before Magic Seal has just started to move again.", bc_map,0xFFFFFF; end; OnTimer65000: mapannounce 'map_tnm2$, "Lucile: We should stop before Magic Seal reaches the center.", bc_map,0xFFFFFF; end; OnTimer95000: mapannounce 'map_tnm2$, "Lucile: The Magic Seal has just started to move again.", bc_map,0xFFFFFF; end; OnTimer125000: mapannounce 'map_tnm2$, "Lucile: It is coming closer... No... It's too dangerous.", bc_map,0xFFFFFF; end; OnTimer155000: mapannounce 'map_tnm2$, "Lucile: The Magic Seal is almost approaching the center!!", bc_map,0xFFFFFF; end; OnTimer180000: donpcevent instance_npcname("#devil_flamecross") + "::OnStop"; end; OnTimer185000: mapannounce 'map_tnm2$, "Lucile: We should stop it now!", bc_map,0xFFFFFF; end; OnTimer191000: npctalk "Thanatos: What are you doing!!! Are you playing a game now?!", 'thanatos$; mapannounce 'map_tnm2$, "Thanatos: What are you doing!!! Are you playing a game now?!", bc_map,0xFF00; end; OnTimer193000: specialeffect EF_MAGNUMBREAK,AREA, 'thanatos$; specialeffect EF_LORD,AREA, 'thanatos$; donpcevent instance_npcname("devil_seal_spawn#1") + "::OnStop"; donpcevent instance_npcname("devil_seal_spawn#2") + "::OnStop"; donpcevent instance_npcname("devil_seal_spawn#3") + "::OnStop"; donpcevent instance_npcname("devil_seal_spawn#4") + "::OnStop"; donpcevent instance_npcname("devil_seal_spawn#5") + "::OnStop"; end; OnTimer195000: npctalk "Demon Morocc: Are you going to keep disturbing me!!!", 'demon$; mapannounce 'map_tnm2$, "Demon Morocc: Are you going to keep disturbing me!!!", bc_map,0xFF0000; end; OnTimer198000: npctalk "Demon Morocc: Okay, Let's see who is going to win!!! Come out!", 'demon$; mapannounce 'map_tnm2$, "Demon Morocc: Okay, Let's see who is going to win!!! Come out!", bc_map,0xFF0000; end; OnTimer201000: npctalk "Thanatos: It will be the same no matter how many times you try! Give up and go back to demon world!!", 'thanatos$; mapannounce 'map_tnm2$, "Thanatos: It will be the same no matter how many times you try! Give up and go back to demon world!!", bc_map,0xFF00; initnpctimer; end; OnStop: stopnpctimer; donpcevent instance_npcname("#devil_flamecross") + "::OnStop"; disablenpc instance_npcname("#devil_flamecross"); disablenpc instance_npcname("#devil_seal_timer"); end; } 1@tnm2,1,1,0 script #devil_seal_spawn_global HIDDEN_WARP_NPC,{ end; OnCoord: enablenpc instance_npcname("#devil_seal_spawn_global"); // setarray 'coord_seal_1[0], 68,167, 78,165, 88,163, 98,160, 108,156, 118,152, 127,147; setarray 'coord_seal_1[0], 68,167, 78,165, 88,163, 98,160, 108,156, 118,152, 118,152;// officially setarray 'coord_seal_2[0], 90, 86, 96, 95, 103,103, 110,110, 116,116, 122,122, 129,130; setarray 'coord_seal_3[0], 191,86, 183, 94, 174,103, 165,112, 156,120, 147,128, 143,131; setarray 'coord_seal_4[0], 197,162, 188,161, 179,158, 170,155, 161,152, 152,149, 144,148; setarray 'coord_seal_5[0], 142,214, 140,205, 140,195, 140,185, 140,173, 139,161, 138,150; end; OnFirstSpawn: 'round[0] = 'round[1] = 'round[2] = 'round[3] = 'round[4] = 0; donpcevent instance_npcname("devil_seal_spawn#1") + "::OnFirstSpawn"; donpcevent instance_npcname("devil_seal_spawn#2") + "::OnFirstSpawn"; donpcevent instance_npcname("devil_seal_spawn#3") + "::OnFirstSpawn"; donpcevent instance_npcname("devil_seal_spawn#4") + "::OnFirstSpawn"; donpcevent instance_npcname("devil_seal_spawn#5") + "::OnFirstSpawn"; initnpctimer; end; OnTimer2000: donpcevent instance_npcname("devil_seal_spawn#1") + "::OnSlaves"; donpcevent instance_npcname("devil_seal_spawn#2") + "::OnSlaves"; donpcevent instance_npcname("devil_seal_spawn#3") + "::OnSlaves"; donpcevent instance_npcname("devil_seal_spawn#4") + "::OnSlaves"; donpcevent instance_npcname("devil_seal_spawn#5") + "::OnSlaves"; end; OnTimer20000: donpcevent instance_npcname("devil_seal_spawn#1") + "::OnStart";// upper left donpcevent instance_npcname("devil_seal_spawn#3") + "::OnStart";// bottom right donpcevent instance_npcname("devil_seal_spawn#5") + "::OnStart";// upper end; OnTimer30000: donpcevent instance_npcname("devil_seal_spawn#2") + "::OnStart";// bottom left donpcevent instance_npcname("devil_seal_spawn#4") + "::OnStart";// upper right end; OnStop: stopnpctimer; disablenpc instance_npcname("#devil_seal_spawn_global"); end; } 1@tnm2,1,1,0 script devil_seal_spawn#1 HIDDEN_WARP_NPC,{ end; OnStart: .@num = atoi(strnpcinfo(2)) - 1; if ('seal_id[.@num] == 0 || unitexists('seal_id[.@num]) == 0) stopnpctimer; else { getunitdata 'seal_id[.@num], .@data; 'seal_hp[.@num] = .@data[UMOB_HP]; killmonster 'map_tnm2$, instance_npcname("#devil_seal_dead") + "::OnSealDead" + strnpcinfo(2); initnpctimer; } end; OnFirstSpawn: OnTimer5000: .@num = atoi(strnpcinfo(2)) - 1; .@index = 'round[.@num] * 2; if (.@index == 0 || 'seal_id[.@num]) { .@x = getd( "'coord_seal_" + (.@num+1) + "[" + .@index + "]" ); .@y = getd( "'coord_seal_" + (.@num+1) + "[" + (.@index+1) + "]" ); monster 'map_tnm2$,.@x,.@y,"Magic Seal",2938,1, instance_npcname("#devil_seal_dead") + "::OnSealDead" + (.@num+1); // MM_MAGIC_SEAL 'seal_id[.@num] = $@mobid[0]; if (.@index == 0) setunitdata 'seal_id[.@num], UMOB_HP, 3000000; else if ('seal_hp[.@num] > 0) setunitdata 'seal_id[.@num], UMOB_HP, 'seal_hp[.@num]; else stopnpctimer; 'round[.@num]++; if ('round[.@num] == 7) donpcevent instance_npcname("devil_seal_reach_center#" + (.@num+1)) + "::OnStart"; } end; OnSlaves: OnTimer7000: killmonster 'map_tnm2$, instance_npcname(strnpcinfo(0)) + "::OnMobDead"; .@num = atoi(strnpcinfo(2)) - 1; if ('seal_id[.@num] && unitexists('seal_id[.@num])) { .@index = ('round[.@num] - 1) * 2; .@x = getd( "'coord_seal_" + (.@num+1) + "[" + .@index + "]" ); .@y = getd( "'coord_seal_" + (.@num+1) + "[" + (.@index+1) + "]" ); areamonster 'map_tnm2$,(.@x-1),(.@y-1),(.@x+1),(.@y+1),"Evil Shadow",2939,2, instance_npcname(strnpcinfo(0)) + "::OnMobDead"; // MM_EVIL_SHADOW1 areamonster 'map_tnm2$,(.@x-1),(.@y-1),(.@x+1),(.@y+1),"Evil Shadow",2940,2, instance_npcname(strnpcinfo(0)) + "::OnMobDead"; // MM_EVIL_SHADOW2 if ('round[.@num] == 7) stopnpctimer; } end; OnTimer30000: donpcevent instance_npcname("devil_seal_spawn#" + strnpcinfo(2)) + "::OnStart"; end; OnDisable: stopnpctimer; killmonster 'map_tnm2$, instance_npcname(strnpcinfo(0)) + "::OnMobDead"; // note : officially still alive killmonster 'map_tnm2$, instance_npcname("#devil_seal_dead") + "::OnSealDead" + strnpcinfo(2); // note : officially still alive disablenpc instance_npcname(strnpcinfo(0)); end; OnStop: stopnpctimer; killmonster 'map_tnm2$, instance_npcname(strnpcinfo(0)) + "::OnMobDead"; killmonster 'map_tnm2$, instance_npcname("#devil_seal_dead") + "::OnSealDead" + strnpcinfo(2); end; OnMobDead: end; } 1@tnm2,1,1,0 duplicate(devil_seal_spawn#1) devil_seal_spawn#2 HIDDEN_WARP_NPC 1@tnm2,1,1,0 duplicate(devil_seal_spawn#1) devil_seal_spawn#3 HIDDEN_WARP_NPC 1@tnm2,1,1,0 duplicate(devil_seal_spawn#1) devil_seal_spawn#4 HIDDEN_WARP_NPC 1@tnm2,1,1,0 duplicate(devil_seal_spawn#1) devil_seal_spawn#5 HIDDEN_WARP_NPC 1@tnm2,1,1,0 script devil_seal_reach_center#1 HIDDEN_WARP_NPC,{ end; OnStart: enablenpc instance_npcname(strnpcinfo(0)); initnpctimer; end; OnTimer2000: npctalk "Demon Morocc: Kuh ha ha ha ha Pieces of my power! Gather here again!!!", 'demon$; mapannounce 'map_tnm2$, "Demon Morocc: Kuh ha ha ha ha Pieces of my power! Gather here again!!!", bc_map,0xFF0000; end; OnTimer4000: npctalk "Thanatos: Stop him! Prevent him from coming closer!!!", 'thanatos$; mapannounce 'map_tnm2$, "Thanatos: Stop him! Prevent him from coming closer!!!", bc_map,0xFF00; stopnpctimer; disablenpc instance_npcname(strnpcinfo(0)); end; } 1@tnm2,1,1,0 duplicate(devil_seal_reach_center#1) devil_seal_reach_center#2 HIDDEN_WARP_NPC 1@tnm2,1,1,0 duplicate(devil_seal_reach_center#1) devil_seal_reach_center#3 HIDDEN_WARP_NPC 1@tnm2,1,1,0 duplicate(devil_seal_reach_center#1) devil_seal_reach_center#4 HIDDEN_WARP_NPC 1@tnm2,1,1,0 duplicate(devil_seal_reach_center#1) devil_seal_reach_center#5 HIDDEN_WARP_NPC 1@tnm2,1,1,0 script #devil_seal_dead HIDDEN_WARP_NPC,{ end; OnSealDead1: callsub S_Sealdead,0; OnSealDead2: callsub S_Sealdead,1; OnSealDead3: callsub S_Sealdead,2; OnSealDead4: callsub S_Sealdead,3; OnSealDead5: callsub S_Sealdead,4; S_Sealdead: 'seal_id[ getarg(0) ] = 0; 'seal_dead[ getarg(0) ] = 1; .@total_seal = 'seal_dead[0] + 'seal_dead[1] + 'seal_dead[2] + 'seal_dead[3] + 'seal_dead[4]; if (.@total_seal == 3) mapannounce 'map_tnm2$, "Lucile: It is too early to feel easy! There are Magic Seals that haven't been destroyed yet.", bc_map,0xFF00; else if (.@total_seal != 5) mapannounce 'map_tnm2$, "There are still Magic Seals to destroy.", bc_map,0xFF00; else { donpcevent instance_npcname("#devil_seal_spawn_global") + "::OnStop"; donpcevent instance_npcname("#devil_seal_timer") + "::OnStop"; // stop timer of npc #devil_flamecross as well for ( .@i = 0; .@i < 5; .@i++ ) donpcevent instance_npcname("devil_seal_spawn#" + (.@i+1)) + "::OnDisable";// note: on official seals and slaves are alive mapannounce 'map_tnm2$, "Demon Morocc: No.. This can't be.. Who the hell.. are you!", bc_map,0xFF0000; npctalk "Demon Morocc: No.. This can't be.. Who the hell.. are you!", 'demon$; initnpctimer; } end; OnTimer3000: mapannounce 'map_tnm2$, "Thanatos: It will be the last time to show off!! Good bye!!!", bc_map,0xFF0000; npctalk "Thanatos: It will be the last time to show off!! Good bye!!!", 'thanatos$; end; OnTimer5000: specialeffect EF_LORD,AREA, 'thanatos$; end; OnTimer7000: stopnpctimer; disablenpc 'demon$; disablenpc 'thanatos$; disablenpc instance_npcname("Lucile#tnm03"); enablenpc instance_npcname("Lucile#tnm04"); enablenpc instance_npcname("#tnm3event01"); enablenpc instance_npcname("Young Girl#tnm01"); 'devil_tower = 9; 'demon$ = 'thanatos$ = ""; 'round[0] = 'round[1] = 'round[2] = 'round[3] = 'round[4] = 0; 'seal_id[0] = 'seal_id[1] = 'seal_id[2] = 'seal_id[3] = 'seal_id[4] = 0; 'seal_hp[0] = 'seal_hp[1] = 'seal_hp[2] = 'seal_hp[3] = 'seal_hp[4] = 0; 'seal_dead[0] = 'seal_dead[1] = 'seal_dead[2] = 'seal_dead[3] = 'seal_dead[4] = 0; deletearray 'coord_seal_1[0],14; deletearray 'coord_seal_2[0],14; deletearray 'coord_seal_3[0],14; deletearray 'coord_seal_4[0],14; deletearray 'coord_seal_5[0],14; end; } 1@tnm2,144,137,3 script Lucile#tnm04 4_F_LUCILE,{ if ('devil_tower < 9) end; if (isbegin_quest(7574) == 0) { if (isbegin_quest(7572) == 1) erasequest 7572;// Lucile...? if (isbegin_quest(7573) == 1) // leader erasequest 7573;// Magic Swordman Thanatos setquest 7574;// Thanatos Tower mes "[Lucile]"; mes "I guess the power of Demon Morocc to break the shield of seal has collided with Thanatos."; cutin "tnm_lucile01.bmp",2; next; mes "[Lucile]"; mes "It has gone too far somewhere in the south"; mes "Will you go there?"; } else { mes "[Lucile]"; mes "The collision of those two powers is too much to handle."; mes "It could have influenced the south of Rune Midgard."; } next; if (select( "Follow.", "Stop." ) == 2) { mes "[Lucile]"; mes "...I guess this is what you are able to?"; cutin "tnm_lucile02.bmp",2; close3; } mes "[Lucile]"; mes "Good luck."; close2; warp 'map_tnm3$,21,171; end; } // tnm3 Stairs 1 1@tnm3,21,171,0 script #tnm3event01 HIDDEN_NPC,1,1,{ end; OnTouch: if ('devil_tower != 9) end; mes ""; // todo fix me "workinprogress" disablenpc instance_npcname("#tnm3event01"); enablenpc instance_npcname("Young Girl#tnm01"); sleep2 4000; mapannounce 'map_tnm3$, "Young Girl: Odin Preserve me! A demon!! Help me!", bc_map,0xFF00; 'mob_count = 12; initnpctimer; end; OnTimer1000: monster 'map_tnm3$,33,171,"Evil Shadow",2939,1, instance_npcname("Young Girl#tnm01") + "::OnMobDead";// MM_EVIL_SHADOW1 end; OnTimer2000: monster 'map_tnm3$,39,172,"Evil Shadow",2939,1, instance_npcname("Young Girl#tnm01") + "::OnMobDead";// MM_EVIL_SHADOW1 end; OnTimer3000: monster 'map_tnm3$,34,177,"Evil Shadow",2940,1, instance_npcname("Young Girl#tnm01") + "::OnMobDead";// MM_EVIL_SHADOW2 end; OnTimer4000: monster 'map_tnm3$,36,176,"Evil Shadow",2940,1, instance_npcname("Young Girl#tnm01") + "::OnMobDead";// MM_EVIL_SHADOW2 end; OnTimer5000: monster 'map_tnm3$,37,175,"Evil Shadow",2940,1, instance_npcname("Young Girl#tnm01") + "::OnMobDead";// MM_EVIL_SHADOW2 end; OnTimer6000: monster 'map_tnm3$,37,173,"Evil Shadow",2941,1, instance_npcname("Young Girl#tnm01") + "::OnMobDead";// MM_EVIL_SHADOW3 monster 'map_tnm3$,36,172,"Evil Shadow",2941,1, instance_npcname("Young Girl#tnm01") + "::OnMobDead";// MM_EVIL_SHADOW3 end; OnTimer7000: monster 'map_tnm3$,29,178,"Evil Shadow",2941,1, instance_npcname("Young Girl#tnm01") + "::OnMobDead";// MM_EVIL_SHADOW3 monster 'map_tnm3$,35,172,"Evil Shadow",2941,1, instance_npcname("Young Girl#tnm01") + "::OnMobDead";// MM_EVIL_SHADOW3 end; OnTimer8000: monster 'map_tnm3$,34,173,"Evil Shadow",2941,1, instance_npcname("Young Girl#tnm01") + "::OnMobDead";// MM_EVIL_SHADOW3 monster 'map_tnm3$,35,172,"Evil Shadow",2939,1, instance_npcname("Young Girl#tnm01") + "::OnMobDead";// MM_EVIL_SHADOW1 end; OnTimer9000: monster 'map_tnm3$,34,173,"Evil Shadow",2941,1, instance_npcname("Young Girl#tnm01") + "::OnMobDead";// MM_EVIL_SHADOW3 stopnpctimer; end; } 1@tnm3,43,175,3 script Young Girl#tnm01 4_F_DST_CHILD,{ if ('devil_tower < 9) end; if ('devil_tower == 9) { mes "[Young Girl]"; mes "Why are there demons in the castle?!"; mes "HELP ME!"; close; } if ('devil_tower == 10) { if (getpartyleader(getcharid(1),2) != getcharid(0)) { mes "[Young Girl]"; mes "*weeping* The demons are so scary."; close; } mes "[Young Girl]"; mes "Why would demons come all of a sudden,"; mes "lots of guards are hurt."; npctalk "Young Girl: Why would demons come all of a sudden, lots of guards are hurt."; next; select("Where are they?"); unittalk getcharid(3), "" + strcharinfo(0) + " : Where are they?"; mes "[Young Girl]"; mes "They are in Morroc castle. My father is a knight."; npctalk "They are in Morroc castle. My father is a knight."; next; mes "[Young Girl]"; mes "It seems like something is happening, I hear strange noises downstairs."; npctalk "Young Girl: It seems like something is happening, I hear strange noises downstairs."; next; mes "[Young Girl]"; mes "I saw some guys in black entering. What is going on in the castle?"; npctalk "Young Girl: I saw some guys in black entering. What is going on in the castle?"; next; mes "[Young Girl]"; mes "Papa.. Papa please be safe. *sob*"; mes "Please come with me through the passage behind that shelf!"; npctalk "Young Girl: Please come with me through the passage behind that shelf!"; close2; enablenpc instance_npcname("#tnm3gate01"); enablenpc instance_npcname("#tnm3event02ect"); 'devil_tower = 11; end; } if ('devil_tower == 11) { mes "[Young Girl]"; mes "Behind that shelf is a secret passage to the basement!"; mes "Please come with me to make sure my Papa is safe."; close; } end; OnMobDead: 'mob_count--; if ('mob_count == 0) { 'devil_tower = 10; npctalk "Young Girl: Thank you for saving me... but why is there a demon?"; } end; } 1@tnm3,52,176,0 warp #tnm3gate01 2,2,1@tnm3,85,178 // tnm3 Stairs 2 1@tnm3,85,178,0 script #tnm3event02ect HIDDEN_NPC,1,1,{ end; OnTouch: if ('devil_tower != 11) end; disablenpc instance_npcname("#tnm3event02ect"); enablenpc instance_npcname("Young Girl#tnm02"); npctalk "Young Girl: Look! More demons, they will overwhelm the castle soon!", instance_npcname("Young Girl#tnm02"); 'mob_count = 18; initnpctimer; end; OnTimer1000: .@label$ = instance_npcname("Young Girl#tnm02") + "::OnMobDead"; monster 'map_tnm3$,97,174,"Evil Shadow",2939,1, .@label$; monster 'map_tnm3$,98,175,"Evil Shadow",2939,1, .@label$; monster 'map_tnm3$,100,166,"Evil Shadow",2939,1, .@label$; monster 'map_tnm3$,108,171,"Evil Shadow",2940,1, .@label$; monster 'map_tnm3$,104,172,"Evil Shadow",2940,1, .@label$; end; OnTimer3000: .@label$ = instance_npcname("Young Girl#tnm02") + "::OnMobDead"; monster 'map_tnm3$,109,169,"Evil Shadow",2941,1, .@label$; monster 'map_tnm3$,111,173,"Evil Shadow",2941,1, .@label$; monster 'map_tnm3$,113,167,"Evil Shadow",2941,1, .@label$; monster 'map_tnm3$,101,176,"Evil Shadow",2939,1, .@label$; monster 'map_tnm3$,116,170,"Evil Shadow",2941,1, .@label$; end; OnTimer5000: .@label$ = instance_npcname("Young Girl#tnm02") + "::OnMobDead"; monster 'map_tnm3$,107,175,"Evil Shadow",2940,1, .@label$; monster 'map_tnm3$,106,174,"Evil Shadow",2940,1, .@label$; monster 'map_tnm3$,106,169,"Evil Shadow",2939,1, .@label$; monster 'map_tnm3$,103,177,"Evil Shadow",2940,1, .@label$; end; OnTimer7000: stopnpctimer; .@label$ = instance_npcname("Young Girl#tnm02") + "::OnMobDead"; monster 'map_tnm3$,121,171,"Evil Shadow",2941,1, .@label$; monster 'map_tnm3$,119,173,"Evil Shadow",2941,1, .@label$; monster 'map_tnm3$,127,166,"Evil Shadow",2941,1, .@label$; monster 'map_tnm3$,125,166,"Evil Shadow",2941,1, .@label$; end; } 1@tnm3,89,179,4 script Young Girl#tnm02 4_F_DST_CHILD,{ end; OnMobDead: 'mob_count--; if ('mob_count == 0) { mapannounce 'map_tnm3$, "Young Girl: The way underground is along this aisle!", bc_map,0xFF00; disablenpc instance_npcname("Young Girl#tnm02"); enablenpc instance_npcname("Young Girl#tnm03"); npctalk "Young Girl: The way underground is along this aisle!", instance_npcname("Young Girl#tnm03"); enablenpc instance_npcname("#tnm3gate02"); enablenpc instance_npcname("Evil Shadow#tnm3mob01"); } end; } 1@tnm3,128,164,3 script Young Girl#tnm03 4_F_DST_CHILD,{ mes "[Young Girl]"; mes "From here.. I do not know well..."; mes "I see so many stairs..."; mes "See there are so many demons. My father will be in a danger!"; mes "Please save him."; close; } 1@tnm3,134,156,0 warp #tnm3gate02 1,1,1@tnm3,169,165 // tnm3 Stairs 3 1@tnm3,179,172,3 script Evil Shadow#tnm3mob01 2941,4,4,{ end; OnTouch_: if ('devil_tower == 11) { 'devil_tower = 12; mes ""; // todo fix me "workinprogress" sleep2 1000; npctalk "Evil Shadow: I thought I smelled rats sneaking in here. I was right!!"; sleep2 3000; npctalk "Evil Shadow: You will rue your curiosity and interference. Time to feed!"; sleep2 3000; npctalk "Evil Shadow: I summon the Darkness!!"; disablenpc instance_npcname("Evil Shadow#tnm3mob01"); donpcevent instance_npcname("Evil Shadow kill#tnm3mob01") + "::OnSummon"; } end; } 1@tnm3,1,1,0 script Evil Shadow kill#tnm3mob01 HIDDEN_WARP_NPC,{ end; OnSummon: enablenpc instance_npcname("Evil Shadow kill#tnm3mob01"); 'mob_count = 5; initnpctimer; monster 'map_tnm3$,179,172, "Evil Shadow",2941,1, instance_npcname("Evil Shadow kill#tnm3mob01") + "::OnMobDead";// MM_EVIL_SHADOW3 end; OnTimer1000: monster 'map_tnm3$,181,172, "Evil Shadow",2940,1, instance_npcname("Evil Shadow kill#tnm3mob01") + "::OnMobDead";// MM_EVIL_SHADOW2 monster 'map_tnm3$,178,172, "Evil Shadow",2940,1, instance_npcname("Evil Shadow kill#tnm3mob01") + "::OnMobDead"; end; OnTimer2000: monster 'map_tnm3$,179,172, "Evil Shadow",2939,1, instance_npcname("Evil Shadow kill#tnm3mob01") + "::OnMobDead";// MM_EVIL_SHADOW1 monster 'map_tnm3$,176,173, "Evil Shadow",2939,1, instance_npcname("Evil Shadow kill#tnm3mob01") + "::OnMobDead"; stopnpctimer; end; OnMobDead: 'mob_count--; if ('mob_count == 0) { enablenpc instance_npcname("#tnm3gate03"); enablenpc instance_npcname("Demonic Shade#mobmaster"); enablenpc instance_npcname("Morocc Lord Knight#mocl"); enablenpc instance_npcname("Loki#tnmloki01"); } end; } 1@tnm3,183,177,0 warp #tnm3gate03 1,1,1@tnm3,97,6 // Demonic Shade (Boss room) 1@tnm3,97,18,3 script Demonic Shade#mobmaster 2939,5,5,{ end; OnTouch_:// possibility to skip this step if ('devil_tower < 12) end; if ('shade == 0) { 'shade = 1; mes ""; // todo fix me "workinprogress" sleep2 1000; npctalk "Demonic Shade: So you are the trouble makers!"; sleep2 2000; npctalk "Demonic Shade: Tsk, You couldn't even manage to protect..?.whatever.. you will all die here."; sleep2 3000; npctalk "Demonic Shade: The eternal truth is I will turn your deaths into Masin's life with your hearts' blood!!!"; disablenpc instance_npcname("Demonic Shade#mobmaster"); donpcevent instance_npcname("#mobmaster_kill") + "::OnSummon"; } end; } 1@tnm3,1,1,0 script #mobmaster_kill HIDDEN_WARP_NPC,{ end; OnSummon: enablenpc instance_npcname("#mobmaster_kill"); initnpctimer; monster 'map_tnm3$,97,18, "Demonic Shade",2939,1, instance_npcname("#mobmaster_kill") + "::OnMobDead"; end; OnTimer1000: .@label$ = instance_npcname("#mobmaster_kill") + "::OnMobDead"; stopnpctimer; monster 'map_tnm3$,94,18, "Demonic Shade",2940,1, .@label$; monster 'map_tnm3$,96,18, "Demonic Shade",2940,1, .@label$; monster 'map_tnm3$,113,18, "Demonic Shade",2939,1, .@label$; monster 'map_tnm3$,119,22, "Demonic Shade",2939,1, .@label$; monster 'map_tnm3$,116,18, "Demonic Shade",2940,1, .@label$; monster 'map_tnm3$,116,18, "Demonic Shade",2941,1, .@label$; monster 'map_tnm3$,114,12, "Demonic Shade",2941,1, .@label$; monster 'map_tnm3$,116,21, "Demonic Shade",2940,1, .@label$; monster 'map_tnm3$,74,18, "Demonic Shade",2939,1, .@label$; monster 'map_tnm3$,75,12, "Demonic Shade",2940,1, .@label$; monster 'map_tnm3$,76,21, "Demonic Shade",2940,1, .@label$; monster 'map_tnm3$,69,16, "Demonic Shade",2941,1, .@label$; monster 'map_tnm3$,57,43, "Demonic Shade",2941,1, .@label$; monster 'map_tnm3$,58,44, "Demonic Shade",2939,1, .@label$; monster 'map_tnm3$,59,46, "Demonic Shade",2939,1, .@label$; monster 'map_tnm3$,60,48, "Demonic Shade",2941,1, .@label$; monster 'map_tnm3$,56,45, "Demonic Shade",2940,1, .@label$; monster 'map_tnm3$,57,44, "Demonic Shade",2940,1, .@label$; monster 'map_tnm3$,80,71, "Demonic Shade",2940,1, .@label$; monster 'map_tnm3$,59,77, "Demonic Shade",2940,1, .@label$; monster 'map_tnm3$,77,73, "Demonic Shade",2941,1, .@label$; monster 'map_tnm3$,77,72, "Demonic Shade",2940,1, .@label$; monster 'map_tnm3$,59,70, "Demonic Shade",2939,1, .@label$; monster 'map_tnm3$,81,66, "Demonic Shade",2941,1, .@label$; monster 'map_tnm3$,60,69, "Demonic Shade",2939,1, .@label$; monster 'map_tnm3$,57,73, "Demonic Shade",2940,1, .@label$; monster 'map_tnm3$,62,74, "Demonic Shade",2941,1, .@label$; monster 'map_tnm3$,78,67, "Demonic Shade",2939,1, .@label$; monster 'map_tnm3$,75,22, "Demonic Shade",2941,1, .@label$; monster 'map_tnm3$,81,69, "Demonic Shade",2939,1, .@label$; monster 'map_tnm3$,77,11, "Demonic Shade",2939,1, .@label$; monster 'map_tnm3$,58,74, "Demonic Shade",2941,1, .@label$; end; OnMobDead: end; } 1@tnm3,93,52,4 script Morocc Lord Knight#mocl 1_M_MOC_LORD,{ mes "[Morocc Lord Knight]"; mes "You were the rats who were sneaking around here!"; close; } 1@tnm3,97,48,3 script Loki#tnmloki01 4_M_ROKI2,{ if ('devil_tower == 12) { 'devil_tower = 13; donpcevent instance_npcname("#morroc_lord_talk") + "::OnStart"; end; } mes "[Loki]"; mes "You have no power here."; close; } 1@tnm3,94,51,4 duplicate(Officer Heim#heim0) Young Girl#tnm04 4_F_DST_CHILD 1@tnm2,1,1,0 script #morroc_lord_talk HIDDEN_WARP_NPC,{ end; OnStart: enablenpc instance_npcname("#morroc_lord_talk"); 'morroc$ = instance_npcname("Morocc Lord Knight#mocl"); 'loki$ = instance_npcname("Loki#tnmloki01"); npctalk "Morocc Lord Knight: So.. the rat was an assassin? You came here to die?", 'morroc$; initnpctimer; end; OnTimer3000: npctalk "Loki: What will you accomplish by waking the Masin in the Wall?", 'loki$; end; OnTimer6000: npctalk "Loki: My mission brought me here to bury it again.", 'loki$; end; OnTimer9000: npctalk "Morocc Lord Knight: Really.. the Assassin guild who I thought was on a mission to balance power in the world.", 'morroc$; end; OnTimer12000: npctalk "Morocc Lord Knight: Resurrecting the demon would bring balance! Even the mightiest become slaves to a god..", 'morroc$; end; OnTimer15000: npctalk "Morocc Lord Knight: The gods have their own plans. Do you know what the gods plan for you or I?", 'morroc$; end; OnTimer18000: npctalk "Morocc Lord Knight: They want this world to only be in their image. Where do we fit into that?!", 'morroc$; end; OnTimer20000: npctalk "Loki: Shut up!", 'loki$; end; OnTimer22000: npctalk "Loki: I do not care about gods or demons or the plans that they have made. The only thing that matters is kill you.", 'loki$; end; OnTimer25000: npctalk "Loki: That is my mission!", 'loki$; end; OnTimer28000: npctalk "Morocc Lord Knight: So all you want is to finish your damn mission?..", 'morroc$; end; OnTimer31000: npctalk "Loki: *Grins* Of course!!", 'loki$; specialeffect EF_BEGINSPELL3,AREA, 'loki$; end; OnTimer33000: npctalk "Loki: Mind blaster-!!!", 'loki$; end; OnTimer34000: enablenpc instance_npcname("Young Girl#tnm04"); npctalk "Young Girl: No..!! Don't hurt my Papa!!!", instance_npcname("Young Girl#tnm04"); specialeffect EF_HIT3,AREA, instance_npcname("Young Girl#tnm04"); end; OnTimer34500: specialeffect EF_HIT2,AREA, instance_npcname("Young Girl#tnm04"); end; OnTimer35500: specialeffect EF_ICECRASH,AREA, instance_npcname("Young Girl#tnm04"); end; OnTimer36500: npctalk "!!!", 'loki$; end; OnTimer38500: npctalk "Morocc Lord Knight: Oh no.. They should have sent better than you, Mr. Assassin, for this mission.", 'morroc$; end; OnTimer41500: npctalk "Young Girl: Something is wrong....", instance_npcname("Young Girl#tnm04"); end; OnTimer44500: npctalk "Young Girl: My Papa would never act this way.. Ugh..", instance_npcname("Young Girl#tnm04"); end; OnTimer47500: npctalk "Morocc Lord Knight: Human.. To do such a stupid thing.. a sacrifice.", 'morroc$; end; OnTimer50500: npctalk "Morocc Lord Knight: You know, the truth is, that it is useless.", 'morroc$; end; OnTimer53500: npctalk "Morocc Lord Knight: Gwuaaa hahahaha. You stupid humans I will kill you all as sacrifices for the demon!!", 'morroc$; specialeffect EF_COUPLECASTING,AREA, 'morroc$; specialeffect EF_VOLCANO,AREA, 'morroc$; end; OnTimer54500: npctalk "Loki:... tsk! useless....!", 'loki$; end; OnTimer55500: enablenpc instance_npcname("Loki#tnmloki02"); mapwarp 'map_tnm3$, 'map_tnm3$,136,62;// todo area 1x1 'devil_tower = 13; stopnpctimer; disablenpc instance_npcname("#morroc_lord_talk"); disablenpc instance_npcname("Morocc Lord Knight#mocl"); disablenpc instance_npcname("Loki#tnmloki01"); disablenpc instance_npcname("Young Girl#tnm04"); end; } 1@tnm3,137,65,3 script Loki#tnmloki02 4_M_ROKI2,{ if ('devil_tower != 13) end; if (getpartyleader(getcharid(1),2) != getcharid(0)) { mes "[Loki]"; mes "I am talking to your boss."; close; } if (getmercinfo(0) > 0) { mes "[Loki]"; mes "...embarrassing."; mes "You should ^4d4dffTerminate the mercenary contract^000000, if you want to help me on this mission."; close; } mes "[Loki]"; mes "Where did you come from?"; mes "I may need help here."; npctalk "Loki: Where did you come from? I may need help here.", instance_npcname("Loki#tnmloki02"); next; mes "[Loki]"; mes "The Lord Knight is no longer human. I have to send him to his eternity for his demonic followings."; npctalk "Loki: The Lord Knight is no longer human. I have to send him to his eternity.", instance_npcname("Loki#tnmloki02"); next; mes "[Loki]"; mes "^4d4dffThe ones who are infernally blessed by demons are invincible. We can sever the blessing with Mind Blaster.^000000"; npctalk "Loki: The ones who are infernally blessed by demons are invincible. We can sever the blessing with Mind Blaster.", instance_npcname("Loki#tnmloki02"); next; mes "[Loki]"; mes "You will be in charge of activating Mind Blaster."; npctalk "Loki: You will be in charge of activating Mind Blaster.", instance_npcname("Loki#tnmloki02"); next; disablenpc instance_npcname("Loki#tnmloki02"); mes "^4d4dffLoki, Guillotine Cross of the Assassin Guild, has joined your party."; mes "We have to get rid of the demonic Lord Knight by Mind Blasting him with Loki's skill.^000000"; 'devil_tower = 14; mercenary_create 2937,1800000;// M_LOKI mapannounce 'map_tnm3$, "Demon Worshipper's Voice: Such rubbish! Where did you hide yourself?", bc_map,0xFF00; initnpctimer; close; OnTimer500: monster 'map_tnm3$,93,52,"Evil Believer",2942,1, instance_npcname("#boss_skills_timer") + "::OnBossDead";// MM_EVIL_FANATICS 'boss_id = $@mobid[0]; end; OnTimer2000: mapannounce 'map_tnm3$, "Demon Worshipper's Voice: You will all be sacrificed to awaken Masin!!!", bc_map,0xFF00; end; OnTimer12000: donpcevent instance_npcname("#boss_skills_timer") + "::OnStart"; stopnpctimer; end; } 1@tnm3,1,1,0 script #boss_skills_timer HIDDEN_WARP_NPC,{ end; OnStart: enablenpc instance_npcname("#boss_skills_timer"); 'label$ = instance_npcname("#boss_skills_timer") + "::OnMobDead"; initnpctimer; end; OnTimer1000:// + form getunitdata 'boss_id, .@data; 'x_boss = .@data[UMOB_X]; 'y_boss = .@data[UMOB_Y]; monster 'map_tnm3$, 'x_boss, 'y_boss, "",2943,1, 'label$;// MM_ICE_MINE monster 'map_tnm3$, ('x_boss-5), 'y_boss, "",2943,1, 'label$; monster 'map_tnm3$, ('x_boss+5), 'y_boss, "",2943,1, 'label$; monster 'map_tnm3$, 'x_boss, ('y_boss-5), "",2943,1, 'label$; monster 'map_tnm3$, 'x_boss, ('y_boss+5), "",2943,1, 'label$; end; OnTimer3000: monster 'map_tnm3$, ('x_boss-10), 'y_boss, "",2943,1, 'label$;// MM_ICE_MINE monster 'map_tnm3$, ('x_boss+10), 'y_boss, "",2943,1, 'label$; monster 'map_tnm3$, 'x_boss, ('y_boss-10), "",2943,1, 'label$; monster 'map_tnm3$, 'x_boss, ('y_boss+10), "",2943,1, 'label$; end; OnTimer6000: killmonster 'map_tnm3$, 'label$; end; OnTimer21000:// X form getunitdata 'boss_id, .@data; 'x_boss = .@data[UMOB_X]; 'y_boss = .@data[UMOB_Y]; monster 'map_tnm3$, ('x_boss+3), ('y_boss+3), "",2960,1, 'label$;// MM_FLAMECROSS monster 'map_tnm3$, ('x_boss+3), ('y_boss-3), "",2960,1, 'label$; monster 'map_tnm3$, ('x_boss-3), ('y_boss+3), "",2960,1, 'label$; monster 'map_tnm3$, ('x_boss-3), ('y_boss-3), "",2960,1, 'label$; end; OnTimer21350: monster 'map_tnm3$, ('x_boss+6), ('y_boss+6), "",2960,1, 'label$;// MM_FLAMECROSS monster 'map_tnm3$, ('x_boss+6), ('y_boss-6), "",2960,1, 'label$; monster 'map_tnm3$, ('x_boss-6), ('y_boss+6), "",2960,1, 'label$; monster 'map_tnm3$, ('x_boss-6), ('y_boss-6), "",2960,1, 'label$; end; OnTimer21700: monster 'map_tnm3$, ('x_boss+9), ('y_boss+9), "",2960,1, 'label$;// MM_FLAMECROSS monster 'map_tnm3$, ('x_boss+9), ('y_boss-9), "",2960,1, 'label$; monster 'map_tnm3$, ('x_boss-9), ('y_boss+9), "",2960,1, 'label$; monster 'map_tnm3$, ('x_boss-9), ('y_boss-9), "",2960,1, 'label$; end; OnTimer22050: monster 'map_tnm3$, ('x_boss+13), ('y_boss+13), "",2960,1, 'label$;// MM_FLAMECROSS monster 'map_tnm3$, ('x_boss+13), ('y_boss-13), "",2960,1, 'label$; monster 'map_tnm3$, ('x_boss-13), ('y_boss+13), "",2960,1, 'label$; monster 'map_tnm3$, ('x_boss-13), ('y_boss-13), "",2960,1, 'label$; end; OnTimer30000: killmonster 'map_tnm3$, 'label$; end; OnTimer51000:// X form getunitdata 'boss_id, .@data; 'x_boss = .@data[UMOB_X]; 'y_boss = .@data[UMOB_Y]; monster 'map_tnm3$, 'x_boss, 'y_boss, "",2943,1, 'label$;// MM_ICE_MINE monster 'map_tnm3$, ('x_boss+5), ('y_boss+5), "",2943,1, 'label$; monster 'map_tnm3$, ('x_boss-5), ('y_boss-5), "",2943,1, 'label$; monster 'map_tnm3$, ('x_boss+10), ('y_boss+10), "",2943,1, 'label$; monster 'map_tnm3$, ('x_boss-10), ('y_boss-10), "",2943,1, 'label$; end; OnTimer53000: monster 'map_tnm3$, ('x_boss-5), ('y_boss+5), "",2943,1, 'label$;// MM_ICE_MINE monster 'map_tnm3$, ('x_boss+5), ('y_boss-5), "",2943,1, 'label$; monster 'map_tnm3$, ('x_boss-10), ('y_boss+10), "",2943,1, 'label$; monster 'map_tnm3$, ('x_boss+10), ('y_boss-10), "",2943,1, 'label$; end; OnTimer56000: killmonster 'map_tnm3$, 'label$; end; OnTimer81000:// S form getunitdata 'boss_id, .@data; 'x_boss = .@data[UMOB_X]; 'y_boss = .@data[UMOB_Y]; monster 'map_tnm3$, ('x_boss-2), ('y_boss+5), "",2960,1, 'label$;// MM_FLAMECROSS end; OnTimer81300: monster 'map_tnm3$, ('x_boss+4), ('y_boss+8), "",2960,1, 'label$; end; OnTimer81600: monster 'map_tnm3$, ('x_boss+10), ('y_boss+2), "",2960,1, 'label$; end; OnTimer82000: monster 'map_tnm3$, ('x_boss+10), ('y_boss-1), "",2960,1, 'label$; end; OnTimer82300: monster 'map_tnm3$, ('x_boss+7), ('y_boss-7), "",2960,1, 'label$; end; OnTimer82600: monster 'map_tnm3$, ('x_boss+1), ('y_boss-10), "",2960,1, 'label$; end; OnTimer83000: monster 'map_tnm3$, ('x_boss-11), ('y_boss-1), "",2960,1, 'label$; end; OnTimer83300: monster 'map_tnm3$, ('x_boss-11), ('y_boss+5), "",2960,1, 'label$; end; OnTimer83600: monster 'map_tnm3$, ('x_boss-8), ('y_boss+11), "",2960,1, 'label$; end; OnTimer84000: monster 'map_tnm3$, ('x_boss-2), ('y_boss+17), "",2960,1, 'label$; end; OnTimer84300: monster 'map_tnm3$, ('x_boss+7), ('y_boss+20), "",2960,1, 'label$; end; OnTimer90000: killmonster 'map_tnm3$, 'label$; initnpctimer; end; OnMobDead: end; OnBossDead: stopnpctimer; killmonster 'map_tnm3$, 'label$; 'x_boss = 'y_boss = 'boss_id = 0; 'label$ = ""; mapannounce 'map_tnm3$, "Demon Worshipper's Voice: NO it is impossible. It cannot be.. This force.. power.. you.. may..be you are..", bc_map,0xFF0000; sleep2 1000; warpparty 'map_tnm3$,71,70, getcharid(1), 'map_tnm3$,1,1; enablenpc instance_npcname("Loki#tnmloki03"); enablenpc instance_npcname("box#tnmbosang"); disablenpc instance_npcname("#boss_skills_timer"); 'devil_tower = 15; end; } 1@tnm3,69,70,3 script box#tnmbosang 4_TREASURE_BOX,{ if ('devil_tower != 15) end; specialeffect EF_COIN; disablenpc instance_npcname("box#tnmbosang"); makeitem 7293,1, 'map_tnm3$, (69 + rand(-5,5)), (70 + rand(-5,5)); // Rose Quartz makeitem 749,1, 'map_tnm3$, (69 + rand(-5,5)), (70 + rand(-5,5)); // Frozen Rose makeitem 7511,1, 'map_tnm3$, (69 + rand(-5,5)), (70 + rand(-5,5)); // Rune of Darkness if (rand(100) < 75) makeitem 616,1, 'map_tnm3$, (69 + rand(-5,5)), (70 + rand(-5,5)); // Old Card Album if (rand(100) < 50) makeitem 748,1, 'map_tnm3$, (69 + rand(-5,5)), (70 + rand(-5,5)); // Witherless_Rose setarray .@item_id_list[0], 1671, // Devil_Won_Staff 13094, // Devil_Pierced_Dagger 16027, // Hammer_Of_Evil_Slayer 18120, // Bow_Of_Evil_Slayer 21010, // Tw_Sword_Of_Evil_Slayer 28001; // Katar_Of_Evil_Slayer setarray .@bonus_list1[0], 4800, // SP50 4811, // Fighting_Spirit1 4810, // Fighting_Spirit2 4809, // Fighting_Spirit3 4808, // Fighting_Spirit4 4820, // Fighting_Spirit5 4821, // Fighting_Spirit6 4815, // Spell1 4814, // Spell2 4813, // Spell3 4812, // Spell4 4786; // Mdef2 setarray .@bonus_list2[0], 4815, // Spell1 4814, // Spell2 4813, // Spell3 4812, // Spell4 4826, // Spell5 4811, // Fighting_Spirit1 4810, // Fighting_Spirit2 4809, // Fighting_Spirit3 4808, // Fighting_Spirit4 4820, // Fighting_Spirit5 4786; // Mdef2 setarray .@bonus_list3[0], 4815, // Spell1 4814, // Spell2 4813, // Spell3 4812, // Spell4 4811, // Fighting_Spirit1 4810, // Fighting_Spirit2 4809, // Fighting_Spirit3 4808, // Fighting_Spirit4 4820, // Fighting_Spirit5 4821, // Fighting_Spirit6 4791, // DEF+3 4786; // Mdef2 .@item_id = .@item_id_list[ rand( getarraysize(.@item_id_list) ) ]; .@refine = rand(1,6); .@bonus1 = .@bonus_list1[ rand( getarraysize(.@bonus_list1) ) ]; .@bonus2 = .@bonus_list1[ rand( getarraysize(.@bonus_list2) ) ]; .@bonus3 = .@bonus_list1[ rand( getarraysize(.@bonus_list3) ) ]; makeitem2 .@item_id,1, 'map_tnm3$, (69 + rand(-5,5)), (70 + rand(-5,5)), 0, .@refine,0, 0,.@bonus1,.@bonus2,.@bonus3; end; } //1@tnm3,69,72,3 script Loki#tnmloki03 4_M_ROKI2,5,5,{ 1@tnm3,69,72,3 script Loki#tnmloki03 4_M_ROKI2,{ if ('devil_tower != 15) end; if (isbegin_quest(7576) == 0) { mes "[Loki]"; mes ".. annoying"; mes "The demon was destroyed before the resurrection ceremony was completed."; mes "Things will be fine for awhile."; setquest 7576;// Morocc castle seal next; mes "I have gained unexpected information during my exploration of the Tower."; next; mes "[Loki]"; mes "I will remain apart from my conscience for a bit longer"; mes "someday I'll let myself feel again, and today will occupy my thoughts.."; close; } mes "[Loki]"; mes "Interesting.. there is a daughter.."; mes "What should be done about it?"; mes "I am not sure of what my next move is to be.."; next; mes "[Loki]"; mes "But no matter, you obviously shouldn't be here, now."; mes "Will stay here any longer?"; mes "I can send you back where and when you belong."; next; if (select( "Get out of here.", "Take a look around." ) == 2) { mes "[Loki]"; mes "It is unwise to linger where time is distorted."; close; } mes "[Loki]"; mes "Perhaps, our missions will ally us again in the future.."; close2; warp "dali02",134,112; end; OnInstanceInit: 'heal_count = 0; 'devil_tower = 0; 'mob_count = 0; 'shade = 0; 'map_tnm1$ = instance_mapname("1@tnm1"); 'map_tnm2$ = instance_mapname("1@tnm2"); 'map_tnm3$ = instance_mapname("1@tnm3"); // Entrance disablenpc instance_npcname("Officer Heim#heim"); disablenpc instance_npcname("Healer Fama#feima"); for ( .@i = 1; .@i < 8; .@i++ ) disablenpc instance_npcname( "Injured Soldier#" + .@i ); disablenpc instance_npcname("Lucile#tnm01"); disablenpc instance_npcname("Magic Swordman#tnm01"); disablenpc instance_npcname("Assassin Huey#tnm01"); disablenpc instance_npcname("Assassin Louie#tnm01"); disablenpc instance_npcname("Assassin Dewey#tnm01"); // Stairs tnm1 disablenpc instance_npcname("#tnm1stepmob"); disablenpc instance_npcname("Assassin Louie#tnm02"); // Stairs 2 tnm1 disablenpc instance_npcname("Lucile#tnm02"); disablenpc instance_npcname("Huey#hui02"); // Morocc - Thanatos Battle disablenpc instance_npcname("Magic Swordman#tnm02"); disablenpc instance_npcname("Demon Morocc#tnm01"); disablenpc instance_npcname("Lucile#tnm03"); disablenpc instance_npcname("Lucile#tnm04"); disablenpc instance_npcname("#devil_flamecross"); disablenpc instance_npcname("#devil_seal_timer"); disablenpc instance_npcname("#devil_seal_spawn_global"); for ( .@i = 1; .@i < 6; .@i++ ) { disablenpc instance_npcname("devil_seal_spawn#" + .@i); disablenpc instance_npcname("devil_seal_reach_center#" + .@i); } disablenpc instance_npcname("#devil_seal_dead"); 'demon$ = 'thanatos$ = ""; 'round[0] = 'round[1] = 'round[2] = 'round[3] = 'round[4] = 0; 'seal_id[0] = 'seal_id[1] = 'seal_id[2] = 'seal_id[3] = 'seal_id[4] = 0; 'seal_hp[0] = 'seal_hp[1] = 'seal_hp[2] = 'seal_hp[3] = 'seal_hp[4] = 0; 'seal_dead[0] = 'seal_dead[1] = 'seal_dead[2] = 'seal_dead[3] = 'seal_dead[4] = 0; deletearray 'coord_seal_1[0],14; deletearray 'coord_seal_2[0],14; deletearray 'coord_seal_3[0],14; deletearray 'coord_seal_4[0],14; deletearray 'coord_seal_5[0],14; // tnm3 Stairs 1 disablenpc instance_npcname("#tnm3event01"); disablenpc instance_npcname("Young Girl#tnm01"); disablenpc instance_npcname("#tnm3gate01"); // tnm3 Stairs 2 disablenpc instance_npcname("#tnm3event02ect"); disablenpc instance_npcname("Young Girl#tnm02"); disablenpc instance_npcname("Young Girl#tnm03"); disablenpc instance_npcname("#tnm3gate02"); // tnm3 Stairs 3 disablenpc instance_npcname("Evil Shadow#tnm3mob01"); disablenpc instance_npcname("Evil Shadow kill#tnm3mob01"); disablenpc instance_npcname("#tnm3gate03"); // Demonic Shade (Boss room) disablenpc instance_npcname("Demonic Shade#mobmaster"); disablenpc instance_npcname("#mobmaster_kill"); // Boss disablenpc instance_npcname("Morocc Lord Knight#mocl"); disablenpc instance_npcname("#morroc_lord_talk"); disablenpc instance_npcname("Loki#tnmloki01"); disablenpc instance_npcname("Young Girl#tnm04"); disablenpc instance_npcname("Loki#tnmloki02"); disablenpc instance_npcname("#boss_skills_timer"); 'x_boss = 'y_boss = 'boss_id = 0; 'label$ = ""; // Final disablenpc instance_npcname("Loki#tnmloki03"); disablenpc instance_npcname("box#tnmbosang"); end; } 1. After I click on any npc the dialog appears above their head (normal behaviour), but the text window also appears (in blank) with no close button or anything, it just sits there After the npc finishes talking, the close button appears and you can continue Does it have something to do with 'close3' function? I added it already in Global_Functions.txt 2. Second one is that my mercenary doesn't have any skill to use and it won't disappear after the instance finishes (after killing mvp) Added this line in mercenary_db.txt 2937,M_LOKI,Loki's Shadow,145,1215600,1,2,1835,2279,15,89,76,66,90,55,189,22,10,12,1,7,20,175,800,750,300 Not sure where to look :/
  4. server side configs info: for functional purposes, battle.c is the same as battle.cpp but in windows platform, c means the language which is c++ or cpp in linux open battle.c with your text editor, use 'search in this file' button and put 'hair' or 'clothes'. you'll see this: (sometimes the number of lines between .c and .cpp files vary) { "min_hair_style", &battle_config.min_hair_style, 0, 0, INT_MAX, }, { "max_hair_style", &battle_config.max_hair_style, 23, 0, INT_MAX, }, { "min_hair_color", &battle_config.min_hair_color, 0, 0, INT_MAX, }, { "max_hair_color", &battle_config.max_hair_color, 9, 0, INT_MAX, }, { "min_cloth_color", &battle_config.min_cloth_color, 0, 0, INT_MAX, }, { "max_cloth_color", &battle_config.max_cloth_color, 4, 0, INT_MAX, }, pretty obvious what you need to change, then recompile client side configs Assuming rAthena.grf is your main grf file. Correct me? And if you're asking if you need to add these palettes to your .grf.. then you need to read more topics maybe these topics will help you https://github.com/rathena/rathena/wiki/Palettes https://rathena.org/board/topic/106202-doram-class-palettes/
  5. Hi Did you change the values in source? /trunk/src/map/battle.cpp line 8209, 8211, 8213? (remember to recompile if you're doing this)
  6. Hi guys I'm trying to put baby summoner and baby expanded classes in my server, I'm using rA and 20160203 exe I read you need 20161207 or above to have this. (I guess without having the need of 'add a custom job' procedure) My question is, how much of this information is true? 20160203 is doing pretty well for me so far, but does anyone have a stable 20161207 or above Exe for me to test? Thank you Pd. I've tried all of these with no luck https://rathena.org/board/topic/111906-2017-05-17aragexere/ https://rathena.org/board/topic/111967-2017-06-14bragexere-client/ https://rathena.org/board/topic/110452-2017-01-25aragexere/ https://rathena.org/board/topic/109395-2016-12-28aragexere/
  7. Hi guys I'm implementing this instance in my server. First of all, thank you @Alayne for sharing! I'm getting 2 problems with these scripts Issue number 1. I added this to my /db/re/item_db.txt 7641,Medical_Cure_Box,Medical Cure Box,3,10,,0,,,,,,,,,,,,,{},{},{} 25055,Medical_Cure_Box,Empty Box,3,10,,0,,,,,,,,,,,,,{},{},{} And realised that the first item (id. 7641) is already there so I only added the second one Then restarted and a warning shows up in the console [Warning]: itemdb_parse_dbrow: Duplicate item name for "Medical_Cure_Box" So.. I simply renamed Medical_cure_box to Medical_cure_box_2 .. The warning message is gone but my first question is, Does the aegisname matter? Issue number 2. I warp to dali and talk with Erika and Samuel, quest log pops up in the down-right corner, but No quest is added to the menu. At this precise moment I get this error in the console [Error]: quest_delete: Character 150005 doesn't have quest 13994. [Debug]: Source (NPC): Portal Dimensional#tnm at dali (99,148) [Debug]: Function: erasequest (1 parameter): [Debug]: Data: number value=13994 After this all breaks up Any suggestions? Thank you very much
  8. Hi It works perfectly on rAthena pretty usefull command I must say If I may, how would you add 'All element' resistant? i.e. Nydhoggur's shadow garb { bonus2 bSubEle,Ele_All,7; bonus bMaxSP,(BaseLevel/3)+(getrefine()*10); bonus2 bSPDrainRate,10,1; bonus bMdef,3; },{},{}
  9. yea it works now apparently that guide is severely outdated thank you!
  10. Hi guys I'm trying to change the minimum number of players that a battleground needs to start. This is the script npc/battleground/tierra/tierra01.txt //===== rAthena Script ======================================= //= BattleGround System - Tierra Gorge //===== By: ================================================== //= L0ne_W0lf //===== Current Version: ===================================== //= 1.6 //===== Compatible With: ===================================== //= rAthena Project //===== Description: ========================================= //= [Official Conversion] //= Tierra Gorge Battleground. //= - Winning Team: 3 badges (5 if VIP) //= - Losing Team: 1 badge (3 if VIP) //===== Additional Comments: ================================= //= 1.0 First Version. //= 1.1 Corrected setwalls for barricades. [L0ne_W0lf] //= 1.2 Updated 'waitingroom' to support required zeny/lvl. [Kisuka] //= 1.3 Removed MaxLvl check in waitingrooms. //= 1.4 Label standardization. [Euphy] //= 1.5 Added GM management function. [Euphy] //= 1.6 Added VIP features and created a reward function. [Euphy] //============================================================ // Waiting Room NPCs //============================================================ bat_room,57,227,5 script Lieutenant Kalos 418,{ end; OnInit: waitingroom "Battle Station",11,"start#bat_a01::OnReadyCheck",1,0,80; end; OnEnterBG: set $@TierraBG1_id1, waitingroom2bg("bat_a01",50,374,"start#bat_a01::OnGuillaumeQuit",""); end; } bat_room,58,204,1 script Lieutenant Eyor 414,{ end; OnInit: waitingroom "Battle Station",11,"start#bat_a01::OnReadyCheck",1,0,80; end; OnEnterBG: set $@TierraBG1_id2, waitingroom2bg("bat_a01",42,16,"start#bat_a01::OnCroixQuit",""); end; } bat_room,1,151,3 script #bat_a01_timer 844,{ end; OnInit: OnEnable: initnpctimer; end; OnStop: stopnpctimer; end; OnTimer1000: stopnpctimer; initnpctimer; set .@chk_bat_a01,getmapusers("bat_a01"); if (.@chk_bat_a01 < 1) { set $@TierraBG1,0; set $@TierraBG1_Victory, 0; if( $@TierraBG1_id1 ) { bg_destroy $@TierraBG1_id1; set $@TierraBG1_id1, 0; } if( $@TierraBG1_id2 ) { bg_destroy $@TierraBG1_id2; set $@TierraBG1_id2, 0; } donpcevent "start#bat_a01::OnReadyCheck"; } end; } bat_a01,352,342,0 script #bat_a01_quest_a -1,5,5,{ end; OnTouch: if (checkquest(2069) < 0) setquest 2069; end; } bat_a01,353,52,0 script #bat_a01_quest_b -1,5,5,{ end; OnTouch: if (checkquest(2069) < 0) setquest 2069; end; } bat_room,57,220,0 warp back_bgrooma01a 1,1,bat_room,154,150 bat_room,57,211,0 warp back_bgrooma01b 1,1,bat_room,154,150 // Tierra Gorge Battleground Engine //============================================================ bat_a01,15,15,3 script start#bat_a01 844,{ OnInit: mapwarp "bat_a01","bat_room",154,150; end; OnEnable: donpcevent "OBJ#bat_a01_a::OnKill"; donpcevent "OBJ#bat_a01_a::OnEnable"; donpcevent "OBJ#bat_a01_b::OnKill"; donpcevent "OBJ#bat_a01_b::OnEnable"; donpcevent "barricade#bat_a01_a::OnKill"; donpcevent "barricade#bat_a01_a::OnEnable"; donpcevent "barricade#bat_a01_b::OnKill"; donpcevent "barricade#bat_a01_b::OnEnable"; donpcevent "OBJ#bat_a01_n::OnKill"; donpcevent "OBJ#bat_a01_n::OnEnable"; donpcevent "NOBJ_mob#bat_a01_a::OnKill"; donpcevent "NOBJ_mob#bat_a01_b::OnKill"; donpcevent "Battle Therapist#a01_a::OnEnable"; donpcevent "Battle Therapist#a01_b::OnEnable"; donpcevent "countdown#bat_a01::OnEnable"; disablenpc "Guillaume Blacksmith#a01"; disablenpc "Croix Blacksmith#bat_a01"; disablenpc "Guillaume Vintenar#a01_a"; disablenpc "Croix Vintenar#a01_b"; end; OnGuillaumeQuit: OnCroixQuit: bg_leave; end; OnReadyCheck: if( $@TierraBG1 ) end; set .@Guillaume, getwaitingroomstate(0,"Lieutenant Kalos"); set .@Croix, getwaitingroomstate(0,"Lieutenant Eyor"); if( !.@Guillaume && !.@Croix ) { donpcevent "#bat_a01_timer::OnStop"; end; } else if( .@Guillaume < 10 || .@Croix < 10 ) end; set $@TierraBG1,1; donpcevent "Lieutenant Kalos::OnEnterBG"; donpcevent "Lieutenant Eyor::OnEnterBG"; donpcevent "start#bat_a01::OnEnable"; bg_warp $@TierraBG1_id1,"bat_a01",352,342; bg_warp $@TierraBG1_id2,"bat_a01",353,52; initnpctimer; end; OnTimer10000: stopnpctimer; donpcevent "#bat_a01_timer::OnEnable"; end; } bat_a01,15,16,3 script OBJ#bat_a01_a 844,{ OnEnable: bg_monster $@TierraBG1_id1,"bat_a01",177,345,"Food Storage",1909,"OBJ#bat_a01_a::OnMyMobDead"; end; OnKill: killmonster "bat_a01","OBJ#bat_a01_a::OnMyMobDead"; end; OnMyMobDead: if (mobcount("bat_a01","OBJ#bat_a01_a::OnMyMobDead") < 1) { donpcevent "Battle Therapist#a01_a::OnStop"; donpcevent "Battle Therapist#a01_b::OnStop"; set $@TierraBG1_Victory, 2; enablenpc "Guillaume Vintenar#a01_a"; enablenpc "Croix Vintenar#a01_b"; mapannounce "bat_a01", "Croix Vintenar Swandery: We destroyed Guillaume's Food Storage. We won that! Wow!",bc_map,"0xFFCE00"; bg_warp $@TierraBG1_id1,"bat_a01",50,374; bg_warp $@TierraBG1_id2,"bat_a01",42,16; } end; } bat_a01,15,17,3 script OBJ#bat_a01_b 844,{ OnEnable: bg_monster $@TierraBG1_id2,"bat_a01",167,50,"Food Depot",1910,"OBJ#bat_a01_b::OnMyMobDead"; end; OnKill: killmonster "bat_a01","OBJ#bat_a01_b::OnMyMobDead"; end; OnMyMobDead: if (mobcount("bat_a01","OBJ#bat_a01_b::OnMyMobDead") < 1) { donpcevent "Battle Therapist#a01_a::OnStop"; donpcevent "Battle Therapist#a01_b::OnStop"; set $@TierraBG1_Victory, 1; enablenpc "Guillaume Vintenar#a01_a"; enablenpc "Croix Vintenar#a01_b"; mapannounce "bat_a01", "Guillaume Vintenar Axl Rose : We destroyed Croix's Food Storage. We won that! Wow!",bc_map,"0xFFCE00"; bg_warp $@TierraBG1_id1,"bat_a01",50,374; bg_warp $@TierraBG1_id2,"bat_a01",42,16; } end; } bat_a01,15,18,3 script barricade#bat_a01_a 844,{ OnEnable: for( set .@i,185; .@i < 202; set .@i,.@i+1 ) bg_monster $@TierraBG1_id1,"bat_a01",.@i,266,"Barricade",1906,"barricade#bat_a01_a::OnMyMobDead"; setwall "bat_a01",186,266,16,6,1,"bat_a01_c1"; end; OnKill: killmonster "bat_a01","barricade#bat_a01_a::OnMyMobDead"; delwall "bat_a01_c1"; end; OnMyMobDead: if (mobcount("bat_a01","barricade#bat_a01_a::OnMyMobDead") < 17) { killmonster "bat_a01","barricade#bat_a01_a::OnMyMobDead"; delwall "bat_a01_c1"; enablenpc "Guillaume Blacksmith#a01"; mapannounce "bat_a01", "Guillaume Vintenar Axl Rose : The Barricade in the valley has been destroyed! Where's the Blacksmith? We need to rebuild the Barricade!",bc_map,"0xFFCE00"; } end; } bat_a01,15,19,3 script barricade#bat_a01_b 844,{ OnEnable: for( set .@i,169; .@i < 186; set .@i,.@i+1 ) bg_monster $@TierraBG1_id2,"bat_a01",.@i,129,"Barricade",1906,"barricade#bat_a01_b::OnMyMobDead"; setwall "bat_a01",170,129,16,6,1,"bat_a01_g1"; end; OnKill: killmonster "bat_a01","barricade#bat_a01_b::OnMyMobDead"; delwall "bat_a01_g1"; end; OnMyMobDead: if (mobcount("bat_a01","barricade#bat_a01_b::OnMyMobDead") < 17) { killmonster "bat_a01","barricade#bat_a01_b::OnMyMobDead"; delwall "bat_a01_g1"; enablenpc "Croix Blacksmith#bat_a01"; mapannounce "bat_a01", "Croix Vintenar Swandery : The Barricade in the valley has been destroyed! Where's the Blacksmith? We need to rebuild the Barricade!",bc_map,"0xFFCE00"; } end; } bat_a01,15,20,3 script OBJ#bat_a01_n 844,{ OnEnable: monster "bat_a01",273,203,"Neutrality Flag",1911,1,"OBJ#bat_a01_n::OnMyMobDead"; end; OnKill: killmonster "bat_a01","OBJ#bat_a01_n::OnMyMobDead"; end; OnMyMobDead: if (mobcount("bat_a01","OBJ#bat_a01_n::OnMyMobDead") < 17) { bg_team_setxy getcharid(4),56,212; if (getcharid(4) == $@TierraBG1_id1) { donpcevent "NOBJ_mob#bat_a01_a::OnEnable"; mapannounce "bat_a01", "Guillaume captured a Neutrality Flag, so they have an advantage.",bc_map,"0xFFCE00"; } else { donpcevent "NOBJ_mob#bat_a01_b::OnEnable"; mapannounce "bat_a01", "Croix captured a Neutrality Flag, so they have an advantage.",bc_map,"0xFFCE00"; } } end; } bat_a01,15,21,3 script NOBJ_mob#bat_a01_a 844,{ OnEnable: donpcevent "NOBJ_mob#bat_a01_b::OnKill"; bg_monster $@TierraBG1_id1,"bat_a01",272,204,"Guillaume Camp Guardian",1949,"NOBJ_mob#bat_a01_a::OnMyMobDead"; bg_monster $@TierraBG1_id1,"bat_a01",272,213,"Guillaume Camp Guardian",1949,"NOBJ_mob#bat_a01_a::OnMyMobDead"; bg_monster $@TierraBG1_id1,"bat_a01",273,197,"Guillaume Camp Guardian",1950,"NOBJ_mob#bat_a01_a::OnMyMobDead"; end; OnKill: killmonster "bat_a01","NOBJ_mob#bat_a01_a::OnMyMobDead"; end; OnMyMobDead: end; } bat_a01,15,22,3 script NOBJ_mob#bat_a01_b 844,{ OnEnable: donpcevent "NOBJ_mob#bat_a01_a::OnKill"; bg_monster $@TierraBG1_id2,"bat_a01",272,204,"Croix Camp Guardian",1949,"NOBJ_mob#bat_a01_a::OnMyMobDead"; bg_monster $@TierraBG1_id2,"bat_a01",272,213,"Croix Camp Guardian",1949,"NOBJ_mob#bat_a01_a::OnMyMobDead"; bg_monster $@TierraBG1_id2,"bat_a01",273,197,"Croix Camp Guardian",1950,"NOBJ_mob#bat_a01_a::OnMyMobDead"; end; OnKill: killmonster "bat_a01","NOBJ_mob#bat_a01_b::OnMyMobDead"; end; OnMyMobDead: end; } bat_a01,185,270,1 script Guillaume Blacksmith#a01 851,{ if (getcharid(4) == $@TierraBG1_id1) { mes "[Guillaume Blacksmith]"; mes "We are in urgency! The Barricade has been destroyed!"; mes "We can repair the Barricade with ^3131FF50 Stones, 3 Sinew of Bear, 500 Metal Fragments, 30 Rough Elunium and 100 Gold.^000000"; mes "We have it all except for the 50 Stones!"; next; switch(select("Repair.:Leave it.")) { case 1: if (countitem(7049) > 49) { mes "[Guillaume Blacksmith]"; mes "You brought enough stones! Let's go and repair."; next; mes ".."; next; mes "...."; next; mes "......"; next; mes "........"; next; mes ".........."; next; mes "............"; next; mes ".............."; next; mes "[Guillaume Blacksmith]"; mes "Combine Stones and Gold in the proper percentage."; next; mes "[Guillaume Blacksmith]"; mes "Combine Stones and Gold in the proper percentage and shape the Barricade."; next; mes "[Guillaume Blacksmith]"; mes "Combine Stones and Gold in the proper percentage and shape the Barricade, then add Rough Elunium to make it stronger."; next; mes "[Guillaume Blacksmith]"; mes "Combine Stones and Gold in the proper percentage and shape the Barricade, then add Rough Elunium to make it stronger. Now decorate with Metal Fragments."; next; mes "[Guillaume Blacksmith]"; mes "Combine Stones and Gold in the proper percentage and shape the Barricade, then add Rough Elunium to make it stronger. Decorate with Metal Fragments, and plait stones with Sinew of Bear!"; next; mes ".............."; mes ".............."; mes ".............."; mes ".............."; mes ".............."; next; specialeffect EF_REPAIRWEAPON; mes "[Guillaume Blacksmith]"; mes "Wow! It's done."; mes "We are relieved."; delitem 7049,50; //Stone donpcevent "barricade#bat_a01_a::OnEnable"; close2; disablenpc "Guillaume Blacksmith#a01"; end; } else { mes "[Guillaume Blacksmith]"; mes "You don't have enough Stones!"; next; mes "[Guillaume Blacksmith]"; mes "^3131FFWe need 50 Stones.^000000"; mes "We are busy, so please hurry."; close; } case 2: mes "[Guillaume Blacksmith]"; mes "There are enemies coming! Let's evacuate from here!"; close; } } else { mes "[Guillaume Blacksmith]"; mes "There the enemy is coming!"; close; } OnInit: disablenpc "Guillaume Blacksmith#a01"; end; } bat_a01,170,121,5 script Croix Blacksmith#bat_a01 851,{ if (getcharid(4) == $@TierraBG1_id2) { mes "[Croix Blacksmith]"; mes "We are in urgency! The Barricade has been destroyed!"; mes "We can repair the Barricade with ^3131FF50 Stones, 3 Sinew of Bear, 500 Metal Fragments, 30 Rough Elunium and 100 Gold.^000000"; mes "We have it all except for the 50 Stones!"; next; switch(select("Repair.:Leave it.")) { case 1: if (countitem(7049) > 49) { mes "[Croix Blacksmith]"; mes "You brought enough stones! Let's go and repair."; next; mes ".."; next; mes "...."; next; mes "......"; next; mes "........"; next; mes ".........."; next; mes "............"; next; mes ".............."; next; mes "[Croix Blacksmith]"; mes "Combine Stones and Gold in the proper percentage."; next; mes "[Croix Blacksmith]"; mes "Combine Stones and Gold in the proper percentage and shape the Barricade."; next; mes "[Croix Blacksmith]"; mes "Combine Stones and Gold in the proper percentage and shape the Barricade, then add Rough Elunium to make it stronger."; next; mes "[Croix Blacksmith]"; mes "Combine Stones and Gold in the proper percentage and shape the Barricade, then add Rough Elunium to make it stronger. Now decorate with Metal Fragments."; next; mes "[Croix Blacksmith]"; mes "Combine Stones and Gold in the proper percentage and shape the Barricade, then add Rough Elunium to make it stronger. Decorate with Metal Fragments, and plait stones with Sinew of Bear!"; next; mes ".............."; mes ".............."; mes ".............."; mes ".............."; mes ".............."; next; specialeffect EF_REPAIRWEAPON; mes "[Croix Blacksmith]"; mes "Wow! It's done."; mes "We are relieved."; delitem 7049,50; //Stone donpcevent "barricade#bat_a01_b::OnEnable"; close2; disablenpc "Croix Blacksmith#bat_a01"; end; } else { mes "[Croix Blacksmith]"; mes "You don't have enough Stones!"; next; mes "[Croix Blacksmith]"; mes "^3131FFWe need 50 Stone.^000000"; mes "We are busy, so please hurry."; close; } case 2: mes "[Croix Blacksmith]"; mes "There are enemies coming! Let's evacuate from here!"; close; } } else { mes "[Croix Blacksmith]"; mes "There, the enemy is coming!"; close; } OnInit: disablenpc "Croix Blacksmith#bat_a01"; end; } bat_a01,53,377,3 script Battle Therapist#a01_a 95,{ specialeffect2 EF_HEAL; mes "[Battle Therapist]"; mes "Just close your eyes,"; mes "and take a deep breath."; mes "You can be free from pain."; close; end; OnInit: initnpctimer; end; OnEnable: stopnpctimer; initnpctimer; enablenpc "Battle Therapist#a01_a"; end; OnStop: disablenpc "bat_a01_rp1_a_warp"; disablenpc "Battle Therapist#a01_a"; stopnpctimer; end; OnTimer25000: specialeffect EF_SANCTUARY; enablenpc "bat_a01_rp1_a_warp"; end; OnTimer26000: disablenpc "bat_a01_rp1_a_warp"; end; OnTimer26500: donpcevent "Battle Therapist#a01_a::OnEnable"; end; } bat_a01,51,375,0 script bat_a01_rp1_a_warp -1,10,10,{ OnInit: disablenpc "bat_a01_rp1_a_warp"; end; OnTouch_: percentheal 100,100; warp "bat_a01",352,342; end; } bat_a01,45,19,3 script Battle Therapist#a01_b 95,{ specialeffect2 EF_HEAL; mes "[Battle Therapist]"; mes "Just close your eyes,"; mes "and take a deep breath."; mes "You can be free from pain."; close; end; OnInit: initnpctimer; end; OnEnable: stopnpctimer; initnpctimer; enablenpc "Battle Therapist#a01_b"; end; OnStop: disablenpc "bat_a01_rp1_b_warp"; disablenpc "Battle Therapist#a01_b"; stopnpctimer; end; OnTimer25000: specialeffect EF_SANCTUARY; enablenpc "bat_a01_rp1_b_warp"; end; OnTimer26000: disablenpc "bat_a01_rp1_b_warp"; end; OnTimer26500: donpcevent "Battle Therapist#a01_b::OnEnable"; end; } bat_a01,43,17,0 script bat_a01_rp1_b_warp -1,10,10,{ OnInit: disablenpc "bat_a01_rp1_b_warp"; end; OnTouch: percentheal 100,100; warp "bat_a01",353,52; end; } bat_a01,60,216,3 script Valley Ghost#bat_a01_n 950,{ specialeffect2 EF_HEAL; mes "[Valley Ghost]"; mes "Boo...Boo..."; close; OnInit: initnpctimer; end; OnEnable: stopnpctimer; initnpctimer; end; OnTimer25000: specialeffect EF_SANCTUARY; enablenpc "bat_a01_rp1_n_warp"; end; OnTimer26000: disablenpc "bat_a01_rp1_n_warp"; end; OnTimer26500: donpcevent "Valley Ghost#bat_a01_n::OnEnable"; end; } bat_a01,55,213,0 script bat_a01_rp1_n_warp -1,10,10,{ OnInit: disablenpc "bat_a01_rp1_n_warp"; end; OnTouch: percentheal 100,100; warp "bat_a01",301,209; end; } bat_a01,194,267,0 script barri_warp_up#bat_a01_a -1,7,0,{ OnTouch: if (getcharid(4) == $@TierraBG1_id1) warp "bat_a01",194,261; end; } bat_a01,194,265,0 script barri_warp_down#bat_a01a -1,7,0,{ OnTouch: if (getcharid(4) == $@TierraBG1_id1) warp "bat_a01",194,270; end; } bat_a01,177,130,0 script barri_warp_up#bat_a01_b -1,7,0,{ OnTouch: if (getcharid(4) == $@TierraBG1_id2) warp "bat_a01",178,125; end; } bat_a01,177,128,0 script barri_warp_down#bat_a01b -1,7,0,{ OnTouch: if (getcharid(4) == $@TierraBG1_id2) warp "bat_a01",178,134; end; } bat_a01,352,342,0 script A_CODE#bat_a01 -1,5,5,{ OnTouch: set .@chk_bfquest,checkquest(2069); if ((.@chk_bfquest == 0) || (.@chk_bfquest == 1)) setquest 2069; end; } bat_a01,353,52,0 script B_CODE#bat_a01 -1,5,5,{ OnTouch: set .@chk_bfquest,checkquest(2069); if ((.@chk_bfquest == 0) || (.@chk_bfquest == 1)) setquest 2069; end; } bat_a01,169,227,0 warp underladd#bat_a01_1 1,1,bat_a01,178,228 bat_a01,208,164,0 warp underladd#bat_a01_2 1,1,bat_a01,200,171 bat_a01,171,309,3 script Guillaume Camp#flag1 973,{ end; } bat_a01,149,310,3 script Guillaume Camp#flag2 973,{ end; } bat_a01,119,336,3 script Guillaume Camp#flag3 973,{ end; } bat_a01,118,357,3 script Guillaume Camp#flag4 973,{ end; } bat_a01,150,380,3 script Guillaume Camp#flag5 973,{ end; } bat_a01,173,380,3 script Guillaume Camp#flag6 973,{ end; } bat_a01,210,344,3 script Guillaume Camp#flag7 973,{ end; } bat_a01,350,325,3 script Guillaume Camp#flag8 973,{ end; } bat_a01,358,325,3 script Guillaume Camp#flag9 973,{ end; } bat_a01,138,12,3 script Croix Camp#flag1 974,{ end; } bat_a01,108,36,3 script Croix Camp#flag2 974,{ end; } bat_a01,108,63,3 script Croix Camp#flag3 974,{ end; } bat_a01,136,87,3 script Croix Camp#flag4 974,{ end; } bat_a01,167,86,3 script Croix Camp#flag5 974,{ end; } bat_a01,199,49,3 script Croix Camp#flag6 974,{ end; } bat_a01,168,16,3 script Croix Camp#flag7 974,{ end; } bat_a01,357,74,3 script Croix Camp#flag8 974,{ end; } bat_a01,348,74,3 script Croix Camp#flag9 974,{ end; } bat_a01,53,377,3 script Guillaume Vintenar#a01_a 419,{ if (getcharid(4) == $@TierraBG1_id1) { if ($@TierraBG1_Victory == 1) callfunc "F_BG_Badge",1,"Guillaume","Tierra"; else callfunc "F_BG_Badge",0,"Guillaume","Tierra"; } else { if ($@TierraBG1_Victory == 2) callfunc "F_BG_Badge",0,"Guillaume","Tierra"; else callfunc "F_BG_Badge",1,"Guillaume","Tierra"; } bg_leave; warp "bat_room",154,150; end; OnInit: disablenpc "Guillaume Vintenar#a01_a"; end; } bat_a01,45,19,3 script Croix Vintenar#a01_b 415,{ if (getcharid(4) == $@TierraBG1_id2) { if ($@TierraBG1_Victory == 2) callfunc "F_BG_Badge",1,"Croix","Tierra"; else callfunc "F_BG_Badge",0,"Croix","Tierra"; } else { if ($@TierraBG1_Victory == 1) callfunc "F_BG_Badge",0,"Croix","Tierra"; else callfunc "F_BG_Badge",1,"Croix","Tierra"; } bg_leave; warp "bat_room",154,150; end; OnInit: disablenpc "Croix Vintenar#a01_b"; end; } bat_a01,1,5,3 script countdown#bat_a01 844,{ OnEnable: initnpctimer; end; OnStop: stopnpctimer; end; OnTimer7000: mapannounce "bat_a01", "Guillaume Vintenar Axl Rose : Let's attack to burn down Croix's Food Depot!",bc_map,"0xFF9900"; end; OnTimer8000: mapannounce "bat_a01", "Croix Vintenar Swandery : Master of Valhalla! Let us be gifted with unfailing faith and courage!",bc_map,"0xFF99CC"; end; OnTimer1800000: mapannounce "bat_a01", "Marollo VII : Guillaume Marollo, Croix Marollo! Marollo followers!",bc_map,"0x99CC00"; end; OnTimer1803000: mapannounce "bat_a01", "Marollo VII : Both camps are competitive, so no camp would be destroyed easily. That means the Marollo kingdoms will never be defeated!",bc_map,"0x99CC00"; end; OnTimer1808000: mapannounce "bat_a01", "Marollo VII : I think we'd better terminate the battle, and call it a draw.",bc_map,"0x99CC00"; end; OnTimer1822000: mapannounce "bat_a01", "Marollo VII : Hold your royalty and faith for a moment, and let's settle up the battle of Tierra Gorge.",bc_map,"0x99CC00"; end; OnTimer1825000: mapannounce "bat_a01", "Axl Rose, Swandery : Yes sir.",bc_map,"0x99CC00"; end; OnTimer1830000: mapwarp "bat_a01","bat_room",154,150; donpcevent "countdown#bat_a01::OnStop"; end; } /* bat_a01,351,75,3 script Croix Camp Soldier#bat_a01_guide 934,{ mes "Loading..."; close; } bat_a01,356,326,3 script Guillaume Camp Soldier#bat_a01_guide 934,{ mes "Loading..."; close; } */ bat_a01,1,1,3 script Release all#a01 81,{ set .@i, callfunc("F_GM_NPC",1854,0); if (.@i == -1) { mes "Cancelled."; close; } else if (.@i == 0) { end; } else { mes "May I help you?"; next; switch(select("Release all.:Cancel.")) { case 1: mes "Bye."; close2; mapwarp "bat_a01","bat_room",154,150; end; case 2: mes "Cancelled."; close; } } } and npc/battleground/tierra/tierra02.txt //===== rAthena Script ======================================= //= BattleGround System - Tierra Gorge 2 //===== By: ================================================== //= L0ne_W0lf //===== Current Version: ===================================== //= 1.5 //===== Compatible With: ===================================== //= rAthena Project //===== Description: ========================================= //= [Official Conversion] //= Second Tierra Gorge Battleground. //= - Winning Team: 3 badges (5 if VIP) //= - Losing Team: 1 badge (3 if VIP) //===== Additional Comments: ================================= //= 1.0 First Version. //= 1.1 Updated 'waitingroom' to support required zeny/lvl. [Kisuka] //= 1.2 Removed MaxLvl check in waitingrooms. //= 1.3 Label standardization. [Euphy] //= 1.4 Added GM management function. [Euphy] //= 1.5 Added VIP features and created a reward function. [Euphy] //============================================================ // Waiting Room NPCs //============================================================ bat_room,114,227,5 script Lieutenant Rundel 418,{ end; OnInit: waitingroom "Battle Station",11,"start#bat_a02::OnReadyCheck",1,0,80; end; OnEnterBG: set $@TierraBG2_id1, waitingroom2bg("bat_a02",50,374,"start#bat_a02::OnGuillaumeQuit",""); end; } bat_room,114,204,1 script Lieutenant Guerrit 414,{ end; OnInit: waitingroom "Battle Station",11,"start#bat_a02::OnReadyCheck",1,0,80; end; OnEnterBG: set $@TierraBG2_id2, waitingroom2bg("bat_a02",42,16,"start#bat_a02::OnCroixQuit",""); end; } bat_room,1,151,3 script #bat_a02_timer 844,{ end; OnInit: OnEnable: initnpctimer; end; OnStop: stopnpctimer; end; OnTimer1000: stopnpctimer; initnpctimer; set .@chk_bat_a02,getmapusers("bat_a02"); if (.@chk_bat_a02 < 1) { set $@TierraBG2,0; set $@TierraBG2_Victory, 0; if( $@TierraBG2_id1 ) { bg_destroy $@TierraBG2_id1; set $@TierraBG2_id1, 0; } if( $@TierraBG2_id2 ) { bg_destroy $@TierraBG2_id2; set $@TierraBG2_id2, 0; } donpcevent "start#bat_a02::OnReadyCheck"; } end; } bat_a02,352,342,0 script #bat_a02_quest_a -1,5,5,{ end; OnTouch: if (checkquest(2069) < 0) setquest 2069; end; } bat_a02,353,52,0 script #bat_a02_quest_b -1,5,5,{ end; OnTouch: if (checkquest(2069) < 0) setquest 2069; end; } bat_room,113,220,0 warp back_bgrooma02a 1,1,bat_room,154,150 bat_room,113,211,0 warp back_bgrooma02b 1,1,bat_room,154,150 // Tierra Gorge Battleground Engine //============================================================ bat_a02,15,15,3 script start#bat_a02 844,{ OnInit: mapwarp "bat_a02","bat_room",154,150; end; OnEnable: donpcevent "OBJ#bat_a02_a::OnKill"; donpcevent "OBJ#bat_a02_a::OnEnable"; donpcevent "OBJ#bat_a02_b::OnKill"; donpcevent "OBJ#bat_a02_b::OnEnable"; donpcevent "barricade#bat_a02_a::OnKill"; donpcevent "barricade#bat_a02_a::OnEnable"; donpcevent "barricade#bat_a02_b::OnKill"; donpcevent "barricade#bat_a02_b::OnEnable"; donpcevent "OBJ#bat_a02_n::OnKill"; donpcevent "OBJ#bat_a02_n::OnEnable"; donpcevent "NOBJ_mob#bat_a02_a::OnKill"; donpcevent "NOBJ_mob#bat_a02_b::OnKill"; donpcevent "Battle Therapist#a02_a::OnEnable"; donpcevent "Battle Therapist#a02_b::OnEnable"; donpcevent "countdown#bat_a02::OnEnable"; disablenpc "Guillaume Blacksmith#a02"; disablenpc "Croix Blacksmith#bat_a02"; disablenpc "Guillaume Vintenar#a02_a"; disablenpc "Croix Vintenar#a02_b"; end; OnGuillaumeQuit: OnCroixQuit: bg_leave; end; OnReadyCheck: if( $@TierraBG2 ) end; set .@Guillaume, getwaitingroomstate(0,"Lieutenant Rundel"); set .@Croix, getwaitingroomstate(0,"Lieutenant Guerrit"); if( !.@Guillaume && !.@Croix ) { donpcevent "#bat_a02_timer::OnStop"; end; } else if( .@Guillaume < 10 || .@Croix < 10 ) end; set $@TierraBG2,1; donpcevent "Lieutenant Rundel::OnEnterBG"; donpcevent "Lieutenant Guerrit::OnEnterBG"; donpcevent "start#bat_a02::OnEnable"; bg_warp $@TierraBG2_id1,"bat_a02",352,342; bg_warp $@TierraBG2_id2,"bat_a02",353,52; initnpctimer; end; OnTimer10000: stopnpctimer; donpcevent "#bat_a02_timer::OnEnable"; end; } bat_a02,15,16,3 script OBJ#bat_a02_a 844,{ OnEnable: bg_monster $@TierraBG2_id1,"bat_a02",177,345,"Food Storage",1909,"OBJ#bat_a02_a::OnMyMobDead"; end; OnKill: killmonster "bat_a02","OBJ#bat_a02_a::OnMyMobDead"; end; OnMyMobDead: if (mobcount("bat_a02","OBJ#bat_a02_a::OnMyMobDead") < 1) { donpcevent "Battle Therapist#a02_a::OnStop"; donpcevent "Battle Therapist#a02_b::OnStop"; set $@TierraBG2_Victory, 2; enablenpc "Guillaume Vintenar#a02_a"; enablenpc "Croix Vintenar#a02_b"; mapannounce "bat_a02", "Croix Vintenar Swandery: We destroyed Guillaume's Food Storage. We won that! Wow!",bc_map,"0xFFCE00"; bg_warp $@TierraBG2_id1,"bat_a02",50,374; bg_warp $@TierraBG2_id2,"bat_a02",42,16; } end; } bat_a02,15,17,3 script OBJ#bat_a02_b 844,{ OnEnable: bg_monster $@TierraBG2_id2,"bat_a02",167,50,"Food Depot",1910,"OBJ#bat_a02_b::OnMyMobDead"; end; OnKill: killmonster "bat_a02","OBJ#bat_a02_b::OnMyMobDead"; end; OnMyMobDead: if (mobcount("bat_a02","OBJ#bat_a02_b::OnMyMobDead") < 1) { donpcevent "Battle Therapist#a02_a::OnStop"; donpcevent "Battle Therapist#a02_b::OnStop"; set $@TierraBG2_Victory, 1; enablenpc "Guillaume Vintenar#a02_a"; enablenpc "Croix Vintenar#a02_b"; mapannounce "bat_a02", "Guillaume Vintenar Axl Rose : We destroyed Croix's Food Storage. We won that! Wow!",bc_map,"0xFFCE00"; bg_warp $@TierraBG2_id1,"bat_a02",50,374; bg_warp $@TierraBG2_id2,"bat_a02",42,16; } end; } bat_a02,15,18,3 script barricade#bat_a02_a 844,{ OnEnable: for( set .@i,185; .@i < 202; set .@i,.@i+1 ) bg_monster $@TierraBG2_id1,"bat_a02",.@i,266,"Barricade",1906,"barricade#bat_a02_a::OnMyMobDead"; setwall "bat_a02",186,266,16,6,1,"bat_a02_c1"; end; OnKill: killmonster "bat_a02","barricade#bat_a02_a::OnMyMobDead"; delwall "bat_a02_c1"; end; OnMyMobDead: if (mobcount("bat_a02","barricade#bat_a02_a::OnMyMobDead") < 17) { killmonster "bat_a02","barricade#bat_a02_a::OnMyMobDead"; delwall "bat_a02_c1"; enablenpc "Guillaume Blacksmith#a02"; mapannounce "bat_a02", "Guillaume Vintenar Axl Rose : The Barricade in the valley has been destroyed! Where's the Blacksmith? We need to rebuild the Barricade!",bc_map,"0xFFCE00"; } end; } bat_a02,15,19,3 script barricade#bat_a02_b 844,{ OnEnable: for( set .@i,169; .@i < 186; set .@i,.@i+1 ) bg_monster $@TierraBG2_id2,"bat_a02",.@i,129,"Barricade",1906,"barricade#bat_a02_b::OnMyMobDead"; setwall "bat_a02",170,129,16,6,1,"bat_a02_g1"; end; OnKill: killmonster "bat_a02","barricade#bat_a02_b::OnMyMobDead"; delwall "bat_a02_g1"; end; OnMyMobDead: if (mobcount("bat_a02","barricade#bat_a02_b::OnMyMobDead") < 17) { killmonster "bat_a02","barricade#bat_a02_b::OnMyMobDead"; delwall "bat_a02_g1"; enablenpc "Croix Blacksmith#bat_a02"; mapannounce "bat_a02", "Croix Vintenar Swandery : The Barricade in the valley has been destroyed! Where's the Blacksmith? We need to rebuild the Barricade!",bc_map,"0xFFCE00"; } end; } bat_a02,15,20,3 script OBJ#bat_a02_n 844,{ OnEnable: monster "bat_a02",273,203,"Neutrality Flag",1911,1,"OBJ#bat_a02_n::OnMyMobDead"; end; OnKill: killmonster "bat_a02","OBJ#bat_a02_n::OnMyMobDead"; end; OnMyMobDead: if (mobcount("bat_a02","OBJ#bat_a02_n::OnMyMobDead") < 17) { bg_team_setxy getcharid(4),56,212; if (getcharid(4) == $@TierraBG2_id1) { donpcevent "NOBJ_mob#bat_a02_a::OnEnable"; mapannounce "bat_a02", "Guillaume captured a Neutrality Flag, so they have an advantage.",bc_map,"0xFFCE00"; } else { donpcevent "NOBJ_mob#bat_a02_b::OnEnable"; mapannounce "bat_a02", "Croix captured a Neutrality Flag, so they have an advantage.",bc_map,"0xFFCE00"; } } end; } bat_a02,15,21,3 script NOBJ_mob#bat_a02_a 844,{ OnEnable: donpcevent "NOBJ_mob#bat_a02_b::OnKill"; bg_monster $@TierraBG2_id1,"bat_a02",272,204,"Guillaume Camp Guardian",1949,"NOBJ_mob#bat_a02_a::OnMyMobDead"; bg_monster $@TierraBG2_id1,"bat_a02",272,213,"Guillaume Camp Guardian",1949,"NOBJ_mob#bat_a02_a::OnMyMobDead"; bg_monster $@TierraBG2_id1,"bat_a02",273,197,"Guillaume Camp Guardian",1950,"NOBJ_mob#bat_a02_a::OnMyMobDead"; end; OnKill: killmonster "bat_a02","NOBJ_mob#bat_a02_a::OnMyMobDead"; end; OnMyMobDead: end; } bat_a02,15,22,3 script NOBJ_mob#bat_a02_b 844,{ OnEnable: donpcevent "NOBJ_mob#bat_a02_a::OnKill"; bg_monster $@TierraBG2_id2,"bat_a02",272,204,"Croix Camp Guardian",1949,"NOBJ_mob#bat_a02_a::OnMyMobDead"; bg_monster $@TierraBG2_id2,"bat_a02",272,213,"Croix Camp Guardian",1949,"NOBJ_mob#bat_a02_a::OnMyMobDead"; bg_monster $@TierraBG2_id2,"bat_a02",273,197,"Croix Camp Guardian",1950,"NOBJ_mob#bat_a02_a::OnMyMobDead"; end; OnKill: killmonster "bat_a02","NOBJ_mob#bat_a02_b::OnMyMobDead"; end; OnMyMobDead: end; } bat_a02,185,270,1 script Guillaume Blacksmith#a02 851,{ if (getcharid(4) == $@TierraBG2_id1) { mes "[Guillaume Blacksmith]"; mes "We are in urgency! The Barricade has been destroyed!"; mes "We can repair the Barricade with ^3131FF50 Stones, 3 Sinew of Bear, 500 Metal Fragments, 30 Rough Elunium and 100 Gold.^000000"; mes "We have it all except for the 50 Stones!"; next; switch(select("Repair.:Leave it.")) { case 1: if (countitem(7049) > 49) { mes "[Guillaume Blacksmith]"; mes "You brought enough stones! Let's go and repair."; next; mes ".."; next; mes "...."; next; mes "......"; next; mes "........"; next; mes ".........."; next; mes "............"; next; mes ".............."; next; mes "[Guillaume Blacksmith]"; mes "Combine Stones and Gold in the proper percentage."; next; mes "[Guillaume Blacksmith]"; mes "Combine Stones and Gold in the proper percentage and shape the Barricade."; next; mes "[Guillaume Blacksmith]"; mes "Combine Stones and Gold in the proper percentage and shape the Barricade, then add Rough Elunium to make it stronger."; next; mes "[Guillaume Blacksmith]"; mes "Combine Stones and Gold in the proper percentage and shape the Barricade, then add Rough Elunium to make it stronger. Now decorate with Metal Fragments."; next; mes "[Guillaume Blacksmith]"; mes "Combine Stones and Gold in the proper percentage and shape the Barricade, then add Rough Elunium to make it stronger. Decorate with Metal Fragments, and plait stones with Sinew of Bear!"; next; mes ".............."; mes ".............."; mes ".............."; mes ".............."; mes ".............."; next; specialeffect EF_REPAIRWEAPON; mes "[Guillaume Blacksmith]"; mes "Wow! It's done."; mes "We are relieved."; delitem 7049,50; //Stone donpcevent "barricade#bat_a02_a::OnEnable"; close2; disablenpc "Guillaume Blacksmith#a02"; end; } else { mes "[Guillaume Blacksmith]"; mes "You don't have enough Stones!"; next; mes "[Guillaume Blacksmith]"; mes "^3131FFWe need 50 Stones.^000000"; mes "We are busy, so please hurry."; close; } case 2: mes "[Guillaume Blacksmith]"; mes "There are enemies coming! Let's evacuate from here!"; close; } } else { mes "[Guillaume Blacksmith]"; mes "There the enemy is coming!"; close; } OnInit: disablenpc "Guillaume Blacksmith#a02"; end; } bat_a02,170,121,5 script Croix Blacksmith#bat_a02 851,{ if (getcharid(4) == $@TierraBG2_id2) { mes "[Croix Blacksmith]"; mes "We are in urgency! The Barricade has been destroyed!"; mes "We can repair the Barricade with ^3131FF50 Stones, 3 Sinew of Bear, 500 Metal Fragments, 30 Rough Elunium and 100 Gold.^000000"; mes "We have it all except for the 50 Stones!"; next; switch(select("Repair.:Leave it.")) { case 1: if (countitem(7049) > 49) { mes "[Croix Blacksmith]"; mes "You brought enough stones! Let's go and repair."; next; mes ".."; next; mes "...."; next; mes "......"; next; mes "........"; next; mes ".........."; next; mes "............"; next; mes ".............."; next; mes "[Croix Blacksmith]"; mes "Combine Stones and Gold in the proper percentage."; next; mes "[Croix Blacksmith]"; mes "Combine Stones and Gold in the proper percentage and shape the Barricade."; next; mes "[Croix Blacksmith]"; mes "Combine Stones and Gold in the proper percentage and shape the Barricade, then add Rough Elunium to make it stronger."; next; mes "[Croix Blacksmith]"; mes "Combine Stones and Gold in the proper percentage and shape the Barricade, then add Rough Elunium to make it stronger. Now decorate with Metal Fragments."; next; mes "[Croix Blacksmith]"; mes "Combine Stones and Gold in the proper percentage and shape the Barricade, then add Rough Elunium to make it stronger. Decorate with Metal Fragments, and plait stones with Sinew of Bear!"; next; mes ".............."; mes ".............."; mes ".............."; mes ".............."; mes ".............."; next; specialeffect EF_REPAIRWEAPON; mes "[Croix Blacksmith]"; mes "Wow! It's done."; mes "We are relieved."; delitem 7049,50; //Stone donpcevent "barricade#bat_a02_b::OnEnable"; close2; disablenpc "Croix Blacksmith#bat_a02"; end; } else { mes "[Croix Blacksmith]"; mes "You don't have enough Stones!"; next; mes "[Croix Blacksmith]"; mes "^3131FFWe need 50 Stone.^000000"; mes "We are busy, so please hurry."; close; } case 2: mes "[Croix Blacksmith]"; mes "There are enemies coming! Let's evacuate from here!"; close; } } else { mes "[Croix Blacksmith]"; mes "There, the enemy is coming!"; close; } OnInit: disablenpc "Croix Blacksmith#bat_a02"; end; } bat_a02,53,377,3 script Battle Therapist#a02_a 95,{ specialeffect2 EF_HEAL; mes "[Battle Therapist]"; mes "Just close your eyes,"; mes "and take a deep breath."; mes "You can be free from pain."; close; end; OnInit: initnpctimer; end; OnEnable: stopnpctimer; initnpctimer; enablenpc "Battle Therapist#a02_a"; end; OnStop: disablenpc "bat_a02_rp1_a_warp"; disablenpc "Battle Therapist#a02_a"; stopnpctimer; end; OnTimer25000: specialeffect EF_SANCTUARY; enablenpc "bat_a02_rp1_a_warp"; end; OnTimer26000: disablenpc "bat_a02_rp1_a_warp"; end; OnTimer26500: donpcevent "Battle Therapist#a02_a::OnEnable"; end; } bat_a02,51,375,0 script bat_a02_rp1_a_warp -1,10,10,{ OnInit: disablenpc "bat_a02_rp1_a_warp"; end; OnTouch_: percentheal 100,100; warp "bat_a02",352,342; end; } bat_a02,45,19,3 script Battle Therapist#a02_b 95,{ specialeffect2 EF_HEAL; mes "[Battle Therapist]"; mes "Just close your eyes,"; mes "and take a deep breath."; mes "You can be free from pain."; close; end; OnInit: initnpctimer; end; OnEnable: stopnpctimer; initnpctimer; enablenpc "Battle Therapist#a02_b"; end; OnStop: disablenpc "bat_a02_rp1_b_warp"; disablenpc "Battle Therapist#a02_b"; stopnpctimer; end; OnTimer25000: specialeffect EF_SANCTUARY; enablenpc "bat_a02_rp1_b_warp"; end; OnTimer26000: disablenpc "bat_a02_rp1_b_warp"; end; OnTimer26500: donpcevent "Battle Therapist#a02_b::OnEnable"; end; } bat_a02,43,17,0 script bat_a02_rp1_b_warp -1,10,10,{ OnInit: disablenpc "bat_a02_rp1_b_warp"; end; OnTouch: percentheal 100,100; warp "bat_a02",353,52; end; } bat_a02,60,216,3 script Valley Ghost#bat_a02_n 950,{ specialeffect2 EF_HEAL; mes "[Valley Ghost]"; mes "Boo...Boo..."; close; OnInit: initnpctimer; end; OnEnable: stopnpctimer; initnpctimer; end; OnTimer25000: specialeffect EF_SANCTUARY; enablenpc "bat_a02_rp1_n_warp"; end; OnTimer26000: disablenpc "bat_a02_rp1_n_warp"; end; OnTimer26500: donpcevent "Valley Ghost#bat_a02_n::OnEnable"; end; } bat_a02,55,213,0 script bat_a02_rp1_n_warp -1,10,10,{ OnInit: disablenpc "bat_a02_rp1_n_warp"; end; OnTouch: percentheal 100,100; warp "bat_a02",301,209; end; } bat_a02,194,267,0 script barri_warp_up#bat_a02_a -1,7,0,{ OnTouch: if (getcharid(4) == $@TierraBG2_id1) warp "bat_a02",194,261; end; } bat_a02,194,265,0 script barri_warp_down#bat_a02a -1,7,0,{ OnTouch: if (getcharid(4) == $@TierraBG2_id1) warp "bat_a02",194,270; end; } bat_a02,177,130,0 script barri_warp_up#bat_a02_b -1,7,0,{ OnTouch: if (getcharid(4) == $@TierraBG2_id2) warp "bat_a02",178,125; end; } bat_a02,177,128,0 script barri_warp_down#bat_a02b -1,7,0,{ OnTouch: if (getcharid(4) == $@TierraBG2_id2) warp "bat_a02",178,134; end; } bat_a02,352,342,0 script A_CODE#bat_a02 -1,5,5,{ OnTouch: set .@chk_bfquest,checkquest(2069); if ((.@chk_bfquest == 0) || (.@chk_bfquest == 1)) setquest 2069; end; } bat_a02,353,52,0 script B_CODE#bat_a02 -1,5,5,{ OnTouch: set .@chk_bfquest,checkquest(2069); if ((.@chk_bfquest == 0) || (.@chk_bfquest == 1)) setquest 2069; end; } bat_a02,169,227,0 warp underladd#bat_a02_1 1,1,bat_a02,178,228 bat_a02,208,164,0 warp underladd#bat_a02_2 1,1,bat_a02,200,171 bat_a02,171,309,3 script Guillaume Camp#flag11 973,{ end; } bat_a02,149,310,3 script Guillaume Camp#flag12 973,{ end; } bat_a02,119,336,3 script Guillaume Camp#flag13 973,{ end; } bat_a02,118,357,3 script Guillaume Camp#flag14 973,{ end; } bat_a02,150,380,3 script Guillaume Camp#flag15 973,{ end; } bat_a02,173,380,3 script Guillaume Camp#flag16 973,{ end; } bat_a02,210,344,3 script Guillaume Camp#flag17 973,{ end; } bat_a02,350,325,3 script Guillaume Camp#flag18 973,{ end; } bat_a02,358,325,3 script Guillaume Camp#flag19 973,{ end; } bat_a02,138,12,3 script Croix Camp#flag11 974,{ end; } bat_a02,108,36,3 script Croix Camp#flag12 974,{ end; } bat_a02,108,63,3 script Croix Camp#flag13 974,{ end; } bat_a02,136,87,3 script Croix Camp#flag14 974,{ end; } bat_a02,167,86,3 script Croix Camp#flag15 974,{ end; } bat_a02,199,49,3 script Croix Camp#flag16 974,{ end; } bat_a02,168,16,3 script Croix Camp#flag17 974,{ end; } bat_a02,357,74,3 script Croix Camp#flag18 974,{ end; } bat_a02,348,74,3 script Croix Camp#flag19 974,{ end; } bat_a02,53,377,3 script Guillaume Vintenar#a02_a 419,{ if (getcharid(4) == $@TierraBG2_id1) { if ($@TierraBG2_Victory == 1) callfunc "F_BG_Badge",1,"Guillaume","Tierra"; else callfunc "F_BG_Badge",0,"Guillaume","Tierra"; } else { if ($@TierraBG2_Victory == 2) callfunc "F_BG_Badge",0,"Guillaume","Tierra"; else callfunc "F_BG_Badge",1,"Guillaume","Tierra"; } bg_leave; warp "bat_room",154,150; end; OnInit: disablenpc "Guillaume Vintenar#a02_a"; end; } bat_a02,45,19,3 script Croix Vintenar#a02_b 415,{ if (getcharid(4) == $@TierraBG2_id2) { if ($@TierraBG2_Victory == 2) callfunc "F_BG_Badge",1,"Croix","Tierra"; else callfunc "F_BG_Badge",0,"Croix","Tierra"; } else { if ($@TierraBG2_Victory == 1) callfunc "F_BG_Badge",0,"Croix","Tierra"; else callfunc "F_BG_Badge",1,"Croix","Tierra"; } bg_leave; warp "bat_room",154,150; end; OnInit: disablenpc "Croix Vintenar#a02_b"; end; } bat_a02,1,5,3 script countdown#bat_a02 844,{ OnEnable: initnpctimer; end; OnStop: stopnpctimer; end; OnTimer7000: mapannounce "bat_a02", "Guillaume Vintenar Axl Rose : Let's attack to burn down Croix's Food Depot!",bc_map,"0xFF9900"; end; OnTimer8000: mapannounce "bat_a02", "Croix Vintenar Swandery : Master of Valhalla! Let us be gifted with unfailing faith and courage!",bc_map,"0xFF99CC"; end; OnTimer1800000: mapannounce "bat_a02", "Marollo VII : Guillaume Marollo, Croix Marollo! Marollo followers!",bc_map,"0x99CC00"; end; OnTimer1803000: mapannounce "bat_a02", "Marollo VII : Both camps are competitive, so no camp would be destroyed easily. That means the Marollo kingdoms will never be defeated!",bc_map,"0x99CC00"; end; OnTimer1808000: mapannounce "bat_a02", "Marollo VII : I think we'd better terminate the battle, and call it a draw.",bc_map,"0x99CC00"; end; OnTimer1822000: mapannounce "bat_a02", "Marollo VII : Hold your royalty and faith for a moment, and let's settle up the battle of Tierra Gorge.",bc_map,"0x99CC00"; end; OnTimer1825000: mapannounce "bat_a02", "Axl Rose, Swandery : Yes sir.",bc_map,"0x99CC00"; end; OnTimer1830000: mapwarp "bat_a02","bat_room",154,150; donpcevent "countdown#bat_a02::OnStop"; end; } /* bat_a02,351,75,3 script Croix Camp Soldier#bat_a02_guide 934,{ mes "Loading..."; close; } bat_a02,356,326,3 script Guillaume Camp Soldier#bat_a02_guide 934,{ mes "Loading..."; close; } */ bat_a02,1,1,3 script Release all#a02 81,{ set .@i, callfunc("F_GM_NPC",1854,0); if (.@i == -1) { mes "Cancelled."; close; } else if (.@i == 0) { end; } else { mes "May I help you?"; next; switch(select("Release all.:Cancel.")) { case 1: mes "Bye."; close2; mapwarp "bat_a02","bat_room",154,150; end; case 2: mes "Cancelled."; close; } } } I followed this guide And changed this in both files waitingroom "Battle Station 10 Players",10,"Tierra_BG1::OnGuillaumeJoin",1; //for waitingroom "Battle Station 3 Players",3,"Tierra_BG1::OnGuillaumeJoin",1; waitingroom "Battle Station 10 Players",10,"Tierra_BG1::OnCroixJoin",1; //for waitingroom "Battle Station 3 Players",3,"Tierra_BG1::OnCroixJoin",1; if( .@Guillaume < 10 || .@Croix < 10 ){ //for if( .@Guillaume < 3|| .@Croix < 3 ){ I couldn't find this in any file announces 10 set $@GuillT, 10; set $@CroiT, 10; And it's not working Any ideas? thank you very much
  11. it works .. I swear I had this in front of my eyes and didn't know it was for that xD.. thank you, again Any idea how to tell the server to save at commands like @autoloot ? I know the client saves in lua files like hotkeys and optioninfo.lua but it's not here
  12. Hi guys I've recently added a jRO costume npc to my server, but whenver I change body style and logout the server will reset my appearance. The script is written with *setlook The same problem repeats when I activate certain commands like @autoloot. I'm getting the idea that you can switch on/off the commands that you want the server to remember, but don't know where. Can anyone give me a hand with this? Thank you in advance
  13. yeah after I realised it wasn't the map (replacing clean files) I started checking my new npc scripts for the vending zone I was implementing.. and I had a typo in the request for the map...... so the script was asking for a ghost map..... the problem is solved. would it be too much to ask for a tip on how adding new maps to map_cache.dat without using WeeMapCache.exe? (no mapcache.exe) sorry all for the waste of time
  14. before we continue. i'm using rAthena on a linux VPS (sorry i didn't mentioned before, i usually do) I don't have mapcache.exe, what other tool do you use to add a custom_map.gat to map_cache.dat? And i'm not sure about if its caused by a script.. I redownloaded a clean map_index.txt, maps_athena.conf and map_cache.dat from github, recompiled, restarted and for some reason the console error message it's still there .... 0 idea what it is did I break something?
  15. ty for your response, without the id I still get the same error :/ I tried with and without the id, with space and tab, I replaced a new map_index.txt from github and added map name, and nothing.. I can't figure out what does the message mean
  16. Hi guys I tried to add this map and followed the steps from github but console shows this error [Debug]: (map_mapname2mapid) mapindex_name2id: Map "" not found in index list! [Debug]: (map_mapname2mapid) mapindex_name2id: Map "" not found in index list! [Debug]: (map_mapname2mapid) mapindex_name2id: Map "" not found in index list! [Debug]: (map_mapname2mapid) mapindex_name2id: Map "" not found in index list! [Debug]: (map_mapname2mapid) mapindex_name2id: Map "" not found in index list! [Debug]: (map_mapname2mapid) mapindex_name2id: Map "" not found in index list! [Debug]: (map_mapname2mapid) mapindex_name2id: Map "" not found in index list! [Debug]: (map_mapname2mapid) mapindex_name2id: Map "" not found in index list! [Debug]: (map_mapname2mapid) mapindex_name2id: Map "" not found in index list! [Debug]: (map_mapname2mapid) mapindex_name2id: Map "" not found in index list! [Debug]: (map_mapname2mapid) mapindex_name2id: Map "" not found in index list! [Debug]: (map_mapname2mapid) mapindex_name2id: Map "" not found in index list! [Debug]: (map_mapname2mapid) mapindex_name2id: Map "" not found in index list! [Debug]: (map_mapname2mapid) mapindex_name2id: Map "" not found in index list! [Debug]: (map_mapname2mapid) mapindex_name2id: Map "" not found in index list! [Debug]: (map_mapname2mapid) mapindex_name2id: Map "" not found in index list! [Debug]: (map_mapname2mapid) mapindex_name2id: Map "" not found in index list! [Debug]: (map_mapname2mapid) mapindex_name2id: Map "" not found in index list! [Debug]: (map_mapname2mapid) mapindex_name2id: Map "" not found in index list! [Debug]: (map_mapname2mapid) mapindex_name2id: Map "" not found in index list! I don't understand what does it mean with Map " " not found in the index list! - I added vend_zone (map name) to /conf/maps_athena.conf map: vend_zone - Also added to /db/map_index.txt vend_zone 1250 - Donwloaded from map_cache.dat from /db/re folder. Edited with WeeMapCache.exe. Added vend_zone.gat. Uploaded the new map_cache.dat to /db/re - Added ven_zone.gat, vend_zone.gnd and vend_zone.rsw to my /data folder in myservername.grf (added the .bmp also) any idea? thank you Edit: Forgot to say that I checked a lot of topics about this error message but all seem to be about a specific map missing, i.e. Map "manuk" not found in the index list!
  17. hi i'm using the default script for stylist and need a restriction that allow a job (i.e. summoner) to only have access to (i.e.) 6 hair styles, 10 cloth colors, 10 hair colors. npc/custom/stylist.txt //===== rAthena Script ======================================= //= Stylist //===== By: ================================================== //= Euphy //===== Current Version: ===================================== //= 1.1 //===== Compatible With: ===================================== //= rAthena Project //===== Description: ========================================= //= Changes your hair style, hair color, and cloth color. //===== Additional Comments: ================================= //= 1.0 Initial script. //= 1.1 Switched to 'getbattleflag', credits to Saithis. [Euphy] //============================================================ prontera,170,180,1 script Stylist#custom_stylist 122,{ setarray .@Styles[1], getbattleflag("max_cloth_color"), getbattleflag("max_hair_style"), getbattleflag("max_hair_color"); setarray .@Look[1], LOOK_CLOTHES_COLOR, LOOK_HAIR, LOOK_HAIR_COLOR; set .@s, select(" ~ Cloth color: ~ Hairstyle: ~ Hair color"); set .@Revert, getlook(.@Look[.@s]); set .@Style,1; while(1) { setlook .@Look[.@s], .@Style; message strcharinfo(0),"This is style #"+.@Style+"."; set .@menu$, " ~ Next (^0055FF"+((.@Style!=.@Styles[.@s])?.@Style+1:1)+"^000000): ~ Previous (^0055FF"+((.@Style!=1)?.@Style-1:.@Styles[.@s])+"^000000): ~ Jump to...: ~ Revert to original (^0055FF"+.@Revert+"^000000)"; switch(select(.@menu$)) { case 1: set .@Style, ((.@Style != .@Styles[.@s]) ? .@Style+1 : 1); break; case 2: set .@Style, ((.@Style != 1) ? .@Style-1 : .@Styles[.@s]); break; case 3: message strcharinfo(0),"Choose a style between 1 - "+.@Styles[.@s]+"."; input .@Style,0,.@Styles[.@s]; if (!.@Style) set .@Style, rand(1,.@Styles[.@s]); break; case 4: set .@Style, .@Revert; setlook .@Look[.@s], .@Revert; break; } } } I read here but it only gives a full job restriction thank you in advance
  18. Hi I want to add @guildskill command/shortcut for users i.e. @guildskill EC (it will cast emergency call with all normal restrictions, must be casted inside a castle/c.dungeon, normal delay if log off, must be leveled up in guild's skill panel, only gm can use it, etc) i'm pretty sure there was a script for this somewhere in eAthena, i simply can't find it for rAthena thank you very much
  19. problem fixed! now i have wedding dresses in my server thank you @Scanty you are god
  20. added to tuxedo in db/re/item_db.txt now i get an error in console saying i can't add non-stackable to item_itembuyingstore.txt [Warning]: itemdb_read_buyingstore: Non-stackable item id 7170 cannot be enabled for buying store. [Error]: sv_readdb: Could not process contents of line 1772 of "db/re/item_buyingstore.txt". line 1772 is 7170 // Tuxedo I looked up in google and the only thing that occurs to me is how can i add a non-stackable item to that .txt I know i'm missing something on the script.. any ideas? thank you
  21. Hi I want to make wedding dress and tuxedo visible when worn by users but I don't know how - this is my /conf/battle/client.conf // Will tuxedo and wedding dresses be shown when worn? (Note 1) wedding_modifydisplay: yes - also uncommented 'old wedding dress and tuxedo' in /db/import-tmpl/item_db - added the code to my item_db2 table in phpmyadmin doesn't work ideas?
  22. thank you for your response, i've just started learning about scripts this tier method makes a little more tricky to set a specific value for succes rate do you know where can i find older versions of this script? I want to compare because I remember in early renewal it was much more easy to get 'Class change' than now edit. found the answer, you can close thanks
×
×
  • Create New...