summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.md5
-rw-r--r--conf/login/login-server.conf16
-rw-r--r--db/constants.conf25
-rw-r--r--doc/constants.md7
-rw-r--r--doc/script_commands.txt20
-rw-r--r--npc/instances/OrcsMemory.txt726
-rw-r--r--npc/re/instances/ghost_palace.txt407
-rw-r--r--npc/re/instances/octopus_cave.txt290
-rw-r--r--npc/re/instances/saras_memory.txt1029
-rw-r--r--src/login/lclif.c2
-rw-r--r--src/login/login.c104
-rw-r--r--src/login/login.h20
-rw-r--r--src/map/clif.c56
-rw-r--r--src/map/map.c2
-rw-r--r--src/map/map.h2
-rw-r--r--src/map/mob.c2
-rw-r--r--src/map/mob.h8
-rw-r--r--src/map/npc.c26
-rw-r--r--src/map/npc.h3
-rw-r--r--src/map/packets.h74
-rw-r--r--src/map/packets_keys.h14
-rw-r--r--src/map/script.c132
-rw-r--r--src/map/script.h2
-rw-r--r--src/map/status.c12
-rw-r--r--src/plugins/HPMHooking/HPMHooking.Defs.inc28
-rw-r--r--src/plugins/HPMHooking/HPMHooking_login.HPMHooksCore.inc52
-rw-r--r--src/plugins/HPMHooking/HPMHooking_login.HookingPoints.inc13
-rw-r--r--src/plugins/HPMHooking/HPMHooking_login.Hooks.inc347
-rw-r--r--src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc4
-rw-r--r--src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc1
-rw-r--r--src/plugins/HPMHooking/HPMHooking_map.Hooks.inc26
31 files changed, 2130 insertions, 1325 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index b18826d20..2b1745233 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -9,6 +9,10 @@ and this project does not adhere to [Semantic Versioning](http://semver.org/spec
If you are reading this in a text editor, simply ignore this section
-->
+## [v2017.10.22-1] `October 22 2017` `PATCH 1`
+### Fixed
+- Fixed a wrong null pointer check in `logmes()`, which caused the command to never log and instead print debug information.
+
## [v2017.10.22] `October 22 2017`
### Added
- Added the script command `getmapinfo()`, which allows to obtain misc information about a map. (#1852)
@@ -32,4 +36,5 @@ If you are reading this in a text editor, simply ignore this section
- New versioning scheme and project changelogs/release notes (#1853)
[Unreleased]: https://github.com/HerculesWS/Hercules/compare/stable...master
+[v2017.10.22-1]: https://github.com/HerculesWS/Hercules/compare/v2017.10.22...v2017.10.22-1
[v2017.10.22]: https://github.com/HerculesWS/Hercules/compare/6b1fe2d...v2017.10.22
diff --git a/conf/login/login-server.conf b/conf/login/login-server.conf
index 71928e3d0..4ad02deb2 100644
--- a/conf/login/login-server.conf
+++ b/conf/login/login-server.conf
@@ -54,6 +54,22 @@ login_configuration: {
date_format: "%Y-%m-%d %H:%M:%S"
}
+ // for packet version >= 20170726
+ users_count: {
+ // if false, dont show any colored strings.
+ // if true, show special users count numbers for coloring char servers.
+ send_user_count_description: true
+
+ // users counts for use different colors.
+ // below 'low' show green text
+ // below 'medium' show oragne text
+ // below 'high' show red text
+ // higher 'high' show purple text
+ low: 200
+ medium: 500
+ high: 1000
+ }
+
// Account engine configuration
account: {
// Can you use _M/_F to make new accounts on the server?
diff --git a/db/constants.conf b/db/constants.conf
index 0015646dd..eda877671 100644
--- a/db/constants.conf
+++ b/db/constants.conf
@@ -3610,15 +3610,20 @@ constants_db: {
HUNTING: 2
comment__: "questinfo"
- QTYPE_NONE: 0x270f
- QTYPE_QUEST: 0x00
- QTYPE_QUEST2: 0x01
- QTYPE_JOB: 0x02
- QTYPE_JOB2: 0x03
- QTYPE_EVENT: 0x04
- QTYPE_EVENT2: 0x05
- QTYPE_WARG: 0x06
- QTYPE_WARG2: 0x08
+ QTYPE_NONE: 0x270f
+ QTYPE_QUEST: 0x00
+ QTYPE_QUEST2: 0x01
+ QTYPE_JOB: 0x02
+ QTYPE_JOB2: 0x03
+ QTYPE_EVENT: 0x04
+ QTYPE_EVENT2: 0x05
+ QTYPE_WARG: 0x06
+ QTYPE_CLICKME: 0x06
+ QTYPE_DAILYQUEST: 0x07
+ QTYPE_WARG2: 0x08
+ QTYPE_EVENT3: 0x08
+ QTYPE_JOBQUEST: 0x09
+ QTYPE_JUMPING_PORING: 0xA
comment__: "Font weight"
FW_DONTCARE: 0
@@ -3865,4 +3870,6 @@ constants_db: {
UDT_LIFETIME: 52
UDT_MERC_KILLCOUNT: 53
UDT_STATADD: 54
+ UDT_ROBE: 55
+ UDT_BODY2: 56
}
diff --git a/doc/constants.md b/doc/constants.md
index 98c22bb3e..fa077b965 100644
--- a/doc/constants.md
+++ b/doc/constants.md
@@ -3543,7 +3543,12 @@
- `QTYPE_EVENT`: 4
- `QTYPE_EVENT2`: 5
- `QTYPE_WARG`: 6
+- `QTYPE_CLICKME`: 6
+- `QTYPE_DAILYQUEST`: 7
- `QTYPE_WARG2`: 8
+- `QTYPE_EVENT3`: 8
+- `QTYPE_JOBQUEST`: 9
+- `QTYPE_JUMPING_PORING`: 10
### Font weight
@@ -3782,6 +3787,8 @@
- `UDT_LIFETIME`: 52
- `UDT_MERC_KILLCOUNT`: 53
- `UDT_STATADD`: 54
+- `UDT_ROBE`: 55
+- `UDT_BODY2`: 56
## Hardcoded Constants (source)
diff --git a/doc/script_commands.txt b/doc/script_commands.txt
index 5c730106b..940302982 100644
--- a/doc/script_commands.txt
+++ b/doc/script_commands.txt
@@ -189,6 +189,7 @@ There are two optional fields for monster size and AI. Size can be 0
Alternately, a monster spawned using 'boss_monster' instead of 'monster' is able to be
detected on the map with the SC_CASH_BOSS_ALARM status (used by Convex Mirror, item ID# 12214).
+A monster spawned using 'miniboss_monster' is spawn monster as mini boss view.
** NPC names
@@ -3232,6 +3233,7 @@ Set an equipment's option index or value for the specified option slot.
<equipment_index> For a list of equipment indexes see getequipid().
<option_slot> can range from 1 to MAX_ITEM_OPTIONS
<type> can be IT_OPT_INDEX (the ID of the option bonus, @see "Id" or "Name" in db/item_options.conf)
+ removes the equip option if type is 0.
<value> The value of the type to be set.
returns 0 if value couldn't be set, 1 on success.
@@ -9226,7 +9228,14 @@ No Icon : QTYPE_NONE
! Event Icon : QTYPE_EVENT
? Event Icon : QTYPE_EVENT2
Warg : QTYPE_WARG
-Warg Face : QTYPE_WARG2 (Only for packetver >= 20120410)
+Warg Face : QTYPE_WARG2 (Only for packetver >= 20120410 && packetver < 20170315)
+
+- Only for packetver >= 20170315
+Click Me Icon : QTYPE_CLICKME
+! Daily Quest Icon : QTYPE_DAILYQUEST
+! Green Event Icon : QTYPE_EVENT3
+! Job Quest Icon : QTYPE_JOBQUEST
+Jumping Poring : QTYPE_JUMPING_PORING
Map Mark Color, when used, creates a mark in the user's mini map on the position of the NPC,
the available color values are:
@@ -9335,7 +9344,14 @@ Remove Icon : QTYPE_NONE
! Event Icon : QTYPE_EVENT
? Event Icon : QTYPE_EVENT2
Warg : QTYPE_WARG
-Warg Face : QTYPE_WARG2 (Only for packetver >= 20120410)
+Warg Face : QTYPE_WARG2 (Only for packetver >= 20120410 && packetver < 20170315)
+
+- Only for packetver >= 20170315
+Click Me Icon : QTYPE_CLICKME
+! Daily Quest Icon : QTYPE_DAILYQUEST
+! Green Event Icon : QTYPE_EVENT3
+! Job Quest Icon : QTYPE_JOBQUEST
+Jumping Poring : QTYPE_JUMPING_PORING
Mark Color:
0 - No Mark
diff --git a/npc/instances/OrcsMemory.txt b/npc/instances/OrcsMemory.txt
index 28cc9bbd5..1aaf2fd42 100644
--- a/npc/instances/OrcsMemory.txt
+++ b/npc/instances/OrcsMemory.txt
@@ -38,132 +38,136 @@ gef_fild10,242,202,0 script Dimensional Gorge Piece 2_MONEMUS,{
.@party_id = getcharid(CHAR_ID_PARTY);
.@p_name$ = getpartyname(.@party_id);
- .@md_name$ = "Orc's Memory";
+ .@md_name$ = _("Orc's Memory");
- if (!instance_check_party(.@party_id,2,30,80)) {
- mes "Only users between Levels ^ff000030 ~ 80^000000 can enter this Dungeon.";
- close;
+ if (!instance_check_party(.@party_id, 2, 30, 80)) {
+ mes("Only users between Levels ^ff000030 ~ 80^000000 can enter this Dungeon.");
+ close();
}
- .@orctime = questprogress(12059,PLAYTIME);
+ .@orctime = questprogress(12059, PLAYTIME);
if (.@orctime == 2) {
- mes "^0000ffAll records and after-effects related to the Orc's Memory Dungeon are deleted. You can now regenerate or re-enter the dungeon.^000000";
- erasequest 12059;
- close;
+ mes("^0000ffAll records and after-effects related to the Orc's Memory Dungeon are deleted. You can now regenerate or re-enter the dungeon.^000000");
+ erasequest(12059);
+ close();
}
if (.@orctime == 1) {
- mes "You can enter the Dungeon if it has been generated.";
- next;
- if(select("Enter the Dungeon "+.@md_name$, "Cancel") == 2)
- close;
+ mes("You can enter the Dungeon if it has been generated.");
+ next();
+ .@str$ = sprintf(_$("Enter the Dungeon %s"), .@md_name$);
+ if (select(.@str$, "Cancel") == 2)
+ close();
// Fall through to access the dungeon
} else { // !.@orctime
- if (getcharid(CHAR_ID_CHAR) == getpartyleader(.@party_id,2)) {
- mes "Party status confirmed. Would you like to book entrance to the "+.@md_name$+"?";
- next;
- switch(select("Reserve the "+.@md_name$, "Enter the Dungeon", "Cancel")) {
+ if (getcharid(CHAR_ID_CHAR) == getpartyleader(.@party_id, 2)) {
+ mesf("Party status confirmed. Would you like to book entrance to the %s?", .@md_name$);
+ next();
+ .@str$ = sprintf(_$("Reserve the %s"), .@md_name$);
+ switch (select(.@str$, "Enter the Dungeon", "Cancel")) {
case 1:
- .@instance = instance_create(.@md_name$,.@party_id);
+ .@instance = instance_create(.@md_name$, .@party_id);
if (.@instance < 0) {
- mes "Party Name: "+.@p_name$;
- mes "Party Leader: "+strcharinfo(PC_NAME);
- mes "^0000ff"+.@md_name$+" ^000000 - Reservation Failed.";
- close;
+ mesf("Party Name: %s", .@p_name$);
+ mesf("Party Leader: %s", strcharinfo(PC_NAME));
+ mesf("^0000ff%s ^000000 - Reservation Failed.", .@md_name$);
+ close();
}
- mes "^0000ff"+.@md_name$+"^000000- Attempting to book an entrance";
+ mesf("^0000ff%s^000000- Attempting to book an entrance", .@md_name$);
for (.@i = 1; .@i <= 2; ++.@i) {
- if( instance_attachmap(.@i + "@orcs", .@instance) == "" )
+ if (instance_attachmap(.@i + "@orcs", .@instance) == "")
break;
}
- if( .@i < 2 ) {
+ if (.@i < 2) {
instance_destroy(.@instance);
- close;
+ close();
}
- instance_set_timeout 7200,300,.@instance;
+ instance_set_timeout(7200, 300, .@instance);
instance_init(.@instance);
- mes "After making a reservation, you have to select 'Enter the Dungeon' from the menu if you wish to enter the "+.@md_name$+".";
- close;
+ mesf("After making a reservation, you have to select 'Enter the Dungeon' from the menu if you wish to enter the %s.", .@md_name$);
+ close();
case 2:
break; // Fall through to access the dungeon (after the else)
case 3:
- close;
+ close();
}
- } else if (select(.@md_name$ + " Enter the Memorial Dungeon", "Cancel") == 2)
+ } else if (select(sprintf(_$("%s Enter the Memorial Dungeon"), .@md_name$), "Cancel") == 2) {
end;
+ }
// Else access the dungeon
}
// Dungeon access
if (has_instance("1@orcs") == "") {
- mes "Memorial Dungeon "+.@md_name$+" does not exist.";
- mes "The party leader has not reserved entrance to the dungeon yet.";
- next;
- mes "Once the reservation is complete, the dungeon will be generated.";
- mes "If your dungeon has been destroyed you must wait 7 days before re-entering.";
- close;
+ mesf("Memorial Dungeon %s does not exist.", .@md_name$);
+ mes("The party leader has not reserved entrance to the dungeon yet.");
+ next();
+ mes("Once the reservation is complete, the dungeon will be generated.");
+ mes("If your dungeon has been destroyed you must wait 7 days before re-entering.");
+ close();
}
- mapannounce "gef_fild10", strcharinfo(PC_NAME) + " of the party, " + .@p_name$ + " is entering the "+.@md_name$+".",bc_map,"0x00ff99";
- if (!questprogress(12059)) setquest 12059;
- warp "1@orcs",179,15;
+ mapannounce("gef_fild10", sprintf(_$("%s of the party, %s is entering the %s."), strcharinfo(PC_NAME), .@p_name$, .@md_name$), bc_map, C_SPRINGGREEN);
+ if (!questprogress(12059))
+ setquest(12059);
+ warp("1@orcs", 179, 15);
end;
}
gef_fild10,238,202,6 script Mad Scientist#orc 4_LGTSCIENCE,{
if (BaseLevel < 50) {
- mes "The Mad Scientist doesn't seem to notice you and keeps mumbling to himself...";
- close;
+ mes("The Mad Scientist doesn't seem to notice you and keeps mumbling to himself...");
+ close();
}
if (mad == 0) {
- mes "[Mad Scientist]";
- mes "Haha, no Orcs are coming near me!";
- mes "The power of the Dimensional Gorge is undefeatable!!";
- next;
- switch(select("Orcs don't attack you?", "You wish!")) {
+ mes("[Mad Scientist]");
+ mes("Haha, no Orcs are coming near me!");
+ mes("The power of the Dimensional Gorge is undefeatable!!");
+ next();
+ switch (select("Orcs don't attack you?", "You wish!")) {
case 1:
- mes "[Mad Scientist]";
- mes "Yeah, yeah.. I know it's hard to belive. I don't blame ya.";
- mes "I used to study the Dimensional Gorge discovered near Morroc.";
- mes "According to my research, the minerals found there have enormous power inside them!";
- next;
+ mes("[Mad Scientist]");
+ mes("Yeah, yeah.. I know it's hard to belive. I don't blame ya.");
+ mes("I used to study the Dimensional Gorge discovered near Morroc.");
+ mes("According to my research, the minerals found there have enormous power inside them!");
+ next();
break;
case 2:
- mes "[Mad Scientist]";
- mes "You are a pretty distrustful person, huh?";
- next;
+ mes("[Mad Scientist]");
+ mes("You are a pretty distrustful person, huh?");
+ next();
break;
}
select("Oh? Like what, travel to alternate space?");
- mes "[Mad Scientist]";
- mes "Very smart! I have actually just done that! See that statue over there? It's not your normal Monolith!";
- next;
- mes "[Mad Scientist]";
- mes "I have created it with a combination of our technology and the unlimited energy I discovered from the Gorge! Want to try it?";
- next;
+ mes("[Mad Scientist]");
+ mes("Very smart! I have actually just done that! See that statue over there? It's not your normal Monolith!");
+ next();
+ mes("[Mad Scientist]");
+ mes("I have created it with a combination of our technology and the unlimited energy I discovered from the Gorge! Want to try it?");
+ next();
select("...Um, that doesn't sound legal?");
- mes "[Mad Scientist]";
- mes "Hey, since when did something so interesting have to be legal!? How about it! You can talk to the Orcs! C'mon!";
- next;
- mes "[Mad Scientist]";
- mes "Chances are they'll just give you lots of instructions once they see you, so just wing it! They're always saying the same thing, to the point where I memorized them!";
- next;
- switch(select("Alright... What do I do?", "Umm, maybe not.")) {
+ mes("[Mad Scientist]");
+ mes("Hey, since when did something so interesting have to be legal!? How about it! You can talk to the Orcs! C'mon!");
+ next();
+ mes("[Mad Scientist]");
+ mes("Chances are they'll just give you lots of instructions once they see you, so just wing it! They're always saying the same thing, to the point where I memorized them!");
+ next();
+ switch (select("Alright... What do I do?", "Umm, maybe not.")) {
case 1:
- mes "[Mad Scientist]";
- mes "Very good! Just sit in the hands of this statue! And try to act natural when you're in there!";
+ mes("[Mad Scientist]");
+ mes("Very good! Just sit in the hands of this statue! And try to act natural when you're in there!");
mad = 1;
- close;
+ close();
case 2:
- mes "[Mad Scientist]";
- mes "Oh fine, be that way!";
- close;
+ mes("[Mad Scientist]");
+ mes("Oh fine, be that way!");
+ close();
}
} else if (mad == 1) {
- mes "[Mad Scientist]";
- mes "Hmm? Put your hand on that Monemus Statue if you want to experience traveling through dimensions!";
- close;
+ mes("[Mad Scientist]");
+ mes("Hmm? Put your hand on that Monemus Statue if you want to experience traveling through dimensions!");
+ close();
} else {
mad = 1;
end;
@@ -175,60 +179,53 @@ gef_fild10,238,202,6 script Mad Scientist#orc 4_LGTSCIENCE,{
end;
OnInstanceInit:
- disablenpc instance_npcname("#Resurrect Monsters1");
+ disablenpc(instance_npcname("#Resurrect Monsters1"));
end;
OnDisable:
- stopnpctimer;
- killmonster instance_mapname("1@orcs"),instance_npcname("#Resurrect Monsters1")+"::OnMyMobDead";
+ stopnpctimer();
+ killmonster(instance_mapname("1@orcs"), instance_npcname("#Resurrect Monsters1")+"::OnMyMobDead");
end;
OnEnable:
- enablenpc instance_npcname("#Resurrect Monsters1");
- monster instance_mapname("1@orcs"),0,0,"Orc Warrior",1023,30,instance_npcname("#Resurrect Monsters1")+"::OnMyMobDead";
+ enablenpc(instance_npcname("#Resurrect Monsters1"));
+ monster(instance_mapname("1@orcs"), 0, 0, _("Orc Warrior"), ORK_WARRIOR, 30, instance_npcname("#Resurrect Monsters1")+"::OnMyMobDead");
end;
OnMyMobDead:
.@map$ = instance_mapname("1@orcs");
- .@mob_dead_num = 30 - mobcount(.@map$,instance_npcname("#Resurrect Monsters1")+"::OnMyMobDead");
+ .@mob_dead_num = 30 - mobcount(.@map$, instance_npcname("#Resurrect Monsters1")+"::OnMyMobDead");
if (.@mob_dead_num > 0) {
- .@mob_ran = rand(1,30);
+ .@mob_ran = rand(1, 30);
if (.@mob_ran > 29) {
- monster .@map$,0,0,"Orc Warrior",1023,.@mob_dead_num,instance_npcname("#Resurrect Monsters1")+"::OnMyMobDead";
- }
- else if ((.@mob_ran > 28) && (.@mob_ran < 30)) {
- monster .@map$,0,0,"High Orc",1213,.@mob_dead_num,instance_npcname("#Resurrect Monsters1")+"::OnMyMobDead";
- if (rand(1,10) == 9) {
- mapannounce .@map$, "High Orc: We need more defenses! Get more people here!",bc_map,"0xff4444";
- }
- }
- else if ((.@mob_ran > 26) && (.@mob_ran < 29)) {
- areamonster .@map$,41,91,51,81,"High Orc",1213,.@mob_dead_num,instance_npcname("#Resurrect Monsters1")+"::OnMyMobDead";
- if (rand(1,10) == 9) {
- mapannounce .@map$, "Where are the High Orcs!? Get them to stop the enemies!",bc_map,"0xff4444";
- }
- }
- else {
- areamonster .@map$,17,187,27,177,"High Orc",1213,.@mob_dead_num,instance_npcname("#Resurrect Monsters1")+"::OnMyMobDead";
- if (rand(1,5) == 3) {
- mapannounce .@map$, "Caution: The army's starting to concentrate at Zone No. 4.",bc_map,"0x77ff77";
- }
- if (rand(1,100) == 50) {
- initnpctimer;
- }
+ monster(.@map$, 0, 0, _("Orc Warrior"), ORK_WARRIOR, .@mob_dead_num, instance_npcname("#Resurrect Monsters1")+"::OnMyMobDead");
+ } else if (.@mob_ran > 28 && .@mob_ran < 30) {
+ monster(.@map$, 0, 0, _("High Orc"), HIGH_ORC, .@mob_dead_num, instance_npcname("#Resurrect Monsters1")+"::OnMyMobDead");
+ if (rand(1, 10) == 9)
+ mapannounce(.@map$, _("High Orc: We need more defenses! Get more people here!"), bc_map, "0xff4444");
+ } else if (.@mob_ran > 26 && .@mob_ran < 29) {
+ areamonster(.@map$, 41, 91, 51, 81, _("High Orc"), HIGH_ORC, .@mob_dead_num, instance_npcname("#Resurrect Monsters1")+"::OnMyMobDead");
+ if (rand(1, 10) == 9)
+ mapannounce(.@map$, _("Where are the High Orcs!? Get them to stop the enemies!"), bc_map, "0xff4444");
+ } else {
+ areamonster(.@map$, 17, 187, 27, 177, _("High Orc"), HIGH_ORC, .@mob_dead_num, instance_npcname("#Resurrect Monsters1")+"::OnMyMobDead");
+ if (rand(1, 5) == 3)
+ mapannounce(.@map$, _("Caution: The army's starting to concentrate at Zone No. 4."), bc_map, "0x77ff77");
+ if (rand(1, 100) == 50)
+ initnpctimer();
}
}
end;
OnTimer10:
- mapannounce instance_mapname("1@orcs"), "Shouts of the Chief Orc of Safeguards: Looks like this will take longer than expected. Summon the Stalactic Golems!",bc_map,"0xff4444";
+ mapannounce(instance_mapname("1@orcs"), _("Shouts of the Chief Orc of Safeguards: Looks like this will take longer than expected. Summon the Stalactic Golems!"), bc_map, "0xff4444");
end;
OnTimer4010:
.@map$ = instance_mapname("1@orcs");
- mapannounce .@map$, "Stalactic Golems are digging out of the deep underground.",bc_map,"0x77ff77";
- areamonster .@map$,17,187,27,177,"Stalactic Golem",1278,20,instance_npcname("#Resurrect Monsters1")+"::OnMyMobDead";
- stopnpctimer;
+ mapannounce(.@map$, _("Stalactic Golems are digging out of the deep underground."), bc_map, "0x77ff77");
+ areamonster(.@map$, 17, 187, 27, 177, _("Stalactic Golem"), STALACTIC_GOLEM, 20, instance_npcname("#Resurrect Monsters1")+"::OnMyMobDead");
+ stopnpctimer();
end;
}
@@ -236,30 +233,27 @@ OnTimer4010:
end;
OnInstanceInit:
- disablenpc instance_npcname("#Resurrect Monsters2");
+ disablenpc(instance_npcname("#Resurrect Monsters2"));
end;
OnDisable:
- killmonster instance_mapname("1@orcs"),instance_npcname("#Resurrect Monsters2")+"::OnMyMobDead";
+ killmonster(instance_mapname("1@orcs"), instance_npcname("#Resurrect Monsters2")+"::OnMyMobDead");
end;
OnEnable:
- enablenpc instance_npcname("#Resurrect Monsters2");
- monster instance_mapname("1@orcs"),0,0,"Trained Wolf",1106,15,instance_npcname("#Resurrect Monsters2")+"::OnMyMobDead";
+ enablenpc(instance_npcname("#Resurrect Monsters2"));
+ monster(instance_mapname("1@orcs"), 0, 0, _("Trained Wolf"), DESERT_WOLF, 15, instance_npcname("#Resurrect Monsters2")+"::OnMyMobDead");
end;
OnMyMobDead:
.@map$ = instance_mapname("1@orcs");
- .@mob_dead_num = 15 - mobcount(.@map$,instance_npcname("#Resurrect Monsters2")+"::OnMyMobDead");
- if (rand(1,30) > 15) {
- if (.@mob_dead_num > 0) {
- monster .@map$,0,0,"Trained Wolf",1106,.@mob_dead_num,instance_npcname("#Resurrect Monsters2")+"::OnMyMobDead";
- }
- }
- else {
- if (.@mob_dead_num > 0) {
- areamonster .@map$,17,187,27,177,"Trained Wolf",1106,.@mob_dead_num,instance_npcname("#Resurrect Monsters2")+"::OnMyMobDead";
- }
+ .@mob_dead_num = 15 - mobcount(.@map$, instance_npcname("#Resurrect Monsters2")+"::OnMyMobDead");
+ if (rand(1, 30) > 15) {
+ if (.@mob_dead_num > 0)
+ monster(.@map$, 0, 0, _("Trained Wolf"), DESERT_WOLF, .@mob_dead_num, instance_npcname("#Resurrect Monsters2")+"::OnMyMobDead");
+ } else {
+ if (.@mob_dead_num > 0)
+ areamonster(.@map$, 17, 187, 27, 177, _("Trained Wolf"), DESERT_WOLF, .@mob_dead_num, instance_npcname("#Resurrect Monsters2")+"::OnMyMobDead");
}
end;
}
@@ -268,39 +262,34 @@ OnMyMobDead:
end;
OnInstanceInit:
- disablenpc instance_npcname("#Resurrect Monsters3");
+ disablenpc(instance_npcname("#Resurrect Monsters3"));
end;
OnDisable:
- killmonster instance_mapname("1@orcs"),instance_npcname("#Resurrect Monsters3")+"::OnMyMobDead";
+ killmonster(instance_mapname("1@orcs"), instance_npcname("#Resurrect Monsters3")+"::OnMyMobDead");
end;
OnEnable:
- enablenpc instance_npcname("#Resurrect Monsters3");
- monster instance_mapname("1@orcs"),0,0,"Orc Archer",1189,15,instance_npcname("#Resurrect Monsters3")+"::OnMyMobDead";
+ enablenpc(instance_npcname("#Resurrect Monsters3"));
+ monster(instance_mapname("1@orcs"), 0, 0, _("Orc Archer"), ORC_ARCHER, 15, instance_npcname("#Resurrect Monsters3")+"::OnMyMobDead");
end;
OnMyMobDead:
.@map$ = instance_mapname("1@orcs");
- .@mob_dead_num = 15 - mobcount(.@map$,instance_npcname("#Resurrect Monsters3")+"::OnMyMobDead");
- .@mob_ran = rand(1,30);
+ .@mob_dead_num = 15 - mobcount(.@map$, instance_npcname("#Resurrect Monsters3")+"::OnMyMobDead");
+ .@mob_ran = rand(1, 30);
if (.@mob_ran > 29) {
+ if (.@mob_dead_num > 0)
+ monster(.@map$, 0, 0, _("Orc Archer"), ORC_ARCHER, .@mob_dead_num, instance_npcname("#Resurrect Monsters3")+"::OnMyMobDead");
+ } else if (.@mob_ran > 26 && .@mob_ran < 30) {
if (.@mob_dead_num > 0) {
- monster .@map$,0,0,"Orc Archer",1189,.@mob_dead_num,instance_npcname("#Resurrect Monsters3")+"::OnMyMobDead";
- }
- }
- else if ((.@mob_ran > 26) && (.@mob_ran < 30)) {
- if (.@mob_dead_num > 0) {
- areamonster .@map$,43,155,47,159,"Orc Archer",1189,.@mob_dead_num,instance_npcname("#Resurrect Monsters3")+"::OnMyMobDead";
- if (rand(1,3) == 3) {
- mapannounce .@map$, "High Orc: Attack them from behind! Cut off their support!",bc_map,"0xff4444";
- }
- }
- }
- else {
- if (.@mob_dead_num > 0) {
- areamonster .@map$,17,187,27,177,"Orc Archer",1189,.@mob_dead_num,instance_npcname("#Resurrect Monsters3")+"::OnMyMobDead";
+ areamonster(.@map$, 43, 155, 47, 159, _("Orc Archer"), ORC_ARCHER, .@mob_dead_num, instance_npcname("#Resurrect Monsters3")+"::OnMyMobDead");
+ if (rand(1, 3) == 3)
+ mapannounce(.@map$, _("High Orc: Attack them from behind! Cut off their support!"), bc_map, "0xff4444");
}
+ } else {
+ if (.@mob_dead_num > 0)
+ areamonster(.@map$, 17, 187, 27, 177, _("Orc Archer"), ORC_ARCHER, .@mob_dead_num, instance_npcname("#Resurrect Monsters3")+"::OnMyMobDead");
}
end;
}
@@ -309,25 +298,24 @@ OnMyMobDead:
end;
OnInstanceInit:
- enablenpc instance_npcname("#Resurrect Monsters4");
- areamonster instance_mapname("1@orcs"),98,35,178,115,"Anopheles",1627,10,instance_npcname("#Resurrect Monsters4")+"::OnMyMobDead";
+ enablenpc(instance_npcname("#Resurrect Monsters4"));
+ areamonster(instance_mapname("1@orcs"), 98, 35, 178, 115, _("Anopheles"), ANOPHELES, 10, instance_npcname("#Resurrect Monsters4")+"::OnMyMobDead");
end;
OnMyMobDead:
.@map$ = instance_mapname("1@orcs");
- .@mob_dead_num = 10 - mobcount(.@map$,instance_npcname("#Resurrect Monsters4")+"::OnMyMobDead");
- if (.@mob_dead_num > 0) {
- monster .@map$,0,0,"Anopheles",1627,.@mob_dead_num,instance_npcname("#Resurrect Monsters4")+"::OnMyMobDead";
- }
+ .@mob_dead_num = 10 - mobcount(.@map$, instance_npcname("#Resurrect Monsters4")+"::OnMyMobDead");
+ if (.@mob_dead_num > 0)
+ monster(.@map$, 0, 0, _("Anopheles"), ANOPHELES, .@mob_dead_num, instance_npcname("#Resurrect Monsters4")+"::OnMyMobDead");
end;
OnDisable:
- killmonster instance_mapname("1@orcs"),instance_npcname("#Resurrect Monsters4")+"::OnMyMobDead";
+ killmonster(instance_mapname("1@orcs"), instance_npcname("#Resurrect Monsters4")+"::OnMyMobDead");
end;
}
1@orcs,180,29,4 script Kruger#1-1 4_ORCWARRIOR,{
- donpcevent instance_npcname("Kruger#1-2")+"::OnEnable";
+ donpcevent(instance_npcname("Kruger#1-2")+"::OnEnable");
end;
}
@@ -335,164 +323,164 @@ OnDisable:
end;
OnInstanceInit:
- disablenpc instance_npcname("Kruger#1-2");
+ disablenpc(instance_npcname("Kruger#1-2"));
end;
OnEnable:
- disablenpc instance_npcname("Kruger#1-1");
- enablenpc instance_npcname("Kruger#1-2");
- initnpctimer;
+ disablenpc(instance_npcname("Kruger#1-1"));
+ enablenpc(instance_npcname("Kruger#1-2"));
+ initnpctimer();
end;
OnTimer10:
- mapannounce instance_mapname("1@orcs"), "Kruger: Damn... What took you so long!! I don't have all day!!",bc_map,"0xffff00";
+ mapannounce(instance_mapname("1@orcs"), _("Kruger: Damn... What took you so long!! I don't have all day!!"), bc_map, C_YELLOW);
end;
OnTimer5710:
- mapannounce instance_mapname("1@orcs"), "Kruger: My plan was to let our comrades open the gate, but it's all ruined since I got busted by the Orc Shaman.",bc_map,"0xffff00";
+ mapannounce(instance_mapname("1@orcs"), _("Kruger: My plan was to let our comrades open the gate, but it's all ruined since I got busted by the Orc Shaman."), bc_map, C_YELLOW);
end;
OnTimer14610:
- mapannounce instance_mapname("1@orcs"), "Shouts of the Chief Orc of Safeguards: I smell a rat.. Send some patrols to the entrance!!",bc_map,"0xff4444";
+ mapannounce(instance_mapname("1@orcs"), _("Shouts of the Chief Orc of Safeguards: I smell a rat.. Send some patrols to the entrance!!"), bc_map, "0xff4444");
end;
OnTimer20210:
- mapannounce instance_mapname("1@orcs"), "Kruger: Darn it.. They'll be here any minute. Ok. Listen to me now.",bc_map,"0xffff00";
+ mapannounce(instance_mapname("1@orcs"), _("Kruger: Darn it.. They'll be here any minute. Ok. Listen to me now."), bc_map, C_YELLOW);
end;
OnTimer24910:
- mapannounce instance_mapname("1@orcs"), "Kruger: The Orc Shaman has sealed the 1st basement by dividing it into 4 zones. Each zone has one Enchanted Orc who has the power to unseal the next zone.",bc_map,"0xffff00";
+ mapannounce(instance_mapname("1@orcs"), _("Kruger: The Orc Shaman has sealed the 1st basement by dividing it into 4 zones. Each zone has one Enchanted Orc who has the power to unseal the next zone."), bc_map, C_YELLOW);
end;
OnTimer34310:
- mapannounce instance_mapname("1@orcs"), "Kruger: Find those Enchanted Orcs and get rid of them to move to the next zone.",bc_map,"0xffff00";
+ mapannounce(instance_mapname("1@orcs"), _("Kruger: Find those Enchanted Orcs and get rid of them to move to the next zone."), bc_map, C_YELLOW);
end;
OnTimer39710:
- mapannounce instance_mapname("1@orcs"), "Kruger: Try to avoid encountering Orcs other then the Enchanted ones. Everytime you kill a normal Orc, High Orcs will gather at the last path to the 2nd floor.",bc_map,"0xffff00";
+ mapannounce(instance_mapname("1@orcs"), _("Kruger: Try to avoid encountering Orcs other then the Enchanted ones. Everytime you kill a normal Orc, High Orcs will gather at the last path to the 2nd floor."), bc_map, C_YELLOW);
end;
OnTimer49210:
- mapannounce instance_mapname("1@orcs"), "Kruger: In the worst case, the path to the 2nd floor could be completely blocked. For your own sake, you should be as sneaky as possible.",bc_map,"0xffff00";
+ mapannounce(instance_mapname("1@orcs"), _("Kruger: In the worst case, the path to the 2nd floor could be completely blocked. For your own sake, you should be as sneaky as possible."), bc_map, C_YELLOW);
end;
OnTimer56310:
- mapannounce instance_mapname("1@orcs"), "Mission: Sneak in and get rid of the 'Enchanted Orcs'. Avoiding battles with other Orcs is the best way of getting into the 2nd floor.",bc_map,"0x44ffff";
- donpcevent instance_npcname("#Resurrect Monsters1")+"::OnEnable";
- donpcevent instance_npcname("#Resurrect Monsters2")+"::OnEnable";
- donpcevent instance_npcname("#Resurrect Monsters3")+"::OnEnable";
- disablenpc instance_npcname("Kruger#1-2");
+ mapannounce(instance_mapname("1@orcs"), _("Mission: Sneak in and get rid of the 'Enchanted Orcs'. Avoiding battles with other Orcs is the best way of getting into the 2nd floor."), bc_map, "0x44ffff");
+ donpcevent(instance_npcname("#Resurrect Monsters1")+"::OnEnable");
+ donpcevent(instance_npcname("#Resurrect Monsters2")+"::OnEnable");
+ donpcevent(instance_npcname("#Resurrect Monsters3")+"::OnEnable");
+ disablenpc(instance_npcname("Kruger#1-2"));
end;
OnTimer60000:
- areamonster instance_mapname("1@orcs"),137,83,143,89,"Enchanted Orc",1023,1,instance_npcname("B1 Area Mobs")+"::OnMyMobDead";
- stopnpctimer;
+ areamonster(instance_mapname("1@orcs"), 137, 83, 143, 89, _("Enchanted Orc"), ORK_WARRIOR, 1, instance_npcname("B1 Area Mobs")+"::OnMyMobDead");
+ stopnpctimer();
end;
}
1@orcs,168,125,0 script B1 Area 1 WARPNPC,3,3,{
OnInstanceInit:
- disablenpc instance_npcname("B1 Area 1");
+ disablenpc(instance_npcname("B1 Area 1"));
end;
OnEnable:
- enablenpc instance_npcname("B1 Area 1");
- areamonster instance_mapname("1@orcs"),103,105,109,111,"Enchanted Orc",1023,1,instance_npcname("B1 Area Mobs")+"::OnMyMobDead1";
+ enablenpc(instance_npcname("B1 Area 1"));
+ areamonster(instance_mapname("1@orcs"), 103, 105, 109, 111, _("Enchanted Orc"), ORK_WARRIOR, 1, instance_npcname("B1 Area Mobs")+"::OnMyMobDead1");
end;
OnTouch:
- warp instance_mapname("1@orcs"),168,130;
+ warp(instance_mapname("1@orcs"), 168, 130);
end;
OnContinue:
- donpcevent instance_npcname("B1 Area 2")+"::OnEnable";
- initnpctimer;
+ donpcevent(instance_npcname("B1 Area 2")+"::OnEnable");
+ initnpctimer();
end;
OnTimer10300:
- mapannounce instance_mapname("1@orcs"), "Kruger's Whisper: The Orcs here used to be my companions. They just lost their will ever since the Orc Shaman started to control them with her magic.",bc_map,"0xff4499";
+ mapannounce(instance_mapname("1@orcs"), _("Kruger's Whisper: The Orcs here used to be my companions. They just lost their will ever since the Orc Shaman started to control them with her magic."), bc_map, "0xff4499");
end;
OnTimer18700:
- mapannounce instance_mapname("1@orcs"), "Kruger's Whisper: There's nothing we can do but to defeat the Orc Shaman if we want to save the remaining tribes.",bc_map,"0xff4499";
- stopnpctimer;
+ mapannounce(instance_mapname("1@orcs"), _("Kruger's Whisper: There's nothing we can do but to defeat the Orc Shaman if we want to save the remaining tribes."), bc_map, "0xff4499");
+ stopnpctimer();
end;
}
1@orcs,89,94,0 script B1 Area 2 WARPNPC,3,3,{
OnInstanceInit:
- disablenpc instance_npcname("B1 Area 2");
+ disablenpc(instance_npcname("B1 Area 2"));
end;
OnEnable:
- enablenpc instance_npcname("B1 Area 2");
- areamonster instance_mapname("1@orcs"),32,40,38,46,"Enchanted Orc",1023,1,instance_npcname("B1 Area Mobs")+"::OnMyMobDead2";
+ enablenpc(instance_npcname("B1 Area 2"));
+ areamonster(instance_mapname("1@orcs"), 32, 40, 38, 46, _("Enchanted Orc"), ORK_WARRIOR, 1, instance_npcname("B1 Area Mobs")+"::OnMyMobDead2");
end;
OnTouch:
- warp instance_mapname("1@orcs"),85,85;
+ warp(instance_mapname("1@orcs"), 85, 85);
end;
OnContinue:
- donpcevent instance_npcname("B1 Area 3")+"::OnEnable";
- initnpctimer;
+ donpcevent(instance_npcname("B1 Area 3")+"::OnEnable");
+ initnpctimer();
end;
OnTimer30300:
- mapannounce instance_mapname("1@orcs"), "Kruger's Whisper: I saw the bodies of our tribe. It seems that the Orc Shaman used those Orcs for her rituals.",bc_map,"0xff4499";
+ mapannounce(instance_mapname("1@orcs"), _("Kruger's Whisper: I saw the bodies of our tribe. It seems that the Orc Shaman used those Orcs for her rituals."), bc_map, "0xff4499");
end;
OnTimer37600:
- mapannounce instance_mapname("1@orcs"), "Kruger's Whisper: ... It all has to do with me. I am responsible for this evil.",bc_map,"0xff4499";
- stopnpctimer;
+ mapannounce(instance_mapname("1@orcs"), _("Kruger's Whisper: ... It all has to do with me. I am responsible for this evil."), bc_map, "0xff4499");
+ stopnpctimer();
end;
}
1@orcs,38,105,0 script B1 Area 3 WARPNPC,3,3,{
OnInstanceInit:
- disablenpc instance_npcname("B1 Area 3");
+ disablenpc(instance_npcname("B1 Area 3"));
end;
OnEnable:
- enablenpc instance_npcname("B1 Area 3");
- areamonster instance_mapname("1@orcs"),19,177,25,183,"Enchanted Orc",1023,1,instance_npcname("B1 Area Mobs")+"::OnMyMobDead3";
+ enablenpc(instance_npcname("B1 Area 3"));
+ areamonster(instance_mapname("1@orcs"), 19, 177, 25, 183, _("Enchanted Orc"), ORK_WARRIOR, 1, instance_npcname("B1 Area Mobs")+"::OnMyMobDead3");
end;
OnTouch:
- warp instance_mapname("1@orcs"),38,110;
+ warp(instance_mapname("1@orcs"), 38, 110);
end;
OnContinue:
- donpcevent instance_npcname("B1 Area 4")+"::OnEnable";
- initnpctimer;
+ donpcevent(instance_npcname("B1 Area 4")+"::OnEnable");
+ initnpctimer();
end;
OnTimer30300:
- mapannounce instance_mapname("1@orcs"), "Please, hang in there!",bc_map,"0xff4499";
+ mapannounce(instance_mapname("1@orcs"), _("Please, hang in there!"), bc_map, "0xff4499");
end;
OnTimer32700:
- mapannounce instance_mapname("1@orcs"), "We'll get some rest when we get to the 2nd basement after passing through here.",bc_map,"0xff4499";
- stopnpctimer;
+ mapannounce(instance_mapname("1@orcs"), _("We'll get some rest when we get to the 2nd basement after passing through here."), bc_map, "0xff4499");
+ stopnpctimer();
end;
}
1@orcs,21,189,0 script B1 Area 4 WARPNPC,3,3,{
OnInstanceInit:
- disablenpc instance_npcname("B1 Area 4");
+ disablenpc(instance_npcname("B1 Area 4"));
end;
OnEnable:
- enablenpc instance_npcname("B1 Area 4");
- donpcevent instance_npcname("#Resurrect Monsters1")+"::OnDisable";
- donpcevent instance_npcname("#Resurrect Monsters2")+"::OnDisable";
- donpcevent instance_npcname("#Resurrect Monsters3")+"::OnDisable";
- donpcevent instance_npcname("#Resurrect Monsters4")+"::OnDisable";
+ enablenpc(instance_npcname("B1 Area 4"));
+ donpcevent(instance_npcname("#Resurrect Monsters1")+"::OnDisable");
+ donpcevent(instance_npcname("#Resurrect Monsters2")+"::OnDisable");
+ donpcevent(instance_npcname("#Resurrect Monsters3")+"::OnDisable");
+ donpcevent(instance_npcname("#Resurrect Monsters4")+"::OnDisable");
end;
OnTouch:
- warp instance_mapname("2@orcs"),32,171;
+ warp(instance_mapname("2@orcs"), 32, 171);
end;
}
@@ -500,19 +488,19 @@ OnTouch:
end;
OnMyMobDead:
- donpcevent instance_npcname("B1 Area 1")+"::OnEnable";
+ donpcevent(instance_npcname("B1 Area 1")+"::OnEnable");
end;
OnMyMobDead1:
- donpcevent instance_npcname("B1 Area 1")+"::OnContinue";
+ donpcevent(instance_npcname("B1 Area 1")+"::OnContinue");
end;
OnMyMobDead2:
- donpcevent instance_npcname("B1 Area 2")+"::OnContinue";
+ donpcevent(instance_npcname("B1 Area 2")+"::OnContinue");
end;
OnMyMobDead3:
- donpcevent instance_npcname("B1 Area 3")+"::OnContinue";
+ donpcevent(instance_npcname("B1 Area 3")+"::OnContinue");
end;
}
@@ -521,57 +509,51 @@ OnMyMobDead3:
end;
OnInstanceInit:
- disablenpc instance_npcname("#2Resurrect Monsters1");
+ disablenpc(instance_npcname("#2Resurrect Monsters1"));
end;
OnEnable:
- enablenpc instance_npcname("#2Resurrect Monsters1");
- monster instance_mapname("2@orcs"),0,0,"Vengeful Orc",1152,30,instance_npcname("#2Resurrect Monsters1")+"::OnMyMobDead";
+ enablenpc(instance_npcname("#2Resurrect Monsters1"));
+ monster(instance_mapname("2@orcs"), 0, 0, _("Vengeful Orc"), ORC_SKELETON, 30, instance_npcname("#2Resurrect Monsters1")+"::OnMyMobDead");
end;
OnDisable:
- stopnpctimer;
- killmonster instance_mapname("2@orcs"),instance_npcname("#2Resurrect Monsters1")+"::OnMyMobDead";
+ stopnpctimer();
+ killmonster(instance_mapname("2@orcs"), instance_npcname("#2Resurrect Monsters1")+"::OnMyMobDead");
end;
OnMyMobDead:
.@map$ = instance_mapname("2@orcs");
- .@mob_dead_num = 30 - mobcount(.@map$,instance_npcname("#2Resurrect Monsters1")+"::OnMyMobDead");
+ .@mob_dead_num = 30 - mobcount(.@map$, instance_npcname("#2Resurrect Monsters1")+"::OnMyMobDead");
if (.@mob_dead_num > 0) {
- .@mob_ran = rand(1,30);
+ .@mob_ran = rand(1, 30);
if (.@mob_ran > 29) {
- monster .@map$,0,0,"Vengeful Orc",1152,.@mob_dead_num,instance_npcname("#2Resurrect Monsters1")+"::OnMyMobDead";
- }
- else if ((.@mob_ran > 28) && (.@mob_ran < 30)) {
- monster .@map$,0,0,"High Orc",1213,.@mob_dead_num,instance_npcname("#2Resurrect Monsters1")+"::OnMyMobDead";
- }
- else if ((.@mob_ran > 26) && (.@mob_ran < 29)) {
- areamonster .@map$,157,112,167,122,"High Orc",1213,.@mob_dead_num,instance_npcname("#2Resurrect Monsters1")+"::OnMyMobDead";
- if (rand(1,10) == 9) {
- mapannounce .@map$, "Warning: High Orcs are gathering near area 3.",bc_map,"0xff4444";
- }
- }
- else {
- areamonster .@map$,173,13,183,23,"High Orc",1213,.@mob_dead_num,instance_npcname("#2Resurrect Monsters1")+"::OnMyMobDead";
- if (rand(1,5) == 3) {
- mapannounce .@map$, "Caution: The Forces have started to concentrate at the Shaman's Altar.",bc_map,"0x77ff77";
- }
- if (rand(1,70) == 50) {
- initnpctimer;
- }
+ monster(.@map$, 0, 0, _("Vengeful Orc"), ORC_SKELETON, .@mob_dead_num, instance_npcname("#2Resurrect Monsters1")+"::OnMyMobDead");
+ } else if (.@mob_ran > 28 && .@mob_ran < 30) {
+ monster(.@map$, 0, 0, _("High Orc"), HIGH_ORC, .@mob_dead_num, instance_npcname("#2Resurrect Monsters1")+"::OnMyMobDead");
+ } else if (.@mob_ran > 26 && .@mob_ran < 29) {
+ areamonster(.@map$, 157, 112, 167, 122, _("High Orc"), HIGH_ORC, .@mob_dead_num, instance_npcname("#2Resurrect Monsters1")+"::OnMyMobDead");
+ if (rand(1, 10) == 9)
+ mapannounce(.@map$, _("Warning: High Orcs are gathering near area 3."), bc_map, "0xff4444");
+ } else {
+ areamonster(.@map$, 173, 13, 183, 23, _("High Orc"), HIGH_ORC, .@mob_dead_num, instance_npcname("#2Resurrect Monsters1")+"::OnMyMobDead");
+ if (rand(1, 5) == 3)
+ mapannounce(.@map$, _("Caution: The Forces have started to concentrate at the Shaman's Altar."), bc_map, "0x77ff77");
+ if (rand(1, 70) == 50)
+ initnpctimer();
}
}
end;
OnTimer10:
- mapannounce instance_mapname("2@orcs"), "Voice from somewhere: Foolish... Do you really think the altar would fall like that?",bc_map,"0xff4444";
+ mapannounce(instance_mapname("2@orcs"), _("Voice from somewhere: Foolish... Do you really think the altar would fall like that?"), bc_map, "0xff4444");
end;
OnTimer4010:
.@map$ = instance_mapname("2@orcs");
- mapannounce .@map$, "[ Wraiths were summoned by an unknown power ]",bc_map,"0x77ff77";
- areamonster .@map$,167,25,177,35,"Wraith",1475,30,instance_npcname("#2Resurrect Monsters1")+"::OnMyMobDead";
- stopnpctimer;
+ mapannounce(.@map$, _("[ Wraiths were summoned by an unknown power ]"), bc_map, "0x77ff77");
+ areamonster(.@map$, 167, 25, 177, 35, _("Wraith"), G_WRAITH, 30, instance_npcname("#2Resurrect Monsters1")+"::OnMyMobDead");
+ stopnpctimer();
end;
}
@@ -579,40 +561,36 @@ OnTimer4010:
end;
OnInstanceInit:
- disablenpc instance_npcname("#2Resurrect Monsters3");
+ disablenpc(instance_npcname("#2Resurrect Monsters3"));
end;
OnEnable:
- enablenpc instance_npcname("#2Resurrect Monsters3");
- monster instance_mapname("2@orcs"),0,0,"Orc Zombie",1153,15,instance_npcname("#2Resurrect Monsters3")+"::OnMyMobDead";
+ enablenpc(instance_npcname("#2Resurrect Monsters3"));
+ monster(instance_mapname("2@orcs"), 0, 0, _("Orc Zombie"), ORC_ZOMBIE, 15, instance_npcname("#2Resurrect Monsters3")+"::OnMyMobDead");
end;
OnMyMobDead:
.@map$ = instance_mapname("2@orcs");
- .@mob_dead_num = 15 - mobcount(.@map$,instance_npcname("#2Resurrect Monsters3")+"::OnMyMobDead");
- .@mob_ran = rand(1,30);
+ .@mob_dead_num = 15 - mobcount(.@map$, instance_npcname("#2Resurrect Monsters3")+"::OnMyMobDead");
+ .@mob_ran = rand(1, 30);
if (.@mob_ran > 29) {
if (.@mob_dead_num > 0) {
- monster .@map$,0,0,"Orc Archer",1189,.@mob_dead_num,instance_npcname("#2Resurrect Monsters3")+"::OnMyMobDead";
+ monster(.@map$, 0, 0, _("Orc Archer"), ORC_ARCHER, .@mob_dead_num, instance_npcname("#2Resurrect Monsters3")+"::OnMyMobDead");
}
- }
- else if ((.@mob_ran > 6) && (.@mob_ran < 30)) {
- if (.@mob_dead_num > 0) {
- areamonster .@map$,168,10,184,26,"Orc Archer",1189,.@mob_dead_num,instance_npcname("#2Resurrect Monsters3")+"::OnMyMobDead";
- if (rand(1,15) == 3) {
- mapannounce .@map$, "Warning: Orc Archer teams are gathering near the altar.",bc_map,"0xff4444";
- }
- }
- }
- else {
+ } else if (.@mob_ran > 6 && .@mob_ran < 30) {
if (.@mob_dead_num > 0) {
- areamonster .@map$,168,21,184,21,"Orc Archer",1189,.@mob_dead_num,instance_npcname("#2Resurrect Monsters3")+"::OnMyMobDead";
+ areamonster(.@map$, 168, 10, 184, 26, _("Orc Archer"), ORC_ARCHER, .@mob_dead_num, instance_npcname("#2Resurrect Monsters3")+"::OnMyMobDead");
+ if (rand(1, 15) == 3)
+ mapannounce(.@map$, _("Warning: Orc Archer teams are gathering near the altar."), bc_map, "0xff4444");
}
+ } else {
+ if (.@mob_dead_num > 0)
+ areamonster(.@map$, 168, 21, 184, 21, _("Orc Archer"), ORC_ARCHER, .@mob_dead_num, instance_npcname("#2Resurrect Monsters3")+"::OnMyMobDead");
}
end;
OnDisable:
- killmonster instance_mapname("2@orcs"),instance_npcname("#2Resurrect Monsters3")+"::OnMyMobDead";
+ killmonster(instance_mapname("2@orcs"), instance_npcname("#2Resurrect Monsters3")+"::OnMyMobDead");
end;
}
@@ -620,21 +598,20 @@ OnDisable:
end;
OnInstanceInit:
- enablenpc instance_npcname("#2Resurrect Monsters4");
- monster instance_mapname("2@orcs"),0,0,"Anopheles",1627,10,instance_npcname("#2Resurrect Monsters4")+"::OnMyMobDead";
+ enablenpc(instance_npcname("#2Resurrect Monsters4"));
+ monster(instance_mapname("2@orcs"), 0, 0, _("Anopheles"), ANOPHELES, 10, instance_npcname("#2Resurrect Monsters4")+"::OnMyMobDead");
end;
OnMyMobDead:
.@map$ = instance_mapname("2@orcs");
- .@mob_dead_num = 10 - mobcount(.@map$,instance_npcname("#2Resurrect Monsters4")+"::OnMyMobDead");
- if (.@mob_dead_num > 0) {
- monster .@map$,0,0,"Anopheles",1627,1,instance_npcname("#2Resurrect Monsters4")+"::OnMyMobDead";
- }
+ .@mob_dead_num = 10 - mobcount(.@map$, instance_npcname("#2Resurrect Monsters4")+"::OnMyMobDead");
+ if (.@mob_dead_num > 0)
+ monster(.@map$, 0, 0, _("Anopheles"), ANOPHELES, 1, instance_npcname("#2Resurrect Monsters4")+"::OnMyMobDead");
end;
}
2@orcs,35,169,4 script Kruger#2-1 4_ORCWARRIOR,{
- donpcevent instance_npcname("Kruger#2-2")+"::OnEnable";
+ donpcevent(instance_npcname("Kruger#2-2")+"::OnEnable");
end;
}
@@ -642,72 +619,73 @@ OnMyMobDead:
end;
OnInstanceInit:
- disablenpc instance_npcname("Kruger#2-2");
+ disablenpc(instance_npcname("Kruger#2-2"));
end;
OnEnable:
- disablenpc instance_npcname("Kruger#2-1");
- enablenpc instance_npcname("Kruger#2-2");
- initnpctimer;
+ disablenpc(instance_npcname("Kruger#2-1"));
+ enablenpc(instance_npcname("Kruger#2-2"));
+ initnpctimer();
end;
OnTimer10:
- mapannounce instance_mapname("2@orcs"), "Kruger's Whisper: I'll tell you how to get to the Shaman's altar.",bc_map,"0xffff00";
+ mapannounce(instance_mapname("2@orcs"), _("Kruger's Whisper: I'll tell you how to get to the Shaman's altar."), bc_map, C_YELLOW);
end;
OnTimer3510:
- mapannounce instance_mapname("2@orcs"), "Kruger's Whisper: Do you see the braziers that light the path? Unseal the next zone by strengthening their flames.",bc_map,"0xffff00";
+ mapannounce(instance_mapname("2@orcs"), _("Kruger's Whisper: Do you see the braziers that light the path? Unseal the next zone by strengthening their flames."), bc_map, C_YELLOW);
end;
OnTimer10710:
- mapannounce instance_mapname("2@orcs"), "Kruger's Whisper: Of course those monsters won't let you touch the braziers that easily.",bc_map,"0xffff00";
+ mapannounce(instance_mapname("2@orcs"), _("Kruger's Whisper: Of course those monsters won't let you touch the braziers that easily."), bc_map, C_YELLOW);
end;
OnTimer16310:
- mapannounce instance_mapname("2@orcs"), "Kruger's Whisper: But still, try keep the battles not too noticable so the Shaman won't guard the altar with her army squad.",bc_map,"0xffff00";
+ mapannounce(instance_mapname("2@orcs"), _("Kruger's Whisper: But still, try keep the battles not too noticable so the Shaman won't guard the altar with her army squad."), bc_map, C_YELLOW);
end;
OnTimer21910:
- mapannounce instance_mapname("2@orcs"), "Kruger's Whisper: Only the Party Leader can strengthen the flames, so protect your leader.",bc_map,"0xffff00";
+ mapannounce(instance_mapname("2@orcs"), _("Kruger's Whisper: Only the Party Leader can strengthen the flames, so protect your leader."), bc_map, C_YELLOW);
end;
OnTimer23910:
- mapannounce instance_mapname("2@orcs"), "Mission: Unseal the zone by lighting the braziers. They can only be lit in a certain order, so be careful.",bc_map,"0x4444ff";
- donpcevent instance_npcname("#2Resurrect Monsters1")+"::OnEnable";
- donpcevent instance_npcname("#2Resurrect Monsters3")+"::OnEnable";
- donpcevent instance_npcname("Torch#1-1")+"::OnEnable";
- disablenpc instance_npcname("Kruger#2-2");
+ mapannounce(instance_mapname("2@orcs"), _("Mission: Unseal the zone by lighting the braziers. They can only be lit in a certain order, so be careful."), bc_map, "0x4444ff");
+ donpcevent(instance_npcname("#2Resurrect Monsters1")+"::OnEnable");
+ donpcevent(instance_npcname("#2Resurrect Monsters3")+"::OnEnable");
+ donpcevent(instance_npcname("Torch#1-1")+"::OnEnable");
+ disablenpc(instance_npcname("Kruger#2-2"));
end;
}
2@orcs,26,164,0 script Torch#1-1 CLEAR_NPC,{
- if(getpartyleader(getcharid(CHAR_ID_PARTY),2) != getcharid(CHAR_ID_CHAR)) end;
- progressbar "ffff00",5;
- setarray .@id[0], atoi(charat(strnpcinfo(NPC_NAME_HIDDEN),0)), atoi(charat(strnpcinfo(NPC_NAME_HIDDEN),2));
+ if (getpartyleader(getcharid(CHAR_ID_PARTY), 2) != getcharid(CHAR_ID_CHAR))
+ end;
+ progressbar(sprintf("0x%x", C_YELLOW), 5);
+ setarray(.@id[0], atoi(charat(strnpcinfo(NPC_NAME_HIDDEN), 0)), atoi(charat(strnpcinfo(NPC_NAME_HIDDEN), 2)));
if (.@id[1] == 4)
- donpcevent instance_npcname("#Warp2-"+.@id[0])+"::OnEnable";
+ donpcevent(instance_npcname("#Warp2-"+.@id[0])+"::OnEnable");
else
- donpcevent instance_npcname("Torch#"+.@id[0]+"-"+(.@id[1]+1))+"::OnEnable";
- initnpctimer;
- disablenpc instance_npcname(strnpcinfo(NPC_NAME));
+ donpcevent(instance_npcname("Torch#"+.@id[0]+"-"+(.@id[1]+1))+"::OnEnable");
+ initnpctimer();
+ disablenpc(instance_npcname(strnpcinfo(NPC_NAME)));
end;
OnInstanceInit:
if (strnpcinfo(NPC_NAME) != "Torch#2-1" && strnpcinfo(NPC_NAME) != "Torch#3-1")
- disablenpc instance_npcname(strnpcinfo(NPC_NAME));
+ disablenpc(instance_npcname(strnpcinfo(NPC_NAME)));
end;
OnEnable:
- enablenpc instance_npcname(strnpcinfo(NPC_NAME));
+ enablenpc(instance_npcname(strnpcinfo(NPC_NAME)));
end;
OnTimer100:
- specialeffect EF_FIREPILLAR;
+ specialeffect(EF_FIREPILLAR);
end;
OnTimer2000:
- specialeffect EF_FIREPILLARBOMB;
- stopnpctimer;
+ specialeffect(EF_FIREPILLARBOMB);
+ stopnpctimer();
end;
}
2@orcs,55,155,0 duplicate(Torch#1-1) Torch#1-2 CLEAR_NPC
@@ -716,27 +694,27 @@ OnTimer2000:
2@orcs,48,100,0 script #Warp2-1 WARPNPC,3,3,{
OnInstanceInit:
- disablenpc instance_npcname("#Warp2-1");
+ disablenpc(instance_npcname("#Warp2-1"));
end;
OnEnable:
.@map$ = instance_mapname("2@orcs");
- monster .@map$,109,156,"Safeguard Chief",1981,1,instance_npcname("#Mobs Control")+"::OnMyMobDead1";
- mapannounce .@map$, "The Chief Orc of Safeguards: Oh!! Looks like I have company. Defeat me if you can!!",bc_map,"0xff8888";
+ monster(.@map$, 109, 156, _("Safeguard Chief"), I_HIGH_ORC, 1, instance_npcname("#Mobs Control")+"::OnMyMobDead1");
+ mapannounce(.@map$, _("The Chief Orc of Safeguards: Oh!! Looks like I have company. Defeat me if you can!!"), bc_map, "0xff8888");
end;
OnContinue:
- enablenpc instance_npcname("#Warp2-1");
- initnpctimer;
+ enablenpc(instance_npcname("#Warp2-1"));
+ initnpctimer();
end;
OnTimer10000:
- areamonster instance_mapname("2@orcs"),28,158,40,170,"Safeguard Chief",1981,1,instance_npcname("#Mobs Control")+"::OnMyMobDead1";
- stopnpctimer;
+ areamonster(instance_mapname("2@orcs"), 28, 158, 40, 170, _("Safeguard Chief"), I_HIGH_ORC, 1, instance_npcname("#Mobs Control")+"::OnMyMobDead1");
+ stopnpctimer();
end;
OnTouch:
- warp instance_mapname("2@orcs"),47,93;
+ warp(instance_mapname("2@orcs"), 47, 93);
end;
}
@@ -747,27 +725,27 @@ OnTouch:
2@orcs,101,55,0 script #Warp2-2 WARPNPC,3,3,{
OnInstanceInit:
- disablenpc instance_npcname("#Warp2-2");
+ disablenpc(instance_npcname("#Warp2-2"));
end;
OnEnable:
.@map$ = instance_mapname("2@orcs");
- monster .@map$,67,64,"Orc Sniper",1982,1,instance_npcname("#Mobs Control")+"::OnMyMobDead2";
- mapannounce .@map$, "Orc Sniper: Hah! Pretty impressive that you made it this far, but your foolish little trip ends here...",bc_map,"0xff8888";
+ monster(.@map$, 67, 64, _("Orc Sniper"), I_ORC_ARCHER, 1, instance_npcname("#Mobs Control")+"::OnMyMobDead2");
+ mapannounce(.@map$, _("Orc Sniper: Hah! Pretty impressive that you made it this far, but your foolish little trip ends here..."), bc_map, "0xff8888");
end;
OnContinue:
- enablenpc instance_npcname("#Warp2-2");
- initnpctimer;
+ enablenpc(instance_npcname("#Warp2-2"));
+ initnpctimer();
end;
OnTimer10000:
- areamonster instance_mapname("2@orcs"),40,91,52,103,"Orc Sniper",1982,1,instance_npcname("#Mobs Control")+"::OnMyMobDead2";
- stopnpctimer;
+ areamonster(instance_mapname("2@orcs"), 40, 91, 52, 103, _("Orc Sniper"), I_ORC_ARCHER, 1, instance_npcname("#Mobs Control")+"::OnMyMobDead2");
+ stopnpctimer();
end;
OnTouch:
- warp instance_mapname("2@orcs"),107,55;
+ warp(instance_mapname("2@orcs"), 107, 55);
end;
}
@@ -778,41 +756,41 @@ OnTouch:
2@orcs,167,104,0 script #Warp2-3 WARPNPC,3,3,{
OnInstanceInit:
- disablenpc instance_npcname("#Warp2-3");
+ disablenpc(instance_npcname("#Warp2-3"));
end;
OnEnable:
.@map$ = instance_mapname("2@orcs");
- monster .@map$,152,147,"Depraved Orc Spirit",1983,1,instance_npcname("#Mobs Control")+"::OnMyMobDead3";
- mapannounce .@map$, "Depraved Orc Spirit: I smell flesh! Hungry! Wanna try some human meat!!",bc_map,"0xff8888";
+ monster(.@map$, 152, 147, _("Depraved Orc Spirit"), I_ORC_SKELETON, 1, instance_npcname("#Mobs Control")+"::OnMyMobDead3");
+ mapannounce(.@map$, _("Depraved Orc Spirit: I smell flesh! Hungry! Wanna try some human meat!!"), bc_map, "0xff8888");
end;
OnContinue:
- areamonster instance_mapname("2@orcs"),117,61,129,73,"Depraved Orc Spirit",1983,1;
- donpcevent instance_npcname("#Boss Control")+"::OnEnable";
- enablenpc instance_npcname("#Warp2-3");
- initnpctimer;
+ areamonster(instance_mapname("2@orcs"), 117, 61, 129, 73, _("Depraved Orc Spirit"), I_ORC_SKELETON, 1);
+ donpcevent(instance_npcname("#Boss Control")+"::OnEnable");
+ enablenpc(instance_npcname("#Warp2-3"));
+ initnpctimer();
end;
OnTimer10:
- mapannounce instance_mapname("2@orcs"), "Shaman Cargalache: Hahaha!! So, you finally made it here. The assassin you sent was just terrible. That stupid Orc is getting cold under my feet.",bc_map,"0xffff00";
+ mapannounce(instance_mapname("2@orcs"), _("Shaman Cargalache: Hahaha!! So, you finally made it here. The assassin you sent was just terrible. That stupid Orc is getting cold under my feet."), bc_map, C_YELLOW);
end;
OnTimer6810:
- mapannounce instance_mapname("2@orcs"), "Shaman Cargalache: My loyal slave, go get those intruders!",bc_map,"0xffff00";
+ mapannounce(instance_mapname("2@orcs"), _("Shaman Cargalache: My loyal slave, go get those intruders!"), bc_map, C_YELLOW);
end;
OnTimer10310:
- mapannounce instance_mapname("2@orcs"), "Depraved Orc Hero: Whatever you say, my lord.",bc_map,"0xff7777";
+ mapannounce(instance_mapname("2@orcs"), _("Depraved Orc Hero: Whatever you say, my lord."), bc_map, "0xff7777");
end;
OnTimer13110:
- mapannounce instance_mapname("2@orcs"), "Caution: You have been discovered by Shaman Cargalache. Kruger's plan to assassinate the Shaman has failed. You must defeat Cargalache and find traces of Kruger.",bc_map,"0x8888ff";
- stopnpctimer;
+ mapannounce(instance_mapname("2@orcs"), _("Caution: You have been discovered by Shaman Cargalache. Kruger's plan to assassinate the Shaman has failed. You must defeat Cargalache and find traces of Kruger."), bc_map, "0x8888ff");
+ stopnpctimer();
end;
OnTouch:
- warp instance_mapname("2@orcs"),167,95;
+ warp(instance_mapname("2@orcs"), 167, 95);
end;
}
@@ -820,93 +798,87 @@ OnTouch:
end;
OnInstanceInit:
- disablenpc instance_npcname("#Boss Control");
+ disablenpc(instance_npcname("#Boss Control"));
end;
OnEnable:
.@map$ = instance_mapname("2@orcs");
- monster .@map$,185,8,"Shaman Cargalache",1984,1,instance_npcname("#Boss Control")+"::OnMyMobDead";
- monster .@map$,179,15,"Depraved Orc Hero",1087,1;
- enablenpc instance_npcname("#Boss Control");
+ monster(.@map$, 185, 8, _("Shaman Cargalache"), I_ORC_LADY, 1, instance_npcname("#Boss Control")+"::OnMyMobDead");
+ monster(.@map$, 179, 15, _("Depraved Orc Hero"), ORK_HERO, 1);
+ enablenpc(instance_npcname("#Boss Control"));
end;
OnMyMobDead:
- donpcevent instance_npcname("Kruger#")+"::OnEnable";
+ donpcevent(instance_npcname("Kruger#")+"::OnEnable");
.@map$ = instance_mapname("2@orcs");
- .@mob_ran = rand(1,5);
- if (.@mob_ran == 1) {
- mapannounce .@map$, "Shaman Cargalache: How... How could this be... How could someone like you...!!",bc_map,"0xffff00";
- }
- else if (.@mob_ran == 2) {
- mapannounce .@map$, "Shaman Cargalache: How is it that I've been overpowered by mere humans!",bc_map,"0xffff00";
- }
- else if (.@mob_ran == 3) {
- mapannounce .@map$, "Shaman Cargalache: This... This can't be the end...",bc_map,"0xffff00";
- }
- else if (.@mob_ran == 4) {
- mapannounce .@map$, "Shaman Cargalache: I... Can't die... Yet...!",bc_map,"0xffff00";
- }
- else {
- mapannounce .@map$, "Shaman Cargalache: Defeated by these fools... It can't be happening...!",bc_map,"0xffff00";
- }
- donpcevent instance_npcname("#2Resurrect Monsters1")+"::OnDisable";
- donpcevent instance_npcname("#2Resurrect Monsters3")+"::OnDisable";
- donpcevent instance_npcname("#Warp Outside Orc Dun")+"::OnEnable";
+ .@mob_ran = rand(1, 5);
+ if (.@mob_ran == 1)
+ mapannounce(.@map$, _("Shaman Cargalache: How... How could this be... How could someone like you...!!"), bc_map, C_YELLOW);
+ else if (.@mob_ran == 2)
+ mapannounce(.@map$, _("Shaman Cargalache: How is it that I've been overpowered by mere humans!"), bc_map, C_YELLOW);
+ else if (.@mob_ran == 3)
+ mapannounce(.@map$, _("Shaman Cargalache: This... This can't be the end..."), bc_map, C_YELLOW);
+ else if (.@mob_ran == 4)
+ mapannounce(.@map$, _("Shaman Cargalache: I... Can't die... Yet...!"), bc_map, C_YELLOW);
+ else
+ mapannounce(.@map$, _("Shaman Cargalache: Defeated by these fools... It can't be happening...!"), bc_map, C_YELLOW);
+ donpcevent(instance_npcname("#2Resurrect Monsters1")+"::OnDisable");
+ donpcevent(instance_npcname("#2Resurrect Monsters3")+"::OnDisable");
+ donpcevent(instance_npcname("#Warp Outside Orc Dun")+"::OnEnable");
end;
}
2@orcs,182,8,0 script #Warp Outside Orc Dun WARPNPC,3,3,{
OnInstanceInit:
- disablenpc instance_npcname("#Warp Outside Orc Dun");
+ disablenpc(instance_npcname("#Warp Outside Orc Dun"));
end;
OnEnable:
- enablenpc instance_npcname("#Warp Outside Orc Dun");
+ enablenpc(instance_npcname("#Warp Outside Orc Dun"));
end;
OnTouch:
- warp "gef_fild10",240,197;
+ warp("gef_fild10", 240, 197);
end;
}
2@orcs,172,13,0 script Kruger# 4_ORCWARRIOR2,{
if (yong_odun < 2) {
- mes "[Kruger]";
- mes "*Coughing*";
- mes ""+strcharinfo(PC_NAME)+", it's you...";
- next;
- mes "["+strcharinfo(PC_NAME)+"] ";
- mes "Don't move! You are wounded!";
- next;
- mes "[Kruger]";
- mes "It's... all right.. I'm dying...";
- mes "....";
- mes "The Shaman? What about the Shaman?";
- next;
- mes "["+strcharinfo(PC_NAME)+"] ";
- mes "The Shaman's dead now. Who was that Shaman really?";
- next;
- mes "Kruger seemed to be relieved as he hears of the death of the Shaman, but you notice the bitter expression on his face.";
- next;
- mes "[Kruger]";
- mes "I.. I just couldn't kill my own daughter...";
- mes "Thank you, I'm sure she's finally free from the nightmare that used to choke her soul.";
- next;
- mes "Kruger was about to say something more, but he breathed his last breath before he could...";
+ mes("[Kruger]");
+ mes("*Coughing*");
+ mesf("%s, it's you...", strcharinfo(PC_NAME));
+ next();
+ mesf("[%s]", strcharinfo(PC_NAME));
+ mes("Don't move! You are wounded!");
+ next();
+ mes("[Kruger]");
+ mes("It's... all right.. I'm dying...");
+ mes("....");
+ mes("The Shaman? What about the Shaman?");
+ next();
+ mesf("[%s]", strcharinfo(PC_NAME));
+ mes("The Shaman's dead now. Who was that Shaman really?");
+ next();
+ mes("Kruger seemed to be relieved as he hears of the death of the Shaman, but you notice the bitter expression on his face.");
+ next();
+ mes("[Kruger]");
+ mes("I.. I just couldn't kill my own daughter...");
+ mes("Thank you, I'm sure she's finally free from the nightmare that used to choke her soul.");
+ next();
+ mes("Kruger was about to say something more, but he breathed his last breath before he could...");
yong_odun = 2;
- close;
- }
- else {
- mes "You can see the dead body of Kruger, peacefully lying on the ground.";
- close;
+ close();
+ } else {
+ mes("You can see the dead body of Kruger, peacefully lying on the ground.");
+ close();
}
OnInstanceInit:
- disablenpc instance_npcname("Kruger#");
+ disablenpc(instance_npcname("Kruger#"));
end;
OnEnable:
- enablenpc instance_npcname("Kruger#");
+ enablenpc(instance_npcname("Kruger#"));
end;
}
@@ -914,14 +886,14 @@ OnEnable:
end;
OnMyMobDead1:
- donpcevent instance_npcname("#Warp2-1")+"::OnContinue";
+ donpcevent(instance_npcname("#Warp2-1")+"::OnContinue");
end;
OnMyMobDead2:
- donpcevent instance_npcname("#Warp2-2")+"::OnContinue";
+ donpcevent(instance_npcname("#Warp2-2")+"::OnContinue");
end;
OnMyMobDead3:
- donpcevent instance_npcname("#Warp2-3")+"::OnContinue";
+ donpcevent(instance_npcname("#Warp2-3")+"::OnContinue");
end;
}
diff --git a/npc/re/instances/ghost_palace.txt b/npc/re/instances/ghost_palace.txt
index 6e77db2f8..e4ca12f99 100644
--- a/npc/re/instances/ghost_palace.txt
+++ b/npc/re/instances/ghost_palace.txt
@@ -35,7 +35,7 @@ dali02,44,129,5 script Unpleasent Royal Guard 4_M_SAKRAYROYAL,{
if (BaseLevel < 120) {
mes("[Unpleasent Royal Guard]");
mes("Althought I need help with a task, you are not strong enough to assist me, noob~!");
- next;
+ next();
mes("[Unpleasent Royal Guard]");
mes("Come back after when you have done some training and are at least level 120!");
close();
@@ -50,7 +50,7 @@ dali02,44,129,5 script Unpleasent Royal Guard 4_M_SAKRAYROYAL,{
mes("[Unpleasent Royal Guard]");
mes("Did the gate close?\r"
"Please enter the gate as soon as you can next time.");
- erasequest 1260;
+ erasequest(1260);
close();
}
mes("[Unpleasent Royal Guard]");
@@ -64,7 +64,7 @@ dali02,44,129,5 script Unpleasent Royal Guard 4_M_SAKRAYROYAL,{
mes("This is a solo instance. Please form a solo party before continuing.");
close();
}
- if (getcharid(CHAR_ID_CHAR) != getpartyleader(.@party_id,2)) {
+ if (getcharid(CHAR_ID_CHAR) != getpartyleader(.@party_id, 2)) {
mes("[Unpleasent Royal Guard]");
mes("I'm looking for adventurers to help me!\r"
"I want to talk to the team leader, can I?");
@@ -72,25 +72,25 @@ dali02,44,129,5 script Unpleasent Royal Guard 4_M_SAKRAYROYAL,{
}
mes("[Unpleasent Royal Guard]");
mes("I need some help, even from the likes of you.");
- next;
+ next();
mes("[Unpleasent Royal Guard]");
mes("In the middle of the battle the princess disappeared while I was guarding the palace.");
- next;
+ next();
mes("[Unpleasent Royal Guard]");
mes("You run ahead and i will catch up.\r"
"We must save her.");
- next;
+ next();
if (select("I will help.", "This is not a good time.") == 2) {
mes("[Unpleasent Royal Guard]");
mes("Even now all the royal guards are fighting and dying to the monsters.");
- next;
+ next();
mes("[Unpleasent Royal Guard]");
mes("We must save the princess no matter how much fear grips our hearts!");
close();
}
- .@instance = instance_create("Ghost Palace", .@party_id);
+ .@instance = instance_create(_("Ghost Palace"), .@party_id);
.@p_name$ = getpartyname(.@party_id);
- .@md_name$ = "Ghost Palace";
+ .@md_name$ = _("Ghost Palace");
if (.@instance < 0) {
mesf("Party Name: %s", .@p_name$);
mesf("Party Leader: %s", strcharinfo(PC_NAME));
@@ -100,7 +100,8 @@ dali02,44,129,5 script Unpleasent Royal Guard 4_M_SAKRAYROYAL,{
if (instance_attachmap("1@spa", .@instance) != "") {
instance_set_timeout(3600, 300, .@instance);
instance_init(.@instance);
- if (!questprogress(1260)) setquest 1260;
+ if (!questprogress(1260))
+ setquest(1260);
mes("[Unpleasent Royal Guard]");
mes("Thank You..\r"
"I will open the secret passage to ^0000FFGhost Palace.^000000\r"
@@ -117,23 +118,23 @@ dali02,41,134,0 script Interdimensional Device::gpportal PORTAL,{
if (BaseLevel < 120) {
mes("[Unpleasent Royal Guard]");
mes("Althought I need help with a task, you are not strong enough to assist me, noob~!");
- next;
+ next();
mes("[Unpleasent Royal Guard]");
mes("Come back after when you have done some training and are at least level 120!");
close();
}
if (questprogress(1261)) {
if (questprogress(1261, PLAYTIME) == 2) {
- erasequest 1261;
+ erasequest(1261);
if (questprogress(1260))
- erasequest 1260;
+ erasequest(1260);
end;
}
mes("[Unpleasent Royal Guard]");
mes("The monsters that attacked the palace are wandering around the secret entrance. It would be very bad if they spotted us... Please wait until the time limit for re-entrance passed.");
close();
}
- if (getcharid(CHAR_ID_CHAR) == getpartyleader(.@party_id,2) && !questprogress(1260)) {
+ if (getcharid(CHAR_ID_CHAR) == getpartyleader(.@party_id, 2) && !questprogress(1260)) {
mes("[Unpleasent Royal Guard]");
mes("I'm looking for adventurers to help me!\r"
"I want to talk to the team leader, can I?");
@@ -141,11 +142,11 @@ dali02,41,134,0 script Interdimensional Device::gpportal PORTAL,{
}
mes("[Unpleasent Royal Guard]");
mes("I can see the secret passage into the Palace... Are you ready to save the princess?!");
- next;
+ next();
if (select("Enter", "Stop") == 2) {
mes("[Unpleasent Royal Guard]");
mes("Even now all the royal guards are fighting and dying to the monsters.");
- next;
+ next();
mes("[Unpleasent Royal Guard]");
mes("We must save the princess no matter how much fear grips our hearts!");
close();
@@ -155,8 +156,9 @@ dali02,41,134,0 script Interdimensional Device::gpportal PORTAL,{
close();
}
mapannounce("dali", sprintf(_$("%s of the party, %s, is entering the Ghost Palace."), strcharinfo(PC_NAME), getpartyname(getcharid(CHAR_ID_PARTY))), bc_map, C_SPRINGGREEN);
- if (!questprogress(1260)) setquest 1260;
- setquest 1261;
+ if (!questprogress(1260))
+ setquest(1260);
+ setquest(1261);
warp("1@spa", 198, 188);
close();
}
@@ -165,35 +167,35 @@ dali02,41,134,0 script Interdimensional Device::gpportal PORTAL,{
mes("[King]");
mes("You are hereby appointed as the personal guard to Princess Tiara. I trust your loyalty above all else.");
npctalk(_("You are hereby appointed as the personal guard to Princess Tiara. I trust your loyalty above all else."), instance_npcname("King#gp1"));
- next;
+ next();
mes("[Lurid Royal Guard]");
mes("I will protect the Princess with my life.");
npctalk(_("I will protect the Princess with my life."), instance_npcname("Lurid Royal Guard#gp1"));
- next;
+ next();
mes("[King]");
mes("The marriage arrangements are going as planned. The prince is here to meet the princess.");
npctalk(_("The marriage arrangements are going as planned. The prince is here to meet the princess."), instance_npcname("King#gp1"));
- next;
+ next();
mes("[Lurid Royal Guard]");
mes("...Yes, your majesty.");
npctalk(_("...Yes, your majesty."), instance_npcname("Lurid Royal Guard#gp1"));
- next;
+ next();
mes("[King]");
mes("My gods, there are monsters in the castle! Get rid of them now!");
npctalk(_("My gods, there are monsters in the castle! Get rid of them now!"), instance_npcname("King#gp1"));
close2();
- donpcevent instance_npcname("#gp1control")+"::OnStart";
+ donpcevent(instance_npcname("#gp1control")+"::OnStart");
end;
}
1@spa,1,1,1 script #gp1control HIDDEN_NPC,{
end;
OnStart:
- hideonnpc instance_npcname("Lurid Royal Guard#gp1");
- hideonnpc instance_npcname("King#gp1");
- sleep 1000;
+ hideonnpc(instance_npcname("Lurid Royal Guard#gp1"));
+ hideonnpc(instance_npcname("King#gp1"));
+ sleep(1000);
OnSummon:
- sleep 2000;
+ sleep(2000);
.@map$ = instance_mapname("1@spa");
areamonster(.@map$, 182, 190, 214, 214, _("Cursed Sentinel"), CURSED_SENTINEL, 2, instance_npcname("#gp1control")+"::OnMyMobDead");
areamonster(.@map$, 182, 190, 214, 214, _("Cursed Solider"), CURSED_SOLDIER, 2, instance_npcname("#gp1control")+"::OnMyMobDead");
@@ -203,16 +205,16 @@ OnMyMobDead:
end;
if ('gp1 < 2) {
++'gp1;
- donpcevent instance_npcname("#gp1control")+"::OnSummon";
+ donpcevent(instance_npcname("#gp1control")+"::OnSummon");
end;
}
mapannounce(instance_mapname("1@spa"), _("The passage on 2nd floor in the palace of the ghost is open."), bc_map, C_YELLOW);
- enablenpc instance_npcname("#gp1warp");
- disablenpc instance_npcname("#gp1control");
+ enablenpc(instance_npcname("#gp1warp"));
+ disablenpc(instance_npcname("#gp1control"));
end;
OnInstanceInit:
'gp1 = 0;
- disablenpc instance_npcname("#gp1warp");
+ disablenpc(instance_npcname("#gp1warp"));
end;
}
@@ -221,53 +223,53 @@ OnInstanceInit:
mes("[Lurid Royal Guard]");
mes("Your Highness, the King has invited a prince from a neighboring country to be your betrothed. Be ready to meet him...");
npctalk(_("Your Highness, the King has invited a prince from a neighboring country to be your betrothed. Be ready to meet him..."), instance_npcname("Lurid Royal Guard#gp2"));
- next;
+ next();
mes("[Princess Tiara]");
mes("If...if a marriage is arranged what should I do ?");
npctalk(_("If...if a marriage is arranged what should I do ?"), instance_npcname("Tiara Princess#gp2"));
- next;
+ next();
mes("[Lurid Royal Guard]");
mes("The only thing I can do is protect you from physical harm.");
npctalk(_("The only thing I can do is protect you from physical harm."), instance_npcname("Lurid Royal Guard#gp2"));
- next;
+ next();
mes("[Princess Tiara]");
mes("Then, what can I do?");
npctalk(_("Then, what can I do?"), instance_npcname("Tiara Princess#gp2"));
- next;
+ next();
mes("[Lurid Royal Guard]");
mes("......");
mes("You must decide that for yourself your highness...");
npctalk(_("You must decide that for yourself your highness..."), instance_npcname("Lurid Royal Guard#gp2"));
- next;
+ next();
mes("[Princess Tiara]");
mes("Would it be easier for you if I were married and sent off to another country?");
npctalk(_("Would it be easier for you if I were married and sent off to another country?"), instance_npcname("Tiara Princess#gp2"));
- next;
+ next();
cutin("", 255);
mes("[Lurid Royal Guard]");
mes("I will alway stand by you and protect you forever.");
npctalk(_("I will alway stand by you and protect you forever."), instance_npcname("Lurid Royal Guard#gp2"));
- next;
+ next();
mes("[Princess Tiara]");
mes("Monsters in the castle? Protect me!");
npctalk(_("Monsters in the castle? Protect me!"), instance_npcname("Tiara Princess#gp2"));
- next;
+ next();
mes("[Lurid Royal Guard]");
mes("Step back, Let's go!");
npctalk(_("Step back, Let's go!"), instance_npcname("Lurid Royal Guard#gp2"));
close2();
- donpcevent instance_npcname("#gp2control")+"::OnStart";
+ donpcevent(instance_npcname("#gp2control")+"::OnStart");
end;
}
1@spa,1,1,1 script #gp2control HIDDEN_NPC,{
end;
OnStart:
- hideonnpc instance_npcname("Lurid Royal Guard#gp2");
- hideonnpc instance_npcname("Tiara Princess#gp2");
- sleep 1000;
+ hideonnpc(instance_npcname("Lurid Royal Guard#gp2"));
+ hideonnpc(instance_npcname("Tiara Princess#gp2"));
+ sleep(1000);
OnSummon:
- sleep 2000;
+ sleep(2000);
.@map$ = instance_mapname("1@spa");
areamonster(.@map$, 143, 96, 94, 143, _("Broken Mind"), BROKEN_MIND, 3, instance_npcname("#gp2control")+"::OnMyMobDead");
areamonster(.@map$, 143, 96, 94, 143, _("Floating Word"), FLOATING_WORD, 4, instance_npcname("#gp2control")+"::OnMyMobDead");
@@ -277,11 +279,11 @@ OnMyMobDead:
if (mobcount(instance_mapname("1@spa"), instance_npcname("#gp2control")+"::OnMyMobDead"))
end;
mapannounce(instance_mapname("1@spa"), _("The passage on the 3rd floor of the palace is open."), bc_map, C_YELLOW);
- enablenpc instance_npcname("#gp2warp");
- disablenpc instance_npcname("#gp2control");
+ enablenpc(instance_npcname("#gp2warp"));
+ disablenpc(instance_npcname("#gp2control"));
end;
OnInstanceInit:
- disablenpc instance_npcname("#gp2warp");
+ disablenpc(instance_npcname("#gp2warp"));
end;
}
@@ -289,29 +291,29 @@ OnInstanceInit:
mes("[King]");
mes("It was you who brought the monsters here, you want to get rid of me and have the princess for yourself?");
npctalk(_("It was you who brought the monsters here, you want to get rid of me and have the princess for yourself?"), instance_npcname("King#gp3"));
- next;
+ next();
mes("[Lurid Royal Guard]");
mes("It's a trap, you should trust me, your majesty!");
npctalk(_("It's a trap, you should trust me, your majesty!"), instance_npcname("Lurid Royal Guard#gp3"));
- next;
+ next();
mes("[King]");
mes("Shut up! You're betrayed me ! I trusted you... you must pay for your disgrace.");
npctalk(_("Shut up! You're betrayed me ! I trusted you... you must pay for your disgrace."), instance_npcname("King#gp3"));
- next;
+ next();
mes("[King]");
mes("You will suffer for the rest of your life.");
npctalk(_("You will suffer for the rest of your life."), instance_npcname("King#gp3"));
close2();
- donpcevent instance_npcname("#gp3control")+"::OnStart";
+ donpcevent(instance_npcname("#gp3control")+"::OnStart");
end;
}
1@spa,54,28,0 script #gp3warp WARPNPC,1,1,{
- if (!'gp5)
+ if (!'gp5) {
warp("1@spa", 218, 186);
- else {
+ } else {
if (questprogress(40024))
- completequest 40024;
+ completequest(40024);
mes("It is time to leave Palace of the ghost.\r"
"Everything is completed.\r"
"Everything will be vanished...");
@@ -332,7 +334,7 @@ OnInstanceInit:
1@spa,35,56,1 script Ominous Voice#gp3 4_TRACE,{
end;
OnStart:
- initnpctimer;
+ initnpctimer();
end;
OnTimer3000:
npctalk(_("Oh, faithful royal guard, you are trapped."));
@@ -356,32 +358,32 @@ OnTimer21000:
npctalk(_("Kukuku... What do you want boy?"));
end;
OnTimer24000:
- stopnpctimer;
- hideonnpc instance_npcname("Ominous Voice#gp3");
- hideonnpc instance_npcname("Lurid Royal Guard#gp3");
- donpcevent instance_npcname("#gp3control")+"::OnSummon";
+ stopnpctimer();
+ hideonnpc(instance_npcname("Ominous Voice#gp3"));
+ hideonnpc(instance_npcname("Lurid Royal Guard#gp3"));
+ donpcevent(instance_npcname("#gp3control")+"::OnSummon");
end;
}
1@spa,1,1,1 script #gp3control HIDDEN_NPC,{
end;
OnStart:
- hideonnpc instance_npcname("King#gp3");
- hideonnpc instance_npcname("Soldier#gp3_1");
- hideonnpc instance_npcname("Soldier#gp3_2");
- hideonnpc instance_npcname("Soldier#gp3_3");
- hideonnpc instance_npcname("Captain of the Guard#gp3");
- donpcevent instance_npcname("Ominous Voice#gp3")+"::OnStart";
+ hideonnpc(instance_npcname("King#gp3"));
+ hideonnpc(instance_npcname("Soldier#gp3_1"));
+ hideonnpc(instance_npcname("Soldier#gp3_2"));
+ hideonnpc(instance_npcname("Soldier#gp3_3"));
+ hideonnpc(instance_npcname("Captain of the Guard#gp3"));
+ donpcevent(instance_npcname("Ominous Voice#gp3")+"::OnStart");
end;
OnSummon:
- initnpctimer;
+ initnpctimer();
.@map$ = instance_mapname("1@spa");
'talkid[0] = areamonster(.@map$, 61, 63, 24, 24, _("Cursed Memory"), CURSED_MEMORY, 2 + 'gp3, instance_npcname("#gp3control")+"::OnMyMobDead");
'talkid[1] = areamonster(.@map$, 61, 63, 24, 24, _("Colorless Vow"), COLORLESS_VOW, 3 + 'gp3, instance_npcname("#gp3control")+"::OnMyMobDead");
'talkid[2] = areamonster(.@map$, 61, 63, 24, 24, _("Old Friendship"), OLD_FRIENDSHIP, 2 + 'gp3, instance_npcname("#gp3control")+"::OnMyMobDead");
end;
OnTimer2000:
- stopnpctimer;
+ stopnpctimer();
unittalk('talkid[0], _("Faithful Guards"));
unittalk('talkid[1], _("Run!"));
unittalk('talkid[2], _("Being framed..."));
@@ -390,21 +392,21 @@ OnMyMobDead:
if (mobcount(instance_mapname("1@spa"), instance_npcname("#gp3control")+"::OnMyMobDead"))
end;
if (!'gp3) {
- mapannounce instance_mapname("1@spa"), "The passage on the 4rd floor of the palace is open.", bc_map, C_YELLOW;
- enablenpc instance_npcname("#gp3warp");
- donpcevent instance_npcname("#gp4control")+"::OnSummon";
- disablenpc instance_npcname("#gp1warp");
+ mapannounce(instance_mapname("1@spa"), _("The passage on the 4rd floor of the palace is open."), bc_map, C_YELLOW);
+ enablenpc(instance_npcname("#gp3warp"));
+ donpcevent(instance_npcname("#gp4control")+"::OnSummon");
+ disablenpc(instance_npcname("#gp1warp"));
}
++'gp3;
- if ('gp3 < 5)
- donpcevent instance_npcname("#gp3control")+"::OnSummon";
- else {
- stopnpctimer;
- disablenpc instance_npcname("#gp3control");
+ if ('gp3 < 5) {
+ donpcevent(instance_npcname("#gp3control")+"::OnSummon");
+ } else {
+ stopnpctimer();
+ disablenpc(instance_npcname("#gp3control"));
}
end;
OnInstanceInit:
- disablenpc instance_npcname("#gp3warp");
+ disablenpc(instance_npcname("#gp3warp"));
'gp3 = 0;
end;
}
@@ -413,26 +415,26 @@ OnInstanceInit:
mes("[Lurid Royal Guard]");
mes("Where is Princess Tiara?");
npctalk(_("Where is Princess Tiara?"), instance_npcname("Lurid Royal Guard#gp4"));
- next;
+ next();
mes("[Visiting Prince]");
mes("You are too late... but you brought what I was looking for. Thanks for your help.");
npctalk(_("You are too late... but you brought what I was looking for. Thanks for your help."), instance_npcname("Visiting Prince#gp4"));
- next;
+ next();
mes("[Visiting Prince]");
mes("Cursed Thanatos Magic Trace! Are you ready to have a new master?");
npctalk(_("Cursed Thanatos Magic Trace! Are you ready to have a new master?"), instance_npcname("Visiting Prince#gp4"));
- next;
+ next();
cutin("tartanos", 3);
mes("[Thanatos Magic Trace]");
mes("How dare you!");
npctalk(_("How dare you!"), instance_npcname("Thanatos Magic Trace#gp4"));
- next;
+ next();
mes("[Visiting Prince]");
mes("Aah, aah!!!");
npctalk(_("Aah, aah!!!"), instance_npcname("Visiting Prince#gp4"));
close2();
cutin("", 255);
- donpcevent instance_npcname("#gp4control")+"::OnBoss";
+ donpcevent(instance_npcname("#gp4control")+"::OnBoss");
end;
}
@@ -442,56 +444,56 @@ OnStart:
end;
OnSummon:
.@map$ = instance_mapname("1@spa");
- areamonster(.@map$, 182, 217, 214, 188, _("Cursed Sentinel"), CURSED_SENTINEL, rand(2,3), instance_npcname("#gp4control")+"::OnMyMobDead");
- areamonster(.@map$, 182, 217, 214, 188, _("Sweet Slaughter"), SWEET_SLAUGHTER, rand(2,3), instance_npcname("#gp4control")+"::OnMyMobDead");
+ areamonster(.@map$, 182, 217, 214, 188, _("Cursed Sentinel"), CURSED_SENTINEL, rand(2, 3), instance_npcname("#gp4control")+"::OnMyMobDead");
+ areamonster(.@map$, 182, 217, 214, 188, _("Sweet Slaughter"), SWEET_SLAUGHTER, rand(2, 3), instance_npcname("#gp4control")+"::OnMyMobDead");
end;
OnMyMobDead:
if (mobcount(instance_mapname("1@spa"), instance_npcname("#gp4control")+"::OnMyMobDead"))
end;
++'gp4;
if ('gp4 > 3)
- donpcevent instance_npcname("#gp4control")+"::OnStory";
+ donpcevent(instance_npcname("#gp4control")+"::OnStory");
else
- donpcevent instance_npcname("#gp4control")+"::OnSummon";
+ donpcevent(instance_npcname("#gp4control")+"::OnSummon");
end;
OnStory:
for(.@i = 1; .@i <= 4; ++.@i)
- enablenpc instance_npcname("Soldier's Corpse#gp4_"+.@i);
- enablenpc instance_npcname("Captain's Corpse#gp4");
- enablenpc instance_npcname("King's Corpse#gp4");
- enablenpc instance_npcname("Lurid Royal Guard#gp4");
- enablenpc instance_npcname("Thanatos Magic Trace#gp4");
- enablenpc instance_npcname("Visiting Prince#gp4");
+ enablenpc(instance_npcname("Soldier's Corpse#gp4_"+.@i));
+ enablenpc(instance_npcname("Captain's Corpse#gp4"));
+ enablenpc(instance_npcname("King's Corpse#gp4"));
+ enablenpc(instance_npcname("Lurid Royal Guard#gp4"));
+ enablenpc(instance_npcname("Thanatos Magic Trace#gp4"));
+ enablenpc(instance_npcname("Visiting Prince#gp4"));
end;
OnBoss:
for(.@i = 1; .@i <= 4; ++.@i)
- hideonnpc instance_npcname("Soldier's Corpse#gp4_"+.@i);
- hideonnpc instance_npcname("Captain's Corpse#gp4");
- hideonnpc instance_npcname("King's Corpse#gp4");
- hideonnpc instance_npcname("Lurid Royal Guard#gp4");
- hideonnpc instance_npcname("Thanatos Magic Trace#gp4");
- hideonnpc instance_npcname("Visiting Prince#gp4");
- sleep 1000;
+ hideonnpc(instance_npcname("Soldier's Corpse#gp4_"+.@i));
+ hideonnpc(instance_npcname("Captain's Corpse#gp4"));
+ hideonnpc(instance_npcname("King's Corpse#gp4"));
+ hideonnpc(instance_npcname("Lurid Royal Guard#gp4"));
+ hideonnpc(instance_npcname("Thanatos Magic Trace#gp4"));
+ hideonnpc(instance_npcname("Visiting Prince#gp4"));
+ sleep(1000);
monster(instance_mapname("1@spa"), 197, 218, _("Torturous Redeemer"), TORTUROUS_REDEEMER, 1, instance_npcname("#gp4control")+"::OnBossDead");
end;
OnBossDead:
monster(instance_mapname("1@spa"), 197, 180, _("Sweet Slaughter"), SWEET_SLAUGHTER, 1, instance_npcname("#gp4control")+"::OnMobDead");
end;
OnMobDead:
- mapannounce instance_mapname("1@spa"), "The passage on the 5th floor of the palace is open.", bc_map, C_YELLOW;
- enablenpc instance_npcname("#gp4warp");
- donpcevent instance_npcname("#gp5control")+"::OnStart";
- disablenpc instance_npcname("#gp4control");
+ mapannounce(instance_mapname("1@spa"), _("The passage on the 5th floor of the palace is open."), bc_map, C_YELLOW);
+ enablenpc(instance_npcname("#gp4warp"));
+ donpcevent(instance_npcname("#gp5control")+"::OnStart");
+ disablenpc(instance_npcname("#gp4control"));
end;
OnInstanceInit:
- disablenpc instance_npcname("#gp4warp");
+ disablenpc(instance_npcname("#gp4warp"));
for(.@i = 1; .@i <= 4; ++.@i)
- disablenpc instance_npcname("Soldier's Corpse#gp4_"+.@i);
- disablenpc instance_npcname("Captain's Corpse#gp4");
- disablenpc instance_npcname("King's Corpse#gp4");
- disablenpc instance_npcname("Lurid Royal Guard#gp4");
- disablenpc instance_npcname("Thanatos Magic Trace#gp4");
- disablenpc instance_npcname("Visiting Prince#gp4");
+ disablenpc(instance_npcname("Soldier's Corpse#gp4_"+.@i));
+ disablenpc(instance_npcname("Captain's Corpse#gp4"));
+ disablenpc(instance_npcname("King's Corpse#gp4"));
+ disablenpc(instance_npcname("Lurid Royal Guard#gp4"));
+ disablenpc(instance_npcname("Thanatos Magic Trace#gp4"));
+ disablenpc(instance_npcname("Visiting Prince#gp4"));
'gp4 = 0;
end;
}
@@ -500,35 +502,35 @@ OnInstanceInit:
mes("[Princess Tiara]");
mes("You kept your promise.");
npctalk(_("You kept your promise."), instance_npcname("Tiara Princess#gp5"));
- next;
+ next();
mes("[Lurid Royal Guard]");
mes("princess!");
npctalk(_("princess"), instance_npcname("Lurid Royal Guard#gp5"));
- next;
+ next();
cutin("npc-tiara", 3);
mes("[Princess Tiara]");
mes("Thank you..now I can rest at beside you...");
npctalk(_("Thank you..now I can rest at beside you..."), instance_npcname("Tiara Princess#gp5"));
- next;
+ next();
mes("[Lurid Royal Guard]");
mes("No..NO!!!!!!");
npctalk(_("No..NO!!!!!!"), instance_npcname("Lurid Royal Guard#gp5"));
- next;
+ next();
mes("[The Voice of Princess Tiara]");
mes("I want to be with you forever in peace...forever...");
npctalk(_("I want to be with you forever in peace...forever..."), instance_npcname("Tiara Princess#gp5"));
- next;
+ next();
cutin("b-tiara", 3);
mes("[Lurid Royal Guard]");
mes("no.....Ahh ahh ahh!!!~!");
npctalk(_("no.....Ahh ahh ahh!!!~!"), instance_npcname("Lurid Royal Guard#gp5"));
- next;
+ next();
mes("[The Voice of Princess Tiara]");
mes("I love you...");
npctalk(_("I love you..."), instance_npcname("Tiara Princess#gp5"));
close2();
cutin("", 255);
- donpcevent instance_npcname("#gp5control")+"::OnStart2";
+ donpcevent(instance_npcname("#gp5control")+"::OnStart2");
end;
}
@@ -537,63 +539,63 @@ OnInstanceInit:
mes("[Lurid Royal Guard]");
mes("Are you satisfied..? Thanatos Magic Trace?");
npctalk(_("Are you satisfied..? Thanatos Magic Trace?"), instance_npcname("Sakray#gp5"));
- next;
+ next();
mes("[Thanatos Magic Trace]");
mes("I need more blood..Sakray, offer me his blood.");
npctalk(_("I need more blood..Sakray, offer me his blood."), instance_npcname("Thanatos Magic Trace#gp5"));
- next;
+ next();
mes("[Sakray]");
mes("Okay, that is good. A traveler.\r"
"Did you see?");
npctalk(_("Okay, that is good. A traveler. Did you see?"), instance_npcname("Sakray#gp5"));
- next;
+ next();
mesf("[%s]", strcharinfo(PC_NAME));
mes("Sakray, What do you want sympathy? Or is it a trap?");
unittalk(getcharid(CHAR_ID_ACCOUNT), _("Sakray, What do you want sympathy? Or is it a trap?"));
- next;
+ next();
mes("[Sakray]");
mes("Non...I did not need to make an effort to catch a novice.");
npctalk(_("Non...I did not need to make an effort to catch a novice."), instance_npcname("Sakray#gp5"));
- next;
+ next();
mesf("[%s]", strcharinfo(PC_NAME));
mes("If so... then why...?");
unittalk(getcharid(CHAR_ID_ACCOUNT), _("If so... then why...?"));
- next;
+ next();
cutin("cry-b", 3);
mes("[Sakray]");
mes("I wanted to get rid of a piece of humanity inside of me through you.");
npctalk(_("I wanted to get rid of a piece of humanity inside of me through you."), instance_npcname("Sakray#gp5"));
- next;
+ next();
mes("[Sakray]");
mes("I am quite satisfied with the result.");
- next;
+ next();
mes("[Thanatos Magic Trace]");
mes("Sakray, offer the blood to me now!");
npctalk(_("Sakray, offer the blood to me now!"), instance_npcname("Thanatos Magic Trace#gp5"));
- next;
+ next();
mes("[Sakray]");
mes("If you were me, what would you do?");
- next;
+ next();
mes("[Sakray]");
mes("Can you set yourself free from this curse?");
- next;
+ next();
mesf("[%s]", strcharinfo(PC_NAME));
mes("...");
unittalk(getcharid(CHAR_ID_ACCOUNT), _("..."));
- next;
+ next();
mes("[Sakray]");
mes("Heh heh... I will keep watching you until the day you grow up enough.");
- next;
+ next();
mes("[Sakray]");
mes("I am willing to hunt you later for Thanatos.");
- next;
+ next();
cutin("", 255);
mes("[Sakray]");
mes("Farewell then.");
close2();
- donpcevent instance_npcname("#gp5control")+"::OnEnd";
- hideonnpc instance_npcname("Sakray#gp5");
- hideonnpc instance_npcname("Thanatos Magic Trace#gp5");
+ donpcevent(instance_npcname("#gp5control")+"::OnEnd");
+ hideonnpc(instance_npcname("Sakray#gp5"));
+ hideonnpc(instance_npcname("Thanatos Magic Trace#gp5"));
end;
}
@@ -601,25 +603,25 @@ OnInstanceInit:
end;
OnStart:
stopnpctimer instance_npcname("#gp3control");
- disablenpc instance_npcname("#gp3control");
- killmonster instance_mapname("1@spa"), "All";
- disablenpc instance_npcname("#gp3warp");
- enablenpc instance_npcname("Lurid Royal Guard#gp5");
- enablenpc instance_npcname("Tiara Princess#gp5");
+ disablenpc(instance_npcname("#gp3control"));
+ killmonster(instance_mapname("1@spa"), "All");
+ disablenpc(instance_npcname("#gp3warp"));
+ enablenpc(instance_npcname("Lurid Royal Guard#gp5"));
+ enablenpc(instance_npcname("Tiara Princess#gp5"));
end;
OnStart2:
- hideonnpc instance_npcname("Lurid Royal Guard#gp5");
- hideonnpc instance_npcname("Tiara Princess#gp5");
- sleep 2000;
+ hideonnpc(instance_npcname("Lurid Royal Guard#gp5"));
+ hideonnpc(instance_npcname("Tiara Princess#gp5"));
+ sleep(2000);
OnSummon:
- initnpctimer;
+ initnpctimer();
.@map$ = instance_mapname("1@spa");
- 'talkid[0] = areamonster(.@map$, 61, 63, 24, 24, _("Forgotten Name"), FORGOTTEN_NAME, rand(1,2), instance_npcname("#gp5control")+"::OnMyMobDead");
+ 'talkid[0] = areamonster(.@map$, 61, 63, 24, 24, _("Forgotten Name"), FORGOTTEN_NAME, rand(1, 2), instance_npcname("#gp5control")+"::OnMyMobDead");
'talkid[1] = areamonster(.@map$, 61, 63, 24, 24, _("Colorless Vow"), COLORLESS_VOW, 2, instance_npcname("#gp5control")+"::OnMyMobDead");
- 'talkid[2] = areamonster(.@map$, 61, 63, 24, 24, _("Sweet Slaughter"), SWEET_SLAUGHTER, rand(1,2), instance_npcname("#gp5control")+"::OnMyMobDead");
+ 'talkid[2] = areamonster(.@map$, 61, 63, 24, 24, _("Sweet Slaughter"), SWEET_SLAUGHTER, rand(1, 2), instance_npcname("#gp5control")+"::OnMyMobDead");
end;
OnTimer2000:
- stopnpctimer;
+ stopnpctimer();
unittalk('talkid[0], _("What is this..??"));
unittalk('talkid[1], _("Wake up! look at us... We are monsters?"));
unittalk('talkid[2], _("Sakray killed the princess!"));
@@ -629,51 +631,51 @@ OnMyMobDead:
end;
++'gp5;
if ('gp5 > 2)
- donpcevent instance_npcname("#gp5control")+"::OnStory";
+ donpcevent(instance_npcname("#gp5control")+"::OnStory");
else
- donpcevent instance_npcname("#gp5control")+"::OnSummon";
+ donpcevent(instance_npcname("#gp5control")+"::OnSummon");
end;
OnBossDead:
- enablenpc instance_npcname("Sakray#gp5");
- enablenpc instance_npcname("Thanatos Magic Trace#gp5");
+ enablenpc(instance_npcname("Sakray#gp5"));
+ enablenpc(instance_npcname("Thanatos Magic Trace#gp5"));
end;
OnStory:
- stopnpctimer;
+ stopnpctimer();
'BossID = monster(instance_mapname("1@spa"), 44, 47, _("Torturous Redeemer"), E_TORTUROUS_REDEEMER, 1, instance_npcname("#gp5control")+"::OnBossDead");
unittalk('BossID, _("Thanatos Magic Trace! I will destroy you if I can't have you... Oh no! How could this be?"));
- sleep 3000;
- unitkill 'BossID;
+ sleep(3000);
+ unitkill('BossID);
end;
OnEnd:
- hideoffnpc instance_npcname("Voice of Princess Tiara");
- hideoffnpc instance_npcname("Voice of Sakray");
- hideoffnpc instance_npcname("Thanatos Magic Trace");
+ hideoffnpc(instance_npcname("Voice of Princess Tiara"));
+ hideoffnpc(instance_npcname("Voice of Sakray"));
+ hideoffnpc(instance_npcname("Thanatos Magic Trace"));
npctalk(_("What can I do for you?"), instance_npcname("Voice of Princess Tiara"));
- sleep 3000;
+ sleep(3000);
npctalk(_("I will always stand by you. Please reset beside me."), instance_npcname("Voice of Sakray"));
- sleep 3000;
+ sleep(3000);
npctalk(_("Your soul is mine until you find the blood that satisfies me.."), instance_npcname("Thanatos Magic Trace"));
- sleep 3000;
+ sleep(3000);
npctalk(_("Reset in the shadow with me."), instance_npcname("Voice of Sakray"));
- sleep 3000;
+ sleep(3000);
npctalk(_("In the dark forever..."), instance_npcname("Voice of Sakray"));
- sleep 3000;
+ sleep(3000);
mapannounce(instance_mapname("1@spa"), _("It is time to leave the Ghost Palace."), bc_map, C_YELLOW);
- enablenpc instance_npcname("King#gpend");
- enablenpc instance_npcname("#gp3warp");
- hideonnpc instance_npcname("Voice of Princess Tiara");
- hideonnpc instance_npcname("Voice of Sakray");
- hideonnpc instance_npcname("Thanatos Magic Trace");
+ enablenpc(instance_npcname("King#gpend"));
+ enablenpc(instance_npcname("#gp3warp"));
+ hideonnpc(instance_npcname("Voice of Princess Tiara"));
+ hideonnpc(instance_npcname("Voice of Sakray"));
+ hideonnpc(instance_npcname("Thanatos Magic Trace"));
end;
OnInstanceInit:
- disablenpc instance_npcname("Lurid Royal Guard#gp5");
- disablenpc instance_npcname("Tiara Princess#gp5");
- disablenpc instance_npcname("Thanatos Magic Trace#gp5");
- disablenpc instance_npcname("Sakray#gp5");
- disablenpc instance_npcname("King#gpend");
- hideonnpc instance_npcname("Voice of Princess Tiara");
- hideonnpc instance_npcname("Voice of Sakray");
- hideonnpc instance_npcname("Thanatos Magic Trace");
+ disablenpc(instance_npcname("Lurid Royal Guard#gp5"));
+ disablenpc(instance_npcname("Tiara Princess#gp5"));
+ disablenpc(instance_npcname("Thanatos Magic Trace#gp5"));
+ disablenpc(instance_npcname("Sakray#gp5"));
+ disablenpc(instance_npcname("King#gpend"));
+ hideonnpc(instance_npcname("Voice of Princess Tiara"));
+ hideonnpc(instance_npcname("Voice of Sakray"));
+ hideonnpc(instance_npcname("Thanatos Magic Trace"));
'gp5 = 0;
end;
}
@@ -682,34 +684,34 @@ OnInstanceInit:
mes("[King]");
mes("Hey there, are you alive?\r"
"I did not expect to meet someone alive");
- next;
+ next();
mes("[King]");
mes("Do you possibly have ^009900Gray Piece^000000?\r"
"Can you give it to me?\r"
"The old memory of faithful royal guard,\r"
"the memory of everyone he loved becomes broken pieces and are contained inside of them.");
- next;
+ next();
mes("[King]");
mes("Will you give ^009900Gray Piece^000000 to me?\r"
"The guilt is eating my soul.\r"
"My soul is stuck in ghost palace.");
- next;
+ next();
mes("[King]");
mes("I am collecting Sakray's abandoned memories from these shards.");
- next;
+ next();
mes("[King]");
mes("If you give any Gray Shards to me, I can make equipment for you.");
- next;
+ next();
mes("[King]");
mes("The cursed knight...\r"
"Please help me save the soul of Sakray.");
- next;
+ next();
setarray(.@items_list,
- Thanos_Sword, Thanos_Great_Sword, Thanos_Spear, Thanos_Long_Spear, Thanos_Staff, Thanos_Rod, Thanos_Bow,
- Thanos_Dagger, Thanos_Katar, Thanos_Knuckle, Thanos_Hammer, Thanos_Axe, Thanos_Violin, Thanos_Whip, Shield_Of_Gray,
- Armor_Of_Gray, Gray_Robe, Cloak_Of_Gray, Boots_Of_Gray, Gray_Helmet);
+ Thanos_Sword, Thanos_Great_Sword, Thanos_Spear, Thanos_Long_Spear, Thanos_Staff, Thanos_Rod, Thanos_Bow,
+ Thanos_Dagger, Thanos_Katar, Thanos_Knuckle, Thanos_Hammer, Thanos_Axe, Thanos_Violin, Thanos_Whip, Shield_Of_Gray,
+ Armor_Of_Gray, Gray_Robe, Cloak_Of_Gray, Boots_Of_Gray, Gray_Helmet);
- setarray .@cost, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 100, 100, 100, 100, 100, 100;
+ setarray(.@cost, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 100, 100, 100, 100, 100, 100);
.@menulist$ = "";
for (.@i = 0; .@i < getarraysize(.@items_list); ++.@i)
.@menulist$ += getitemname(.@items_list[.@i])+":";
@@ -721,19 +723,19 @@ OnInstanceInit:
"I believe collecting Gray Shards is the only method to save him.");
close();
}
- next;
+ next();
mes("[King]");
mesf("to make a ^FF0000%s^000000 \r"
"I need %d ^009900Gray Shard^000000", getitemname(.@items_list[.@choice]), .@cost[.@choice]);
- switch (select("Cancel", "hand over "+.@cost[.@choice]+" Gray Shard.")) {
+ switch (select("Cancel", sprintf(_$("hand over %d Gray Shard."), .@cost[.@choice]))) {
case 1:
- next;
+ next();
mes("[King]");
mes("Someday, Sakray will get out of curse for sure. I believe");
- next;
+ next();
break;
case 2:
- next;
+ next();
if (countitem(Gray_Shard) < .@cost[.@choice]) {
mes("[King]");
mes("You don't have enough Gray Shards.");
@@ -743,20 +745,20 @@ OnInstanceInit:
mes("[King]");
mesf("I will make a ^FF0000%s^000000 \r"
"with %d ^009900Gray Shard^000000", getitemname(.@items_list[.@choice]), .@cost[.@choice]);
- next;
+ next();
mes("[King]");
mes("You see a light through the folded hands of the king and it gradually takes on a shape.");
- next;
+ next();
mes("[King]");
mesf("All right, it is done.\r"
"Take this ^FF0000%s.^000000\r"
"Use it to confront Sakray and Thanatos.", getitemname(.@items_list[.@choice]));
- next;
+ next();
mes("[King]");
mes("The power requires a sacrifice.\r"
"Please be careful...");
delitem(Gray_Shard, .@cost[.@choice]);
- getitem .@items_list[.@choice], 1;
+ getitem(.@items_list[.@choice], 1);
close();
}
}
@@ -766,27 +768,33 @@ OnInstanceInit:
1@spa,198,201,1 script Lurid Royal Guard#gp1 4_M_SAKRAYROYAL,{
end;
}
+
1@spa,197,217,0 warp #gp1warp 1,1,1@spa,114,120
// 2nd floor npc's
1@spa,135,125,3 script Tiara Princess#gp2 4_F_MAYSEL,{
end;
}
+
1@spa,117,137,0 warp #gp2warp 1,1,1@spa,60,43
// 3rd floor npc's
1@spa,30,58,5 script Lurid Royal Guard#gp3 4_M_SAKRAY_TIED,{
end;
}
+
1@spa,28,52,0 script Captain of the Guard#gp3 4_M_KY_KNT,{
end;
}
+
1@spa,30,52,0 script Soldier#gp3_1 4_M_KY_SOLD,{
end;
}
+
1@spa,34,53,1 script Soldier#gp3_2 4_M_CRU_SOLD,{
end;
}
+
1@spa,25,53,0 script Soldier#gp3_3 4_M_CRU_SOLD,{
end;
}
@@ -795,43 +803,54 @@ OnInstanceInit:
1@spa,201,198,1 script Soldier's Corpse#gp4_1 4_M_DIEMAN,{
end;
}
+
1@spa,191,207,0 script Soldier's Corpse#gp4_2 4_M_DIEMAN,{
end;
}
+
1@spa,206,209,0 script Soldier's Corpse#gp4_3 4_M_DIEMAN,{
end;
}
+
1@spa,189,193,0 script Soldier's Corpse#gp4_4 4_M_DIEMAN,{
end;
}
+
1@spa,211,194,4 script Captain's Corpse#gp4 4_M_LIEMAN,{
end;
}
+
1@spa,194,214,5 script King's Corpse#gp4 4_M_TRISTAN,{
end;
}
+
1@spa,197,218,5 script Visiting Prince#gp4 4_M_KNIGHT_SILVER,{
end;
}
+
1@spa,197,218,0 script Thanatos Magic Trace#gp4 HIDDEN_WARP_NPC,{
end;
}
+
1@spa,178,186,0 warp #gp4warp 1,1,1@spa,30,57
// 5th floor npc's
1@spa,60,43,3 script Tiara Princess#gp5 4_F_MAYSEL,{
end;
}
+
1@spa,40,44,0 script Thanatos Magic Trace#gp5 HIDDEN_WARP_NPC,{
end;
}
+
1@spa,40,46,0 script Voice of Princess Tiara CLEAR_NPC,{
end;
}
+
1@spa,42,43,0 script Voice of Sakray CLEAR_NPC,{
end;
}
+
1@spa,40,41,0 script Thanatos Magic Trace CLEAR_NPC,{
end;
}
-
diff --git a/npc/re/instances/octopus_cave.txt b/npc/re/instances/octopus_cave.txt
index b134742c9..e4d8d4357 100644
--- a/npc/re/instances/octopus_cave.txt
+++ b/npc/re/instances/octopus_cave.txt
@@ -37,51 +37,52 @@
mal_dun01,151,235,5 script Starfish 4_ASTER,{
.@party_id = getcharid(CHAR_ID_PARTY);
- .@md_name$ = "Octopus Cave";
+ .@md_name$ = _("Octopus Cave");
if (!.@party_id) {
mes("[Starfish]");
mes("You alone is powerless, hehe! Better get someone to help you out. Make a party, and come back later.");
- close;
+ close();
}
if (getcharid(CHAR_ID_CHAR) != getpartyleader(.@party_id, 2)) {
mes("[Starfish]");
mes("Where is your leader, hehe. I don't talk to some random people. Bring your boss to me.");
- close;
+ close();
}
mes("[Starfish]");
mes("I am guarding here, hehe! It is just roughly blocked for now. But someday this cave must be sealed forever, hehe!");
- next;
- while(1) {
+ next();
+ while (true) {
switch (select("Ask what's going on.", "Ask to open the gate.", "Go to other location.")) {
case 1:
mes("[Starfish]");
mes("Lately, our Starfish lady is suffering with some issues, ooh ooh. Something bad happen in this peaceful place, hehe!");
- next;
+ next();
mes("[Starfish]");
mes("Weird looking limbs came out from the hole there, tried to kidnap our lady Starfish. Ooh Ooh.");
- next;
+ next();
mes("[Starfish]");
mes("It seems those limbs belong to that ugly octopus. That monster should be taken care of,\r"
"but it's hard for ourselves only to make it happen, hehe.");
- next;
+ next();
mes("[Starfish]");
mes("I want to find someone special, and ask to punish this ugly octopus.\r"
"I hope this octopus won't ever harass our lady, hehe.");
- next;
+ next();
mes("[Starfish]");
mes("Go catch that octopus and stick it to this pick. If you bring back the pick,\r"
"I will open this gate for a while. You should challenge if you are interested, hehe.");
- next;
+ next();
break;
case 2:
.@playtime = questprogress(4197, PLAYTIME);
if (.@playtime == 1) {
mes("[Starfish]");
mes("Octopus is not around now, hehe. Please come back later.");
- close;
+ close();
}
- if (.@playtime == 2) erasequest 4197;
+ if (.@playtime == 2)
+ erasequest(4197);
if (countitem(Octopus_Hunt_Stick)) {
.@instance = instance_create(.@md_name$, .@party_id);
if (.@instance < 0) {
@@ -90,12 +91,12 @@ mal_dun01,151,235,5 script Starfish 4_ASTER,{
mesf("Party leader is... %s.", strcharinfo(PC_NAME));
mesf("^0000FF%s^000000, I cannot open now, hehe.", .@md_name$);
mes("Now is not the time, please wait.");
- close;
+ close();
}
if (instance_attachmap("1@cash", .@instance) == "") {
mesf("^0000FF%s^000000 - Reservation Failed!", .@md_name$);
instance_destroy(.@instance);
- close;
+ close();
}
instance_set_timeout(3600, 300, .@instance);
instance_init(.@instance);
@@ -103,23 +104,23 @@ mal_dun01,151,235,5 script Starfish 4_ASTER,{
mes("[Starfish]");
mesf("I will open the gate for a while to ^0000FF%s^000000.", .@md_name$);
mes("Please catch that pervert octopus, and come back with it sticked to the pick, hehe.");
- close;
+ close();
}
mes("[Starfish]");
mes("Prepare a pick first, so you can thread that octopus with that pick.\r"
"Then, I will let you in for a while, hehe.");
- close;
+ close();
case 3:
mes("[Starfish]");
mes("This is not a good location, check someplace else.");
- close;
+ close();
}
}
}
mal_dun01,153,237,5 script Weird Entrance CLEAR_NPC,{
mes("There is a strange entrance blocked roughly with some boards.");
- next;
+ next();
switch (select("Go in.", "Stop.")) {
case 1:
if (countitem(Octopus_Hunt_Stick)) {
@@ -127,25 +128,26 @@ mal_dun01,153,237,5 script Weird Entrance CLEAR_NPC,{
if (questprogress(4197, PLAYTIME) == 1) {
mes("[Starfish]");
mes("Ah, now is not the time... Would you come back later? Hehe.");
- close;
+ close();
}
mes("[Starfish]");
mes("Shhh... Weird aura is coming from that entrance. Big trouble is waiting, if you go in now.");
- close;
+ close();
}
mapannounce("mal_dun01", sprintf(_$("%s party's %s member started to hunt the Octopus!"), getpartyname(getcharid(CHAR_ID_PARTY)), strcharinfo(PC_NAME)), bc_map, C_SPRINGGREEN);
- if (!questprogress(4197)) setquest 4197;
- warp "1@cash", 199, 99;
+ if (!questprogress(4197))
+ setquest(4197);
+ warp("1@cash", 199, 99);
end;
}
mes("[Starfish]");
mes("You should definitely prepare hunting stick if you want to punish the Octopus. Or I will not let you in! Hehe.");
- close;
+ close();
case 2:
mes("[Starfish]");
mes("Yes Yes, you better quit.");
- close;
+ close();
}
}
@@ -153,25 +155,25 @@ mal_dun01,153,237,5 script Weird Entrance CLEAR_NPC,{
1@cash,199,99,0 script oct_enter HIDDEN_WARP_NPC,4,4,{
end;
OnTouch:
- donpcevent instance_npcname("oct_enter_broad")+"::OnEnable";
- specialeffect EF_BASH;
- disablenpc instance_npcname("oct_enter");
+ donpcevent(instance_npcname("oct_enter_broad")+"::OnEnable");
+ specialeffect(EF_BASH);
+ disablenpc(instance_npcname("oct_enter"));
end;
}
1@cash,1,1,0 script oct_enter_broad FAKE_NPC,{
end;
OnInstanceInit:
- donpcevent instance_npcname("oct_enter_broad")+"::OnDisable";
+ donpcevent(instance_npcname("oct_enter_broad")+"::OnDisable");
end;
OnEnable:
- enablenpc instance_npcname("oct_enter_broad");
- donpcevent instance_npcname("oct_foot_4")+"::OnEnable";
- donpcevent instance_npcname("oct_mob_con")+"::OnEnable";
- initnpctimer;
+ enablenpc(instance_npcname("oct_enter_broad"));
+ donpcevent(instance_npcname("oct_foot_4")+"::OnEnable");
+ donpcevent(instance_npcname("oct_mob_con")+"::OnEnable");
+ initnpctimer();
end;
OnDisable:
- disablenpc instance_npcname("oct_enter_broad");
+ disablenpc(instance_npcname("oct_enter_broad"));
end;
OnTimer1000:
mapannounce(instance_mapname("1@cash"), _("Pervert Octopus : How dare you to come inside of my place!"), bc_map, C_YELLOW);
@@ -181,22 +183,22 @@ OnTimer4000:
end;
OnTimer7000:
mapannounce(instance_mapname("1@cash"), _("Pervert Octopus : My juniors~ There is your toy! Play with it~ kakaka"), bc_map, C_YELLOW);
- stopnpctimer;
- donpcevent instance_npcname("oct_enter_broad")+"::OnDisable";
+ stopnpctimer();
+ donpcevent(instance_npcname("oct_enter_broad")+"::OnDisable");
end;
}
1@cash,3,3,0 script oct_foot_4 FAKE_NPC,{
end;
OnInstanceInit:
- donpcevent instance_npcname("oct_foot_4")+"::OnDisable";
+ donpcevent(instance_npcname("oct_foot_4")+"::OnDisable");
end;
OnEnable:
- enablenpc instance_npcname("oct_foot_4");
- donpcevent instance_npcname("oct_foot1")+"::OnEnable";
- donpcevent instance_npcname("oct_foot2")+"::OnEnable";
- donpcevent instance_npcname("oct_foot3")+"::OnEnable";
- donpcevent instance_npcname("oct_foot4")+"::OnEnable";
+ enablenpc(instance_npcname("oct_foot_4"));
+ donpcevent(instance_npcname("oct_foot1")+"::OnEnable");
+ donpcevent(instance_npcname("oct_foot2")+"::OnEnable");
+ donpcevent(instance_npcname("oct_foot3")+"::OnEnable");
+ donpcevent(instance_npcname("oct_foot4")+"::OnEnable");
.@map$ = instance_mapname("1@cash");
monster(.@map$, 20, 114, _("Octopus Leg#1"), MD_OCTOPUS_LEG, 1, instance_npcname("oct_foot_4")+"::OnMyMobDead");
monster(.@map$, 88, 190, _("Octopus Leg#2"), MD_OCTOPUS_LEG, 1, instance_npcname("oct_foot_4")+"::OnMyMobDead");
@@ -204,15 +206,15 @@ OnEnable:
monster(.@map$, 372, 131, _("Octopus Leg#4"), MD_OCTOPUS_LEG, 1, instance_npcname("oct_foot_4")+"::OnMyMobDead");
end;
OnDisable:
- disablenpc instance_npcname("oct_foot_4");
+ disablenpc(instance_npcname("oct_foot_4"));
end;
OnMyMobDead:
.@map$ = instance_mapname("1@cash");
- if (mobcount(.@map$,instance_npcname("oct_foot_4")+"::OnMyMobDead") < 1) {
- donpcevent instance_npcname("oct_boss_con")+"::OnEnable";
+ if (mobcount(.@map$, instance_npcname("oct_foot_4")+"::OnMyMobDead") < 1) {
+ donpcevent(instance_npcname("oct_boss_con")+"::OnEnable");
mapannounce(.@map$, _("Hey you!! I'll personally take care of you all! Let's bring it on!"), bc_map, C_SPRINGGREEN);
- enablenpc instance_npcname("oct_boss_warp");
- instance_warpall .@map$, 199, 99;
+ enablenpc(instance_npcname("oct_boss_warp"));
+ instance_warpall(.@map$, 199, 99);
end;
}
mapannounce(.@map$, _("Arrgg!! That hurts!!! I need another strategy..."), bc_map, C_SPRINGGREEN);
@@ -222,12 +224,12 @@ OnMyMobDead:
1@cash,20,114,0 script oct_foot1 HIDDEN_WARP_NPC,6,6,{
end;
OnInstanceInit:
- donpcevent instance_npcname(strnpcinfo(NPC_NAME))+"::OnDisable";
+ donpcevent(instance_npcname(strnpcinfo(NPC_NAME))+"::OnDisable");
end;
OnEnable:
- enablenpc instance_npcname(strnpcinfo(NPC_NAME));
+ enablenpc(instance_npcname(strnpcinfo(NPC_NAME)));
.@label$ = instance_npcname(strnpcinfo(NPC_NAME))+"::OnMyMobDead";
- .@i = atoi(charat(strnpcinfo(NPC_NAME),8));
+ .@i = atoi(charat(strnpcinfo(NPC_NAME), 8));
.@map$ = instance_mapname("1@cash");
switch (.@i) {
case 1:
@@ -249,7 +251,7 @@ OnEnable:
areamonster(.@map$, 123, 93, 127, 97, _("Octopus's Henchman"), MD_OCTOPUS, 3, .@label$);
areamonster(.@map$, 113, 90, 115, 92, _("Octopus's Henchman"), MD_OCTOPUS, 2, .@label$);
areamonster(.@map$, 103, 89, 105, 91, _("Octopus's Henchman"), MD_OCTOPUS, 2, .@label$);
- areamonster(.@map$, 89, 90, 91,92, _("Octopus's Henchman"), MD_OCTOPUS, 2, .@label$);
+ areamonster(.@map$, 89, 90, 91, 92, _("Octopus's Henchman"), MD_OCTOPUS, 2, .@label$);
areamonster(.@map$, 74, 104, 76, 106, _("Octopus's Henchman"), MD_OCTOPUS, 2, .@label$);
areamonster(.@map$, 74, 120, 76, 122, _("Octopus's Henchman"), MD_OCTOPUS, 2, .@label$);
areamonster(.@map$, 83, 131, 87, 135, _("Octopus's Henchman"), MD_OCTOPUS, 3, .@label$);
@@ -285,56 +287,57 @@ OnEnable:
}
end;
OnDisable:
- killmonster instance_mapname("1@cash"), instance_npcname(strnpcinfo(NPC_NAME))+"::OnMyMobDead"; // Not in official script.
- disablenpc instance_npcname(strnpcinfo(NPC_NAME));
+ killmonster(instance_mapname("1@cash"), instance_npcname(strnpcinfo(NPC_NAME))+"::OnMyMobDead"); // Not in official script.
+ disablenpc(instance_npcname(strnpcinfo(NPC_NAME)));
end;
OnTouch:
- if (getd("."+strnpcinfo(NPC_NAME)+instance_id())) end;
- setd "."+strnpcinfo(NPC_NAME)+instance_id(),1;
- hideonnpc instance_npcname(strnpcinfo(NPC_NAME));
+ if (getd("."+strnpcinfo(NPC_NAME)+instance_id()))
+ end;
+ setd("."+strnpcinfo(NPC_NAME)+instance_id(), 1);
+ hideonnpc(instance_npcname(strnpcinfo(NPC_NAME)));
mapannounce(instance_mapname("1@cash"), _("Come out all my babies and help me out!"), bc_map, C_YELLOW);
- initnpctimer;
+ initnpctimer();
end;
OnTimer5000:
.@map$ = instance_mapname("1@cash");
mapannounce(.@map$, _("Let's give them a lesson!"), bc_map, C_YELLOW);
.@label$ = instance_npcname(strnpcinfo(NPC_NAME))+"::OnMyMobDead";
- .@i = atoi(charat(strnpcinfo(NPC_NAME),8));
+ .@i = atoi(charat(strnpcinfo(NPC_NAME), 8));
switch (.@i) {
case 1:
- areamonster(.@map$, 18, 112, 22,116, _("Octopus's Henchman"), MD_OCTOPUS, 3, .@label$);
- areamonster(.@map$, 18, 112, 22,116, _("Octopus's Henchman"), MD_OCTOPUS, 3, .@label$);
+ areamonster(.@map$, 18, 112, 22, 116, _("Octopus's Henchman"), MD_OCTOPUS, 3, .@label$);
+ areamonster(.@map$, 18, 112, 22, 116, _("Octopus's Henchman"), MD_OCTOPUS, 3, .@label$);
break;
case 2:
- areamonster(.@map$, 86, 188, 90,192, _("Octopus's Henchman"), MD_OCTOPUS, 3, .@label$);
- areamonster(.@map$, 96, 98, 100,102, _("Octopus's Henchman"), MD_OCTOPUS, 3, .@label$);
+ areamonster(.@map$, 86, 188, 90, 192, _("Octopus's Henchman"), MD_OCTOPUS, 3, .@label$);
+ areamonster(.@map$, 96, 98, 100, 102, _("Octopus's Henchman"), MD_OCTOPUS, 3, .@label$);
break;
case 3:
- areamonster(.@map$, 305, 213, 309,217, _("Octopus's Henchman"), MD_OCTOPUS, 3, .@label$);
- areamonster(.@map$, 305, 213, 309,217, _("Octopus's Henchman"), MD_OCTOPUS, 3, .@label$);
+ areamonster(.@map$, 305, 213, 309, 217, _("Octopus's Henchman"), MD_OCTOPUS, 3, .@label$);
+ areamonster(.@map$, 305, 213, 309, 217, _("Octopus's Henchman"), MD_OCTOPUS, 3, .@label$);
break;
case 4:
- areamonster(.@map$, 370, 129, 374,133, _("Octopus's Henchman"), MD_OCTOPUS, 3, .@label$);
- areamonster(.@map$, 370, 129, 374,133, _("Octopus's Henchman"), MD_OCTOPUS, 3, .@label$);
+ areamonster(.@map$, 370, 129, 374, 133, _("Octopus's Henchman"), MD_OCTOPUS, 3, .@label$);
+ areamonster(.@map$, 370, 129, 374, 133, _("Octopus's Henchman"), MD_OCTOPUS, 3, .@label$);
break;
}
end;
OnTimer30000:
- setd "."+strnpcinfo(NPC_NAME)+instance_id(),0;
- stopnpctimer;
- .@i = atoi(charat(strnpcinfo(NPC_NAME),8));
- donpcevent instance_npcname("oct_foot_exit"+.@i)+"::OnEnable";
- donpcevent instance_npcname(strnpcinfo(NPC_NAME))+"::OnDisable";
+ setd("."+strnpcinfo(NPC_NAME)+instance_id(), 0);
+ stopnpctimer();
+ .@i = atoi(charat(strnpcinfo(NPC_NAME), 8));
+ donpcevent(instance_npcname("oct_foot_exit"+.@i)+"::OnEnable");
+ donpcevent(instance_npcname(strnpcinfo(NPC_NAME))+"::OnDisable");
end;
OnMyMobDead:
.@map$ = instance_mapname("1@cash");
- if (mobcount(.@map$,instance_npcname(strnpcinfo(NPC_NAME))+"::OnMyMobDead") < 1) {
+ if (mobcount(.@map$, instance_npcname(strnpcinfo(NPC_NAME))+"::OnMyMobDead") < 1) {
mapannounce(.@map$, _("You hurt my babies!!? You'll have to pay for this!!!"), bc_map, C_SPRINGGREEN);
- setd "."+strnpcinfo(NPC_NAME)+instance_id(),0;
- stopnpctimer;
- .@i = atoi(charat(strnpcinfo(NPC_NAME),8));
- donpcevent instance_npcname("oct_foot_exit"+.@i)+"::OnEnable";
- donpcevent instance_npcname(strnpcinfo(NPC_NAME))+"::OnDisable";
+ setd("."+strnpcinfo(NPC_NAME)+instance_id(), 0);
+ stopnpctimer();
+ .@i = atoi(charat(strnpcinfo(NPC_NAME), 8));
+ donpcevent(instance_npcname("oct_foot_exit"+.@i)+"::OnEnable");
+ donpcevent(instance_npcname(strnpcinfo(NPC_NAME))+"::OnDisable");
end;
}
end;
@@ -346,13 +349,13 @@ OnMyMobDead:
1@cash,16,117,0 script oct_foot_exit1 WARPNPC,2,2,{
end;
OnInstanceInit:
- disablenpc instance_npcname(strnpcinfo(NPC_NAME));
+ disablenpc(instance_npcname(strnpcinfo(NPC_NAME)));
end;
OnEnable:
- enablenpc instance_npcname(strnpcinfo(NPC_NAME));
+ enablenpc(instance_npcname(strnpcinfo(NPC_NAME)));
end;
OnTouch:
- warp instance_mapname("1@cash"), 198, 99;
+ warp(instance_mapname("1@cash"), 198, 99);
end;
}
1@cash,77,193,0 duplicate(oct_foot_exit1) oct_foot_exit2 WARPNPC,2,2
@@ -362,11 +365,11 @@ OnTouch:
1@cash,15,15,0 script oct_mob_con FAKE_NPC,{
end;
OnInstanceInit:
- donpcevent instance_npcname("oct_mob_con")+"::OnDisable";
+ donpcevent(instance_npcname("oct_mob_con")+"::OnDisable");
end;
OnEnable:
.@map$ = instance_mapname("1@cash");
- enablenpc instance_npcname("oct_mob_con");
+ enablenpc(instance_npcname("oct_mob_con"));
monster(.@map$, 32, 94, _("Hydra"), HYDRA, 1);
monster(.@map$, 41, 101, _("Hydra"), HYDRA, 1);
monster(.@map$, 35, 78, _("Hydra"), HYDRA, 1);
@@ -410,21 +413,21 @@ OnEnable:
areamonster(.@map$, 292, 97, 312, 117, _("Stapo"), STAPO, 1);
areamonster(.@map$, 355, 64, 375, 84, _("Stapo"), STAPO, 1);
areamonster(.@map$, 317, 17, 337, 37, _("Stapo"), STAPO, 1);
- donpcevent instance_npcname("oct_backattack1")+"::OnEnable";
- donpcevent instance_npcname("oct_backattack2")+"::OnEnable";
- donpcevent instance_npcname("oct_backattack3")+"::OnEnable";
- donpcevent instance_npcname("oct_backattack4")+"::OnEnable";
- donpcevent instance_npcname("oct_mob_con")+"::OnDisable";
+ donpcevent(instance_npcname("oct_backattack1")+"::OnEnable");
+ donpcevent(instance_npcname("oct_backattack2")+"::OnEnable");
+ donpcevent(instance_npcname("oct_backattack3")+"::OnEnable");
+ donpcevent(instance_npcname("oct_backattack4")+"::OnEnable");
+ donpcevent(instance_npcname("oct_mob_con")+"::OnDisable");
end;
OnDisable:
- disablenpc instance_npcname("oct_mob_con");
+ disablenpc(instance_npcname("oct_mob_con"));
end;
}
1@cash,45,53,0 script oct_backattack1 HIDDEN_WARP_NPC,3,3,{
end;
OnInstanceInit:
- disablenpc instance_npcname("oct_backattack1");
+ disablenpc(instance_npcname("oct_backattack1"));
end;
OnTouch:
.@map$ = instance_mapname("1@cash");
@@ -436,27 +439,28 @@ OnTouch:
monster(.@map$, 49, 50, _("Hydra"), HYDRA, 1);
monster(.@map$, 41, 53, _("Octopus's Henchman"), MD_OCTOPUS, 1);
mapannounce(.@map$, _("Don't let them break through, stop them!!!"), bc_map, C_SPRINGGREEN);
- specialeffect EF_BASH;
- disablenpc instance_npcname("oct_backattack1");
+ specialeffect(EF_BASH);
+ disablenpc(instance_npcname("oct_backattack1"));
end;
OnEnable:
- enablenpc instance_npcname("oct_backattack1");
+ enablenpc(instance_npcname("oct_backattack1"));
end;
}
1@cash,78,99,0 script oct_backattack2 HIDDEN_WARP_NPC,3,3,{
end;
OnInstanceInit:
- disablenpc instance_npcname("oct_backattack2");
+ disablenpc(instance_npcname("oct_backattack2"));
end;
OnTouch:
- if (getd("."+instance_id())) end;
- setd "."+instance_id(),1;
- initnpctimer;
+ if (getd("."+instance_id()))
+ end;
+ setd("."+instance_id(), 1);
+ initnpctimer();
.@map$ = instance_mapname("1@cash");
monster(.@map$, 71, 105, _("Octopus's Henchman"), MD_OCTOPUS, 1);
mapannounce(.@map$, _("Headquarters are empty, GO!!!"), bc_map, C_SPRINGGREEN);
- hideonnpc instance_npcname("oct_backattack2");
+ hideonnpc(instance_npcname("oct_backattack2"));
end;
OnTimer2000:
.@map$ = instance_mapname("1@cash");
@@ -477,21 +481,22 @@ OnTimer8000:
.@map$ = instance_mapname("1@cash");
monster(.@map$, 71, 105, _("Octopus's Henchman"), MD_OCTOPUS, 1);
mapannounce(.@map$, _("There is no time to lose, hurry up!!!"), bc_map, C_SPRINGGREEN);
- stopnpctimer;
+ stopnpctimer();
end;
OnEnable:
- enablenpc instance_npcname("oct_backattack2");
+ enablenpc(instance_npcname("oct_backattack2"));
end;
}
1@cash,299,144,0 script oct_backattack3 HIDDEN_WARP_NPC,3,3,{
end;
OnInstanceInit:
- disablenpc instance_npcname("oct_backattack3");
+ disablenpc(instance_npcname("oct_backattack3"));
end;
OnTouch:
- if (getd("."+instance_id())) end;
- setd "."+instance_id(),1;
+ if (getd("."+instance_id()))
+ end;
+ setd("."+instance_id(), 1);
.@map$ = instance_mapname("1@cash");
monster(.@map$, 293, 153, _("Octopus's Henchman"), MD_OCTOPUS, 1);
monster(.@map$, 294, 152, _("Octopus's Henchman"), MD_OCTOPUS, 1);
@@ -499,26 +504,27 @@ OnTouch:
monster(.@map$, 293, 151, _("Octopus's Henchman"), MD_OCTOPUS, 1);
monster(.@map$, 293, 152, _("Octopus's Henchman ?"), MD_MARSE, 1);
mapannounce(.@map$, _("Kakaka! Suprised??!!"), bc_map, C_SPRINGGREEN);
- initnpctimer;
- hideonnpc instance_npcname("oct_backattack3");
+ initnpctimer();
+ hideonnpc(instance_npcname("oct_backattack3"));
end;
OnTimer5000:
mapannounce(instance_mapname("1@cash"), _("... Looks like we have a spy among us."), bc_map, C_SPRINGGREEN);
- stopnpctimer;
+ stopnpctimer();
end;
OnEnable:
- enablenpc instance_npcname("oct_backattack3");
+ enablenpc(instance_npcname("oct_backattack3"));
end;
}
1@cash,336,36,0 script oct_backattack4 HIDDEN_WARP_NPC,3,3,{
end;
OnInstanceInit:
- disablenpc instance_npcname("oct_backattack4");
+ disablenpc(instance_npcname("oct_backattack4"));
end;
OnTouch:
- if (getd("."+instance_id())) end;
- setd "."+instance_id(),1;
+ if (getd("."+instance_id()))
+ end;
+ setd("."+instance_id(), 1);
.@map$ = instance_mapname("1@cash");
monster(.@map$, 332, 37, _("Octopus's Henchman"), MD_OCTOPUS, 1);
monster(.@map$, 332, 36, _("Octopus's Henchman"), MD_OCTOPUS, 1);
@@ -534,34 +540,34 @@ OnTouch:
monster(.@map$, 259, 40, _("Mercenary Squid"), MD_MARSE, 1);
monster(.@map$, 261, 40, _("Mercenary Squid"), MD_MARSE, 1);
mapannounce(.@map$, _("What a successful pincer tactic! The enemy is strong! Let's not lose yourselves! Anyway, where are all the mercenaries??"), bc_map, C_SPRINGGREEN);
- initnpctimer;
- hideonnpc instance_npcname("oct_backattack4");
+ initnpctimer();
+ hideonnpc(instance_npcname("oct_backattack4"));
end;
OnTimer5000:
mapannounce(instance_mapname("1@cash"), _("Mercenary Squid : eh...eh... wrong direction. No enemies are shown in this direction."), bc_map, C_SPRINGGREEN);
end;
OnTimer7000:
mapannounce(instance_mapname("1@cash"), _("Pervert Octopus : Fools! Can't you read the map??!! Useless!!"), bc_map, C_SPRINGGREEN);
- stopnpctimer;
+ stopnpctimer();
end;
OnEnable:
- enablenpc instance_npcname("oct_backattack4");
+ enablenpc(instance_npcname("oct_backattack4"));
end;
}
1@cash,2,2,0 script oct_boss_con FAKE_NPC,{
end;
OnInstanceInit:
- donpcevent instance_npcname("oct_boss_con")+"::OnDisable";
+ donpcevent(instance_npcname("oct_boss_con")+"::OnDisable");
end;
OnDisable:
- disablenpc instance_npcname("oct_boss_con");
+ disablenpc(instance_npcname("oct_boss_con"));
end;
OnEnable:
- enablenpc instance_npcname("oct_boss_con");
- donpcevent instance_npcname("oct_boss_foot")+"::OnEnable";
+ enablenpc(instance_npcname("oct_boss_con"));
+ donpcevent(instance_npcname("oct_boss_foot")+"::OnEnable");
monster(instance_mapname("1@cash"), 199, 188, _("Disgusting Octopus"), MD_GIANT_OCTOPUS, 1, instance_npcname("oct_boss_con")+"::OnMyMobDead");
- initnpctimer;
+ initnpctimer();
end;
OnTimer7000:
callsub OnAnnounce,
@@ -604,21 +610,21 @@ OnTimer49000:
"errrrrrrrrrrrrrrrrrrrrrrrr... Cough! Cough!",
"Disgusting Octopus : Violence cannot be justified in any case.",
"This is my place!!!";
- stopnpctimer;
- initnpctimer;
+ stopnpctimer();
+ initnpctimer();
end;
OnAnnounce:
mapannounce(instance_mapname("1@cash"), sprintf(_$("Disgusting Octopus : %s"), getarg(rand(3))), bc_map, C_YELLOW);
return;
OnMyMobDead:
.@map$ = instance_mapname("1@cash");
- if (mobcount(.@map$,instance_npcname("oct_boss_con")+"::OnMyMobDead") < 1) {
+ if (mobcount(.@map$, instance_npcname("oct_boss_con")+"::OnMyMobDead") < 1) {
mapannounce(.@map$, _("Disgusting Octopus : That's it for the today! Next time, I will play with you badly!"), bc_map, C_YELLOW);
- enablenpc instance_npcname("oct_exit_1");
- enablenpc instance_npcname("oct_exit_2");
- donpcevent instance_npcname("oct_boss_foot")+"::OnDisable";
- stopnpctimer;
- donpcevent instance_npcname("oct_boss_con")+"::OnDisable";
+ enablenpc(instance_npcname("oct_exit_1"));
+ enablenpc(instance_npcname("oct_exit_2"));
+ donpcevent(instance_npcname("oct_boss_foot")+"::OnDisable");
+ stopnpctimer();
+ donpcevent(instance_npcname("oct_boss_con")+"::OnDisable");
end;
}
end;
@@ -627,16 +633,16 @@ OnMyMobDead:
1@cash,4,4,0 script oct_boss_foot FAKE_NPC,{
end;
OnInstanceInit:
- donpcevent instance_npcname("oct_boss_foot")+"::OnDisable";
+ donpcevent(instance_npcname("oct_boss_foot")+"::OnDisable");
end;
OnEnable:
- enablenpc instance_npcname("oct_boss_foot");
- initnpctimer;
+ enablenpc(instance_npcname("oct_boss_foot"));
+ initnpctimer();
end;
OnCall:
.@map$ = instance_mapname("1@cash");
- if (mobcount(.@map$,instance_npcname("oct_boss_foot")+"::OnMyMobDead") < 100) {
- switch(rand(2)) {
+ if (mobcount(.@map$, instance_npcname("oct_boss_foot")+"::OnMyMobDead") < 100) {
+ switch (rand(2)) {
case 0:
mapannounce(.@map$, _("Disgusting Octopus : Do you know how many legs octopus have? It doesn't matter, I have unlimited legs!!"), bc_map, C_YELLOW);
areamonster(.@map$, 192, 181, 206, 195, _("Octopus Leg"), MD_OCTOPUS_LEG, 1, instance_npcname("oct_boss_foot")+"::OnMyMobDead");
@@ -647,16 +653,16 @@ OnCall:
break;
}
}
- initnpctimer;
+ initnpctimer();
end;
OnTimer10000:
- stopnpctimer;
- donpcevent instance_npcname("oct_boss_foot")+"::OnCall";
+ stopnpctimer();
+ donpcevent(instance_npcname("oct_boss_foot")+"::OnCall");
end;
OnDisable:
- stopnpctimer;
- killmonster instance_mapname("1@cash"), instance_npcname("oct_boss_foot")+"::OnMyMobDead"; // Not in official script.
- disablenpc instance_npcname("oct_boss_foot");
+ stopnpctimer();
+ killmonster(instance_mapname("1@cash"), instance_npcname("oct_boss_foot")+"::OnMyMobDead"); // Not in official script.
+ disablenpc(instance_npcname("oct_boss_foot"));
end;
OnMyMobDead:
end;
@@ -665,24 +671,24 @@ OnMyMobDead:
1@cash,198,116,0 script oct_boss_warp WARPNPC,2,2,{
end;
OnInstanceInit:
- disablenpc instance_npcname("oct_boss_warp");
+ disablenpc(instance_npcname("oct_boss_warp"));
end;
OnTouch:
- warp instance_mapname("1@cash"), 210, 172;
+ warp(instance_mapname("1@cash"), 210, 172);
end;
}
1@cash,190,208,0 script oct_exit_1 WARPNPC,2,2,{
end;
OnInstanceInit:
- disablenpc instance_npcname(strnpcinfo(NPC_NAME));
+ disablenpc(instance_npcname(strnpcinfo(NPC_NAME)));
end;
OnTouch:
mes("Do you want to go out from the octopus dungeon?");
- next;
+ next();
if (select("No!", "Yes!") == 2)
- warp "mal_dun01", 153, 233;
- close;
+ warp("mal_dun01", 153, 233);
+ close();
}
1@cash,198,82,0 duplicate(oct_exit_1) oct_exit_2 WARPNPC,2,2
// This is never enabled in the official script.
diff --git a/npc/re/instances/saras_memory.txt b/npc/re/instances/saras_memory.txt
index 38b598d5b..c9a47534b 100644
--- a/npc/re/instances/saras_memory.txt
+++ b/npc/re/instances/saras_memory.txt
@@ -41,113 +41,113 @@
dali,130,107,5 script Leon the Adventurer#Sara 4_M_DST_GRAND,{ // instance CD check only at the Dimensional Device
mes("[Leon the Adventurer]");
if (BaseLevel < 99) {
- mes("You know... this place doesn't seem to be safe for you. Please returnto me once you have achieved LV. 99");
- close;
+ mes("You know... this place doesn't seem to be safe for you. Please return to me once you have achieved LV. 99");
+ close();
}
if (!questprogress(15003)) {
if (!sarainstance) { // doing the instance for the 1st time
mes("Wow! I thought I was the only one who knew about this place.");
- next;
+ next();
mes("[Leon the Adventurer]");
mes("Excuse my rudeness! I am Pon de Leon, the famous adventurer!");
- next;
+ next();
mes("[Leon the Adventurer]");
mes("My friend calls me Leon the Lion! For my tough appearance and attitude. Plus I have quite a bite!");
- next;
+ next();
mes("[Leon the Adventurer]");
mes("You know, this is such a strange location...");
- next;
+ next();
mes("[Leon the Adventurer]");
mes("As you explore it you start to see cracks in space and time. Each one covered by a dimensional device.");
- next;
+ next();
mes("[Leon the Adventurer]");
mes("For example, I think I have caught glimpses of Payon through the dimensional device closest to us.\r"
"But it doesn't seem right. Almost like it is a little bit older then it should be.");
- next;
+ next();
mes("[Leon the Adventurer]");
mes("I want to explore it, but with my old age and my knees I don't seem to be quite up to the task.");
- next;
+ next();
mes("[Leon the Adventurer]");
mes("So, I would like to ask something of you.");
- next;
+ next();
mes("[Leon the Adventurer]");
mes("Please venture through the dimensional device and report to me what you find within.");
- next;
+ next();
mes("[Leon the Adventurer]");
mes("Though, I should warn you. It might be unstable. Make sure you enter the first chance you get.");
- close2;
- setquest 15003;
+ close2();
+ setquest(15003);
end;
} else {
mes("You wish to relive the past again?");
- next;
- if (select("Yes","No") == 2)
- close;
+ next();
+ if (select("Yes", "No") == 2)
+ close();
mes("[Leon the Adventurer]");
mes("Please venture through the dimensional device and report to me what you find within.");
- next;
+ next();
mes("[Leon the Adventurer]");
mes("Though, I should warn you. It might be unstable. Make sure you enter the first chance you get.");
- setquest 15003;
- close;
+ setquest(15003);
+ close();
}
}
if (questprogress(15003) == 1) {
mes("I am not sure you have fully explored the crack in space and time yet. Perhaps you should look a bit further into it.");
- next;
+ next();
if (!sarainstance)
- close;
+ close();
switch (select("Okay", "Give up")) {
case 1:
mes("[Leon the Adventurer]");
mes("I am glad to hear that! Maybe someday you can be as brave as old Leon the Lion!");
- close;
+ close();
case 2:
mes("[Leon the Adventurer]");
mes("Well.. I can't force you. Buf if you ever find your courage pelase talk to me again.");
- erasequest 15003;
- close;
+ erasequest(15003);
+ close();
}
}
if (questprogress(15003) == 2) {
if (!sarainstance) { // 1st time reward and text
mes("What did you see in there?!");
- next;
+ next();
mes("[Leon the Adventurer]");
mes("Hrumpf, Sara Irene?! She's one of the 12 Valkyries. I didn't know her story was that tragic....");
- next;
+ next();
mes("[Leon the Adventurer]");
mes("It seems that you caused a huge misunderstanding between her and her father.");
- next;
+ next();
mes("[Leon the Adventurer]");
- mes("I would not blame yourself for what occured. Or all the blood that was spilled. It seems that the\r"
+ mes("I would not blame yourself for what occured. Or all the blood that was spilled. It seems that the\r"
"events that day were fated to happen no matter who was there.");
- next;
+ next();
mes("[Leon the Adventurer]");
mes("Please don't tell anyone about your time traveling adventure. We can't have anyone thinking you more\r"
"important then old Leon. Plus they wouldn't believe such a story anyways.");
- next;
+ next();
mes("[Leon the Adventurer]");
mes("I think that in about 20 hours after you last entered the rift will stable enough for you to transverse it again.");
sarainstance = 1;
- getexp 770000, 1000000; // reward first time
+ getexp(770000, 1000000); // reward first time
} else { // 2nd time text
mes("What did you see in there?! Was there anything new?");
- next;
+ next();
select("Nothing has changed from the last time.");
mes("[Leon the Adventurer]");
mes("I am sorry to hear that... If...");
- next;
+ next();
mes("[Leon the Adventurer]");
mes("If you want to try again. I think that in about 20 hours after you last entered the rift will be stable enough\r"
"for you to transverse it again.");
- next;
+ next();
mes("[Leon the Adventurer]");
mes("You should rest up. Travelling Through time would make even Leon tired!");
- getexp 550000, 550000; // reward 2nd and following
+ getexp(550000, 550000); // reward 2nd and following
}
- erasequest 15003;
- close;
+ erasequest(15003);
+ close();
}
}
@@ -155,29 +155,29 @@ dali,138,118,0 script Dimensional Device#dimen PORTAL,{
if (!questprogress(15003)) {
mes("[Leon the Adventurer]");
mes("Before you go playing around with that. Why don't you come over here and talk to me?");
- close;
+ close();
}
.@sara_time = questprogress(15002, PLAYTIME);
if (.@sara_time == 1) {
mes("[Leon the Adventurer]");
mes("I think that in about 20 hours after you last entered the rift will stable enough for you to\r"
"transverse it again.");
- close;
+ close();
} else if (.@sara_time == 2) {
- erasequest 15002;
+ erasequest(15002);
end;
} else if (!.@sara_time) {
.@party_id = getcharid(CHAR_ID_PARTY);
.@p_name$ = getpartyname(.@party_id);
- .@md_name$ = "Sara's Memory";
+ .@md_name$ = _("Sara's Memory");
if (!instance_check_party(.@party_id)) {
mes("[Leon the Adventurer]");
mes("Before you enter you need to organize a party! Don't know how? Type /organize PARTYNAMEHERE. You\r"
"can use quotes to put spaces in a party name.");
- close;
+ close();
}
if (getcharid(CHAR_ID_CHAR) == getpartyleader(.@party_id, 2))
- .@menu1$ = "Boot up the dimensional device";
+ .@menu1$ = _("Boot up the dimensional device");
else
.@menu1$ = "";
switch (select(.@menu1$, "Use the dimensional device", "Cancel")) {
@@ -189,30 +189,30 @@ dali,138,118,0 script Dimensional Device#dimen PORTAL,{
mesf("Party Name: %s", .@p_name$);
mesf("Party Leader: %s", strcharinfo(PC_NAME));
mesf("^0000FF%s^000000 - Reservation Failed!", .@md_name$);
- close;
+ close();
}
if (instance_attachmap("1@sara", .@instance) == "") {
mesf("^0000FF%s^000000 - Reservation Failed!", .@md_name$);
instance_destroy(.@instance);
- close;
+ close();
}
instance_set_timeout(3600, 300, .@instance);
instance_init(.@instance);
mes("^FF0000The dimensional boots up cleanly. Use the device to enter the crack in space and time.^000000");
- close;
+ close();
case 2:
if (has_instance("1@sara") == "") {
mesf("The memorial dungeon ^0000FF%s^000000 does not exist.\r"
"The party leader did not generate the dungeon yet.", .@md_name$);
- close;
+ close();
}
mapannounce("dali", sprintf(_$("%s, member of the party %s entered the instance %s."), strcharinfo(PC_NAME), .@p_name$, .@md_name$), bc_map, C_SPRINGGREEN);
- setquest 15002;
- warp "1@sara", 250, 155;
+ setquest(15002);
+ warp("1@sara", 250, 155);
end;
break;
case 3:
- close;
+ close();
}
}
}
@@ -223,469 +223,468 @@ dali,138,118,0 script Dimensional Device#dimen PORTAL,{
mesf("[%s]", strcharinfo(PC_NAME));
mes("Where am I?");
unittalk(getcharid(CHAR_ID_ACCOUNT), _("Where am I?"));
- next;
- cutin "sara_9sara1.bmp", 2;
+ next();
+ cutin("sara_9sara1.bmp", 2);
mes("[A girl]");
mes("Hello! This is the village of Payon. You don't seem to be from around here...");
npctalk(_("A girl : Hello! This is the village of Payon. You don't seem to be from around here..."));
- next;
+ next();
mesf("[%s]", strcharinfo(PC_NAME));
mes("Are you from here? You don't seem to quite match the locals either.");
unittalk(getcharid(CHAR_ID_ACCOUNT), _("Are you from here? You don't seem to quite match to locals either."));
- next;
+ next();
mes("[A girl]");
mes("Yes! I was born here! My name is Sara. Sara Irene!");
npctalk(_("A girl : Yes! I was born here! My name is Sara. Sara Irene!"));
- next;
+ next();
mes("[Sara Irene]");
mes("My father is doyen of this village! I just take after my mother.");
npctalk(_("My father is doyen of this village! I just take after my mother."), instance_npcname("Sara Irene#saratalk"));
- next;
+ next();
mesf("[%s]", strcharinfo(PC_NAME));
mes("Oh! I am sorry! Uh... Why are you standing out here all alone?");
unittalk(getcharid(CHAR_ID_ACCOUNT), _("Oh! I am sorry! Uh... Why are you standing out here all alone?"));
- next;
+ next();
mes("[Sara Irene]");
mes("I am waiting for my father. He said that he will be here soon.");
npctalk(_("I am waiting for my father. He said that he will be here soon."), instance_npcname("Sara Irene#saratalk"));
- next;
+ next();
mes("^FF0000An older man exits the house. Sara's face brightens at the sight of him.^000000");
- donpcevent instance_npcname("Doyen Irene#sarains")+"::OnEnable";
- next;
+ donpcevent(instance_npcname("Doyen Irene#sarains")+"::OnEnable");
+ next();
mes("[Sara Irene]");
mes("Hi daddy!");
npctalk(_("Hi daddy!"), instance_npcname("Sara Irene#saratalk"));
- next;
- cutin "sara_elder_irine1.bmp", 2;
+ next();
+ cutin("sara_elder_irine1.bmp", 2);
mes("[Doyen Irene]");
mes("Sweetheart you look so happy.");
npctalk(_("Sweetheart you look so happy."), instance_npcname("Doyen Irene#sarains"));
- next;
- cutin "sara_9sara1.bmp", 2;
+ next();
+ cutin("sara_9sara1.bmp", 2);
mes("[Sara Irene]");
mes("You said you would come back soon! I waited for you and you lied!");
npctalk(_("You said you would come back soon! I waited for you and you lied!"), instance_npcname("Sara Irene#saratalk"));
- next;
- cutin "sara_elder_irine1.bmp", 2;
+ next();
+ cutin("sara_elder_irine1.bmp", 2);
mes("[Doyen Irene]");
mes("Sweetheart, I am sorry I made you wait so long. The meeting with the village elders took longer than expected.");
npctalk(_("Sweetheart, I am sorry I made you wait so long. The meeting with the village elders took longer than expected."), instance_npcname("Doyen Irene#sarains"));
- next;
- cutin "sara_9sara1.bmp", 2;
+ next();
+ cutin("sara_9sara1.bmp", 2);
mes("[Sara Irene]");
mes("I hate those old fogeys.");
npctalk(_("I hate those old fogeys."), instance_npcname("Sara Irene#saratalk"));
- next;
- cutin "sara_elder_irine1.bmp", 2;
+ next();
+ cutin("sara_elder_irine1.bmp", 2);
mes("[Doyen Irene]");
mes("Don't say that sweetheart... Who is this with you?");
npctalk(_("Don't say that sweetheart... Who is this with you?"), instance_npcname("Doyen Irene#sarains"));
- next;
+ next();
mes("^FF0000Doyen Irene stares at you with fire in this eyes.^000000");
dispbottom(_("Doyen Irene stares at you with fire in this eyes."));
- next;
+ next();
mes("^FF0000Sara starts humming and singing softly to herself. She picks some wild flowers near by and presents\r"
"them to the Doyen.^000000");
dispbottom(_("Sara starts humming and singing softly to herself. She picks some wild flowers near by and presents them to the Doyen."));
- next;
- cutin "sara_9sara1.bmp", 2;
+ next();
+ cutin("sara_9sara1.bmp", 2);
mes("[Sara Irene]");
mes("Here you go daddy!");
npctalk(_("Here you go daddy!"), instance_npcname("Sara Irene#saratalk"));
- next;
- cutin "sara_elder_irine1.bmp", 2;
+ next();
+ cutin("sara_elder_irine1.bmp", 2);
mes("[Doyen Irene]");
mes("Oh Sara, should I have them?");
npctalk(_("Oh Sara, should I have them?"), instance_npcname("Doyen Irene#sarains"));
- next;
- cutin "sara_9sara1.bmp", 2;
+ next();
+ cutin("sara_9sara1.bmp", 2);
mes("[Sara Irene]");
mes("Of course silly daddy!");
npctalk(_("Of course silly daddy!"), instance_npcname("Sara Irene#saratalk"));
- next;
+ next();
mes("^FF0000After being given the flowers the Doyen's mood seems to greatly improve.^000000");
dispbottom(_("After being given the flowers the Doyen's mood seems to greatly improve."));
- next;
- cutin "sara_elder_irine1.bmp", 2;
+ next();
+ cutin("sara_elder_irine1.bmp", 2);
mes("[Doyen Irene]");
mes("Alright my princess, where should we go now?");
npctalk(_("Alright my princess, where should we go now?"), instance_npcname("Doyen Irene#sarains"));
- next;
- cutin "sara_9sara1.bmp", 2;
+ next();
+ cutin("sara_9sara1.bmp", 2);
mes("[Sara Irene]");
mes("Oh daddy! Let's go to the top of that hill over there!");
npctalk(_("Oh daddy! Let's go to the top of that hill over there!"), instance_npcname("Sara Irene#saratalk"));
- next;
- cutin "sara_elder_irine1.bmp", 2;
+ next();
+ cutin("sara_elder_irine1.bmp", 2);
mes("[Doyen Irene]");
mes("Hah! Hold onto me tight!");
npctalk(_("Hah! Hold onto me tight!"), instance_npcname("Doyen Irene#sarains"));
- next;
- cutin "sara_elder_irine1.bmp", 255;
+ next();
+ cutin("sara_elder_irine1.bmp", 255);
mes("^FF0000As they wander off you hear strange voices from around the corner...^000000");
- donpcevent instance_npcname("Doyen Irene#sarains")+"::OnDisable";
- donpcevent instance_npcname("A girl#sarains")+"::OnDisable";
- dispbottom(_("As they wander off you hear strange voices from around the corner...")),"";
- disablenpc instance_npcname("Sara Irene#saratalk");
- next;
+ donpcevent(instance_npcname("Doyen Irene#sarains")+"::OnDisable");
+ donpcevent(instance_npcname("A girl#sarains")+"::OnDisable");
+ dispbottom(_("As they wander off you hear strange voices from around the corner..."), "");
+ disablenpc(instance_npcname("Sara Irene#saratalk"));
+ next();
mes("[Strange Old Man A]");
mes("I can feel Sara's power growing. We cannot just stand by and let her achieve her full potential!");
npctalk(_("I can feel Sara's power growing. We cannot just stand by and let her achieve her full potential!"), instance_npcname("Strange Old Man A#stalk"));
- next;
+ next();
mes("[Strange Old Man B]");
mes("She was born under a bad sign and her mother isn't even one of us!");
npctalk(_("She was born under a bad sign and her mother isn't even one of us!"), instance_npcname("Strange Old Man B#stalk"));
- next;
+ next();
mes("[Strange Old Man B]");
mes("Someday she will cause blood to flow in our streets.");
npctalk(_("Someday she will cause blood to flow in our streets."), instance_npcname("Strange Old Man B#stalk"));
- next;
+ next();
mes("[Strange Old Man A]");
mes("We have to do something before the Holy creatures select her. I asked HIM to take care of it.");
npctalk(_("We have to do something before the Holy creatures select her. I asked HIM to take care of it."), instance_npcname("Strange Old Man A#stalk"));
- next;
+ next();
mes("[Strange Old Man B]");
mes("We will see... I look forward to hearing the bad news that has befallen her...");
npctalk(_("We will see... I look forward to hearing the bad news that has befallen her..."), instance_npcname("Strange Old Man B#stalk"));
- next;
+ next();
mes("^FF0000The old man wander off it seems Sara might be in danger. We have to do something!^000000");
dispbottom(_("The old man wander off it seems Sara might be in danger. We have to do something!"));
- close2;
- donpcevent instance_npcname("Strange Old Man A#stalk")+"::OnDisable";
- donpcevent instance_npcname("Strange Old Man B#stalk")+"::OnDisable";
- donpcevent instance_npcname("Sara Irene#sarains1")+"::OnEnable";
- donpcevent instance_npcname("#sarawarp1")+"::OnEnable";
- viewpoint 1, 240, 145, 1, C_GREEN;
- specialeffect EF_BASH;
+ close2();
+ donpcevent(instance_npcname("Strange Old Man A#stalk")+"::OnDisable");
+ donpcevent(instance_npcname("Strange Old Man B#stalk")+"::OnDisable");
+ donpcevent(instance_npcname("Sara Irene#sarains1")+"::OnEnable");
+ donpcevent(instance_npcname("#sarawarp1")+"::OnEnable");
+ viewpoint(1, 240, 145, 1, C_GREEN);
+ specialeffect(EF_BASH);
end;
OnInstanceInit:
- donpcevent instance_npcname("A girl#sarains")+"::OnEnable";
+ donpcevent(instance_npcname("A girl#sarains")+"::OnEnable");
end;
OnEnable:
- hideoffnpc instance_npcname("A girl#sarains");
+ hideoffnpc(instance_npcname("A girl#sarains"));
end;
OnDisable:
- hideonnpc instance_npcname("A girl#sarains");
+ hideonnpc(instance_npcname("A girl#sarains"));
end;
}
1@sara,268,158,3 script Doyen Irene#sarains 4_M_CHIEF_IRIN,{
end;
OnInstanceInit:
- donpcevent instance_npcname("Doyen Irene#sarains")+"::OnDisable";
+ donpcevent(instance_npcname("Doyen Irene#sarains")+"::OnDisable");
end;
OnEnable:
- hideoffnpc instance_npcname("Doyen Irene#sarains");
+ hideoffnpc(instance_npcname("Doyen Irene#sarains"));
end;
OnDisable:
- hideonnpc instance_npcname("Doyen Irene#sarains");
+ hideonnpc(instance_npcname("Doyen Irene#sarains"));
end;
}
1@sara,260,156,0 script Sara Irene#saratalk HIDDEN_NPC,{
end;
OnInstanceInit:
- donpcevent instance_npcname("Sara Irene#saratalk")+"::OnDisable";
+ donpcevent(instance_npcname("Sara Irene#saratalk")+"::OnDisable");
end;
OnEnable:
- hideoffnpc instance_npcname("Sara Irene#saratalk");
+ hideoffnpc(instance_npcname("Sara Irene#saratalk"));
end;
OnDisable:
- hideonnpc instance_npcname("Sara Irene#saratalk");
+ hideonnpc(instance_npcname("Sara Irene#saratalk"));
end;
}
-
1@sara,260,156,0 script Strange Old Man A#stalk FAKE_NPC,{
end;
OnInstanceInit:
- donpcevent instance_npcname("Strange Old Man A#stalk")+"::OnDisable";
+ donpcevent(instance_npcname("Strange Old Man A#stalk")+"::OnDisable");
end;
OnEnable:
- hideoffnpc instance_npcname("Strange Old Man A#stalk");
+ hideoffnpc(instance_npcname("Strange Old Man A#stalk"));
end;
OnDisable:
- hideonnpc instance_npcname("Strange Old Man A#stalk");
+ hideonnpc(instance_npcname("Strange Old Man A#stalk"));
end;
}
1@sara,260,156,0 script Strange Old Man B#stalk FAKE_NPC,{
end;
OnInstanceInit:
- donpcevent instance_npcname("Strange Old Man B#stalk")+"::OnDisable";
+ donpcevent(instance_npcname("Strange Old Man B#stalk")+"::OnDisable");
end;
OnEnable:
- hideoffnpc instance_npcname("Strange Old Man B#stalk");
+ hideoffnpc(instance_npcname("Strange Old Man B#stalk"));
end;
OnDisable:
- hideonnpc instance_npcname("Strange Old Man B#stalk");
+ hideonnpc(instance_npcname("Strange Old Man B#stalk"));
end;
}
1@sara,240,145,0 script #sarawarp1 WARPNPC,1,2,{
end;
OnInstanceInit:
- donpcevent instance_npcname("#sarawarp1")+"::OnDisable";
+ donpcevent(instance_npcname("#sarawarp1")+"::OnDisable");
end;
OnDisable:
- disablenpc instance_npcname("#sarawarp1");
+ disablenpc(instance_npcname("#sarawarp1"));
end;
OnEnable:
- enablenpc instance_npcname("#sarawarp1");
+ enablenpc(instance_npcname("#sarawarp1"));
end;
OnTouch:
.@map$ = instance_mapname("1@sara");
- warp .@map$, 94, 320;
+ warp(.@map$, 94, 320);
end;
}
1@sara,209,250,0 script #sarawarp2 WARPNPC,1,2,{
end;
OnInstanceInit:
- donpcevent instance_npcname("#sarawarp2")+"::OnDisable";
+ donpcevent(instance_npcname("#sarawarp2")+"::OnDisable");
end;
OnDisable:
- disablenpc instance_npcname("#sarawarp2");
+ disablenpc(instance_npcname("#sarawarp2"));
end;
OnEnable:
- enablenpc instance_npcname("#sarawarp2");
+ enablenpc(instance_npcname("#sarawarp2"));
end;
OnTouch:
.@map$ = instance_mapname("1@sara");
- warp .@map$, 230, 316;
+ warp(.@map$, 230, 316);
end;
}
1@sara,226,190,0 script #sarawarp3 WARPNPC,1,2,{
end;
OnInstanceInit:
- donpcevent instance_npcname("#sarawarp3")+"::OnDisable";
+ donpcevent(instance_npcname("#sarawarp3")+"::OnDisable");
end;
OnDisable:
- disablenpc instance_npcname("#sarawarp3");
+ disablenpc(instance_npcname("#sarawarp3"));
end;
OnEnable:
- enablenpc instance_npcname("#sarawarp3");
+ enablenpc(instance_npcname("#sarawarp3"));
end;
OnTouch:
.@map$ = instance_mapname("1@sara");
- warp .@map$, 263, 94;
+ warp(.@map$, 263, 94);
end;
}
1@sara,166,67,0 script #sarawarp4 WARPNPC,1,2,{
end;
OnInstanceInit:
- donpcevent instance_npcname("#sarawarp4")+"::OnDisable";
+ donpcevent(instance_npcname("#sarawarp4")+"::OnDisable");
end;
OnDisable:
- disablenpc instance_npcname("#sarawarp4");
+ disablenpc(instance_npcname("#sarawarp4"));
end;
OnEnable:
- enablenpc instance_npcname("#sarawarp4");
+ enablenpc(instance_npcname("#sarawarp4"));
end;
OnTouch:
.@map$ = instance_mapname("1@sara");
- warp .@map$, 164, 81;
+ warp(.@map$, 164, 81);
end;
}
1@sara,155,180,0 script #sarawarp5 WARPNPC,1,2,{
end;
OnInstanceInit:
- donpcevent instance_npcname("#sarawarp5")+"::OnDisable";
+ donpcevent(instance_npcname("#sarawarp5")+"::OnDisable");
end;
OnDisable:
- disablenpc instance_npcname("#sarawarp5");
+ disablenpc(instance_npcname("#sarawarp5"));
end;
OnEnable:
- enablenpc instance_npcname("#sarawarp5");
+ enablenpc(instance_npcname("#sarawarp5"));
end;
OnTouch:
.@map$ = instance_mapname("1@sara");
- warp .@map$, 155, 196;
+ warp(.@map$, 155, 196);
end;
}
1@sara,88,188,0 script #sarawarp6 WARPNPC,1,2,{
end;
OnInstanceInit:
- donpcevent instance_npcname("#sarawarp6")+"::OnDisable";
+ donpcevent(instance_npcname("#sarawarp6")+"::OnDisable");
end;
OnDisable:
- disablenpc instance_npcname("#sarawarp6");
+ disablenpc(instance_npcname("#sarawarp6"));
end;
OnEnable:
- enablenpc instance_npcname("#sarawarp6");
+ enablenpc(instance_npcname("#sarawarp6"));
end;
OnTouch:
.@map$ = instance_mapname("1@sara");
- warp .@map$, 89, 175;
- if (getcharid(CHAR_ID_CHAR) == getpartyleader(getcharid(CHAR_ID_PARTY),2))
- viewpoint 1, 39, 142, 1, C_GREEN;
+ warp(.@map$, 89, 175);
+ if (getcharid(CHAR_ID_CHAR) == getpartyleader(getcharid(CHAR_ID_PARTY), 2))
+ viewpoint(1, 39, 142, 1, C_GREEN);
end;
}
1@sara,19,143,0 script #sarawarp7 WARPNPC,1,2,{
end;
OnInstanceInit:
- donpcevent instance_npcname("#sarawarp7")+"::OnDisable";
+ donpcevent(instance_npcname("#sarawarp7")+"::OnDisable");
end;
OnDisable:
- disablenpc instance_npcname("#sarawarp7");
+ disablenpc(instance_npcname("#sarawarp7"));
end;
OnEnable:
- enablenpc instance_npcname("#sarawarp7");
+ enablenpc(instance_npcname("#sarawarp7"));
end;
OnTouch:
- completequest 15003;
- warp "dali", 134, 111;
+ completequest(15003);
+ warp("dali", 134, 111);
end;
}
1@sara,107,325,5 script Sara Irene#sarains1 4_F_SARAH_BABY,{
if (getcharid(CHAR_ID_CHAR) != getpartyleader(getcharid(CHAR_ID_PARTY), 2))
end;
- cutin "sara_9sara1.bmp", 2;
+ cutin("sara_9sara1.bmp", 2);
mes("[Sara Irene]");
mes("Oh! Hello again! I remember you, what's up?");
npctalk(_("Oh! Hello again! I remember you, what's up?"));
- next;
+ next();
mes("[Sara Irene]");
mes("I am here to give flowers to my mommy!");
npctalk(_("I am here to give flowers to my mommy!"));
- next;
+ next();
mes("^FF0000Sara leaps forward to open the door, flowers at the ready.^000000");
dispbottom(_("Sara leaps forward to open the door, flowers at the ready."));
- next;
+ next();
mes("[Sara Irene]");
mes("Mom! Dad! Look what I found!");
npctalk(_("Mom! Dad! Look what I found!"));
- next;
- cutin "sara_9sara1.bmp", 255;
- cutin "sara_momdie.bmp", 4;
+ next();
+ cutin("sara_9sara1.bmp", 255);
+ cutin("sara_momdie.bmp", 4);
mes("^FF0000The door opens to reveal a woman laying dead on the floor and the\r"
"Doyen standing over the woman with a bloody sword.^000000");
dispbottom(_("The door opens to reveal a woman laying dead on the floor and the Doyen standing over the woman with a bloody sword."));
- next;
+ next();
mes("[Sara Irene]");
mes("...");
npctalk("...");
- next;
+ next();
mes("[Sara Irene]");
mes("...");
npctalk("...");
- next;
+ next();
mes("[Sara Irene]");
mes("...");
npctalk("...");
mapannounce(instance_mapname("1@sara"), _("[Sara's Mother] : Sara...Ru-..away..."), bc_map, C_YELLOW);
- next;
+ next();
mes("[Sara Irene]");
mes("...");
npctalk("...");
- next;
+ next();
mes("^FF0000A gem rolls from the womans hand and comes to a rest in front of\r"
"Sara. Unconsciously Sara reaches down and picks up the gem.^000000");
dispbottom(_("A gem rolls from the womans hand and comes to a rest in front of Sara. Unconsciously Sara reaches down and picks up the gem."));
- next;
+ next();
mes("^FF0000The Doyen turns around and notices Sara.^000000");
dispbottom(_("The Doyen turns around and notices Sara."));
- next;
- cutin "sara_momdie.bmp", 255;
- cutin "sara_elder_irine4.bmp", 2;
+ next();
+ cutin("sara_momdie.bmp", 255);
+ cutin("sara_elder_irine4.bmp", 2);
mes("[Doyen Irene]");
mes("Ahh Sara! I was just looking for you...");
npctalk(_("Ahh Sara! I was just looking for you..."), instance_npcname("Doyen Irene#sarains1"));
- next;
- cutin "sara_9sara2.bmp", 2;
+ next();
+ cutin("sara_9sara2.bmp", 2);
mes("[Sara Irene]");
mes("...");
npctalk("...");
- next;
+ next();
select("Escape with Sara.");
mes("[Sara Irene]");
mes("...");
npctalk("...");
- next;
- cutin "sara_elder_irine3.bmp", 2;
+ next();
+ cutin("sara_elder_irine3.bmp", 2);
mes("[Doyen Irene]");
mes("Guards! GUARDS! There is a murderer here! Catch him!");
npctalk(_("Guards! GUARDS! There is a murderer here! Catch him!"), instance_npcname("Doyen Irene#sarains1"));
- next;
+ next();
mes("^FF0000The sound of many pairs of boots can be heard running outside!^000000");
dispbottom(_("The sound of many pairs of boots can be heard running outside!"));
- next;
- cutin "sara_9sara3.bmp", 2;
+ next();
+ cutin("sara_9sara3.bmp", 2);
mes("[Sara Irene]");
mes("Mommy no!!!!!!!!!!!!!!!");
npctalk(_("Mommy no!!!!!!!!!!!!!!!"));
- next;
- cutin "sara_9sara3.bmp", 255;
+ next();
+ cutin("sara_9sara3.bmp", 255);
mes("^FF0000Sara runs aways and the sound of the guards is getting closer...^000000");
dispbottom(_("Sara runs aways and the sound of the guards is getting closer..."));
- close2;
- donpcevent instance_npcname("Sara Irene#sarains1")+"::OnDisable";
- donpcevent instance_npcname("Sara Irene#sarains4")+"::OnEnable";
- donpcevent instance_npcname("Sara Irene#sarains5")+"::OnEnable";
- donpcevent instance_npcname("Sara Irene#sarains6")+"::OnEnable";
- donpcevent instance_npcname("Sara Irene#sarains7")+"::OnEnable";
- donpcevent instance_npcname("Sara Irene#sarains8")+"::OnEnable";
- donpcevent instance_npcname("Sara Irene#sarains9")+"::OnEnable";
- donpcevent instance_npcname("Sara Irene#sarains10")+"::OnEnable";
- donpcevent instance_npcname("Sara Irene#sarains11")+"::OnEnable";
- donpcevent instance_npcname("Sara Irene#sarains12")+"::OnEnable";
- donpcevent instance_npcname("Sara Irene#sarains13")+"::OnEnable";
- donpcevent instance_npcname("Sara Irene#sarains14")+"::OnEnable";
- donpcevent instance_npcname("Sara Irene#sarains15")+"::OnEnable";
- donpcevent instance_npcname("Sara Irene#sarains16")+"::OnEnable";
- donpcevent instance_npcname("Sara Irene#sarains17")+"::OnEnable";
- donpcevent instance_npcname("Sara Irene#sarains18")+"::OnEnable";
- donpcevent instance_npcname("Sara Irene#sarains19")+"::OnEnable";
- donpcevent instance_npcname("Sara Irene#sarains20")+"::OnEnable";
- donpcevent instance_npcname("Sara Irene#sarains21")+"::OnEnable";
- donpcevent instance_npcname("Sara Irene#sarains22")+"::OnEnable";
- donpcevent instance_npcname("Sara Irene#sarains23")+"::OnEnable";
- donpcevent instance_npcname("#controlsara")+"::OnEnable";
+ close2();
+ donpcevent(instance_npcname("Sara Irene#sarains1")+"::OnDisable");
+ donpcevent(instance_npcname("Sara Irene#sarains4")+"::OnEnable");
+ donpcevent(instance_npcname("Sara Irene#sarains5")+"::OnEnable");
+ donpcevent(instance_npcname("Sara Irene#sarains6")+"::OnEnable");
+ donpcevent(instance_npcname("Sara Irene#sarains7")+"::OnEnable");
+ donpcevent(instance_npcname("Sara Irene#sarains8")+"::OnEnable");
+ donpcevent(instance_npcname("Sara Irene#sarains9")+"::OnEnable");
+ donpcevent(instance_npcname("Sara Irene#sarains10")+"::OnEnable");
+ donpcevent(instance_npcname("Sara Irene#sarains11")+"::OnEnable");
+ donpcevent(instance_npcname("Sara Irene#sarains12")+"::OnEnable");
+ donpcevent(instance_npcname("Sara Irene#sarains13")+"::OnEnable");
+ donpcevent(instance_npcname("Sara Irene#sarains14")+"::OnEnable");
+ donpcevent(instance_npcname("Sara Irene#sarains15")+"::OnEnable");
+ donpcevent(instance_npcname("Sara Irene#sarains16")+"::OnEnable");
+ donpcevent(instance_npcname("Sara Irene#sarains17")+"::OnEnable");
+ donpcevent(instance_npcname("Sara Irene#sarains18")+"::OnEnable");
+ donpcevent(instance_npcname("Sara Irene#sarains19")+"::OnEnable");
+ donpcevent(instance_npcname("Sara Irene#sarains20")+"::OnEnable");
+ donpcevent(instance_npcname("Sara Irene#sarains21")+"::OnEnable");
+ donpcevent(instance_npcname("Sara Irene#sarains22")+"::OnEnable");
+ donpcevent(instance_npcname("Sara Irene#sarains23")+"::OnEnable");
+ donpcevent(instance_npcname("#controlsara")+"::OnEnable");
end;
OnInstanceInit:
- donpcevent instance_npcname("Sara Irene#sarains1")+"::OnDisable";
+ donpcevent(instance_npcname("Sara Irene#sarains1")+"::OnDisable");
end;
OnEnable:
- hideoffnpc instance_npcname("Sara Irene#sarains1");
+ hideoffnpc(instance_npcname("Sara Irene#sarains1"));
end;
OnDisable:
- hideonnpc instance_npcname("Sara Irene#sarains1");
+ hideonnpc(instance_npcname("Sara Irene#sarains1"));
end;
}
1@sara,107,325,0 script Doyen Irene#sarains1 FAKE_NPC,{
end;
OnInstanceInit:
- donpcevent instance_npcname("Doyen Irene#sarains1")+"::OnDisable";
+ donpcevent(instance_npcname("Doyen Irene#sarains1")+"::OnDisable");
end;
OnEnable:
- hideoffnpc instance_npcname("Doyen Irene#sarains1");
+ hideoffnpc(instance_npcname("Doyen Irene#sarains1"));
end;
OnDisable:
- hideonnpc instance_npcname("Doyen Irene#sarains1");
+ hideonnpc(instance_npcname("Doyen Irene#sarains1"));
end;
}
1@sara,107,327,0 script #controlsara CLEAR_NPC,{
end;
OnInstanceInit:
- donpcevent instance_npcname("#controlsara")+"::OnDisable";
+ donpcevent(instance_npcname("#controlsara")+"::OnDisable");
end;
OnEnable:
- enablenpc instance_npcname("#controlsara");
- hideonnpc instance_npcname("#controlsara");
- initnpctimer;
+ enablenpc(instance_npcname("#controlsara"));
+ hideonnpc(instance_npcname("#controlsara"));
+ initnpctimer();
end;
OnDisable:
- disablenpc instance_npcname("#controlsara");
+ disablenpc(instance_npcname("#controlsara"));
end;
OnTimer2000:
mapannounce(instance_mapname("1@sara"), _("<SYSTEM> The guards must be defeated to gain access to the next area."), bc_map, C_YELLOW);
@@ -694,12 +693,12 @@ OnTimer4000:
mapannounce(instance_mapname("1@sara"), _("<SYSTEM> The guards have formed groups of their own to fight you!"), bc_map, C_YELLOW);
end;
OnTimer5000:
- donpcevent instance_npcname("#controlsara")+"::OnRespawn";
- stopnpctimer;
+ donpcevent(instance_npcname("#controlsara")+"::OnRespawn");
+ stopnpctimer();
end;
OnRespawn:
.@map$ = instance_mapname("1@sara");
-
+
monster(.@map$, .@x, .@y, _("Maggot"), MG_ARCLOUSE, .@mobs, instance_npcname(strnpcinfo(NPC_NAME))+"::OnMyMobDead");
monster(.@map$, 107, 325, _("Payon Town Guard"), PAYONSOLDIER, 1, instance_npcname(strnpcinfo(NPC_NAME))+"::OnMyMobDead");
monster(.@map$, 115, 325, _("Payon Town Guard"), PAYONSOLDIER, 1, instance_npcname(strnpcinfo(NPC_NAME))+"::OnMyMobDead");
@@ -773,11 +772,11 @@ OnMyMobDead:
.@a_mob_num = mobcount(.@map$, instance_npcname(strnpcinfo(NPC_NAME))+"::OnMyMobDead");
.@mob_dead_num = .@callnum - .@a_mob_num;
if (.@mob_dead_num > 57) {
- viewpoint 1, 209, 250, 1, C_GREEN;
+ viewpoint(1, 209, 250, 1, C_GREEN);
mapannounce(instance_mapname("1@sara"), _("<SYSTEM> Sara ran away again! You think she went in the 2 O'clock direction!"), bc_map, C_YELLOW);
- donpcevent instance_npcname("#controlsara")+"::OnDisable";
- donpcevent instance_npcname("#controlsara1")+"::OnEnable";
- donpcevent instance_npcname("#sarawarp2")+"::OnEnable";
+ donpcevent(instance_npcname("#controlsara")+"::OnDisable");
+ donpcevent(instance_npcname("#controlsara1")+"::OnEnable");
+ donpcevent(instance_npcname("#sarawarp2")+"::OnEnable");
}
end;
}
@@ -785,15 +784,15 @@ OnMyMobDead:
1@sara,230,316,0 script #controlsara1 CLEAR_NPC,{
end;
OnInstanceInit:
- donpcevent instance_npcname("#controlsara1")+"::OnDisable";
+ donpcevent(instance_npcname("#controlsara1")+"::OnDisable");
end;
OnEnable:
- enablenpc instance_npcname("#controlsara1");
- hideonnpc instance_npcname("#controlsara1");
- donpcevent instance_npcname("#controlsara1")+"::OnRespawn";
+ enablenpc(instance_npcname("#controlsara1"));
+ hideonnpc(instance_npcname("#controlsara1"));
+ donpcevent(instance_npcname("#controlsara1")+"::OnRespawn");
end;
OnDisable:
- disablenpc instance_npcname("#controlsara1");
+ disablenpc(instance_npcname("#controlsara1"));
end;
OnRespawn:
.@map$ = instance_mapname("1@sara");
@@ -825,11 +824,11 @@ OnMyMobDead:
.@b_mob_num = mobcount(.@map$, instance_npcname(strnpcinfo(NPC_NAME))+"::OnMyMobDead");
.@mob_dead_num = .@callnum - .@b_mob_num;
if (.@mob_dead_num > 15) {
- viewpoint 1, 226, 190, 1, C_GREEN;
+ viewpoint(1, 226, 190, 1, C_GREEN);
mapannounce(instance_mapname("1@sara"), _("<SYSTEM> Sara ran away yet again! You think she went in the 5 O'clock direction!"), bc_map, C_YELLOW);
- donpcevent instance_npcname("#controlsara1")+"::OnDisable";
- donpcevent instance_npcname("#controlsara2")+"::OnEnable";
- donpcevent instance_npcname("#sarawarp3")+"::OnEnable";
+ donpcevent(instance_npcname("#controlsara1")+"::OnDisable");
+ donpcevent(instance_npcname("#controlsara2")+"::OnEnable");
+ donpcevent(instance_npcname("#sarawarp3")+"::OnEnable");
}
end;
}
@@ -837,15 +836,15 @@ OnMyMobDead:
1@sara,263,94,0 script #controlsara2 CLEAR_NPC,{
end;
OnInstanceInit:
- donpcevent instance_npcname("#controlsara2")+"::OnDisable";
+ donpcevent(instance_npcname("#controlsara2")+"::OnDisable");
end;
OnEnable:
- enablenpc instance_npcname("#controlsara2");
- hideonnpc instance_npcname("#controlsara2");
- donpcevent instance_npcname("#controlsara2")+"::OnRespawn";
+ enablenpc(instance_npcname("#controlsara2"));
+ hideonnpc(instance_npcname("#controlsara2"));
+ donpcevent(instance_npcname("#controlsara2")+"::OnRespawn");
end;
OnDisable:
- disablenpc instance_npcname("#controlsara2");
+ disablenpc(instance_npcname("#controlsara2"));
end;
OnRespawn:
.@map$ = instance_mapname("1@sara");
@@ -909,11 +908,11 @@ OnMyMobDead:
.@c_mob_num = mobcount(.@map$, instance_npcname(strnpcinfo(NPC_NAME))+"::OnMyMobDead");
.@mob_dead_num = .@callnum - .@c_mob_num;
if (.@mob_dead_num > 44) {
- viewpoint 1, 166, 67, 1, C_GREEN;
+ viewpoint(1, 166, 67, 1, C_GREEN);
mapannounce(instance_mapname("1@sara"), _("<SYSTEM> Sara ran away yet again! *sigh* You think she went in the 6 O'clock direction!"), bc_map, C_YELLOW);
- donpcevent instance_npcname("#controlsara2")+"::OnDisable";
- donpcevent instance_npcname("#controlsara3")+"::OnEnable";
- donpcevent instance_npcname("#sarawarp4")+"::OnEnable";
+ donpcevent(instance_npcname("#controlsara2")+"::OnDisable");
+ donpcevent(instance_npcname("#controlsara3")+"::OnEnable");
+ donpcevent(instance_npcname("#sarawarp4")+"::OnEnable");
}
end;
}
@@ -921,15 +920,15 @@ OnMyMobDead:
1@sara,164,81,0 script #controlsara3 CLEAR_NPC,{
end;
OnInstanceInit:
- donpcevent instance_npcname("#controlsara3")+"::OnDisable";
+ donpcevent(instance_npcname("#controlsara3")+"::OnDisable");
end;
OnEnable:
- enablenpc instance_npcname("#controlsara3");
- hideonnpc instance_npcname("#controlsara3");
- donpcevent instance_npcname("#controlsara3")+"::OnRespawn";
+ enablenpc(instance_npcname("#controlsara3"));
+ hideonnpc(instance_npcname("#controlsara3"));
+ donpcevent(instance_npcname("#controlsara3")+"::OnRespawn");
end;
OnDisable:
- disablenpc instance_npcname("#controlsara3");
+ disablenpc(instance_npcname("#controlsara3"));
end;
OnRespawn:
.@map$ = instance_mapname("1@sara");
@@ -975,7 +974,7 @@ OnRespawn:
monster(.@map$, 155, 180, _("Payon Town Guard"), PAYONSOLDIER2, 1, instance_npcname(strnpcinfo(NPC_NAME))+"::OnMyMobDead");
monster(.@map$, 157, 180, _("Payon Town Guard"), PAYONSOLDIER2, 1, instance_npcname(strnpcinfo(NPC_NAME))+"::OnMyMobDead");
monster(.@map$, 159, 180, _("Payon Town Guard"), PAYONSOLDIER2, 1, instance_npcname(strnpcinfo(NPC_NAME))+"::OnMyMobDead");
-
+
monster(.@map$, 173, 139, _("Payon Town Guard"), PAYONSOLDIER, 1, instance_npcname(strnpcinfo(NPC_NAME))+"::OnMyMobDead");
monster(.@map$, 170, 139, _("Payon Town Guard"), PAYONSOLDIER, 1, instance_npcname(strnpcinfo(NPC_NAME))+"::OnMyMobDead");
monster(.@map$, 167, 139, _("Payon Town Guard"), PAYONSOLDIER, 1, instance_npcname(strnpcinfo(NPC_NAME))+"::OnMyMobDead");
@@ -992,15 +991,15 @@ OnMyMobDead:
.@d_mob_num = mobcount(.@map$, instance_npcname(strnpcinfo(NPC_NAME))+"::OnMyMobDead");
.@mob_dead_num = .@callnum - .@d_mob_num;
if (.@mob_dead_num > 42) {
- viewpoint 1, 155, 180, 1, C_GREEN;
+ viewpoint(1, 155, 180, 1, C_GREEN);
mapannounce(instance_mapname("1@sara"), _("<SYSTEM> Sara ran away yet again! You think she went in the 12 O'clock direction!"), bc_map, C_YELLOW);
- for (.@i=4; .@i<=23; .@i++) {
- donpcevent instance_npcname("Sara Irene#sarains" + .@i)+"::OnEnable";
- donpcevent instance_npcname("Sara Irene#sarains" + .@i)+"::OnDisable";
+ for (.@i = 4; .@i <= 23; .@i++) {
+ donpcevent(instance_npcname("Sara Irene#sarains" + .@i)+"::OnEnable");
+ donpcevent(instance_npcname("Sara Irene#sarains" + .@i)+"::OnDisable");
}
- donpcevent instance_npcname("#controlsara3")+"::OnDisable";
- donpcevent instance_npcname("#sarawarp5")+"::OnEnable";
- donpcevent instance_npcname("Sara Irene#sarains2")+"::OnEnable";
+ donpcevent(instance_npcname("#controlsara3")+"::OnDisable");
+ donpcevent(instance_npcname("#sarawarp5")+"::OnEnable");
+ donpcevent(instance_npcname("Sara Irene#sarains2")+"::OnEnable");
}
end;
}
@@ -1008,84 +1007,84 @@ OnMyMobDead:
1@sara,152,233,5 script Sara Irene#sarains2 4_F_SARAH_BABY,{
if (getcharid(CHAR_ID_CHAR) != getpartyleader(getcharid(CHAR_ID_PARTY), 2))
end;
- cutin "sara_9sara2.bmp", 2;
+ cutin("sara_9sara2.bmp", 2);
mes("[Sara Irene]");
mes("Mommy!");
npctalk(_("Mommy!"));
- next;
- cutin "sara_elder_irine4.bmp", 2;
+ next();
+ cutin("sara_elder_irine4.bmp", 2);
mes("[Doyen Irene]");
mes("Sara...");
npctalk(_("Sara..."), instance_npcname("Doyen Irene#sarains2"));
- next;
- cutin "sara_9sara2.bmp", 2;
+ next();
+ cutin("sara_9sara2.bmp", 2);
mes("[Sara Irene]");
mes("No!");
npctalk(_("No!"));
- next;
- cutin "sara_elder_irine4.bmp", 2;
+ next();
+ cutin("sara_elder_irine4.bmp", 2);
mes("[Doyen Irene]");
mes("I have been looking for you Sara. Please come with daddy it is very dangerous here!");
npctalk(_("I have been looking for you Sara. Please come with daddy it is very dangerous here!"), instance_npcname("Doyen Irene#sarains2"));
- next;
+ next();
mesf("[%s]", strcharinfo(PC_NAME));
mes("I won't let you take Sara!");
unittalk(getcharid(CHAR_ID_ACCOUNT), _("I won't let you take Sara!"));
- next;
- cutin "sara_elder_irine3.bmp", 2;
+ next();
+ cutin("sara_elder_irine3.bmp", 2);
mes("[Doyen Irene]");
mes("The murderer is here! Guards! We will finish him once and for all!");
npctalk(_("The murderer is here! Guards! We will finish him once and for all!"), instance_npcname("Doyen Irene#sarains2"));
- next;
+ next();
mesf("[%s]", strcharinfo(PC_NAME));
mes("Sara... run! Save yourself!");
unittalk(getcharid(CHAR_ID_ACCOUNT), _("Sara... run! Save yourself!"));
- next;
- cutin "sara_9sara2.bmp", 2;
+ next();
+ cutin("sara_9sara2.bmp", 2);
mes("[Sara Irene]");
mes("...okay.");
npctalk(_("...okay."));
- close2;
- cutin "sara_9sara2.bmp", 255;
- donpcevent instance_npcname("Sara Irene#sarains2")+"::OnDisable";
- donpcevent instance_npcname("#controlsara4")+"::OnEnable";
+ close2();
+ cutin("sara_9sara2.bmp", 255);
+ donpcevent(instance_npcname("Sara Irene#sarains2")+"::OnDisable");
+ donpcevent(instance_npcname("#controlsara4")+"::OnEnable");
end;
OnInstanceInit:
- donpcevent instance_npcname("Sara Irene#sarains2")+"::OnDisable";
+ donpcevent(instance_npcname("Sara Irene#sarains2")+"::OnDisable");
end;
OnEnable:
- hideoffnpc instance_npcname("Sara Irene#sarains2");
+ hideoffnpc(instance_npcname("Sara Irene#sarains2"));
end;
OnDisable:
- hideonnpc instance_npcname("Sara Irene#sarains2");
+ hideonnpc(instance_npcname("Sara Irene#sarains2"));
end;
}
1@sara,152,233,5,0 script Doyen Irene#sarains2 FAKE_NPC,{
end;
OnInstanceInit:
- donpcevent instance_npcname("Doyen Irene#sarains2")+"::OnDisable";
+ donpcevent(instance_npcname("Doyen Irene#sarains2")+"::OnDisable");
end;
OnEnable:
- hideoffnpc instance_npcname("Doyen Irene#sarains2");
+ hideoffnpc(instance_npcname("Doyen Irene#sarains2"));
end;
OnDisable:
- hideonnpc instance_npcname("Doyen Irene#sarains2");
+ hideonnpc(instance_npcname("Doyen Irene#sarains2"));
end;
}
1@sara,152,233,0 script #controlsara4 FAKE_NPC,{
end;
OnInstanceInit:
- donpcevent instance_npcname("#controlsara4")+"::OnDisable";
+ donpcevent(instance_npcname("#controlsara4")+"::OnDisable");
end;
OnEnable:
- enablenpc instance_npcname("#controlsara4");
- donpcevent instance_npcname("#controlsara4")+"::OnRespawn";
+ enablenpc(instance_npcname("#controlsara4"));
+ donpcevent(instance_npcname("#controlsara4")+"::OnRespawn");
end;
OnDisable:
- disablenpc instance_npcname("#controlsara4");
+ disablenpc(instance_npcname("#controlsara4"));
end;
OnRespawn:
.@map$ = instance_mapname("1@sara");
@@ -1112,9 +1111,9 @@ OnMyMobDead:
.@f_mob_num = mobcount(.@map$, instance_npcname(strnpcinfo(NPC_NAME))+"::OnMyMobDead");
.@mob_dead_num = .@callnum - .@f_mob_num;
if (.@mob_dead_num > 7) {
- mapannounce(instance_mapname("1@sara"),_("<SYSTEM> Doyen Irene draws his blade!"), bc_map, C_YELLOW);
- donpcevent instance_npcname("#controlsara4")+"::OnDisable";
- donpcevent instance_npcname("#controlsara5")+"::OnEnable";
+ mapannounce(instance_mapname("1@sara"), _("<SYSTEM> Doyen Irene draws his blade!"), bc_map, C_YELLOW);
+ donpcevent(instance_npcname("#controlsara4")+"::OnDisable");
+ donpcevent(instance_npcname("#controlsara5")+"::OnEnable");
}
end;
}
@@ -1122,14 +1121,14 @@ OnMyMobDead:
1@sara,155,226,0 script #controlsara5 FAKE_NPC,{
end;
OnInstanceInit:
- donpcevent instance_npcname("#controlsara5")+"::OnDisable";
+ donpcevent(instance_npcname("#controlsara5")+"::OnDisable");
end;
OnEnable:
- enablenpc instance_npcname("#controlsara5");
- donpcevent instance_npcname("#controlsara5")+"::OnRespawn";
+ enablenpc(instance_npcname("#controlsara5"));
+ donpcevent(instance_npcname("#controlsara5")+"::OnRespawn");
end;
OnDisable:
- disablenpc instance_npcname("#controlsara5");
+ disablenpc(instance_npcname("#controlsara5"));
end;
OnRespawn:
.@map$ = instance_mapname("1@sara");
@@ -1143,8 +1142,8 @@ OnMyMobDead:
.@mob_dead_num = .@callnum - .@g_mob_num;
if (.@mob_dead_num > 0) {
mapannounce(instance_mapname("1@sara"), _("<SYSTEM> Doyen Irene has fallen."), bc_map, C_YELLOW);
- donpcevent instance_npcname("#controlsara5")+"::OnDisable";
- donpcevent instance_npcname("Doyen Irene#sarains3")+"::OnEnable";
+ donpcevent(instance_npcname("#controlsara5")+"::OnDisable");
+ donpcevent(instance_npcname("Doyen Irene#sarains3")+"::OnEnable");
}
end;
}
@@ -1152,82 +1151,82 @@ OnMyMobDead:
1@sara,156,236,3 script Doyen Irene#sarains3 4_M_CHIEF_IRIN,{
if (getcharid(CHAR_ID_CHAR) != getpartyleader(getcharid(CHAR_ID_PARTY), 2))
end;
- cutin "sara_elder_irine4.bmp", 2;
+ cutin("sara_elder_irine4.bmp", 2);
mes("[Doyen Irene]");
mes("You... were too strong for me.");
npctalk(_("You... were too strong for me."));
- next;
+ next();
mes("[Doyen Irene]");
mes("Why.. *hack* are you trying to kill my wife and daughter?");
npctalk(_("Why.. *hack* are you trying to kill my wife and daughter?"));
- next;
+ next();
mesf("[%s]", strcharinfo(PC_NAME));
mes("What are you talking about? We saw you standing over Sara's mother with your sword COVERED in blood!");
unittalk(getcharid(CHAR_ID_ACCOUNT), _("What are you talking about? We saw you standing over Sara's mother with your sword COVERED in blood!"));
- next;
+ next();
mes("[Doyen Irene]");
mes("You.. think I killed Sara's mother?");
npctalk(_("You.. think I killed Sara's mother?"));
- next;
+ next();
mes("[Doyen Irene]");
mes("She *cough* had already been killed by an assassin. I slew him that *hack* is why my blade was covered in blood...");
npctalk(_("She *cough* had already been killed by an assassin. I slew him that *hack* is why my blade was covered in blood..."));
- next;
- cutin "sara_elder_irine4.bmp", 255;
- cutin "sara_momdie.bmp", 4;
+ next();
+ cutin("sara_elder_irine4.bmp", 255);
+ cutin("sara_momdie.bmp", 4);
mes("^FF0000Thinking back you seem to recall another body laying in the left\r"
"corner of the room. Maybe that was the assassin the Doyen is talking about.^000000");
dispbottom(_("Thinking back you seem to recall another body laying in the left corner of the room. Maybe that was the assassin the Doyen is talking about."));
- next;
- cutin "sara_momdie.bmp", 255;
- cutin "sara_elder_irine4.bmp", 2;
+ next();
+ cutin("sara_momdie.bmp", 255);
+ cutin("sara_elder_irine4.bmp", 2);
mes("[Doyen Irene]");
mes("If.. you are not the assassin sent to kill my wife and daughter, who are you?");
npctalk(_("If.. you are not the assassin sent to kill my wife and daughter, who are you?"));
- next;
+ next();
mesf("[%s]", strcharinfo(PC_NAME));
mes("I am just an adventurer who was passing through. I heard some men plotting their deaths and needed to intervene.");
unittalk(getcharid(CHAR_ID_ACCOUNT), _("I am just an adventurer who was passing through. I heard some men plotting their deaths and needed to intervene."));
- next;
+ next();
mes("[Doyen Irene]");
mes("If.. you are telling the truth...\r"
"forgive me. I though you were one of them.");
npctalk(_("If.. you are telling the truth... forgive me. I though you were one of them."));
- next;
+ next();
mes("[Doyen Irene]");
mes("Strange men... I bet they were some of the village elders. Ugh...");
npctalk(_("Strange men... I bet they were some of the village elders. Ugh..."));
- next;
+ next();
mesf("[%s]", strcharinfo(PC_NAME));
mes("There might be more assassins so we have to find Sara as fast as we can.");
unittalk(getcharid(CHAR_ID_ACCOUNT), _("There might be more assassins so we have to find Sara as fast as we can."));
- next;
+ next();
mesf("[%s]", strcharinfo(PC_NAME));
mes("Sara believes that you killed her mother. We need to tell her the truth.");
unittalk(getcharid(CHAR_ID_ACCOUNT), _("Sara believes that you killed her mother. We need to tell her the truth."));
- next;
+ next();
mes("[Doyen Irene]");
mes("We must do our best to find her. Let's split up and search for her.\r"
"Please help me find my daughter and explain everything to her.");
npctalk(_("We must do our best to find her. Let's split up and search for her. Please help me find my daughter and explain everything to her."));
- close2;
- cutin "sara_elder_irine4.bmp", 255;
- viewpoint 1, 88, 188, 1, C_GREEN;
+ close2();
+ cutin("sara_elder_irine4.bmp", 255);
+ viewpoint(1, 88, 188, 1, C_GREEN);
mapannounce(instance_mapname("1@sara"), _("<SYSTEM> We must find Sara. You seem remember her running in the 8 O'clock direction."), bc_map, C_YELLOW);
- donpcevent instance_npcname("Doyen Irene#sarains3")+"::OnDisable";
- donpcevent instance_npcname("#sarawarp6")+"::OnEnable";
- donpcevent instance_npcname("????-#saratalk")+"::OnEnable";
- donpcevent instance_npcname("Sara Irene#sarains3")+"::OnEnable";
+ donpcevent(instance_npcname("Doyen Irene#sarains3")+"::OnDisable");
+ donpcevent(instance_npcname("#sarawarp6")+"::OnEnable");
+ donpcevent(instance_npcname("????-#saratalk")+"::OnEnable");
+ donpcevent(instance_npcname("Sara Irene#sarains3")+"::OnEnable");
end;
OnInstanceInit:
- donpcevent instance_npcname("Doyen Irene#sarains3")+"::OnDisable";
+ donpcevent(instance_npcname("Doyen Irene#sarains3")+"::OnDisable");
end;
OnEnable:
- hideoffnpc instance_npcname("Doyen Irene#sarains3");
+ hideoffnpc(instance_npcname("Doyen Irene#sarains3"));
end;
OnDisable:
- hideonnpc instance_npcname("Doyen Irene#sarains3");
+ hideonnpc(instance_npcname("Doyen Irene#sarains3"));
end;
}
@@ -1236,69 +1235,69 @@ OnDisable:
end;
mes("^FF0000As you are about to call out to Sara a sudden blow knocks you down from behind.^000000");
dispbottom(_("As you are about to call out to Sara a sudden blow knocks you down from behind."));
- next;
- cutin "sara_beholder.bmp", 2;
+ next();
+ cutin("sara_beholder.bmp", 2);
mes("[?????]");
mes("The time travellers cannot interfere any longer. You cannot stop us from meeting Sara.");
npctalk(_("The time travellers cannot interfere any longer. You cannot stop us from meeting Sara."), instance_npcname("????-#saratalk"));
- next;
+ next();
mes("[?????]");
mes("You should go back to the time where you belong.");
npctalk(_("You should go back to the time where you belong."), instance_npcname("????-#saratalk"));
- next;
+ next();
mes("^FF0000As you fall to the ground two dark figures approach Sara.^000000");
dispbottom(_("As you fall to the ground two dark figures approach Sara."));
- next;
+ next();
mes("[?????]");
mes("A girl full of betrayal, despair, and hate. We will guide you to your ultimate fate.");
npctalk(_("A girl full of betrayal, despair, and hate. We will guide you to your ultimate fate."), instance_npcname("????-#saratalk"));
- next;
- cutin "sara_9sara2.bmp", 2;
+ next();
+ cutin("sara_9sara2.bmp", 2);
mes("[Sara Irene]");
mes("...");
npctalk("...");
- next;
- cutin "sara_beholder.bmp", 2;
+ next();
+ cutin("sara_beholder.bmp", 2);
mes("[?????]");
mes("Sara Irene, he will make your dreams come true.");
npctalk(_("Sara Irene, he will make your dreams come true."), instance_npcname("????-#saratalk"));
- next;
- cutin "sara_beholder.bmp", 255;
+ next();
+ cutin("sara_beholder.bmp", 255);
mes("^FF0000One of the cloaked strangers covers Sara with their cloak and all three figures disappear.^000000");
dispbottom(_("One of the cloaked strangers covers Sara with their cloak and all three figures disappear."));
- donpcevent instance_npcname("Sara Irene#sarains3")+"::OnDisable";
- next;
+ donpcevent(instance_npcname("Sara Irene#sarains3")+"::OnDisable");
+ next();
mes("^FF0000At the same time as Sara disappearing this place begin to become unstable, just like what Leon said before.^000000");
dispbottom(_("At the same time as Sara disappearing this place begin to become unstable, just like what Leon said before."));
- next;
+ next();
mes("^FF0000We need to get out from this place quickly to the left. And when we at the outside let's talk to him.^000000");
dispbottom(_("We need to get out from this place quickly to the left. And when we at the outside let's talk to him."));
- close2;
- donpcevent instance_npcname("????-#saratalk")+"::OnDisable";
- donpcevent instance_npcname("#sarawarp7")+"::OnEnable";
+ close2();
+ donpcevent(instance_npcname("????-#saratalk")+"::OnDisable");
+ donpcevent(instance_npcname("#sarawarp7")+"::OnEnable");
end;
OnInstanceInit:
- donpcevent instance_npcname("Sara Irene#sarains3")+"::OnDisable";
+ donpcevent(instance_npcname("Sara Irene#sarains3")+"::OnDisable");
end;
OnEnable:
- hideoffnpc instance_npcname("Sara Irene#sarains3");
+ hideoffnpc(instance_npcname("Sara Irene#sarains3"));
end;
OnDisable:
- hideonnpc instance_npcname("Sara Irene#sarains3");
+ hideonnpc(instance_npcname("Sara Irene#sarains3"));
end;
}
1@sara,152,233,0 script ????-#saratalk FAKE_NPC,{
end;
OnInstanceInit:
- donpcevent instance_npcname("????-#saratalk")+"::OnDisable";
+ donpcevent(instance_npcname("????-#saratalk")+"::OnDisable");
end;
OnEnable:
- hideoffnpc instance_npcname("????-#saratalk");
+ hideoffnpc(instance_npcname("????-#saratalk"));
end;
OnDisable:
- hideonnpc instance_npcname("????-#saratalk");
+ hideonnpc(instance_npcname("????-#saratalk"));
end;
}
@@ -1306,23 +1305,23 @@ OnDisable:
end;
OnTouch:
npctalk(_("Why daddy?"));
- initnpctimer;
- donpcevent instance_npcname("Sara Irene#sarains4")+"::OnDisable";
+ initnpctimer();
+ donpcevent(instance_npcname("Sara Irene#sarains4")+"::OnDisable");
end;
OnTimer60000:
- donpcevent instance_npcname("Sara Irene#sarains4")+"::OnEnable";
+ donpcevent(instance_npcname("Sara Irene#sarains4")+"::OnEnable");
end;
OnInstanceInit:
- donpcevent instance_npcname("Sara Irene#sarains4")+"::OnDisable";
+ donpcevent(instance_npcname("Sara Irene#sarains4")+"::OnDisable");
end;
OnEnable:
- enablenpc instance_npcname("Sara Irene#sarains4");
- hideoffnpc instance_npcname("Sara Irene#sarains4");
- stopnpctimer;
+ enablenpc(instance_npcname("Sara Irene#sarains4"));
+ hideoffnpc(instance_npcname("Sara Irene#sarains4"));
+ stopnpctimer();
end;
OnDisable:
- hideonnpc instance_npcname("Sara Irene#sarains4");
- disablenpc instance_npcname("Sara Irene#sarains4");
+ hideonnpc(instance_npcname("Sara Irene#sarains4"));
+ disablenpc(instance_npcname("Sara Irene#sarains4"));
end;
}
@@ -1330,23 +1329,23 @@ OnDisable:
end;
OnTouch:
npctalk(_("Not mommy!"));
- initnpctimer;
- donpcevent instance_npcname("Sara Irene#sarains5")+"::OnDisable";
+ initnpctimer();
+ donpcevent(instance_npcname("Sara Irene#sarains5")+"::OnDisable");
end;
OnTimer60000:
- donpcevent instance_npcname("Sara Irene#sarains5")+"::OnEnable";
+ donpcevent(instance_npcname("Sara Irene#sarains5")+"::OnEnable");
end;
OnInstanceInit:
- donpcevent instance_npcname("Sara Irene#sarains5")+"::OnDisable";
+ donpcevent(instance_npcname("Sara Irene#sarains5")+"::OnDisable");
end;
OnEnable:
- enablenpc instance_npcname("Sara Irene#sarains5");
- hideoffnpc instance_npcname("Sara Irene#sarains5");
- stopnpctimer;
+ enablenpc(instance_npcname("Sara Irene#sarains5"));
+ hideoffnpc(instance_npcname("Sara Irene#sarains5"));
+ stopnpctimer();
end;
OnDisable:
- hideonnpc instance_npcname("Sara Irene#sarains5");
- disablenpc instance_npcname("Sara Irene#sarains5");
+ hideonnpc(instance_npcname("Sara Irene#sarains5"));
+ disablenpc(instance_npcname("Sara Irene#sarains5"));
end;
}
@@ -1354,23 +1353,23 @@ OnDisable:
end;
OnTouch:
npctalk(_("Why did he do it?!"));
- initnpctimer;
- donpcevent instance_npcname("Sara Irene#sarains6")+"::OnDisable";
+ initnpctimer();
+ donpcevent(instance_npcname("Sara Irene#sarains6")+"::OnDisable");
end;
OnTimer60000:
- donpcevent instance_npcname("Sara Irene#sarains6")+"::OnEnable";
+ donpcevent(instance_npcname("Sara Irene#sarains6")+"::OnEnable");
end;
OnInstanceInit:
- donpcevent instance_npcname("Sara Irene#sarains6")+"::OnDisable";
+ donpcevent(instance_npcname("Sara Irene#sarains6")+"::OnDisable");
end;
OnEnable:
- enablenpc instance_npcname("Sara Irene#sarains6");
- hideoffnpc instance_npcname("Sara Irene#sarains6");
- stopnpctimer;
+ enablenpc(instance_npcname("Sara Irene#sarains6"));
+ hideoffnpc(instance_npcname("Sara Irene#sarains6"));
+ stopnpctimer();
end;
OnDisable:
- hideonnpc instance_npcname("Sara Irene#sarains6");
- disablenpc instance_npcname("Sara Irene#sarains6");
+ hideonnpc(instance_npcname("Sara Irene#sarains6"));
+ disablenpc(instance_npcname("Sara Irene#sarains6"));
end;
}
@@ -1378,23 +1377,23 @@ OnDisable:
end;
OnTouch:
npctalk(_("Why.. why?!"));
- initnpctimer;
- donpcevent instance_npcname("Sara Irene#sarains7")+"::OnDisable";
+ initnpctimer();
+ donpcevent(instance_npcname("Sara Irene#sarains7")+"::OnDisable");
end;
OnTimer60000:
- donpcevent instance_npcname("Sara Irene#sarains7")+"::OnEnable";
+ donpcevent(instance_npcname("Sara Irene#sarains7")+"::OnEnable");
end;
OnInstanceInit:
- donpcevent instance_npcname("Sara Irene#sarains7")+"::OnDisable";
+ donpcevent(instance_npcname("Sara Irene#sarains7")+"::OnDisable");
end;
OnEnable:
- enablenpc instance_npcname("Sara Irene#sarains7");
- hideoffnpc instance_npcname("Sara Irene#sarains7");
- stopnpctimer;
+ enablenpc(instance_npcname("Sara Irene#sarains7"));
+ hideoffnpc(instance_npcname("Sara Irene#sarains7"));
+ stopnpctimer();
end;
OnDisable:
- hideonnpc instance_npcname("Sara Irene#sarains7");
- disablenpc instance_npcname("Sara Irene#sarains7");
+ hideonnpc(instance_npcname("Sara Irene#sarains7"));
+ disablenpc(instance_npcname("Sara Irene#sarains7"));
end;
}
@@ -1402,23 +1401,23 @@ OnDisable:
end;
OnTouch:
npctalk(_("Noooo..."));
- initnpctimer;
- donpcevent instance_npcname("Sara Irene#sarains8")+"::OnDisable";
+ initnpctimer();
+ donpcevent(instance_npcname("Sara Irene#sarains8")+"::OnDisable");
end;
OnTimer60000:
- donpcevent instance_npcname("Sara Irene#sarains8")+"::OnEnable";
+ donpcevent(instance_npcname("Sara Irene#sarains8")+"::OnEnable");
end;
OnInstanceInit:
- donpcevent instance_npcname("Sara Irene#sarains8")+"::OnDisable";
+ donpcevent(instance_npcname("Sara Irene#sarains8")+"::OnDisable");
end;
OnEnable:
- enablenpc instance_npcname("Sara Irene#sarains8");
- hideoffnpc instance_npcname("Sara Irene#sarains8");
- stopnpctimer;
+ enablenpc(instance_npcname("Sara Irene#sarains8"));
+ hideoffnpc(instance_npcname("Sara Irene#sarains8"));
+ stopnpctimer();
end;
OnDisable:
- hideonnpc instance_npcname("Sara Irene#sarains8");
- disablenpc instance_npcname("Sara Irene#sarains8");
+ hideonnpc(instance_npcname("Sara Irene#sarains8"));
+ disablenpc(instance_npcname("Sara Irene#sarains8"));
end;
}
@@ -1426,23 +1425,23 @@ OnDisable:
end;
OnTouch:
npctalk("...");
- initnpctimer;
- donpcevent instance_npcname("Sara Irene#sarains9")+"::OnDisable";
+ initnpctimer();
+ donpcevent(instance_npcname("Sara Irene#sarains9")+"::OnDisable");
end;
OnTimer60000:
- donpcevent instance_npcname("Sara Irene#sarains9")+"::OnEnable";
+ donpcevent(instance_npcname("Sara Irene#sarains9")+"::OnEnable");
end;
OnInstanceInit:
- donpcevent instance_npcname("Sara Irene#sarains9")+"::OnDisable";
+ donpcevent(instance_npcname("Sara Irene#sarains9")+"::OnDisable");
end;
OnEnable:
- enablenpc instance_npcname("Sara Irene#sarains9");
- hideoffnpc instance_npcname("Sara Irene#sarains9");
- stopnpctimer;
+ enablenpc(instance_npcname("Sara Irene#sarains9"));
+ hideoffnpc(instance_npcname("Sara Irene#sarains9"));
+ stopnpctimer();
end;
OnDisable:
- hideonnpc instance_npcname("Sara Irene#sarains9");
- disablenpc instance_npcname("Sara Irene#sarains9");
+ hideonnpc(instance_npcname("Sara Irene#sarains9"));
+ disablenpc(instance_npcname("Sara Irene#sarains9"));
end;
}
@@ -1450,23 +1449,23 @@ OnDisable:
end;
OnTouch:
npctalk(_("Why does it hurt so much?"));
- initnpctimer;
- donpcevent instance_npcname("Sara Irene#sarains10")+"::OnDisable";
+ initnpctimer();
+ donpcevent(instance_npcname("Sara Irene#sarains10")+"::OnDisable");
end;
OnTimer60000:
- donpcevent instance_npcname("Sara Irene#sarains10")+"::OnEnable";
+ donpcevent(instance_npcname("Sara Irene#sarains10")+"::OnEnable");
end;
OnInstanceInit:
- donpcevent instance_npcname("Sara Irene#sarains10")+"::OnDisable";
+ donpcevent(instance_npcname("Sara Irene#sarains10")+"::OnDisable");
end;
OnEnable:
- enablenpc instance_npcname("Sara Irene#sarains10");
- hideoffnpc instance_npcname("Sara Irene#sarains10");
- stopnpctimer;
+ enablenpc(instance_npcname("Sara Irene#sarains10"));
+ hideoffnpc(instance_npcname("Sara Irene#sarains10"));
+ stopnpctimer();
end;
OnDisable:
- hideonnpc instance_npcname("Sara Irene#sarains10");
- disablenpc instance_npcname("Sara Irene#sarains10");
+ hideonnpc(instance_npcname("Sara Irene#sarains10"));
+ disablenpc(instance_npcname("Sara Irene#sarains10"));
end;
}
@@ -1474,23 +1473,23 @@ OnDisable:
end;
OnTouch:
npctalk(_("........"));
- initnpctimer;
- donpcevent instance_npcname("Sara Irene#sarains11")+"::OnDisable";
+ initnpctimer();
+ donpcevent(instance_npcname("Sara Irene#sarains11")+"::OnDisable");
end;
OnTimer60000:
- donpcevent instance_npcname("Sara Irene#sarains11")+"::OnEnable";
+ donpcevent(instance_npcname("Sara Irene#sarains11")+"::OnEnable");
end;
OnInstanceInit:
- donpcevent instance_npcname("Sara Irene#sarains11")+"::OnDisable";
+ donpcevent(instance_npcname("Sara Irene#sarains11")+"::OnDisable");
end;
OnEnable:
- enablenpc instance_npcname("Sara Irene#sarains11");
- hideoffnpc instance_npcname("Sara Irene#sarains11");
- stopnpctimer;
+ enablenpc(instance_npcname("Sara Irene#sarains11"));
+ hideoffnpc(instance_npcname("Sara Irene#sarains11"));
+ stopnpctimer();
end;
OnDisable:
- hideonnpc instance_npcname("Sara Irene#sarains11");
- disablenpc instance_npcname("Sara Irene#sarains11");
+ hideonnpc(instance_npcname("Sara Irene#sarains11"));
+ disablenpc(instance_npcname("Sara Irene#sarains11"));
end;
}
@@ -1498,23 +1497,23 @@ OnDisable:
end;
OnTouch:
npctalk(_("...Mommy"));
- initnpctimer;
- donpcevent instance_npcname("Sara Irene#sarains12")+"::OnDisable";
+ initnpctimer();
+ donpcevent(instance_npcname("Sara Irene#sarains12")+"::OnDisable");
end;
OnTimer60000:
- donpcevent instance_npcname("Sara Irene#sarains12")+"::OnEnable";
+ donpcevent(instance_npcname("Sara Irene#sarains12")+"::OnEnable");
end;
OnInstanceInit:
- donpcevent instance_npcname("Sara Irene#sarains12")+"::OnDisable";
+ donpcevent(instance_npcname("Sara Irene#sarains12")+"::OnDisable");
end;
OnEnable:
- enablenpc instance_npcname("Sara Irene#sarains12");
- hideoffnpc instance_npcname("Sara Irene#sarains12");
- stopnpctimer;
+ enablenpc(instance_npcname("Sara Irene#sarains12"));
+ hideoffnpc(instance_npcname("Sara Irene#sarains12"));
+ stopnpctimer();
end;
OnDisable:
- hideonnpc instance_npcname("Sara Irene#sarains12");
- disablenpc instance_npcname("Sara Irene#sarains12");
+ hideonnpc(instance_npcname("Sara Irene#sarains12"));
+ disablenpc(instance_npcname("Sara Irene#sarains12"));
end;
}
@@ -1522,23 +1521,23 @@ OnDisable:
end;
OnTouch:
npctalk(_("What happened to you daddy?"));
- initnpctimer;
- donpcevent instance_npcname("Sara Irene#sarains13")+"::OnDisable";
+ initnpctimer();
+ donpcevent(instance_npcname("Sara Irene#sarains13")+"::OnDisable");
end;
OnTimer60000:
- donpcevent instance_npcname("Sara Irene#sarains13")+"::OnEnable";
+ donpcevent(instance_npcname("Sara Irene#sarains13")+"::OnEnable");
end;
OnInstanceInit:
- donpcevent instance_npcname("Sara Irene#sarains13")+"::OnDisable";
+ donpcevent(instance_npcname("Sara Irene#sarains13")+"::OnDisable");
end;
OnEnable:
- enablenpc instance_npcname("Sara Irene#sarains13");
- hideoffnpc instance_npcname("Sara Irene#sarains13");
- stopnpctimer;
+ enablenpc(instance_npcname("Sara Irene#sarains13"));
+ hideoffnpc(instance_npcname("Sara Irene#sarains13"));
+ stopnpctimer();
end;
OnDisable:
- hideonnpc instance_npcname("Sara Irene#sarains13");
- disablenpc instance_npcname("Sara Irene#sarains13");
+ hideonnpc(instance_npcname("Sara Irene#sarains13"));
+ disablenpc(instance_npcname("Sara Irene#sarains13"));
end;
}
@@ -1546,23 +1545,23 @@ OnDisable:
end;
OnTouch:
npctalk(_("All that blood..."));
- initnpctimer;
- donpcevent instance_npcname("Sara Irene#sarains14")+"::OnDisable";
+ initnpctimer();
+ donpcevent(instance_npcname("Sara Irene#sarains14")+"::OnDisable");
end;
OnTimer60000:
- donpcevent instance_npcname("Sara Irene#sarains14")+"::OnEnable";
+ donpcevent(instance_npcname("Sara Irene#sarains14")+"::OnEnable");
end;
OnInstanceInit:
- donpcevent instance_npcname("Sara Irene#sarains14")+"::OnDisable";
+ donpcevent(instance_npcname("Sara Irene#sarains14")+"::OnDisable");
end;
OnEnable:
- enablenpc instance_npcname("Sara Irene#sarains14");
- hideoffnpc instance_npcname("Sara Irene#sarains14");
- stopnpctimer;
+ enablenpc(instance_npcname("Sara Irene#sarains14"));
+ hideoffnpc(instance_npcname("Sara Irene#sarains14"));
+ stopnpctimer();
end;
OnDisable:
- hideonnpc instance_npcname("Sara Irene#sarains14");
- disablenpc instance_npcname("Sara Irene#sarains14");
+ hideonnpc(instance_npcname("Sara Irene#sarains14"));
+ disablenpc(instance_npcname("Sara Irene#sarains14"));
end;
}
@@ -1570,23 +1569,23 @@ OnDisable:
end;
OnTouch:
npctalk(_("Who are you?!"));
- initnpctimer;
- donpcevent instance_npcname("Sara Irene#sarains15")+"::OnDisable";
+ initnpctimer();
+ donpcevent(instance_npcname("Sara Irene#sarains15")+"::OnDisable");
end;
OnTimer60000:
- donpcevent instance_npcname("Sara Irene#sarains15")+"::OnEnable";
+ donpcevent(instance_npcname("Sara Irene#sarains15")+"::OnEnable");
end;
OnInstanceInit:
- donpcevent instance_npcname("Sara Irene#sarains15")+"::OnDisable";
+ donpcevent(instance_npcname("Sara Irene#sarains15")+"::OnDisable");
end;
OnEnable:
- enablenpc instance_npcname("Sara Irene#sarains15");
- hideoffnpc instance_npcname("Sara Irene#sarains15");
- stopnpctimer;
+ enablenpc(instance_npcname("Sara Irene#sarains15"));
+ hideoffnpc(instance_npcname("Sara Irene#sarains15"));
+ stopnpctimer();
end;
OnDisable:
- hideonnpc instance_npcname("Sara Irene#sarains15");
- disablenpc instance_npcname("Sara Irene#sarains15");
+ hideonnpc(instance_npcname("Sara Irene#sarains15"));
+ disablenpc(instance_npcname("Sara Irene#sarains15"));
end;
}
@@ -1594,23 +1593,23 @@ OnDisable:
end;
OnTouch:
npctalk(_("I want my mommy!"));
- initnpctimer;
- donpcevent instance_npcname("Sara Irene#sarains16")+"::OnDisable";
+ initnpctimer();
+ donpcevent(instance_npcname("Sara Irene#sarains16")+"::OnDisable");
end;
OnTimer60000:
- donpcevent instance_npcname("Sara Irene#sarains16")+"::OnEnable";
+ donpcevent(instance_npcname("Sara Irene#sarains16")+"::OnEnable");
end;
OnInstanceInit:
- donpcevent instance_npcname("Sara Irene#sarains16")+"::OnDisable";
+ donpcevent(instance_npcname("Sara Irene#sarains16")+"::OnDisable");
end;
OnEnable:
- enablenpc instance_npcname("Sara Irene#sarains16");
- hideoffnpc instance_npcname("Sara Irene#sarains16");
- stopnpctimer;
+ enablenpc(instance_npcname("Sara Irene#sarains16"));
+ hideoffnpc(instance_npcname("Sara Irene#sarains16"));
+ stopnpctimer();
end;
OnDisable:
- hideonnpc instance_npcname("Sara Irene#sarains16");
- disablenpc instance_npcname("Sara Irene#sarains16");
+ hideonnpc(instance_npcname("Sara Irene#sarains16"));
+ disablenpc(instance_npcname("Sara Irene#sarains16"));
end;
}
@@ -1618,23 +1617,23 @@ OnDisable:
end;
OnTouch:
npctalk(_("........"));
- initnpctimer;
- donpcevent instance_npcname("Sara Irene#sarains17")+"::OnDisable";
+ initnpctimer();
+ donpcevent(instance_npcname("Sara Irene#sarains17")+"::OnDisable");
end;
OnTimer60000:
- donpcevent instance_npcname("Sara Irene#sarains17")+"::OnEnable";
+ donpcevent(instance_npcname("Sara Irene#sarains17")+"::OnEnable");
end;
OnInstanceInit:
- donpcevent instance_npcname("Sara Irene#sarains17")+"::OnDisable";
+ donpcevent(instance_npcname("Sara Irene#sarains17")+"::OnDisable");
end;
OnEnable:
- enablenpc instance_npcname("Sara Irene#sarains17");
- hideoffnpc instance_npcname("Sara Irene#sarains17");
- stopnpctimer;
+ enablenpc(instance_npcname("Sara Irene#sarains17"));
+ hideoffnpc(instance_npcname("Sara Irene#sarains17"));
+ stopnpctimer();
end;
OnDisable:
- hideonnpc instance_npcname("Sara Irene#sarains17");
- disablenpc instance_npcname("Sara Irene#sarains17");
+ hideonnpc(instance_npcname("Sara Irene#sarains17"));
+ disablenpc(instance_npcname("Sara Irene#sarains17"));
end;
}
@@ -1642,23 +1641,23 @@ OnDisable:
end;
OnTouch:
npctalk(_("Nooooo..."));
- initnpctimer;
- donpcevent instance_npcname("Sara Irene#sarains18")+"::OnDisable";
+ initnpctimer();
+ donpcevent(instance_npcname("Sara Irene#sarains18")+"::OnDisable");
end;
OnTimer60000:
- donpcevent instance_npcname("Sara Irene#sarains18")+"::OnEnable";
+ donpcevent(instance_npcname("Sara Irene#sarains18")+"::OnEnable");
end;
OnInstanceInit:
- donpcevent instance_npcname("Sara Irene#sarains18")+"::OnDisable";
+ donpcevent(instance_npcname("Sara Irene#sarains18")+"::OnDisable");
end;
OnEnable:
- enablenpc instance_npcname("Sara Irene#sarains18");
- hideoffnpc instance_npcname("Sara Irene#sarains18");
- stopnpctimer;
+ enablenpc(instance_npcname("Sara Irene#sarains18"));
+ hideoffnpc(instance_npcname("Sara Irene#sarains18"));
+ stopnpctimer();
end;
OnDisable:
- hideonnpc instance_npcname("Sara Irene#sarains18");
- disablenpc instance_npcname("Sara Irene#sarains18");
+ hideonnpc(instance_npcname("Sara Irene#sarains18"));
+ disablenpc(instance_npcname("Sara Irene#sarains18"));
end;
}
@@ -1666,23 +1665,23 @@ OnDisable:
end;
OnTouch:
npctalk(_("Mommy!"));
- initnpctimer;
- donpcevent instance_npcname("Sara Irene#sarains19")+"::OnDisable";
+ initnpctimer();
+ donpcevent(instance_npcname("Sara Irene#sarains19")+"::OnDisable");
end;
OnTimer60000:
- donpcevent instance_npcname("Sara Irene#sarains19")+"::OnEnable";
+ donpcevent(instance_npcname("Sara Irene#sarains19")+"::OnEnable");
end;
OnInstanceInit:
- donpcevent instance_npcname("Sara Irene#sarains19")+"::OnDisable";
+ donpcevent(instance_npcname("Sara Irene#sarains19")+"::OnDisable");
end;
OnEnable:
- enablenpc instance_npcname("Sara Irene#sarains19");
- hideoffnpc instance_npcname("Sara Irene#sarains19");
- stopnpctimer;
+ enablenpc(instance_npcname("Sara Irene#sarains19"));
+ hideoffnpc(instance_npcname("Sara Irene#sarains19"));
+ stopnpctimer();
end;
OnDisable:
- hideonnpc instance_npcname("Sara Irene#sarains19");
- disablenpc instance_npcname("Sara Irene#sarains19");
+ hideonnpc(instance_npcname("Sara Irene#sarains19"));
+ disablenpc(instance_npcname("Sara Irene#sarains19"));
end;
}
@@ -1690,23 +1689,23 @@ OnDisable:
end;
OnTouch:
npctalk("........");
- initnpctimer;
- donpcevent instance_npcname("Sara Irene#sarains20")+"::OnDisable";
+ initnpctimer();
+ donpcevent(instance_npcname("Sara Irene#sarains20")+"::OnDisable");
end;
OnTimer60000:
- donpcevent instance_npcname("Sara Irene#sarains20")+"::OnEnable";
+ donpcevent(instance_npcname("Sara Irene#sarains20")+"::OnEnable");
end;
OnInstanceInit:
- donpcevent instance_npcname("Sara Irene#sarains20")+"::OnDisable";
+ donpcevent(instance_npcname("Sara Irene#sarains20")+"::OnDisable");
end;
OnEnable:
- enablenpc instance_npcname("Sara Irene#sarains20");
- hideoffnpc instance_npcname("Sara Irene#sarains20");
- stopnpctimer;
+ enablenpc(instance_npcname("Sara Irene#sarains20"));
+ hideoffnpc(instance_npcname("Sara Irene#sarains20"));
+ stopnpctimer();
end;
OnDisable:
- hideonnpc instance_npcname("Sara Irene#sarains20");
- disablenpc instance_npcname("Sara Irene#sarains20");
+ hideonnpc(instance_npcname("Sara Irene#sarains20"));
+ disablenpc(instance_npcname("Sara Irene#sarains20"));
end;
}
@@ -1714,23 +1713,23 @@ OnDisable:
end;
OnTouch:
npctalk(_("Daddy!"));
- initnpctimer;
- donpcevent instance_npcname("Sara Irene#sarains21")+"::OnDisable";
+ initnpctimer();
+ donpcevent(instance_npcname("Sara Irene#sarains21")+"::OnDisable");
end;
OnTimer60000:
- donpcevent instance_npcname("Sara Irene#sarains21")+"::OnEnable";
+ donpcevent(instance_npcname("Sara Irene#sarains21")+"::OnEnable");
end;
OnInstanceInit:
- donpcevent instance_npcname("Sara Irene#sarains21")+"::OnDisable";
+ donpcevent(instance_npcname("Sara Irene#sarains21")+"::OnDisable");
end;
OnEnable:
- enablenpc instance_npcname("Sara Irene#sarains21");
- hideoffnpc instance_npcname("Sara Irene#sarains21");
- stopnpctimer;
+ enablenpc(instance_npcname("Sara Irene#sarains21"));
+ hideoffnpc(instance_npcname("Sara Irene#sarains21"));
+ stopnpctimer();
end;
OnDisable:
- hideonnpc instance_npcname("Sara Irene#sarains21");
- disablenpc instance_npcname("Sara Irene#sarains21");
+ hideonnpc(instance_npcname("Sara Irene#sarains21"));
+ disablenpc(instance_npcname("Sara Irene#sarains21"));
end;
}
@@ -1738,23 +1737,23 @@ OnDisable:
end;
OnTouch:
npctalk("........");
- initnpctimer;
- donpcevent instance_npcname("Sara Irene#sarains22")+"::OnDisable";
+ initnpctimer();
+ donpcevent(instance_npcname("Sara Irene#sarains22")+"::OnDisable");
end;
OnTimer60000:
- donpcevent instance_npcname("Sara Irene#sarains22")+"::OnEnable";
+ donpcevent(instance_npcname("Sara Irene#sarains22")+"::OnEnable");
end;
OnInstanceInit:
- donpcevent instance_npcname("Sara Irene#sarains22")+"::OnDisable";
+ donpcevent(instance_npcname("Sara Irene#sarains22")+"::OnDisable");
end;
OnEnable:
- enablenpc instance_npcname("Sara Irene#sarains22");
- hideoffnpc instance_npcname("Sara Irene#sarains22");
- stopnpctimer;
+ enablenpc(instance_npcname("Sara Irene#sarains22"));
+ hideoffnpc(instance_npcname("Sara Irene#sarains22"));
+ stopnpctimer();
end;
OnDisable:
- hideonnpc instance_npcname("Sara Irene#sarains22");
- disablenpc instance_npcname("Sara Irene#sarains22");
+ hideonnpc(instance_npcname("Sara Irene#sarains22"));
+ disablenpc(instance_npcname("Sara Irene#sarains22"));
end;
}
@@ -1762,22 +1761,22 @@ OnDisable:
end;
OnTouch:
npctalk(_("Why?"));
- initnpctimer;
- donpcevent instance_npcname("Sara Irene#sarains23")+"::OnDisable";
+ initnpctimer();
+ donpcevent(instance_npcname("Sara Irene#sarains23")+"::OnDisable");
end;
OnTimer60000:
- donpcevent instance_npcname("Sara Irene#sarains23")+"::OnEnable";
+ donpcevent(instance_npcname("Sara Irene#sarains23")+"::OnEnable");
end;
OnInstanceInit:
- donpcevent instance_npcname("Sara Irene#sarains23")+"::OnDisable";
+ donpcevent(instance_npcname("Sara Irene#sarains23")+"::OnDisable");
end;
OnEnable:
- enablenpc instance_npcname("Sara Irene#sarains23");
- hideoffnpc instance_npcname("Sara Irene#sarains23");
- stopnpctimer;
+ enablenpc(instance_npcname("Sara Irene#sarains23"));
+ hideoffnpc(instance_npcname("Sara Irene#sarains23"));
+ stopnpctimer();
end;
OnDisable:
- hideonnpc instance_npcname("Sara Irene#sarains23");
- disablenpc instance_npcname("Sara Irene#sarains23");
+ hideonnpc(instance_npcname("Sara Irene#sarains23"));
+ disablenpc(instance_npcname("Sara Irene#sarains23"));
end;
}
diff --git a/src/login/lclif.c b/src/login/lclif.c
index f32538610..47b2526c4 100644
--- a/src/login/lclif.c
+++ b/src/login/lclif.c
@@ -284,7 +284,7 @@ bool lclif_send_server_list(struct login_session_data *sd)
packet->server_list[n].ip = htonl((subnet_char_ip) ? subnet_char_ip : server[i].ip);
packet->server_list[n].port = sockt->ntows(htons(server[i].port)); // [!] LE byte order here [!]
safestrncpy(packet->server_list[n].name, server[i].name, 20);
- packet->server_list[n].usercount = server[i].users;
+ packet->server_list[n].usercount = login->convert_users_to_colors(server[i].users);
if (server[i].type == CST_PAYING && sd->expiration_time > time(NULL))
packet->server_list[n].property = CST_NORMAL;
diff --git a/src/login/login.c b/src/login/login.c
index ae584206f..3db9558b8 100644
--- a/src/login/login.c
+++ b/src/login/login.c
@@ -1604,7 +1604,7 @@ bool login_config_read_account(const char *filename, struct config_t *config, bo
/**
* Frees login->config->client_hash_nodes
**/
-void clear_client_hash_nodes(void)
+void login_clear_client_hash_nodes(void)
{
struct client_hash_node *node = login->config->client_hash_nodes;
@@ -1618,7 +1618,7 @@ void clear_client_hash_nodes(void)
}
/**
- * Reads information from login_configuration.permission.hash.md5_hashes.
+ * Reads information from login_configuration.permission.hash.md5_hashes (unused function)
*
* @param setting The setting to read from.
*/
@@ -1627,7 +1627,7 @@ void login_config_set_md5hash(struct config_setting_t *setting)
int i;
int count = libconfig->setting_length(setting);
- clear_client_hash_nodes();
+ login->clear_client_hash_nodes();
// There's no need to parse if it's disabled or if there's no list
if (count <= 0 || !login->config->client_hash_check)
@@ -1702,7 +1702,7 @@ bool login_config_read_permission_hash(const char *filename, struct config_t *co
libconfig->setting_lookup_bool_real(setting, "enabled", &login->config->client_hash_check);
if ((setting = libconfig->lookup(config, "login_configuration/permission/hash/MD5_hashes")) != NULL)
- login_config_set_md5hash(setting);
+ login->config_set_md5hash(setting);
return true;
}
@@ -1710,7 +1710,7 @@ bool login_config_read_permission_hash(const char *filename, struct config_t *co
/**
* Clears login->config->dnsbl_servers, freeing any allocated memory.
*/
-void clear_dnsbl_servers(void)
+void login_clear_dnsbl_servers(void)
{
while (VECTOR_LENGTH(login->config->dnsbl_servers) > 0) {
aFree(&VECTOR_POP(login->config->dnsbl_servers));
@@ -1728,7 +1728,7 @@ void login_config_set_dnsbl_servers(struct config_setting_t *setting)
int i;
int count = libconfig->setting_length(setting);
- clear_dnsbl_servers();
+ login->clear_dnsbl_servers();
// There's no need to parse if it's disabled
if (count <= 0 || !login->config->use_dnsbl)
@@ -1772,7 +1772,7 @@ bool login_config_read_permission_blacklist(const char *filename, struct config_
libconfig->setting_lookup_bool_real(setting, "enabled", &login->config->use_dnsbl);
if ((setting = libconfig->lookup(config, "login_configuration/permission/DNS_blacklist/dnsbl_servers")) != NULL)
- login_config_set_dnsbl_servers(setting);
+ login->config_set_dnsbl_servers(setting);
return true;
}
@@ -1806,15 +1806,47 @@ bool login_config_read_permission(const char *filename, struct config_t *config,
libconfig->setting_lookup_bool_real(setting, "check_client_version", &login->config->check_client_version);
libconfig->setting_lookup_uint32(setting, "client_version_to_connect", &login->config->client_version_to_connect);
- if (!login_config_read_permission_hash(filename, config, imported))
+ if (!login->config_read_permission_hash(filename, config, imported))
retval = false;
- if (!login_config_read_permission_blacklist(filename, config, imported))
+ if (!login->config_read_permission_blacklist(filename, config, imported))
retval = false;
return retval;
}
/**
+ * Reads 'login_configuration.users_count' and initializes required variables.
+ *
+ * @param filename Path to configuration file (used in error and warning messages).
+ * @param config The current config being parsed.
+ * @param imported Whether the current config is imported from another file.
+ *
+ * @retval false in case of error.
+ */
+bool login_config_read_users(const char *filename, struct config_t *config, bool imported)
+{
+ struct config_setting_t *setting = NULL;
+ bool retval = true;
+
+ nullpo_retr(false, filename);
+ nullpo_retr(false, config);
+
+ if ((setting = libconfig->lookup(config, "login_configuration/users_count")) == NULL) {
+ if (imported)
+ return true;
+ ShowError("login_config_read: login_configuration/users_count was not found in %s!\n", filename);
+ return false;
+ }
+
+ libconfig->setting_lookup_bool_real(setting, "send_user_count_description", &login->config->send_user_count_description);
+ libconfig->setting_lookup_uint32(setting, "low", &login->config->users_low);
+ libconfig->setting_lookup_uint32(setting, "medium", &login->config->users_medium);
+ libconfig->setting_lookup_uint32(setting, "high", &login->config->users_high);
+
+ return retval;
+}
+
+/**
* Reads the 'login-config' configuration file and initializes required variables.
*
* @param filename Path to configuration file.
@@ -1833,15 +1865,17 @@ bool login_config_read(const char *filename, bool imported)
if (!libconfig->load_file(&config, filename))
return false; // Error message is already shown by libconfig->load_file
- if (!login_config_read_inter(filename, &config, imported))
+ if (!login->config_read_inter(filename, &config, imported))
retval = false;
- if (!login_config_read_console(filename, &config, imported))
+ if (!login->config_read_console(filename, &config, imported))
retval = false;
- if (!login_config_read_log(filename, &config, imported))
+ if (!login->config_read_log(filename, &config, imported))
retval = false;
- if (!login_config_read_account(filename, &config, imported))
+ if (!login->config_read_account(filename, &config, imported))
retval = false;
- if (!login_config_read_permission(filename, &config, imported))
+ if (!login->config_read_permission(filename, &config, imported))
+ retval = false;
+ if (!login->config_read_users(filename, &config, imported))
retval = false;
if (!loginlog_config_read("conf/common/inter-server.conf", imported)) // Only inter-server
@@ -1866,6 +1900,30 @@ bool login_config_read(const char *filename, bool imported)
return retval;
}
+/**
+ * Convert users count to colors.
+ *
+ * @param users Actual users count.
+ *
+ * @retval users count or color id.
+ **/
+uint16 login_convert_users_to_colors(uint16 users)
+{
+#if PACKETVER >= 20170726
+ if (!login->config->send_user_count_description)
+ return 4;
+ if (users <= login->config->users_low)
+ return 0;
+ else if (users <= login->config->users_medium)
+ return 1;
+ else if (users <= login->config->users_high)
+ return 2;
+ return 3;
+#else
+ return users;
+#endif
+}
+
//--------------------------------------
// Function called at exit of the server
//--------------------------------------
@@ -1877,8 +1935,8 @@ int do_final(void)
HPM->event(HPET_FINAL);
- clear_client_hash_nodes();
- clear_dnsbl_servers();
+ login->clear_client_hash_nodes();
+ login->clear_dnsbl_servers();
login_log(0, "login server", 100, "login server shutdown");
@@ -2168,6 +2226,20 @@ void login_defaults(void) {
login->config_set_defaults = login_config_set_defaults;
login->config_read = login_config_read;
+ login->config_read_inter = login_config_read_inter;
+ login->config_read_console = login_config_read_console;
+ login->config_read_log = login_config_read_log;
+ login->config_read_account = login_config_read_account;
+ login->config_read_permission = login_config_read_permission;
+ login->config_read_permission_hash = login_config_read_permission_hash;
+ login->config_read_permission_blacklist = login_config_read_permission_blacklist;
+ login->config_read_users = login_config_read_users;
+ login->config_set_dnsbl_servers = login_config_set_dnsbl_servers;
+
+ login->clear_dnsbl_servers = login_clear_dnsbl_servers;
+ login->clear_client_hash_nodes = login_clear_client_hash_nodes;
+ login->config_set_md5hash = login_config_set_md5hash;
+ login->convert_users_to_colors = login_convert_users_to_colors;
login->LOGIN_CONF_NAME = NULL;
login->NET_CONF_NAME = NULL;
}
diff --git a/src/login/login.h b/src/login/login.h
index 5632e6529..d5c9972c0 100644
--- a/src/login/login.h
+++ b/src/login/login.h
@@ -32,6 +32,8 @@
struct mmo_account;
struct AccountDB;
+struct config_t;
+struct config_setting_t;
enum E_LOGINSERVER_ST
{
@@ -119,6 +121,11 @@ struct Login_Config {
bool use_dnsbl; ///< dns blacklist blocking ?
VECTOR_DECL(char *) dnsbl_servers; ///< dnsbl servers
+ bool send_user_count_description;
+ uint32 users_low;
+ uint32 users_medium;
+ uint32 users_high;
+
bool client_hash_check; ///< flags for checking client md5
// TODO: VECTOR candidate
struct client_hash_node *client_hash_nodes; ///< linked list containg md5 hash for each gm group
@@ -209,6 +216,19 @@ struct login_interface {
void (*parse_request_connection) (int fd, struct login_session_data* sd, const char *ip, uint32 ipl);
void (*config_set_defaults) (void);
bool (*config_read) (const char *filename, bool included);
+ bool (*config_read_inter) (const char *filename, struct config_t *config, bool imported);
+ bool (*config_read_console) (const char *filename, struct config_t *config, bool imported);
+ bool (*config_read_log) (const char *filename, struct config_t *config, bool imported);
+ bool (*config_read_account) (const char *filename, struct config_t *config, bool imported);
+ bool (*config_read_permission) (const char *filename, struct config_t *config, bool imported);
+ bool (*config_read_permission_hash) (const char *filename, struct config_t *config, bool imported);
+ bool (*config_read_permission_blacklist) (const char *filename, struct config_t *config, bool imported);
+ bool (*config_read_users) (const char *filename, struct config_t *config, bool imported);
+ void (*clear_dnsbl_servers) (void);
+ void (*config_set_dnsbl_servers) (struct config_setting_t *setting);
+ void (*clear_client_hash_nodes) (void);
+ void (*config_set_md5hash) (struct config_setting_t *setting);
+ uint16 (*convert_users_to_colors) (uint16 users);
char *LOGIN_CONF_NAME;
char *NET_CONF_NAME; ///< Network configuration filename
};
diff --git a/src/map/clif.c b/src/map/clif.c
index 088c92ea8..4dc36be6d 100644
--- a/src/map/clif.c
+++ b/src/map/clif.c
@@ -293,7 +293,11 @@ unsigned char clif_bl_type(struct block_list *bl)
case BL_NPC:
vd = status->get_viewdata(bl);
nullpo_retr(CLUT_NPC, vd);
+#if PACKETVER >= 20170726
+ return CLUT_EVENT;
+#else
return pc->db_checkid(vd->class) ? CLUT_PC : CLUT_EVENT;
+#endif
case BL_PET:
vd = status->get_viewdata(bl);
nullpo_retr(CLUT_NPC, vd);
@@ -1067,14 +1071,17 @@ void clif_set_unit_idle(struct block_list* bl, struct map_session_data *tsd, enu
#endif
#if PACKETVER >= 20120221
if (battle_config.show_monster_hp_bar && bl->type == BL_MOB && status_get_hp(bl) < status_get_max_hp(bl)) {
- const struct mob_data *md = BL_UCCAST(BL_MOB, bl);
p.maxHP = status_get_max_hp(bl);
p.HP = status_get_hp(bl);
- p.isBoss = (md->spawn != NULL && md->spawn->state.boss) ? 1 : 0;
} else {
p.maxHP = -1;
p.HP = -1;
- p.isBoss = 0;
+ }
+ if (bl->type == BL_MOB) {
+ const struct mob_data *md = BL_UCCAST(BL_MOB, bl);
+ p.isBoss = (md->spawn != NULL) ? md->spawn->state.boss : BTYPE_NONE;
+ } else {
+ p.isBoss = BTYPE_NONE;
}
#endif
#if PACKETVER >= 20150513
@@ -1216,14 +1223,17 @@ void clif_spawn_unit(struct block_list* bl, enum send_target target) {
#endif
#if PACKETVER >= 20120221
if (battle_config.show_monster_hp_bar && bl->type == BL_MOB && status_get_hp(bl) < status_get_max_hp(bl)) {
- const struct mob_data *md = BL_UCCAST(BL_MOB, bl);
p.maxHP = status_get_max_hp(bl);
p.HP = status_get_hp(bl);
- p.isBoss = (md->spawn != NULL && md->spawn->state.boss) ? 1 : 0;
} else {
p.maxHP = -1;
p.HP = -1;
- p.isBoss = 0;
+ }
+ if (bl->type == BL_MOB) {
+ const struct mob_data *md = BL_UCCAST(BL_MOB, bl);
+ p.isBoss = (md->spawn != NULL) ? md->spawn->state.boss : BTYPE_NONE;
+ } else {
+ p.isBoss = BTYPE_NONE;
}
#endif
#if PACKETVER >= 20150513
@@ -1315,14 +1325,17 @@ void clif_set_unit_walking(struct block_list* bl, struct map_session_data *tsd,
#endif
#if PACKETVER >= 20120221
if (battle_config.show_monster_hp_bar && bl->type == BL_MOB && status_get_hp(bl) < status_get_max_hp(bl)) {
- const struct mob_data *md = BL_UCCAST(BL_MOB, bl);
p.maxHP = status_get_max_hp(bl);
p.HP = status_get_hp(bl);
- p.isBoss = (md->spawn != NULL && md->spawn->state.boss) ? 1 : 0;
} else {
p.maxHP = -1;
p.HP = -1;
- p.isBoss = 0;
+ }
+ if (bl->type == BL_MOB) {
+ const struct mob_data *md = BL_UCCAST(BL_MOB, bl);
+ p.isBoss = (md->spawn != NULL) ? md->spawn->state.boss : BTYPE_NONE;
+ } else {
+ p.isBoss = BTYPE_NONE;
}
#endif
#if PACKETVER >= 20150513
@@ -3332,17 +3345,22 @@ void clif_changelook(struct block_list *bl,int type,int val)
#if PACKETVER < 4
clif->sendlook(bl, bl->id, type, val, 0, target);
#else
- if(type == LOOK_WEAPON || type == LOOK_SHIELD) {
- nullpo_retv(vd);
- type = LOOK_WEAPON;
- val = vd->weapon;
- val2 = vd->shield;
- }
- if (clif->isdisguised(bl)) {
- clif->sendlook(bl, bl->id, type, val, val2, AREA_WOS);
- clif->sendlook(bl, -bl->id, type, val, val2, SELF);
+ if (bl->type != BL_NPC) {
+ if(type == LOOK_WEAPON || type == LOOK_SHIELD) {
+ nullpo_retv(vd);
+ type = LOOK_WEAPON;
+ val = vd->weapon;
+ val2 = vd->shield;
+ }
+ if (clif->isdisguised(bl)) {
+ clif->sendlook(bl, bl->id, type, val, val2, AREA_WOS);
+ clif->sendlook(bl, -bl->id, type, val, val2, SELF);
+ } else {
+ clif->sendlook(bl, bl->id, type, val, val2, target);
+ }
} else {
- clif->sendlook(bl, bl->id, type, val, val2, target);
+ struct npc_data *nd = BL_UCAST(BL_NPC, bl);
+ npc->refresh(nd);
}
#endif
}
diff --git a/src/map/map.c b/src/map/map.c
index ff5c2aafd..5a647625f 100644
--- a/src/map/map.c
+++ b/src/map/map.c
@@ -1840,7 +1840,7 @@ void map_addiddb(struct block_list *bl)
struct mob_data *md = BL_UCAST(BL_MOB, bl);
idb_put(map->mobid_db,bl->id,bl);
- if( md->state.boss )
+ if (md->state.boss == BTYPE_MVP)
idb_put(map->bossid_db, bl->id, bl);
}
diff --git a/src/map/map.h b/src/map/map.h
index 3221c73cd..5835b5abc 100644
--- a/src/map/map.h
+++ b/src/map/map.h
@@ -519,7 +519,7 @@ struct spawn_data {
//0: Normal mob | 1: Standard summon, attacks mobs
//2: Alchemist Marine Sphere | 3: Alchemist Summon Flora | 4: Summon Zanzou
unsigned int dynamic : 1; ///< Whether this data is indexed by a map's dynamic mob list
- unsigned int boss : 1; ///< 0: Non-boss monster | 1: Boss monster
+ uint8 boss; ///< 0: Non-boss monster | 1: Boss monster | 2: MVP
} state;
char name[NAME_LENGTH], eventname[EVENT_NAME_LENGTH]; //Name/event
};
diff --git a/src/map/mob.c b/src/map/mob.c
index 822b84bf4..208617b5d 100644
--- a/src/map/mob.c
+++ b/src/map/mob.c
@@ -2686,7 +2686,7 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type) {
return 5; // Note: Actually, it's 4. Oh well...
// MvP tomb [GreenBox]
- if (battle_config.mvp_tomb_enabled && md->spawn->state.boss && map->list[md->bl.m].flag.notomb != 1)
+ if (battle_config.mvp_tomb_enabled && md->spawn->state.boss == BTYPE_MVP && map->list[md->bl.m].flag.notomb != 1)
mob->mvptomb_create(md, mvp_sd ? mvp_sd->status.name : NULL, time(NULL));
if( !rebirth ) {
diff --git a/src/map/mob.h b/src/map/mob.h
index 7f2accedf..83e022899 100644
--- a/src/map/mob.h
+++ b/src/map/mob.h
@@ -69,6 +69,12 @@ struct hplugin_data_store;
// Disable this to make monsters not do any path search when looking for a target (old behavior).
#define ACTIVEPATHSEARCH
+enum e_bosstype {
+ BTYPE_NONE = 0,
+ BTYPE_BOSS = 1,
+ BTYPE_MVP = 2,
+};
+
//Mob skill states.
enum MobSkillState {
MSS_ANY = -1,
@@ -181,10 +187,10 @@ struct mob_data {
unsigned int spotted: 1;
unsigned int npc_killmonster: 1; //for new killmonster behavior
unsigned int rebirth: 1; // NPC_Rebirth used
- unsigned int boss : 1;
enum MobSkillState skillstate;
unsigned char steal_flag; //number of steal tries (to prevent steal exploit on mobs with few items) [Lupus]
unsigned char attacked_count; //For rude attacked.
+ uint8 boss;
int provoke_flag; // Celest
} state;
struct guardian_data* guardian_data;
diff --git a/src/map/npc.c b/src/map/npc.c
index ecf7f878f..0702b2525 100644
--- a/src/map/npc.c
+++ b/src/map/npc.c
@@ -114,6 +114,8 @@ bool npc_db_checkid(int id)
return true;
if (id >= MAX_NPC_CLASS2_START && id < MAX_NPC_CLASS2_END) // Second range
return true;
+ if (pc->db_checkid(id))
+ return true;
// Anything else is invalid
return false;
}
@@ -2706,6 +2708,7 @@ struct npc_data *npc_create_npc(enum npc_subtype subtype, int m, int x, int y, u
nd->area_size = AREA_SIZE + 1;
nd->class_ = class_;
nd->speed = 200;
+ nd->vd.class = 0;
return nd;
}
@@ -3656,6 +3659,18 @@ void npc_setclass(struct npc_data* nd, short class_) {
clif->spawn(&nd->bl);// fade in
}
+void npc_refresh(struct npc_data* nd)
+{
+ nullpo_retv(nd);
+
+ if (map->list[nd->bl.m].users) {
+ // using here CLR_TRICKDEAD because other flags show effects.
+ // probably need use other flag or other way to refresh npc.
+ clif->clearunit_area(&nd->bl, CLR_TRICKDEAD); // fade out
+ clif->spawn(&nd->bl); // fade in
+ }
+}
+
// @commands (script based)
int npc_do_atcmd_event(struct map_session_data* sd, const char* command, const char* message, const char* eventname)
{
@@ -3843,7 +3858,12 @@ const char *npc_parse_mob(const char *w1, const char *w2, const char *w3, const
memset(&mobspawn, 0, sizeof(struct spawn_data));
- mobspawn.state.boss = (strcmp(w2,"boss_monster") == 0 ? 1 : 0);
+ if (strcmp(w2, "boss_monster") == 0)
+ mobspawn.state.boss = BTYPE_MVP;
+ else if (strcmp(w2, "miniboss_monster") == 0)
+ mobspawn.state.boss = BTYPE_BOSS;
+ else
+ mobspawn.state.boss = BTYPE_NONE;
// w1=<map name>,<x>,<y>,<xs>,<ys>
// w3=<mob name>{,<mob level>}
@@ -4662,7 +4682,7 @@ int npc_parsesrcfile(const char* filepath, bool runOnInit) {
{
p = npc->parse_duplicate(w1,w2,w3,w4, p, buffer, filepath, (runOnInit?NPO_ONINIT:NPO_NONE), &success);
}
- else if( (strcmp(w2,"monster") == 0 || strcmp(w2,"boss_monster") == 0) )
+ else if (strcmp(w2,"monster") == 0 || strcmp(w2,"boss_monster") == 0 || strcmp(w2,"miniboss_monster") == 0)
{
p = npc->parse_mob(w1, w2, w3, w4, p, buffer, filepath, &success);
}
@@ -4994,7 +5014,6 @@ int do_init_npc(bool minimal) {
npc_viewdb[i].class = i;
for( i = MAX_NPC_CLASS2_START; i < MAX_NPC_CLASS2_END; i++ )
npc_viewdb2[i - MAX_NPC_CLASS2_START].class = i;
-
npc->ev_db = strdb_alloc(DB_OPT_DUP_KEY|DB_OPT_RELEASE_DATA, EVENT_NAME_LENGTH);
npc->ev_label_db = strdb_alloc(DB_OPT_DUP_KEY|DB_OPT_RELEASE_DATA, NAME_LENGTH);
npc->name_db = strdb_alloc(DB_OPT_BASE, NAME_LENGTH);
@@ -5189,4 +5208,5 @@ void npc_defaults(void) {
npc->market_delfromsql = npc_market_delfromsql;
npc->market_delfromsql_sub = npc_market_delfromsql_sub;
npc->db_checkid = npc_db_checkid;
+ npc->refresh = npc_refresh;
}
diff --git a/src/map/npc.h b/src/map/npc.h
index 3bd11d536..8bb38f252 100644
--- a/src/map/npc.h
+++ b/src/map/npc.h
@@ -70,7 +70,7 @@ struct npc_parse;
struct npc_data {
struct block_list bl;
struct unit_data *ud;
- struct view_data *vd;
+ struct view_data vd;
unsigned int option;
struct npc_data *master_nd;
short class_;
@@ -309,6 +309,7 @@ struct npc_interface {
void (*market_delfromsql) (struct npc_data *nd, unsigned short index);
void (*market_delfromsql_sub) (const char *npcname, unsigned short index);
bool (*db_checkid) (const int id);
+ void (*refresh) (struct npc_data* nd);
/**
* For the Secure NPC Timeout option (check config/Secure.h) [RR]
**/
diff --git a/src/map/packets.h b/src/map/packets.h
index e9d895440..3fcf1648a 100644
--- a/src/map/packets.h
+++ b/src/map/packets.h
@@ -10669,4 +10669,78 @@ packet(0x96e,-1,clif->ackmergeitems);
packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
#endif
+// 2017-10-25eRagexeRE
+#if PACKETVER == 20171025
+// shuffle packets
+ packet(0x0202,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x022d,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x023b,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0281,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x035f,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0360,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0361,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0362,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x0363,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x0364,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x0365,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x0366,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0368,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0369,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x0436,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0437,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x0438,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+ packet(0x07e4,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x07ec,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0802,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x0811,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0815,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x0817,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x0819,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0835,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0838,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x083c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x08a2,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x096a,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+#endif
+
+// 2017-11-01bRagexeRE
+#if PACKETVER == 20171101
+// shuffle packets
+ packet(0x022d,36,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD
+ packet(0x0368,19,clif->pWantToConnection,2,6,10,14,18); // CZ_ENTER
+ packet(0x0369,-1,clif->pSearchStoreInfo,2,4,5,9,13,14,15); // CZ_SEARCH_STORE_INFO
+ packet(0x0438,6,clif->pTickSend,2); // CZ_REQUEST_TIME
+ packet(0x0835,6,clif->pDropItem,2,4); // CZ_ITEM_THROW
+ packet(0x085b,5,clif->pHomMenu,2,4); // CZ_COMMAND_MER
+ packet(0x0860,6,clif->pGetCharNameRequest,2); // CZ_REQNAME
+ packet(0x086c,10,clif->pUseSkillToId,2,4,6); // CZ_USE_SKILL
+ packet(0x0872,26,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS
+ packet(0x0876,5,clif->pChangeDir,2,4); // CZ_CHANGE_DIRECTION
+ packet(0x0886,8,clif->pDull/*,XXX*/); // CZ_JOIN_BATTLE_FIELD
+ packet(0x088e,6,clif->pReqClickBuyingStore,2); // CZ_REQ_CLICK_TO_BUYING_STORE
+ packet(0x0890,2,clif->pSearchStoreInfoNextPage,0); // CZ_SEARCH_STORE_INFO_NEXT_PAGE
+ packet(0x0895,4,clif->pDull/*,XXX*/); // CZ_GANGSI_RANK
+ packet(0x0899,26,clif->pPartyInvite2,2); // CZ_PARTY_JOIN_REQ
+ packet(0x089b,-1,clif->pReqOpenBuyingStore,2,4,8,9,89); // CZ_REQ_OPEN_BUYING_STORE
+ packet(0x089c,18,clif->pPartyBookingRegisterReq,2,4); // CZ_PARTY_BOOKING_REQ_REGISTER
+ packet(0x08a0,8,clif->pMoveFromKafra,2,4); // CZ_MOVE_ITEM_FROM_STORE_TO_BODY
+ packet(0x08ab,-1,clif->pItemListWindowSelected,2,4,8); // CZ_ITEMLISTWIN_RES
+ packet(0x08ad,12,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK
+ packet(0x091b,8,clif->pMoveToKafra,2,4); // CZ_MOVE_ITEM_FROM_BODY_TO_STORE
+ packet(0x0939,5,clif->pWalkToXY,2); // CZ_REQUEST_MOVE
+ packet(0x094a,2,clif->pReqCloseBuyingStore,0); // CZ_REQ_CLOSE_BUYING_STORE
+ packet(0x094d,6,clif->pSolveCharName,2); // CZ_REQNAME_BYGID
+ packet(0x0952,90,clif->pUseSkillToPosMoreInfo,2,4,6,8,10); // CZ_USE_SKILL_TOGROUND_WITHTALKBOX
+ packet(0x0957,7,clif->pActionRequest,2,6); // CZ_REQUEST_ACT
+ packet(0x095a,-1,clif->pReqTradeBuyingStore,2,4,8,12); // CZ_REQ_TRADE_BUYING_STORE
+ packet(0x0962,6,clif->pTakeItem,2); // CZ_ITEM_PICKUP
+ packet(0x0966,10,clif->pUseSkillToPos,2,4,6,8); // CZ_USE_SKILL_TOGROUND
+#endif
+
+// 2017-11-01bRagexeRE
+#if PACKETVER >= 20171101
+// new packets
+ packet(0x0ae1,28);
+#endif
+
#endif /* MAP_PACKETS_H */
diff --git a/src/map/packets_keys.h b/src/map/packets_keys.h
index 85796813a..005c3790b 100644
--- a/src/map/packets_keys.h
+++ b/src/map/packets_keys.h
@@ -2,7 +2,7 @@
* This file is part of Hercules.
* http://herc.ws - http://github.com/HerculesWS/Hercules
*
- * Copyright (C) 2013-2015 Hercules Dev Team
+ * Copyright (C) 2013-2017 Hercules Dev Team
*
* Hercules is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -2057,7 +2057,7 @@
packetKeys(0x03FA5A97,0x20B802D5,0x339F1977);
#endif
-// 2017-06-07bRagexeRE
+// 2017-06-07bRagexeRE, 2017-06-07cRagexeRE
#if PACKETVER == 20170607
packetKeys(0x50564ACD,0x79CA4E15,0x405F4894);
#endif
@@ -2152,6 +2152,16 @@
packetKeys(0x2CAA109C,0x158C1EC2,0x7A5E58F3);
#endif
+// 2017-10-25bRagexeRE, 2017-10-25cRagexeRE, 2017-10-25dRagexeRE, 2017-10-25eRagexeRE
+#if PACKETVER == 20171025
+ packetKeys(0x165C565C,0x565C565C,0x565C565C);
+#endif
+
+// 2017-11-01bRagexeRE
+#if PACKETVER == 20171101
+ packetKeys(0x7056317F,0x7EEE0589,0x02672373);
+#endif
+
#if defined(OBFUSCATIONKEY1) && defined(OBFUSCATIONKEY2) && defined(OBFUSCATIONKEY3)
packetKeys(OBFUSCATIONKEY1,OBFUSCATIONKEY2,OBFUSCATIONKEY3);
diff --git a/src/map/script.c b/src/map/script.c
index d2101d21f..5773457a7 100644
--- a/src/map/script.c
+++ b/src/map/script.c
@@ -14270,31 +14270,36 @@ BUILDIN(setequipoption)
if (equip_index > 0 && equip_index <= ARRAYLENGTH(script->equip)) {
if ((i = pc->checkequip(sd, script->equip[equip_index - 1])) == -1) {
- ShowError("buildin_setequipoptioninfo: No equipment is equipped in the given index %d.\n", equip_index);
+ ShowError("buildin_setequipoption: No equipment is equipped in the given index %d.\n", equip_index);
script_pushint(st, 0);
return false;
}
} else {
- ShowError("buildin_setequipoptioninfo: Invalid equipment index %d provided.\n", equip_index);
+ ShowError("buildin_setequipoption: Invalid equipment index %d provided.\n", equip_index);
script_pushint(st, 0);
return false;
}
if (sd->status.inventory[i].nameid != 0) {
-
- if ((ito = itemdb->option_exists(opt_index)) == NULL) {
- script_pushint(st, 0);
- ShowError("buildin_setequipotion: Option index %d does not exist!\n", opt_index);
- return false;
- } else if (value < -INT16_MAX || value > INT16_MAX) {
- script_pushint(st, 0);
- ShowError("buildin_setequipotion: Option value %d exceeds maximum limit (%d to %d) for type!\n", value, -INT16_MAX, INT16_MAX);
- return false;
+ if (opt_index == 0) {
+ // Remove the option
+ sd->status.inventory[i].option[slot-1].index = 0;
+ sd->status.inventory[i].option[slot-1].value = 0;
+ } else {
+ if ((ito = itemdb->option_exists(opt_index)) == NULL) {
+ script_pushint(st, 0);
+ ShowError("buildin_setequipotion: Option index %d does not exist!\n", opt_index);
+ return false;
+ } else if (value < -INT16_MAX || value > INT16_MAX) {
+ script_pushint(st, 0);
+ ShowError("buildin_setequipotion: Option value %d exceeds maximum limit (%d to %d) for type!\n", value, -INT16_MAX, INT16_MAX);
+ return false;
+ }
+ /* Add Option Index */
+ sd->status.inventory[i].option[slot-1].index = ito->index;
+ /* Add Option Value */
+ sd->status.inventory[i].option[slot-1].value = value;
}
- /* Add Option Index */
- sd->status.inventory[i].option[slot-1].index = ito->index;
- /* Add Option Value */
- sd->status.inventory[i].option[slot-1].value = value;
/* Unequip and simulate deletion of the item. */
pc->unequipitem(sd, i, PCUNEQUIPITEM_FORCE); // status calc will happen in pc->equipitem() below
@@ -15866,11 +15871,12 @@ enum logmes_type {
/*==========================================
* Allows player to write logs (i.e. Bank NPC, etc) [Lupus]
*------------------------------------------*/
-BUILDIN(logmes) {
+BUILDIN(logmes)
+{
const char *str = script_getstr(st, 2);
struct map_session_data *sd = script->rid2sd(st);
enum logmes_type type = LOGMES_NPC;
- nullpo_retr(sd, false);
+ nullpo_retr(false, sd);
if (script_hasdata(st, 3)) {
type = script_getnum(st, 3);
@@ -18211,6 +18217,8 @@ BUILDIN(setunitdata)
case UDT_INTIMACY:
case UDT_LIFETIME:
case UDT_MERC_KILLCOUNT:
+ case UDT_ROBE:
+ case UDT_BODY2:
setunitdata_check_min(4, 0);
break;
case UDT_MASTERAID:
@@ -19149,6 +19157,40 @@ BUILDIN(setunitdata)
case UDT_DMOTION:
nd->status.dmotion = (unsigned short) val;
break;
+ case UDT_SEX:
+ nd->vd.sex = (char)val;
+ npc->refresh(nd);
+ break;
+ case UDT_HAIRSTYLE:
+ clif->changelook(bl, LOOK_HAIR, val);
+ break;
+ case UDT_HAIRCOLOR:
+ clif->changelook(bl, LOOK_HAIR_COLOR, val);
+ break;
+ case UDT_HEADBOTTOM:
+ clif->changelook(bl, LOOK_HEAD_BOTTOM, val);
+ break;
+ case UDT_HEADMIDDLE:
+ clif->changelook(bl, LOOK_HEAD_MID, val);
+ break;
+ case UDT_HEADTOP:
+ clif->changelook(bl, LOOK_HEAD_TOP, val);
+ break;
+ case UDT_CLOTHCOLOR:
+ clif->changelook(bl, LOOK_CLOTHES_COLOR, val);
+ break;
+ case UDT_SHIELD:
+ clif->changelook(bl, LOOK_SHIELD, val);
+ break;
+ case UDT_WEAPON:
+ clif->changelook(bl, LOOK_WEAPON, val);
+ break;
+ case UDT_ROBE:
+ clif->changelook(bl, LOOK_ROBE, val);
+ break;
+ case UDT_BODY2:
+ clif->changelook(bl, LOOK_BODY2, val);
+ break;
default:
ShowWarning("buildin_setunitdata: Invalid data type '%s' for NPC unit.\n", udtype);
script_pushint(st, 0);
@@ -19559,6 +19601,18 @@ BUILDIN(getunitdata)
case UDT_AMOTION: script_pushint(st, nd->status.amotion); break;
case UDT_ADELAY: script_pushint(st, nd->status.adelay); break;
case UDT_DMOTION: script_pushint(st, nd->status.dmotion); break;
+ case UDT_SEX: script_pushint(st, nd->vd.sex); break;
+ case UDT_CLASS: script_pushint(st, nd->vd.class); break;
+ case UDT_HAIRSTYLE: script_pushint(st, nd->vd.hair_style); break;
+ case UDT_HAIRCOLOR: script_pushint(st, nd->vd.hair_color); break;
+ case UDT_HEADBOTTOM: script_pushint(st, nd->vd.head_bottom); break;
+ case UDT_HEADMIDDLE: script_pushint(st, nd->vd.head_mid); break;
+ case UDT_HEADTOP: script_pushint(st, nd->vd.head_top); break;
+ case UDT_CLOTHCOLOR: script_pushint(st, nd->vd.cloth_color); break;
+ case UDT_SHIELD: script_pushint(st, nd->vd.shield); break;
+ case UDT_WEAPON: script_pushint(st, nd->vd.weapon); break;
+ case UDT_ROBE: script_pushint(st, nd->vd.robe); break;
+ case UDT_BODY2: script_pushint(st, nd->vd.body_style); break;
default:
ShowWarning("buildin_getunitdata: Invalid data type '%s' for NPC unit.\n", udtype);
script_pushint(st, 0);
@@ -20446,15 +20500,18 @@ BUILDIN(questinfo)
quest_id = script_getnum(st, 2);
icon = script_getnum(st, 3);
- #if PACKETVER >= 20120410
- if(icon < 0 || (icon > 8 && icon != 9999) || icon == 7)
- icon = 9999; // Default to nothing if icon id is invalid.
- #else
- if(icon < 0 || icon > 7)
- icon = 0;
- else
- icon = icon + 1;
- #endif
+#if PACKETVER >= 20170315
+ if (icon < 0 || (icon > 10 && icon != 9999))
+ icon = 9999;
+#elif PACKETVER >= 20120410
+ if (icon < 0 || (icon > 8 && icon != 9999) || icon == 7)
+ icon = 9999; // Default to nothing if icon id is invalid.
+#else
+ if (icon < 0 || icon > 7)
+ icon = 0;
+ else
+ icon = icon + 1;
+#endif
qi.quest_id = quest_id;
qi.icon = (unsigned char)icon;
@@ -20648,15 +20705,18 @@ BUILDIN(showevent)
}
}
- #if PACKETVER >= 20120410
- if(icon < 0 || (icon > 8 && icon != 9999) || icon == 7)
- icon = 9999; // Default to nothing if icon id is invalid.
- #else
- if(icon < 0 || icon > 7)
- icon = 0;
- else
- icon = icon + 1;
- #endif
+#if PACKETVER >= 20170315
+ if (icon < 0 || (icon > 10 && icon != 9999))
+ icon = 9999;
+#elif PACKETVER >= 20120410
+ if (icon < 0 || (icon > 8 && icon != 9999) || icon == 7)
+ icon = 9999; // Default to nothing if icon id is invalid.
+#else
+ if (icon < 0 || icon > 7)
+ icon = 0;
+ else
+ icon = icon + 1;
+#endif
clif->quest_show_event(sd, &nd->bl, icon, color);
return true;
@@ -23505,7 +23565,7 @@ BUILDIN(dressroom)
clif->dressroom_open(sd, 0);
break;
default:
- ShowWarning("script:dressroom: unknown mode (%i).\n", mode);
+ ShowWarning("script:dressroom: unknown mode (%u).\n", mode);
script_pushint(st, 0);
return false;
}
diff --git a/src/map/script.h b/src/map/script.h
index 283afa496..b2ab7510c 100644
--- a/src/map/script.h
+++ b/src/map/script.h
@@ -423,6 +423,8 @@ enum script_unit_data_types {
UDT_LIFETIME,
UDT_MERC_KILLCOUNT,
UDT_STATPOINT,
+ UDT_ROBE,
+ UDT_BODY2,
UDT_MAX
};
diff --git a/src/map/status.c b/src/map/status.c
index e0893aa36..ccd1e6b11 100644
--- a/src/map/status.c
+++ b/src/map/status.c
@@ -6809,7 +6809,7 @@ struct view_data *status_get_viewdata(struct block_list *bl)
case BL_PC: return &BL_UCAST(BL_PC, bl)->vd;
case BL_MOB: return BL_UCAST(BL_MOB, bl)->vd;
case BL_PET: return &BL_UCAST(BL_PET, bl)->vd;
- case BL_NPC: return BL_UCAST(BL_NPC, bl)->vd;
+ case BL_NPC: return &BL_UCAST(BL_NPC, bl)->vd;
case BL_HOM: return BL_UCAST(BL_HOM, bl)->vd;
case BL_MER: return BL_UCAST(BL_MER, bl)->vd;
case BL_ELEM: return BL_UCAST(BL_ELEM, bl)->vd;
@@ -6927,10 +6927,14 @@ void status_set_viewdata(struct block_list *bl, int class_)
case BL_NPC:
{
struct npc_data *nd = BL_UCAST(BL_NPC, bl);
- if (vd != NULL)
- nd->vd = vd;
- else
+ if (vd != NULL) {
+ memcpy(&nd->vd, vd, sizeof(struct view_data));
+ } else if (pc->db_checkid(class_)) {
+ memset(&nd->vd, 0, sizeof(struct view_data));
+ nd->vd.class = class_;
+ } else {
ShowError("status_set_viewdata (NPC): No view data for class %d (name=%s)\n", class_, nd->name);
+ }
}
break;
case BL_HOM: //[blackhole89]
diff --git a/src/plugins/HPMHooking/HPMHooking.Defs.inc b/src/plugins/HPMHooking/HPMHooking.Defs.inc
index d6ce83912..9482e6c15 100644
--- a/src/plugins/HPMHooking/HPMHooking.Defs.inc
+++ b/src/plugins/HPMHooking/HPMHooking.Defs.inc
@@ -3848,6 +3848,32 @@ typedef void (*HPMHOOK_pre_login_config_set_defaults) (void);
typedef void (*HPMHOOK_post_login_config_set_defaults) (void);
typedef bool (*HPMHOOK_pre_login_config_read) (const char **filename, bool *included);
typedef bool (*HPMHOOK_post_login_config_read) (bool retVal___, const char *filename, bool included);
+typedef bool (*HPMHOOK_pre_login_config_read_inter) (const char **filename, struct config_t **config, bool *imported);
+typedef bool (*HPMHOOK_post_login_config_read_inter) (bool retVal___, const char *filename, struct config_t *config, bool imported);
+typedef bool (*HPMHOOK_pre_login_config_read_console) (const char **filename, struct config_t **config, bool *imported);
+typedef bool (*HPMHOOK_post_login_config_read_console) (bool retVal___, const char *filename, struct config_t *config, bool imported);
+typedef bool (*HPMHOOK_pre_login_config_read_log) (const char **filename, struct config_t **config, bool *imported);
+typedef bool (*HPMHOOK_post_login_config_read_log) (bool retVal___, const char *filename, struct config_t *config, bool imported);
+typedef bool (*HPMHOOK_pre_login_config_read_account) (const char **filename, struct config_t **config, bool *imported);
+typedef bool (*HPMHOOK_post_login_config_read_account) (bool retVal___, const char *filename, struct config_t *config, bool imported);
+typedef bool (*HPMHOOK_pre_login_config_read_permission) (const char **filename, struct config_t **config, bool *imported);
+typedef bool (*HPMHOOK_post_login_config_read_permission) (bool retVal___, const char *filename, struct config_t *config, bool imported);
+typedef bool (*HPMHOOK_pre_login_config_read_permission_hash) (const char **filename, struct config_t **config, bool *imported);
+typedef bool (*HPMHOOK_post_login_config_read_permission_hash) (bool retVal___, const char *filename, struct config_t *config, bool imported);
+typedef bool (*HPMHOOK_pre_login_config_read_permission_blacklist) (const char **filename, struct config_t **config, bool *imported);
+typedef bool (*HPMHOOK_post_login_config_read_permission_blacklist) (bool retVal___, const char *filename, struct config_t *config, bool imported);
+typedef bool (*HPMHOOK_pre_login_config_read_users) (const char **filename, struct config_t **config, bool *imported);
+typedef bool (*HPMHOOK_post_login_config_read_users) (bool retVal___, const char *filename, struct config_t *config, bool imported);
+typedef void (*HPMHOOK_pre_login_clear_dnsbl_servers) (void);
+typedef void (*HPMHOOK_post_login_clear_dnsbl_servers) (void);
+typedef void (*HPMHOOK_pre_login_config_set_dnsbl_servers) (struct config_setting_t **setting);
+typedef void (*HPMHOOK_post_login_config_set_dnsbl_servers) (struct config_setting_t *setting);
+typedef void (*HPMHOOK_pre_login_clear_client_hash_nodes) (void);
+typedef void (*HPMHOOK_post_login_clear_client_hash_nodes) (void);
+typedef void (*HPMHOOK_pre_login_config_set_md5hash) (struct config_setting_t **setting);
+typedef void (*HPMHOOK_post_login_config_set_md5hash) (struct config_setting_t *setting);
+typedef uint16 (*HPMHOOK_pre_login_convert_users_to_colors) (uint16 *users);
+typedef uint16 (*HPMHOOK_post_login_convert_users_to_colors) (uint16 retVal___, uint16 users);
#endif // LOGIN_LOGIN_H
#ifdef CHAR_LOGINIF_H /* loginif */
typedef void (*HPMHOOK_pre_loginif_init) (void);
@@ -5124,6 +5150,8 @@ typedef void (*HPMHOOK_pre_npc_market_delfromsql_sub) (const char **npcname, uns
typedef void (*HPMHOOK_post_npc_market_delfromsql_sub) (const char *npcname, unsigned short index);
typedef bool (*HPMHOOK_pre_npc_db_checkid) (const int *id);
typedef bool (*HPMHOOK_post_npc_db_checkid) (bool retVal___, const int id);
+typedef void (*HPMHOOK_pre_npc_refresh) (struct npc_data **nd);
+typedef void (*HPMHOOK_post_npc_refresh) (struct npc_data *nd);
typedef int (*HPMHOOK_pre_npc_secure_timeout_timer) (int *tid, int64 *tick, int *id, intptr_t *data);
typedef int (*HPMHOOK_post_npc_secure_timeout_timer) (int retVal___, int tid, int64 tick, int id, intptr_t data);
#endif // MAP_NPC_H
diff --git a/src/plugins/HPMHooking/HPMHooking_login.HPMHooksCore.inc b/src/plugins/HPMHooking/HPMHooking_login.HPMHooksCore.inc
index 57c1e0233..9c38c0c4c 100644
--- a/src/plugins/HPMHooking/HPMHooking_login.HPMHooksCore.inc
+++ b/src/plugins/HPMHooking/HPMHooking_login.HPMHooksCore.inc
@@ -376,6 +376,32 @@ struct {
struct HPMHookPoint *HP_login_config_set_defaults_post;
struct HPMHookPoint *HP_login_config_read_pre;
struct HPMHookPoint *HP_login_config_read_post;
+ struct HPMHookPoint *HP_login_config_read_inter_pre;
+ struct HPMHookPoint *HP_login_config_read_inter_post;
+ struct HPMHookPoint *HP_login_config_read_console_pre;
+ struct HPMHookPoint *HP_login_config_read_console_post;
+ struct HPMHookPoint *HP_login_config_read_log_pre;
+ struct HPMHookPoint *HP_login_config_read_log_post;
+ struct HPMHookPoint *HP_login_config_read_account_pre;
+ struct HPMHookPoint *HP_login_config_read_account_post;
+ struct HPMHookPoint *HP_login_config_read_permission_pre;
+ struct HPMHookPoint *HP_login_config_read_permission_post;
+ struct HPMHookPoint *HP_login_config_read_permission_hash_pre;
+ struct HPMHookPoint *HP_login_config_read_permission_hash_post;
+ struct HPMHookPoint *HP_login_config_read_permission_blacklist_pre;
+ struct HPMHookPoint *HP_login_config_read_permission_blacklist_post;
+ struct HPMHookPoint *HP_login_config_read_users_pre;
+ struct HPMHookPoint *HP_login_config_read_users_post;
+ struct HPMHookPoint *HP_login_clear_dnsbl_servers_pre;
+ struct HPMHookPoint *HP_login_clear_dnsbl_servers_post;
+ struct HPMHookPoint *HP_login_config_set_dnsbl_servers_pre;
+ struct HPMHookPoint *HP_login_config_set_dnsbl_servers_post;
+ struct HPMHookPoint *HP_login_clear_client_hash_nodes_pre;
+ struct HPMHookPoint *HP_login_clear_client_hash_nodes_post;
+ struct HPMHookPoint *HP_login_config_set_md5hash_pre;
+ struct HPMHookPoint *HP_login_config_set_md5hash_post;
+ struct HPMHookPoint *HP_login_convert_users_to_colors_pre;
+ struct HPMHookPoint *HP_login_convert_users_to_colors_post;
struct HPMHookPoint *HP_md5_string_pre;
struct HPMHookPoint *HP_md5_string_post;
struct HPMHookPoint *HP_md5_binary_pre;
@@ -1049,6 +1075,32 @@ struct {
int HP_login_config_set_defaults_post;
int HP_login_config_read_pre;
int HP_login_config_read_post;
+ int HP_login_config_read_inter_pre;
+ int HP_login_config_read_inter_post;
+ int HP_login_config_read_console_pre;
+ int HP_login_config_read_console_post;
+ int HP_login_config_read_log_pre;
+ int HP_login_config_read_log_post;
+ int HP_login_config_read_account_pre;
+ int HP_login_config_read_account_post;
+ int HP_login_config_read_permission_pre;
+ int HP_login_config_read_permission_post;
+ int HP_login_config_read_permission_hash_pre;
+ int HP_login_config_read_permission_hash_post;
+ int HP_login_config_read_permission_blacklist_pre;
+ int HP_login_config_read_permission_blacklist_post;
+ int HP_login_config_read_users_pre;
+ int HP_login_config_read_users_post;
+ int HP_login_clear_dnsbl_servers_pre;
+ int HP_login_clear_dnsbl_servers_post;
+ int HP_login_config_set_dnsbl_servers_pre;
+ int HP_login_config_set_dnsbl_servers_post;
+ int HP_login_clear_client_hash_nodes_pre;
+ int HP_login_clear_client_hash_nodes_post;
+ int HP_login_config_set_md5hash_pre;
+ int HP_login_config_set_md5hash_post;
+ int HP_login_convert_users_to_colors_pre;
+ int HP_login_convert_users_to_colors_post;
int HP_md5_string_pre;
int HP_md5_string_post;
int HP_md5_binary_pre;
diff --git a/src/plugins/HPMHooking/HPMHooking_login.HookingPoints.inc b/src/plugins/HPMHooking/HPMHooking_login.HookingPoints.inc
index 125c54a12..ba4b941a9 100644
--- a/src/plugins/HPMHooking/HPMHooking_login.HookingPoints.inc
+++ b/src/plugins/HPMHooking/HPMHooking_login.HookingPoints.inc
@@ -211,6 +211,19 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(login->parse_request_connection, HP_login_parse_request_connection) },
{ HP_POP(login->config_set_defaults, HP_login_config_set_defaults) },
{ HP_POP(login->config_read, HP_login_config_read) },
+ { HP_POP(login->config_read_inter, HP_login_config_read_inter) },
+ { HP_POP(login->config_read_console, HP_login_config_read_console) },
+ { HP_POP(login->config_read_log, HP_login_config_read_log) },
+ { HP_POP(login->config_read_account, HP_login_config_read_account) },
+ { HP_POP(login->config_read_permission, HP_login_config_read_permission) },
+ { HP_POP(login->config_read_permission_hash, HP_login_config_read_permission_hash) },
+ { HP_POP(login->config_read_permission_blacklist, HP_login_config_read_permission_blacklist) },
+ { HP_POP(login->config_read_users, HP_login_config_read_users) },
+ { HP_POP(login->clear_dnsbl_servers, HP_login_clear_dnsbl_servers) },
+ { HP_POP(login->config_set_dnsbl_servers, HP_login_config_set_dnsbl_servers) },
+ { HP_POP(login->clear_client_hash_nodes, HP_login_clear_client_hash_nodes) },
+ { HP_POP(login->config_set_md5hash, HP_login_config_set_md5hash) },
+ { HP_POP(login->convert_users_to_colors, HP_login_convert_users_to_colors) },
/* md5_interface */
{ HP_POP(md5->string, HP_md5_string) },
{ HP_POP(md5->binary, HP_md5_binary) },
diff --git a/src/plugins/HPMHooking/HPMHooking_login.Hooks.inc b/src/plugins/HPMHooking/HPMHooking_login.Hooks.inc
index 964d46b0a..0dbf2e5ae 100644
--- a/src/plugins/HPMHooking/HPMHooking_login.Hooks.inc
+++ b/src/plugins/HPMHooking/HPMHooking_login.Hooks.inc
@@ -4716,6 +4716,353 @@ bool HP_login_config_read(const char *filename, bool included) {
}
return retVal___;
}
+bool HP_login_config_read_inter(const char *filename, struct config_t *config, bool imported) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_login_config_read_inter_pre > 0) {
+ bool (*preHookFunc) (const char **filename, struct config_t **config, bool *imported);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_config_read_inter_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_login_config_read_inter_pre[hIndex].func;
+ retVal___ = preHookFunc(&filename, &config, &imported);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.login.config_read_inter(filename, config, imported);
+ }
+ if (HPMHooks.count.HP_login_config_read_inter_post > 0) {
+ bool (*postHookFunc) (bool retVal___, const char *filename, struct config_t *config, bool imported);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_config_read_inter_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_login_config_read_inter_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, filename, config, imported);
+ }
+ }
+ return retVal___;
+}
+bool HP_login_config_read_console(const char *filename, struct config_t *config, bool imported) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_login_config_read_console_pre > 0) {
+ bool (*preHookFunc) (const char **filename, struct config_t **config, bool *imported);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_config_read_console_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_login_config_read_console_pre[hIndex].func;
+ retVal___ = preHookFunc(&filename, &config, &imported);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.login.config_read_console(filename, config, imported);
+ }
+ if (HPMHooks.count.HP_login_config_read_console_post > 0) {
+ bool (*postHookFunc) (bool retVal___, const char *filename, struct config_t *config, bool imported);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_config_read_console_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_login_config_read_console_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, filename, config, imported);
+ }
+ }
+ return retVal___;
+}
+bool HP_login_config_read_log(const char *filename, struct config_t *config, bool imported) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_login_config_read_log_pre > 0) {
+ bool (*preHookFunc) (const char **filename, struct config_t **config, bool *imported);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_config_read_log_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_login_config_read_log_pre[hIndex].func;
+ retVal___ = preHookFunc(&filename, &config, &imported);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.login.config_read_log(filename, config, imported);
+ }
+ if (HPMHooks.count.HP_login_config_read_log_post > 0) {
+ bool (*postHookFunc) (bool retVal___, const char *filename, struct config_t *config, bool imported);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_config_read_log_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_login_config_read_log_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, filename, config, imported);
+ }
+ }
+ return retVal___;
+}
+bool HP_login_config_read_account(const char *filename, struct config_t *config, bool imported) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_login_config_read_account_pre > 0) {
+ bool (*preHookFunc) (const char **filename, struct config_t **config, bool *imported);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_config_read_account_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_login_config_read_account_pre[hIndex].func;
+ retVal___ = preHookFunc(&filename, &config, &imported);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.login.config_read_account(filename, config, imported);
+ }
+ if (HPMHooks.count.HP_login_config_read_account_post > 0) {
+ bool (*postHookFunc) (bool retVal___, const char *filename, struct config_t *config, bool imported);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_config_read_account_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_login_config_read_account_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, filename, config, imported);
+ }
+ }
+ return retVal___;
+}
+bool HP_login_config_read_permission(const char *filename, struct config_t *config, bool imported) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_login_config_read_permission_pre > 0) {
+ bool (*preHookFunc) (const char **filename, struct config_t **config, bool *imported);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_config_read_permission_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_login_config_read_permission_pre[hIndex].func;
+ retVal___ = preHookFunc(&filename, &config, &imported);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.login.config_read_permission(filename, config, imported);
+ }
+ if (HPMHooks.count.HP_login_config_read_permission_post > 0) {
+ bool (*postHookFunc) (bool retVal___, const char *filename, struct config_t *config, bool imported);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_config_read_permission_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_login_config_read_permission_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, filename, config, imported);
+ }
+ }
+ return retVal___;
+}
+bool HP_login_config_read_permission_hash(const char *filename, struct config_t *config, bool imported) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_login_config_read_permission_hash_pre > 0) {
+ bool (*preHookFunc) (const char **filename, struct config_t **config, bool *imported);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_config_read_permission_hash_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_login_config_read_permission_hash_pre[hIndex].func;
+ retVal___ = preHookFunc(&filename, &config, &imported);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.login.config_read_permission_hash(filename, config, imported);
+ }
+ if (HPMHooks.count.HP_login_config_read_permission_hash_post > 0) {
+ bool (*postHookFunc) (bool retVal___, const char *filename, struct config_t *config, bool imported);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_config_read_permission_hash_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_login_config_read_permission_hash_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, filename, config, imported);
+ }
+ }
+ return retVal___;
+}
+bool HP_login_config_read_permission_blacklist(const char *filename, struct config_t *config, bool imported) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_login_config_read_permission_blacklist_pre > 0) {
+ bool (*preHookFunc) (const char **filename, struct config_t **config, bool *imported);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_config_read_permission_blacklist_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_login_config_read_permission_blacklist_pre[hIndex].func;
+ retVal___ = preHookFunc(&filename, &config, &imported);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.login.config_read_permission_blacklist(filename, config, imported);
+ }
+ if (HPMHooks.count.HP_login_config_read_permission_blacklist_post > 0) {
+ bool (*postHookFunc) (bool retVal___, const char *filename, struct config_t *config, bool imported);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_config_read_permission_blacklist_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_login_config_read_permission_blacklist_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, filename, config, imported);
+ }
+ }
+ return retVal___;
+}
+bool HP_login_config_read_users(const char *filename, struct config_t *config, bool imported) {
+ int hIndex = 0;
+ bool retVal___ = false;
+ if (HPMHooks.count.HP_login_config_read_users_pre > 0) {
+ bool (*preHookFunc) (const char **filename, struct config_t **config, bool *imported);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_config_read_users_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_login_config_read_users_pre[hIndex].func;
+ retVal___ = preHookFunc(&filename, &config, &imported);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.login.config_read_users(filename, config, imported);
+ }
+ if (HPMHooks.count.HP_login_config_read_users_post > 0) {
+ bool (*postHookFunc) (bool retVal___, const char *filename, struct config_t *config, bool imported);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_config_read_users_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_login_config_read_users_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, filename, config, imported);
+ }
+ }
+ return retVal___;
+}
+void HP_login_clear_dnsbl_servers(void) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_login_clear_dnsbl_servers_pre > 0) {
+ void (*preHookFunc) (void);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_clear_dnsbl_servers_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_login_clear_dnsbl_servers_pre[hIndex].func;
+ preHookFunc();
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.login.clear_dnsbl_servers();
+ }
+ if (HPMHooks.count.HP_login_clear_dnsbl_servers_post > 0) {
+ void (*postHookFunc) (void);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_clear_dnsbl_servers_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_login_clear_dnsbl_servers_post[hIndex].func;
+ postHookFunc();
+ }
+ }
+ return;
+}
+void HP_login_config_set_dnsbl_servers(struct config_setting_t *setting) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_login_config_set_dnsbl_servers_pre > 0) {
+ void (*preHookFunc) (struct config_setting_t **setting);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_config_set_dnsbl_servers_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_login_config_set_dnsbl_servers_pre[hIndex].func;
+ preHookFunc(&setting);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.login.config_set_dnsbl_servers(setting);
+ }
+ if (HPMHooks.count.HP_login_config_set_dnsbl_servers_post > 0) {
+ void (*postHookFunc) (struct config_setting_t *setting);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_config_set_dnsbl_servers_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_login_config_set_dnsbl_servers_post[hIndex].func;
+ postHookFunc(setting);
+ }
+ }
+ return;
+}
+void HP_login_clear_client_hash_nodes(void) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_login_clear_client_hash_nodes_pre > 0) {
+ void (*preHookFunc) (void);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_clear_client_hash_nodes_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_login_clear_client_hash_nodes_pre[hIndex].func;
+ preHookFunc();
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.login.clear_client_hash_nodes();
+ }
+ if (HPMHooks.count.HP_login_clear_client_hash_nodes_post > 0) {
+ void (*postHookFunc) (void);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_clear_client_hash_nodes_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_login_clear_client_hash_nodes_post[hIndex].func;
+ postHookFunc();
+ }
+ }
+ return;
+}
+void HP_login_config_set_md5hash(struct config_setting_t *setting) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_login_config_set_md5hash_pre > 0) {
+ void (*preHookFunc) (struct config_setting_t **setting);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_config_set_md5hash_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_login_config_set_md5hash_pre[hIndex].func;
+ preHookFunc(&setting);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.login.config_set_md5hash(setting);
+ }
+ if (HPMHooks.count.HP_login_config_set_md5hash_post > 0) {
+ void (*postHookFunc) (struct config_setting_t *setting);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_config_set_md5hash_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_login_config_set_md5hash_post[hIndex].func;
+ postHookFunc(setting);
+ }
+ }
+ return;
+}
+uint16 HP_login_convert_users_to_colors(uint16 users) {
+ int hIndex = 0;
+ uint16 retVal___ = 0;
+ if (HPMHooks.count.HP_login_convert_users_to_colors_pre > 0) {
+ uint16 (*preHookFunc) (uint16 *users);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_convert_users_to_colors_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_login_convert_users_to_colors_pre[hIndex].func;
+ retVal___ = preHookFunc(&users);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return retVal___;
+ }
+ }
+ {
+ retVal___ = HPMHooks.source.login.convert_users_to_colors(users);
+ }
+ if (HPMHooks.count.HP_login_convert_users_to_colors_post > 0) {
+ uint16 (*postHookFunc) (uint16 retVal___, uint16 users);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_login_convert_users_to_colors_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_login_convert_users_to_colors_post[hIndex].func;
+ retVal___ = postHookFunc(retVal___, users);
+ }
+ }
+ return retVal___;
+}
/* md5_interface */
void HP_md5_string(const char *string, char *output) {
int hIndex = 0;
diff --git a/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc b/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc
index 4bdc167f2..c3e6d5529 100644
--- a/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc
+++ b/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc
@@ -3918,6 +3918,8 @@ struct {
struct HPMHookPoint *HP_npc_market_delfromsql_sub_post;
struct HPMHookPoint *HP_npc_db_checkid_pre;
struct HPMHookPoint *HP_npc_db_checkid_post;
+ struct HPMHookPoint *HP_npc_refresh_pre;
+ struct HPMHookPoint *HP_npc_refresh_post;
struct HPMHookPoint *HP_npc_secure_timeout_timer_pre;
struct HPMHookPoint *HP_npc_secure_timeout_timer_post;
struct HPMHookPoint *HP_nullpo_assert_report_pre;
@@ -10117,6 +10119,8 @@ struct {
int HP_npc_market_delfromsql_sub_post;
int HP_npc_db_checkid_pre;
int HP_npc_db_checkid_post;
+ int HP_npc_refresh_pre;
+ int HP_npc_refresh_post;
int HP_npc_secure_timeout_timer_pre;
int HP_npc_secure_timeout_timer_post;
int HP_nullpo_assert_report_pre;
diff --git a/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc b/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc
index 34b79bff8..15052b7f1 100644
--- a/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc
+++ b/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc
@@ -2009,6 +2009,7 @@ struct HookingPointData HookingPoints[] = {
{ HP_POP(npc->market_delfromsql, HP_npc_market_delfromsql) },
{ HP_POP(npc->market_delfromsql_sub, HP_npc_market_delfromsql_sub) },
{ HP_POP(npc->db_checkid, HP_npc_db_checkid) },
+ { HP_POP(npc->refresh, HP_npc_refresh) },
{ HP_POP(npc->secure_timeout_timer, HP_npc_secure_timeout_timer) },
/* nullpo_interface */
{ HP_POP(nullpo->assert_report, HP_nullpo_assert_report) },
diff --git a/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc b/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc
index d0d062f4e..69658949c 100644
--- a/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc
+++ b/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc
@@ -52089,6 +52089,32 @@ bool HP_npc_db_checkid(const int id) {
}
return retVal___;
}
+void HP_npc_refresh(struct npc_data *nd) {
+ int hIndex = 0;
+ if (HPMHooks.count.HP_npc_refresh_pre > 0) {
+ void (*preHookFunc) (struct npc_data **nd);
+ *HPMforce_return = false;
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_refresh_pre; hIndex++) {
+ preHookFunc = HPMHooks.list.HP_npc_refresh_pre[hIndex].func;
+ preHookFunc(&nd);
+ }
+ if (*HPMforce_return) {
+ *HPMforce_return = false;
+ return;
+ }
+ }
+ {
+ HPMHooks.source.npc.refresh(nd);
+ }
+ if (HPMHooks.count.HP_npc_refresh_post > 0) {
+ void (*postHookFunc) (struct npc_data *nd);
+ for (hIndex = 0; hIndex < HPMHooks.count.HP_npc_refresh_post; hIndex++) {
+ postHookFunc = HPMHooks.list.HP_npc_refresh_post[hIndex].func;
+ postHookFunc(nd);
+ }
+ }
+ return;
+}
int HP_npc_secure_timeout_timer(int tid, int64 tick, int id, intptr_t data) {
int hIndex = 0;
int retVal___ = 0;