summaryrefslogtreecommitdiff
path: root/world/map/npc/functions
diff options
context:
space:
mode:
Diffstat (limited to 'world/map/npc/functions')
-rwxr-xr-xworld/map/npc/functions/debug.txt4
-rw-r--r--world/map/npc/functions/ferry.txt31
-rw-r--r--world/map/npc/functions/game_rules.txt25
-rw-r--r--world/map/npc/functions/soul_menhir.txt11
-rw-r--r--world/map/npc/functions/stat_reset.txt55
-rw-r--r--world/map/npc/functions/time.txt71
-rw-r--r--world/map/npc/functions/travelers.txt43
-rw-r--r--world/map/npc/functions/undead_debug.txt8
8 files changed, 160 insertions, 88 deletions
diff --git a/world/map/npc/functions/debug.txt b/world/map/npc/functions/debug.txt
index af7fcee0..384805b1 100755
--- a/world/map/npc/functions/debug.txt
+++ b/world/map/npc/functions/debug.txt
@@ -916,7 +916,7 @@ L_Close:
}
-042-2.gat,30,26,0|script|Debug#0|154
+029-2.gat,30,26,0|script|Debug#0|154
{
callfunc "Debug";
end;
@@ -926,7 +926,7 @@ OnInit:
end;
}
-001-1.gat,41,29,0|script|Debug#1|154
+001-1.gat,53,47,0|script|Debug#1|154
{
callfunc "Debug";
end;
diff --git a/world/map/npc/functions/ferry.txt b/world/map/npc/functions/ferry.txt
index cc5bfa14..cca5d3a0 100644
--- a/world/map/npc/functions/ferry.txt
+++ b/world/map/npc/functions/ferry.txt
@@ -5,17 +5,17 @@
end;
OnInit:
- disablenpc "Hurnscald Koga";
+ disablenpc "Hurnscald South Koga";
disablenpc "Candor Koga";
disablenpc "Nivalis Koga";
- disablenpc "Tulimshar North Koga";
- disablenpc "Tulimshar South Koga";
+ disablenpc "Hurnscald North Koga";
+ disablenpc "Tulimshar Koga";
set $@MainCurrentDock, 0;
set $@CandorCurrentDock, 0;
set $@DockTickCount, 0;
set $@DockLeaveCount, 1;
- setarray $@MainDocks$, "Hurnscald", "Nivalis", "Tulimshar South";
- setarray $@CandorDocks$, "Candor", "Tulimshar North";
+ setarray $@MainDocks$, "Hurnscald North", "Nivalis", "Tulimshar";
+ setarray $@CandorDocks$, "Candor", "Hurnscald South";
cmdothernpc "#"+$@MainDocks$[$@MainCurrentDock]+"Dock", "Arrive";
cmdothernpc "#"+$@CandorDocks$[$@CandorCurrentDock]+"Dock", "Arrive";
if (debug >= 2) end;
@@ -49,7 +49,7 @@ L_NextDock:
if($@MainCurrentDock == 1) goto L_k1city3;
end;
-OnTimer10000:
+OnTimer8000:
if ($@DockTickCount > $@DockLeaveCount)
goto L_NextDock;
//mapannounce "035-2.tmx", "Koga - Main:* Now docked in "+$@MainDocks$[$@MainCurrentDock]+", Departing soon", 0;
@@ -91,6 +91,18 @@ L_k2city2:
end;
}
+function|script|FerryHelp
+{
+ mes "\"You wait on the dock for the ship to come in. You'll be given a chance to board the boat when it comes into port.\"";
+ mes "\"It lingers in port to allow you some time to board in case you are running behind.\"";
+ mes "\"Once on the ship, it will sail to different ports and annouce where it is docking.\"";
+ mes "\"There are 2 Ferrys, both ferrys are free to ride.\"";
+ mes "\"The Main ferry travels from Argeas, Kaizei and Tonori. It docks in the major ports Hurnscald North, Nivalis and the Tulimshar Dock.\"";
+ mes "\"The Candor Ferry only travels betwen Candor and the Hurnscald South Dock.\"";
+ mes "\"Refreshments and supplies are offered aboard both ships during the voyage.\"";
+ mes "\"We also have some slot machines in case you get bored.\"";
+ return;
+}
function|script|FerryManifest
{
mes "Which Ferry do you want to check the schedule for?";
@@ -100,7 +112,6 @@ function|script|FerryManifest
L_CandorFerry:
mes "The ferry is currently at "+$@CandorDocks$[$@CandorCurrentDock];
- next;
set @NextDock, ($@CandorCurrentDock + 1);
if(@NextDock == getarraysize($@CandorDocks$))
set @NextDock, 0;
@@ -109,7 +120,6 @@ L_CandorFerry:
L_WorldFerry:
mes "The ferry is currently at "+$@MainDocks$[$@MainCurrentDock];
- next;
set @NextDock, ($@MainCurrentDock + 1);
if(@NextDock == getarraysize($@MainDocks$))
set @NextDock, 0;
@@ -143,14 +153,9 @@ function|script|BoardCandorFerry
"No.", L_Return;
L_Board:
- if (BaseLevel < 40) goto L_TooYoung;
warp "036-2.tmx",39,29;
goto L_Return;
-L_TooYoung:
- mes "This area is too dangerous for your low level.";
- goto L_Return;
-
L_Return:
return;
}
diff --git a/world/map/npc/functions/game_rules.txt b/world/map/npc/functions/game_rules.txt
index 9799b11d..cbd4b8fb 100644
--- a/world/map/npc/functions/game_rules.txt
+++ b/world/map/npc/functions/game_rules.txt
@@ -2,7 +2,9 @@
function|script|GameRules
{
- set @read, 0;
+
+ mes "[Server Game Rules]";
+ mes "Please Select Language.";
menu
"English", L_English,
"Deutsch (German)", L_German,
@@ -23,10 +25,8 @@ L_English:
mes "4. No begging";
mes "5. Speak English on public chat";
mes "6. Treat others the same way you would like to be treated";
- next;
mes "AFK botting will be determined by talking to players who are moving and/or attacking.";
mes "Automated following will be determined by observation.";
- next;
goto L_End;
L_German:
@@ -38,9 +38,7 @@ L_German:
mes "5. Englisch ist die einzig zulässige Sprache im öffentlichen Raum.";
mes "6. Behandele andere so, wie du selbst behandelt werden willst.";
mes "Jegliche Regelverstöße können bestraft werden, entweder durch ein Zurücksetzen der Charaktereigenschaften und -besitztümer auf den Ausgangszustand, oder durch einen temporären oder permanenten Ausschluss aus dem Spiel.";
- next;
mes "Automatisiertes Spielverhalten liegt vor, wenn ein sich bewegender/kämpfender Spieler nicht intelligent auf Gesprächsaufforderungen reagiert.";
- next;
goto L_End;
L_Dutch:
@@ -52,9 +50,7 @@ L_Dutch:
mes "4. Verboden te bedelen";
mes "5. Spreek Engels op de publieke chat";
mes "6. Behandel andere zoals ook jij behandeld wilt worden";
- next;
mes "Botten word bepaald door te praten tegen spelers die aan het bewegen en/of aanvallen zijn.";
- next;
goto L_End;
L_Danish:
@@ -66,9 +62,7 @@ L_Danish:
mes "4. Det er forbudt at tigge (for eksempel: Maa jeg ikke nok faa dit svaerd, kom nu, vaer nu soed... og saa videre)";
mes "5. Det er forbudt at snakke andre sprog end Engelsk, i den aabne chat. (Dog er det lovligt ved at bruge foelgende kommandoen /whisper)";
mes "6. Husk at goere mod andre, som du vil have de skal goere imod dig (opfoer dig ordenligt!)";
- next;
mes "Botting bliver fastlagt paa grundlag af, at man snakker til andre spillere, der gaar rundt og/eller der angriber og de ikke svare igen.";
- next;
goto L_End;
L_French:
@@ -80,9 +74,7 @@ L_French:
mes "4. Ne demandez pas d'items ou d'argent (les echanges doivent se faire de preference sur forums.themanaworld.org)";
mes "5. Parlez anglais dans les salons de discussions publics (principalement en ville)";
mes "6. Traitez les autres de la meme maniere que vous voudriez etre traite(e)";
- next;
mes "L'utilisation de \"bot\" sera determinee en parlant aux joueurs(ses) en train de bouger et/ou d'attaquer.";
- next;
goto L_End;
L_Spanish:
@@ -93,10 +85,8 @@ L_Spanish:
mes "4. No mendigar.";
mes "5. Escriba únicamente en Inglés en el chat público";
mes "6. Trate a los demás de la misma forma que le gustaría ser tratado";
- next;
mes "El uso de programas automáticos para jugar sin estar frente al teclado se determinará hablando con los jugadores que estén moviéndose y/o atacando.";
mes "El seguimiento automático será determinado por observación.";
- next;
goto L_End;
L_Swedish:
@@ -107,9 +97,7 @@ L_Swedish:
mes "4. Tigg inte";
mes "5. Prata bara engelska i den offentliga chatten";
mes "6. Behandla andra som du vill bli behandlad";
- next;
mes "Vid misstankar om bottande kontrolleras detta genom att prata med spelaren under dess kringvandrande eller attackerande.";
- next;
goto L_End;
L_Portuguese:
@@ -121,9 +109,7 @@ L_Portuguese:
mes "4. Pedintes serao ignorados, ou banidos.";
mes "5. Fale ingles em lugares publicos.";
mes "6. Trate os outros da mesma maneira que quer ser tratado(a).";
- next;
mes "O \"botting\" sera determinado, falando com os jogadores que se movem e/ou atacam.";
- next;
goto L_End;
L_Polish:
@@ -135,9 +121,7 @@ L_Polish:
mes "4. Zabrania sie zebrania";
mes "5. Na publicznym kanale rozmawiamy po angielsku";
mes "6. Traktuj innych tak jak sam chcesz byc traktowany";
- next;
mes "Uzywanie botow zostanie okreslone na podstawie rozmow z innymi graczami podczas aktywnosci gracza.";
- next;
goto L_End;
L_Italian:
@@ -149,13 +133,10 @@ L_Italian:
mes "4. Vietato implorare";
mes "5. Parlare solo inglese nella chat pubblica";
mes "6. Tratta gli altri giocatori come vuoi che gli altri trattino te.";
- next;
mes "I bot saranno determinati in base alle risposte e ai movimenti dei giocatori esaminati.";
- next;
goto L_End;
L_End:
- set @read, 1;
if (TUT_var == 0)
set TUT_var, gettimetick(2);
goto L_Return;
diff --git a/world/map/npc/functions/soul_menhir.txt b/world/map/npc/functions/soul_menhir.txt
index e047e928..6c2c1c17 100644
--- a/world/map/npc/functions/soul_menhir.txt
+++ b/world/map/npc/functions/soul_menhir.txt
@@ -2,7 +2,6 @@ function|script|SoulMenhir
{
mes "[Soul Menhir]";
mes "(A mystical aura surrounds this stone. You feel mysteriously attracted to it. Something tells you to touch it. What do you do?)";
- next;
menu
"Touch it.", L_Bind,
@@ -16,7 +15,6 @@ L_Towel:
set TowelLastUsed, gettimetick(2);
mes "[Soul Menhir]";
mes "(You touch the mysterious stone. Somehow it feels hard and soft at the same time.)";
- next;
getitem "HitchhikersTowel", 1;
goto L_Return;
@@ -26,23 +24,14 @@ L_Bind:
mes "[Soul Menhir]";
mes "(You touch the mysterious stone. Somehow it feels warm and cold at the same time.)";
- next;
-
- mes "[Soul Menhir]";
mes "(Suddenly a strange sensation flows through you. It feels like your soul leaves your body and becomes one with the stone.)";
- next;
-
- mes "[Soul Menhir]";
mes "(As suddenly as the feeling started it stops. The strange attraction is away from one moment to the next and the menhir feels like just an ordinary stone.)";
- next;
-
set Menhir_Activated, 1;
goto L_Save;
L_Shortversion:
mes "[Soul Menhir]";
mes "(A strange sensation flows through you. It feels like your soul leaves your body and becomes one with the stone. As suddenly as the feeling started it stops.)";
- next;
goto L_Save;
L_Save:
diff --git a/world/map/npc/functions/stat_reset.txt b/world/map/npc/functions/stat_reset.txt
new file mode 100644
index 00000000..d8f484ff
--- /dev/null
+++ b/world/map/npc/functions/stat_reset.txt
@@ -0,0 +1,55 @@
+//
+
+function|script|StatReset
+{
+// if (ResetA_charstate == 1) goto L_Multiple;
+
+// set @cost, 10000000 / ($ResetA_uses + 1);
+
+ set @cost, BaseLevel * 100;
+
+ mes "[" + @NpcName$ + "]";
+ mes "\"I have come across a spell that will";
+ mes "reset your status points.";
+ mes "Normally this spell is expensive, but";
+ mes "due to an unusual constellation of the";
+ mes "stars I can cast it very cheaply!";
+ mes "For you it will cost only "+@cost+" gp.\"";
+ next;
+ menu
+ "Reset my stats",L_Next,
+ "Forget about it",L_Pass;
+
+L_Next:
+ if (Zeny<@cost) goto L_NoMoney;
+ goto L_Reset;
+
+// set $ResetA_uses, $ResetA_uses + 1;
+// set ResetA_charstate, 1;
+
+L_Reset:
+ set Zeny, Zeny-@cost;
+ resetstatus;
+
+ mes "[" + @NpcName$ + "]";
+ mes "\"There you are.";
+ mes "";
+ mes "Good as new!\"";
+ goto L_Return;
+
+L_Pass:
+ mes "[" + @NpcName$ + "]";
+ mes "\"Very well then, see you.\"";
+ goto L_Return;
+
+L_NoMoney:
+ mes "[" + @NpcName$ + "]";
+ mes "\"Oh dear, the price cannot be bargained.";
+ mes "";
+ mes "Perhaps you can borrow from a friend?\"";
+ goto L_Return;
+
+L_Return:
+ set @cost, 0;
+ return;
+}
diff --git a/world/map/npc/functions/time.txt b/world/map/npc/functions/time.txt
index 9f141d3e..695c4cec 100644
--- a/world/map/npc/functions/time.txt
+++ b/world/map/npc/functions/time.txt
@@ -55,3 +55,74 @@ function|script|time_stamp
return;
}
+
+
+
+// HumanTime - returns a human-readable time
+// author: meko
+
+// Variables:
+// input @ms integer
+// output @time$ string
+
+function|script|HumanTime
+{
+ set @time$, "now";
+ if(@ms < 1000) goto L_Millis; // under 1 second we have nothing to count
+ set @seconds, @ms / 1000;
+ set @ms, @ms % 1000;
+ if(@seconds < 60) goto L_Seconds;
+ set @minutes, @seconds / 60;
+ set @seconds, @seconds % 60;
+ if(@minutes < 60) goto L_Minutes;
+ set @hours, @minutes / 60;
+ set @minutes, @minutes % 60;
+ if(@hours < 60) goto L_Hours;
+ return;
+
+L_Millis:
+ set @time$, @ms + "ms";
+ return;
+
+L_Seconds:
+ set @unit$, "second";
+ if(@seconds > 1) set @unit$, "seconds";
+ set @unit2$, "millisecond";
+ if(@ms > 1) set @unit2$, "milliseconds";
+ set @time$, @seconds + " " + @unit$;
+ if(@ms) set @time$, @time$ + " and " + @ms + " " + @unit2$;
+ return;
+
+L_Minutes:
+ set @unit$, "minute";
+ if(@minutes > 1) set @unit$, "minutes";
+ set @unit2$, "second";
+ if(@seconds > 1) set @unit2$, "seconds";
+ set @unit3$, "millisecond";
+ if(@ms > 1) set @unit3$, "milliseconds";
+ set @time$, @minutes + " " + @unit$;
+ set @separator$, " and ";
+ if(@ms) set @separator$, ", ";
+ if(@seconds) set @time$, @time$ + @separator$ + @seconds + " " + @unit2$;
+ if(@ms) set @time$, @time$ + " and " + @ms + " " + @unit3$;
+ return;
+
+L_Hours:
+ set @unit$, "hour";
+ if(@hours > 1) set @unit$, "hours";
+ set @unit2$, "minute";
+ if(@minutes > 1) set @unit2$, "minutes";
+ set @unit3$, "second";
+ if(@seconds > 1) set @unit3$, "seconds";
+ set @unit4$, "millisecond";
+ if(@ms > 1) set @unit4$, "milliseconds";
+ set @time$, @hours + " " + @unit$;
+ set @separator$, " and ";
+ if(@seconds || @ms) set @separator$, ", ";
+ if(@minutes) set @time$, @time$ + @separator$ + @minutes + " " + @unit2$;
+ set @separator$, " and ";
+ if(@ms) set @separator$, ", ";
+ if(@seconds) set @time$, @time$ + @separator$ + @seconds + " " + @unit3$;
+ if(@ms) set @time$, @time$ + " and " + @ms + " " + @unit4$;
+ return;
+}
diff --git a/world/map/npc/functions/travelers.txt b/world/map/npc/functions/travelers.txt
index 6827aece..f8ce6bf7 100644
--- a/world/map/npc/functions/travelers.txt
+++ b/world/map/npc/functions/travelers.txt
@@ -13,7 +13,7 @@
OnInit:
// TravelFound
set $@tut_bit, (1 << 2);
- set $@druid_tree_bit, (1 << 3);
+ //set $@druid_tree_bit, (1 << 3);
set $@graveyard_bit, (1 << 4);
set $@magic_house_bit, (1 << 5);
set $@terranite_cave_bit, (1 << 6);
@@ -21,9 +21,8 @@ OnInit:
set $@blue_sage_bit, (1 << 8);
set $@hurnscald_bit, (1 << 9);
set $@nivalis_bit, (1 << 10);
- set $@tul_mine_bit, (1 << 11);
+ //set $@tul_mine_bit, (1 << 11);
set $@pachua_bit, (1 << 12);
- set $@nivalis_snow_hills_bit, (1 << 13);
set $@barbarians_bit, (1 << 14);
set $@hurns_farms_bit, (1 << 15);
set $@candor_bit, (1 << 16);
@@ -31,14 +30,13 @@ OnInit:
set $@tulimshar_cost, 100;
set $@hurnscald_cost, 100;
set $@nivalis_cost, 100;
- set $@druid_tree_cost, 150;
- set $@tul_mine_cost, 150;
+ //set $@druid_tree_cost, 150;
+ //set $@tul_mine_cost, 150;
set $@pachua_cost, 200;
set $@graveyard_cost, 200;
set $@magic_house_cost, 150;
set $@terranite_cave_cost, 200;
set $@blue_sage_cost, 200;
- set $@nivalis_snow_hills_cost, 150;
set $@barbarians_cost, 150;
set $@hurns_farms_cost, 150;
set $@candor_cost, 200;
@@ -101,8 +99,6 @@ L_Start:
"Tonori - Tulimshar (" + (@Cost * $@tulimshar_cost) + " GP)", L_TravelTulimshar,
"Argeas - Hurnscald (" + (@Cost * $@hurnscald_cost) + " GP)", L_TravelHurnscald,
"Kaizei - Nivalis (" + (@Cost * $@nivalis_cost) + " GP)", L_TravelNivalis,
- "Tonori - Druid Tree (" + (@Cost * $@druid_tree_cost) + " GP)", L_TravelDruidTree,
- "Tonori - Tulimshar Mines (" + (@Cost * $@tul_mine_cost) + " GP)", L_TravelTulMine,
"Tonori - Pachua's Village (" + (@Cost * $@pachua_cost) + " GP)", L_TravelPachua,
"Argeas - Candor (" + (@Cost * $@candor_cost) + " GP)", L_TravelCandor,
"Argeas - Magic House (" + (@Cost * $@magic_house_cost) + " GP)", L_TravelMagicHouse,
@@ -111,7 +107,6 @@ L_Start:
"Argeas - Terranite Cave (" + (@Cost * $@terranite_cave_cost) + " GP)", L_TravelTerranite,
"Kaizei - Barbarian Village (" + (@Cost * $@barbarians_cost) + " GP)", L_TravelBarbarians,
"Kaizei - Sage Nikolai's Mansion (" + (@Cost * $@blue_sage_cost) + " GP)", L_TravelBlueSage,
- "Kaizei - Snow Hills (" + (@Cost * $@nivalis_snow_hills_cost) + " GP)", L_TravelSnowHills,
"Who are the Travelers?", L_TravelTut,
"I'm not interested.", L_TravelNo;
@@ -132,14 +127,6 @@ L_TravelPlayer:
warp @NextLocationMap$,@NextLocationX,@NextLocationY;
goto L_Clearvars;
-L_TravelDruidTree:
- set @NextLocationBit, $@druid_tree_bit;
- set @NextLocationCost, (@Cost * $@druid_tree_cost);
- set @NextLocationMap$, "005-1.gat";
- set @NextLocationX, 76;
- set @NextLocationY, 36;
- goto L_TravelChecks;
-
L_TravelGraveyard:
set @NextLocationBit, $@graveyard_bit;
set @NextLocationCost, (@Cost * $@graveyard_cost);
@@ -167,9 +154,9 @@ L_TravelTerranite:
L_TravelTulimshar:
set @NextLocationBit, $@tulimshar_bit;
set @NextLocationCost, (@Cost * $@tulimshar_cost);
- set @NextLocationMap$, "001-1.gat";
- set @NextLocationX, 44;
- set @NextLocationY, 70;
+ set @NextLocationMap$, "002-1.gat";
+ set @NextLocationX, 60;
+ set @NextLocationY, 42;
goto L_TravelChecks;
L_TravelBlueSage:
@@ -196,14 +183,6 @@ L_TravelNivalis:
set @NextLocationY, 122;
goto L_TravelChecks;
-L_TravelTulMine:
- set @NextLocationBit, $@tul_mine_bit;
- set @NextLocationCost, (@Cost * $@tul_mine_cost);
- set @NextLocationMap$, "002-2.gat";
- set @NextLocationX, 27;
- set @NextLocationY, 28;
- goto L_TravelChecks;
-
L_TravelPachua:
set @NextLocationBit, $@pachua_bit;
set @NextLocationCost, (@Cost * $@pachua_cost);
@@ -212,14 +191,6 @@ L_TravelPachua:
set @NextLocationY, 97;
goto L_TravelChecks;
-L_TravelSnowHills:
- set @NextLocationBit, $@nivalis_snow_hills_bit;
- set @NextLocationCost, (@Cost * $@nivalis_snow_hills_cost);
- set @NextLocationMap$, "044-1.gat";
- set @NextLocationX, 152;
- set @NextLocationY, 19;
- goto L_TravelChecks;
-
L_TravelBarbarians:
set @NextLocationBit, $@barbarians_bit;
set @NextLocationCost, (@Cost * $@barbarians_cost);
diff --git a/world/map/npc/functions/undead_debug.txt b/world/map/npc/functions/undead_debug.txt
index a49fcd76..992cbc97 100644
--- a/world/map/npc/functions/undead_debug.txt
+++ b/world/map/npc/functions/undead_debug.txt
@@ -53,26 +53,26 @@ L_KrukanItems:
L_RazhaItems:
if ((checkweight("Soul", 3) == 0)
- || (checkweight("RottenRags", 5) == 0)
+ || (checkweight("DiseasedHeart", 5) == 0)
|| (checkweight("UndeadEye", 5) == 0)
|| (checkweight("UndeadEar", 5) == 0)
|| (@inventorylist_count == 100))
goto L_InventoryNoSpace;
getitem "Soul", 3;
- getitem "RottenRags", 5;
+ getitem "DiseasedHeart", 5;
getitem "UndeadEye", 5;
getitem "UndeadEar", 5;
goto L_Main;
L_TeroganItems:
if ((checkweight("Soul", 5) == 0)
- || (checkweight("DiseasedHeart", 5) == 0)
+ || (checkweight("RottenRags", 5) == 0)
|| (checkweight("UndeadEye", 5) == 0)
|| (checkweight("UndeadEar", 5) == 0)
|| (@inventorylist_count == 100))
goto L_InventoryNoSpace;
getitem "Soul", 5;
- getitem "DiseasedHeart", 5;
+ getitem "RottenRags", 5;
getitem "UndeadEye", 5;
getitem "UndeadEar", 5;
goto L_Main;