Commit b434d69f authored by Micksha's avatar Micksha Committed by Jesusaves

Faction Core, Quest ID rewrite, Thieves Path.

Part of Leaving Artis redesign.
parent 3f982e4e
......@@ -49,6 +49,7 @@ map_list: (
"001-2-40",
"001-2-41",
"001-2-42",
"001-2-43",
"001-2-5",
"001-2-6",
"001-2-7",
......
......@@ -4062,6 +4062,8 @@ constants_db: {
NPC_HASAN: 207
NPC_CRASMANDE: 208
NPC_MANATREE: 210
NPC_HENRY: 211
NPC_NUNIA: 212
NPC_CONFUSED_TREE: 400
NPC_ALIGE: 401
......@@ -4128,6 +4130,8 @@ constants_db: {
NPC_FLAG_L: 464
NPC_FLAG_R: 465
NPC_TOICHI: 466
NPC_SEWER_GATE: 467
NPC_SEWER_WHEEL: 468
NPC_TREASURE: 469
NPC_TEST1: 800
......
......@@ -46,68 +46,69 @@
001-2-40 46
001-2-41 47
001-2-42 48
001-2-5 49
001-2-6 50
001-2-7 51
001-2-8 52
001-2-9 53
001-3-0 54
001-3-1 55
001-3-2 56
008-1-1 57
008-1-2 58
008-1 59
008-2-0 60
008-2-1 61
008-2-10 62
008-2-11 63
008-2-12 64
008-2-13 65
008-2-14 66
008-2-15 67
008-2-16 68
008-2-17 69
008-2-18 70
008-2-19 71
008-2-2 72
008-2-20 73
008-2-21 74
008-2-22 75
008-2-23 76
008-2-24 77
008-2-25 78
008-2-26 79
008-2-27 80
008-2-28 81
008-2-29 82
008-2-3 83
008-2-30 84
008-2-31 85
008-2-32 86
008-2-4 87
008-2-5 88
008-2-6 89
008-2-7 90
008-2-8 91
008-2-9 92
008-3-0 93
008-3-1 94
008-3-2 95
008-3-3 96
008-3-4 97
008-3-5 98
008-3-6 99
012-1 100
012-2-1 101
012-2-2 102
012-2-3 103
012-2-4 104
012-2-5 105
012-2-6 106
012-2-7 107
012-3-1 108
012-3-2 109
012-3-3 110
sec_pri 111
test 112
testbg 113
001-2-43 49
001-2-5 50
001-2-6 51
001-2-7 52
001-2-8 53
001-2-9 54
001-3-0 55
001-3-1 56
001-3-2 57
008-1-1 58
008-1-2 59
008-1 60
008-2-0 61
008-2-1 62
008-2-10 63
008-2-11 64
008-2-12 65
008-2-13 66
008-2-14 67
008-2-15 68
008-2-16 69
008-2-17 70
008-2-18 71
008-2-19 72
008-2-2 73
008-2-20 74
008-2-21 75
008-2-22 76
008-2-23 77
008-2-24 78
008-2-25 79
008-2-26 80
008-2-27 81
008-2-28 82
008-2-29 83
008-2-3 84
008-2-30 85
008-2-31 86
008-2-32 87
008-2-4 88
008-2-5 89
008-2-6 90
008-2-7 91
008-2-8 92
008-2-9 93
008-3-0 94
008-3-1 95
008-3-2 96
008-3-3 97
008-3-4 98
008-3-5 99
008-3-6 100
012-1 101
012-2-1 102
012-2-2 103
012-2-3 104
012-2-4 105
012-2-5 106
012-2-6 107
012-2-7 108
012-3-1 109
012-3-2 110
012-3-3 111
sec_pri 112
test 113
testbg 114
......@@ -24,7 +24,7 @@ quest_db: (
)
},
******************************************************************************/
// Drasil Island Quests (0~19)
{
Id: 0
Name: "ShipQuests_Julia"
......@@ -101,34 +101,29 @@ quest_db: (
Id: 18
Name: "General_Cookies"
},
{
Id: 19
Name: "ArtisQuests_LazyBrother"
},
// Artis Quests (20~49)
{
Id: 20
Name: "ArtisQuests_Urchin"
Name: "ArtisQuests_LazyBrother"
},
{
Id: 21
Name: "ArtisQuests_CatchPiou"
Name: "ArtisQuests_Urchin"
},
{
Id: 22
Name: "ArtisQuests_Fishman"
Name: "ArtisQuests_CatchPiou"
},
{
Id: 23
Name: "ArtisQuests_QOnan"
Name: "ArtisQuests_Fishman"
},
{
Id: 24
Name: "Halloween_VisitArtis"
},
{
Id: 25
Name: "Halloween_BarrelQuest"
Name: "ArtisQuests_QOnan"
},
// ID 25 IS FREE
{
Id: 26
Name: "General_Rumly"
......@@ -137,10 +132,7 @@ quest_db: (
Id: 27
Name: "ArtisQuests_Enora"
},
{
Id: 28
Name: "General_Narrator"
},
// ID 28 IS FREE
{
Id: 29
Name: "ArtisQuests_Fexil"
......@@ -164,35 +156,58 @@ quest_db: (
{
Id: 34
Name: "ArtisQuests_TrainingLegion"
},
},
{
Id: 36
Id: 35
Name: "ThiefQuests_Artis"
},
// Argaes Quests (50~99)
{
Id: 50
Name: "HurnscaldQuests_Hinnak"
},
{
Id: 37
Id: 51
Name: "HurnscaldQuests_Soup"
},
{
Id: 38
Id: 52
Name: "HurnscaldQuests_Inspector"
},
{
Id: 39
Id: 53
Name: "HurnscaldQuests_ForestBow"
},
{
Id: 40
Id: 54
Name: "HurnscaldQuests_WoodenShield"
},
{
Id: 41
Id: 55
Name: "General_Cooking"
},
{
Id: 42
Id: 56
Name: "General_Brotherhood"
},
// 57 reserved Kfahr
// Event and General Quests (100~149)
{
Id: 100
Name: "General_Narrator"
},
{
Id: 101
Name: "Halloween_VisitArtis"
},
{
Id: 102
Name: "Halloween_BarrelQuest"
},
// Test Quests, Debug Quests, etc. (1000+)
{
Id: 1000
Name: "Test_testing1"
......
......@@ -1780,6 +1780,24 @@ item_db: (
Sell: 8500
Weight: 500
},
{
Id: 761
AegisName: "Gearwheel"
Name: "Gearwheel"
Type: "IT_ETC"
Buy: 2500
Sell: 650
Weight: 500
},
{
Id: 762
AegisName: "Lockpicks"
Name: "Lockpicks"
Type: "IT_ETC"
Buy: 5000
Sell: 400
Weight: 50
},
{
Id: 800
AegisName: "DiamondShard"
......
......@@ -3182,6 +3182,48 @@ mob_db: (
Drops: {
}
},
{
Id: 1076
SpriteName: "GiantMaggot"
Name: "Giant Maggot"
Lv: 20
Hp: 2407
Sp: 0
Exp: 63
JExp: 5
AttackRange: 1
Attack: [300, 450]
Def: 23
Mdef: 145
Stats: {
Str: 10
Agi: 30
Vit: 35
Int: 1
Dex: 30
Luk: 20
}
ChaseRange: 12
Race: 2
Element: (0, 2)
Mode: {
CanMove: true
CanAttack: true
CastSensorChase: true
ChangeChase: true
}
MoveSpeed: 1900
AttackDelay: 2700
AttackMotion: 672
DamaeMotion: 480
Drops: {
BugLeg: 3500
Carrot: 1000
Moss: 900
CommonCarp: 100
Pearl: 1
}
},
{
Id: 1100
SpriteName: "PoisonSkull"
......
No preview for this file type
No preview for this file type
......@@ -121,7 +121,7 @@ OnInit:
001-1,134,83,0 warp #001-1_134_83 0,0,001-2-28,60,31
001-1,118,88,0 script #001-1_118_88_h NPC_HIDDEN,0,0,{
OnTouch:
warp "001-2-28", 29, 42;
warp "001-2-28", 29, 41;
close;
OnUnTouch:
......
......@@ -25,6 +25,7 @@
mes "";
if (@menu == 2)
{
// TODO: Tell to look for Henry TODO: Change curious eye conditional
speech
l("If you visit the sewers again... You'll find secret passages..."),
l("Look for the hideout, but tell no one about this. Then, say the password again.");
......
// Map 001-2-31: unnamed
// Map 001-2-31: West Commercial Building
// This file is generated automatically. All manually added changes will be removed when running the Converter.
"npc/001-2-31/_warps.txt",
"npc/001-2-31/mapflags.txt",
// This file is generated automatically. All manually added changes will be removed when running the Converter.
// Map 001-2-31: unnamed warps
// Map 001-2-31: West Commercial Building warps
001-2-31,32,40,0 warp #001-2-31_32_40 0,0,001-1,49,97
001-2-31,36,32,0 warp #001-2-31_36_32 0,0,001-2-41,25,32
......@@ -23,6 +23,12 @@
if (.@q < 5)
notaMember();
// Faction report
mesc l("Your current standing with the Legion: %s", faction_standing("LEGION", false));
if (LEGION_RANK)
mesc l("You are a Legion's %s", legionrank());
// Main Menu
select
rif(.@q == 5, l("Lozerk told me to talk to you and join the legion.")),
l("Thanks, sir Q'Anon.");
......
......@@ -2,3 +2,4 @@
// Map 001-2-40: unnamed warps
001-2-40,45,44,0 warp #001-2-40_45_44 2,0,001-2-33,43,39
001-2-40,27,44,0 warp #001-2-40_27_44 2,0,001-2-33,25,39
001-2-40,56,41,0 warp #001-2-40_56_41 0,0,001-3-0,56,44
// Map 001-2-41: unnamed
// Map 001-2-41: Barber
// This file is generated automatically. All manually added changes will be removed when running the Converter.
"npc/001-2-41/_warps.txt",
"npc/001-2-41/edouard.txt",
......
// This file is generated automatically. All manually added changes will be removed when running the Converter.
// Map 001-2-41: unnamed warps
// Map 001-2-41: Barber warps
001-2-41,24,32,0 warp #001-2-41_24_32 0,0,001-2-31,35,32
// Map 001-2-43: Archive
// This file is generated automatically. All manually added changes will be removed when running the Converter.
"npc/001-2-43/_warps.txt",
"npc/001-2-43/core.txt",
"npc/001-2-43/mapflags.txt",
// This file is generated automatically. All manually added changes will be removed when running the Converter.
// Map 001-2-43: Archive warps
001-2-43,51,35,0 warp #001-2-43_51_35 2,0,001-3-0,90,62
// Evol scripts.
// Author:
// Micksha, Jesusalva
// Description:
// Core of Henry's Quest
001-2-43,25,24,0 script #ArtisThiefBook_1 NPC_NO_SPRITE,{
.@q=getq(ThiefQuests_Artis);
.@q3=getq3(ThiefQuests_Artis);
// Add a forced delay to prevent abuse
if (.@q != 1) end;
getmapxy(.@m$, @x, @y, 0); // Save in @x/@y
dispbottom l("Sec, lemme look this.");
addtimer 1000, .name$+"::OnRead";
end;
OnRead:
// Prepare the Quest Variables
.@q=getq(ThiefQuests_Artis);
.@q3=getq3(ThiefQuests_Artis);
// You must not have moved
getmapxy(.@m$, .@x, .@y, 0);
if (.@x != @x || .@y != @y || .@q != 1) {
dispbottom l("I'm so busy, I can look there later.");
end;
}
// Clear temporary variables
@x=@y=0;
// Extract the quest ID from name (or fail trying)
explode(.@ni$, .name$, "_");
.@id=atoi(.@ni$[1]);
// Check if the file was here
if (.@q3 == .@id) {
// TODO: Dialog: How will you deal with the file?
// [email protected]$=faction_addrep("Legion", 50)
// [email protected]$=faction_addrep("Thief", 50)
// mesc [email protected]$;
mes l("This is it - Henry's files!");
mes l("I need to decide swiftly what I'll do with them before I'm caught.");
next;
select
l("Hide the file below the pots"),
l("[Legion+] [Thieves-] Highlight the file"),
l("[Legion-] [Thieves+] Destroy the file");
mes "";
switch (@menu) {
case 2:
.@t$=faction_addrep("Legion", 50);
mesc .@t$;
.@t$=faction_addrep("Thief", -50);
mesc .@t$;
next;
break;
case 3:
.@t$=faction_addrep("Legion", -50);
mesc .@t$;
.@t$=faction_addrep("Thief", 50);
mesc .@t$;
next;
break;
}
dispbottom l("You notice by chance that the file does not have any picture on it.");
setq ThiefQuests_Artis, 2, 0, 0;
closeclientdialog;
} else {
dispbottom l("Not here, lets look elsewhere!");
}
end;
OnInit:
.distance=1;
end;
}
// Duplicate the town files
001-2-43,24,28,0 duplicate(#ArtisThiefBook_1) #ArtisThiefBook_2 NPC_NO_SPRITE
001-2-43,25,32,0 duplicate(#ArtisThiefBook_1) #ArtisThiefBook_4 NPC_NO_SPRITE
001-2-43,29,28,0 duplicate(#ArtisThiefBook_1) #ArtisThiefBook_8 NPC_NO_SPRITE
001-2-43,34,32,0 duplicate(#ArtisThiefBook_1) #ArtisThiefBook_16 NPC_NO_SPRITE
001-2-43,38,32,0 duplicate(#ArtisThiefBook_1) #ArtisThiefBook_32 NPC_NO_SPRITE
001-2-43,44,32,0 duplicate(#ArtisThiefBook_1) #ArtisThiefBook_64 NPC_NO_SPRITE
001-2-43,48,32,0 duplicate(#ArtisThiefBook_1) #ArtisThiefBook_128 NPC_NO_SPRITE
001-2-43,48,28,0 duplicate(#ArtisThiefBook_1) #ArtisThiefBook_256 NPC_NO_SPRITE
001-2-43,43,28,0 duplicate(#ArtisThiefBook_1) #ArtisThiefBook_512 NPC_NO_SPRITE
001-2-43,38,28,0 duplicate(#ArtisThiefBook_1) #ArtisThiefBook_1024 NPC_NO_SPRITE
001-2-43,33,28,0 duplicate(#ArtisThiefBook_1) #ArtisThiefBook_2048 NPC_NO_SPRITE
001-2-43,53,24,0 duplicate(#ArtisThiefBook_1) #ArtisThiefBook_4096 NPC_NO_SPRITE
001-2-43,44,24,0 duplicate(#ArtisThiefBook_1) #ArtisThiefBook_8192 NPC_NO_SPRITE
001-2-43,29,24,0 duplicate(#ArtisThiefBook_1) #ArtisThiefBook_16384 NPC_NO_SPRITE
001-2-43,39,24,0 duplicate(#ArtisThiefBook_1) #ArtisThiefBook_32768 NPC_NO_SPRITE
001-2-43,49,24,0 duplicate(#ArtisThiefBook_1) #ArtisThiefBook_65536 NPC_NO_SPRITE
// Fail-safe; Henry's record should not be here
001-2-43,34,24,0 duplicate(#ArtisThiefBook_1) #ArtisThiefBook_131072 NPC_NO_SPRITE
//001-2-43,29,31,0 duplicate(#ArtisThiefBook_1) #ArtisThiefBook_131072 NPC_NO_SPRITE
//001-2-43,24,26,0 duplicate(#ArtisThiefBook_1) #ArtisThiefBook_262144 NPC_NO_SPRITE
// Logical Handler
001-2-43,0,0,0 script #ArtisThiefBook_0 NPC_HIDDEN,{
end;
OnBust1:
if (getmap() != .map$)
end;
dispbottom col(l("90 seconds remaining."), 1);
addtimer 30000, "#ArtisThiefBook_0::OnBust2";
end;
OnBust2:
if (getmap() != .map$)
end;
dispbottom col(l("60 seconds remaining."), 1);
addtimer 30000, "#ArtisThiefBook_0::OnBust3";
end;
OnBust3:
if (getmap() != .map$)
end;
dispbottom col(l("30 seconds remaining."), 1);
addtimer 30000, "#ArtisThiefBook_0::OnBust4";
end;
OnBust4:
if (getmap() == .map$) {
// Warp you elsewhere before actually arresting
// Otherwise, you would return at Archives without this timer =/
warp "001-1", 90, 55;
sleep2(10);
// Check if you'll be caught
if (ArrestedChances()) {
mesc l("Arrested!");
mesc l("You'll now spend a few minutes on the jail to reflect on your actions.");
ArrestPlayer(5);
} else {
mesc l("You're almost found out, but manage to make a quick escape!");
warp "001-1", 90, 55;
}
}
close;
}
001-2-43 mapflag nosave 001-1,89,67
// Map 001-2-8: Left Wing
// This file is generated automatically. All manually added changes will be removed when running the Converter.
"npc/001-2-8/_warps.txt",
"npc/001-2-8/doors.txt",
"npc/001-2-8/mapflags.txt",
// Evol scripts.
// Author:
// Jesusalva
// Description:
// The Door for Town Archives
001-2-8,38,30,0 script #ArtisArchiveGate NPC_NO_SPRITE,0,0,{
function breakIn;
function notToday;
.@q=getq(ThiefQuests_Artis);
mes l("The door is locked and you don't have the key.");
next;
mes l("This is probably where the town files are kept.");
if (.@q > 1) notToday();
if (.@q == 1) breakIn();
close;
function notToday {
mesc l("I have nothing else to do down there.");
return;
}
function breakIn {
mesc l("Should we break in? We'll be in a bad situation if we're found out.");
next;
// Better to not use only a pine!
if (LockPicking(2, 3, false)) {
// Delete previous timers.
deltimer("#ArtisThiefBook_0::OnBust1");
deltimer("#ArtisThiefBook_0::OnBust2");
deltimer("#ArtisThiefBook_0::OnBust3");
deltimer("#ArtisThiefBook_0::OnBust4");
// Begin the catch timer (addtimer)
addtimer 30000, "#ArtisThiefBook_0::OnBust1";
warp "001-2-43", 27, 34;
} else {
if (ArrestedChances()) {
mesc l("Arrested!");
mesc l("You'll now spend a few minutes on the jail to reflect on your actions.");
ArrestPlayer(5);
} else {
mesc l("You're almost found out, but manage to make a quick escape!");
warp "001-1", 90, 55;
}
}
return;
}
OnTouch:
npctalkonce l("Dang! It is locked.");
end;
OnInit:
.distance=1;
end;
}
......@@ -2,4 +2,5 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
"npc/001-3-0/_mobs.txt",
"npc/001-3-0/_warps.txt",
"npc/001-3-0/gates.txt",
"npc/001-3-0/mundane.txt",
......@@ -26,7 +26,7 @@
001-3-0,86,131,4,2 monster Little Green Slime 1025,3,500,2000
001-3-0,175,31,4,2 monster Little Green Slime 1025,2,500,2000
001-3-0,147,67,4,2 monster Little Green Slime 1025,2,500,2000
001-3-0,54,53,5,3 monster Poison Skull 1100,1,35000,60000
001-3-0,55,50,5,3 monster Giant Maggot 1076,1,25000,20000,Henry#001-3-2::OnGiantMaggot