summaryrefslogtreecommitdiff
path: root/world/map/npc/048-2/bluesageConfig.txt
blob: 0aeda5fc52bcba555c21541d80754f4505157bb1 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
// Blue Sage quest
// The mansion of the Sage is in disarray, because a magic experiment with the slimes went wrong,
// the white and blue slimes got out of control, ate most of the books in the library
// and most of the slimes escaped to the outside world
// Variable used: QUEST_BlueSage
// Author: Jenalya

// Subquests:

// Byte 0:
// Bit 0 - 4: Collect missing book pages
// some of the helpers are working on recreating the more valuable books
// they need the missing bookpages for that
// value gives the number of new pages given to the helpers (up to 31)
// bit 5: got Grimoire as reward for collecting the bookpages and bringing material to repair the books
// Bit 6: got reward for defeating the remaining slimes in the library
// Bit 7: unused

// Nibble 2 as flags: Bring material to repair the books and make new books
// Bit 0: Reed Bundles
// Bit 1: Silk Cocoons
// Bit 2: Yeti Claws
// Bit 3: Inks (Bottle of Water, Iron Powder, Wisp Powder, Spectre Powder, Poltergeist Powder)

// Nibble 3: Investigation of how the accident could have happened
// state 1: helper who is considered to have caused the accident asks the player to talk to the chief helper to find out if he's going to loose his job
// state 2: talked to chief and get the mission to investigate about what exactly happened
// there are two independent circumstances to gather information about, one is about how the helpers did their job (a) and another about a suspicious visitor shortly before the accident happened (b)
// this is saved as described here:
// (a) (b)
// 0    0 (state 2) started investigation
// 0    1 (state 3) talked to Janitor
// 0    2 (state 4) got more information about visitor
// 1    0 (state 5) talked to Peetu
// 1    1 (state 6) talked to Peetu and talked to Janitor
// 1    2 (state 7) talked to Peetu and got more information about visitor
// 2    0 (state 8) got more information about Peetu
// 2    1 (state 9) got more information about Peetu and talked to Janitor
// 2    2 (state 10) got more information about Peetu and got more information about visitor
// (a) first talk to the helper in the bedroom, who describes how careful he has been
// (a) and then to at least one of the helpers in the library, who supports that
// (a) it's possible to talk to more helpers, who will support too, but it suffices to talk to one
// (b) first talk to the janitor in the entrance room, who mentions the suspicious visitor
// (b) then talk to at least one of the helpers in the entrance room/library who give more information about the visitor
// (b) it's possible to talk to more helpers, who will give redundant information, but it suffices to talk to one
// so to have somed progress in (a) add three to the variable, and for progress in (b) add one
// state 11: reported to chief helper and got a reward
// state 12: told Peetu about the result and eventually got another small reward

// Byte 2: Hunt some remaining slimes between the bookshelves
// Bit 0: started the subquest
// Bit 1 - 7: each spawn point is unique and saved with a flag

-|script|#bluesageconfig|-1
{
    end;

OnInit:
    set $@Q_BlueSageMinimumLevel, 60;

    set $@Q_BlueSageBookPages_MASK, 0x1F;
    set $@Q_BlueSageBookPages_SHIFT, 0;

    set $@Q_BlueSageGrimoire, 0x20;
    set $@Q_BlueSageIceSword, 0x40;

    set $@Q_BlueSageMaterial_MASK, NIBBLE_2_MASK;
    set $@Q_BlueSageMaterial_SHIFT, NIBBLE_2_SHIFT;

    set $@Q_BlueSageMaterialReed, 0x100;
    set $@Q_BlueSageMaterialSilk, 0x200;
    set $@Q_BlueSageMaterialClaw, 0x400;
    set $@Q_BlueSageMaterialInk,  0x800;

    set $@Q_BlueSageInvestigate_MASK, NIBBLE_3_MASK;
    set $@Q_BlueSageInvestigate_SHIFT, NIBBLE_3_SHIFT;

    set $@Q_BlueSageSlimes_MASK, BYTE_2_MASK;
    set $@Q_BlueSageSlimes_SHIFT, BYTE_2_SHIFT;
    set $@Q_BlueSageSlimesStart,    0x010000;
    set $@Q_BlueSageSlime0,         0x020000;
    set $@Q_BlueSageSlime1,         0x040000;
    set $@Q_BlueSageSlime2,         0x080000;
    set $@Q_BlueSageSlime3,         0x100000;
    set $@Q_BlueSageSlime4,         0x200000;
    set $@Q_BlueSageSlime5,         0x400000;
    set $@Q_BlueSageSlime6,         0x800000;
    //white
    set $@BlueSageSlime0_Amount, 6;
    set $@BlueSageSlime1_Amount, 5;
    set $@BlueSageSlime2_Amount, 4;
    set $@BlueSageSlime3_Amount, 3;
    // blue
    set $@BlueSageSlime4_Amount, 3;
    set $@BlueSageSlime5_Amount, 2;
    set $@BlueSageSlime6_Amount, 1;
    end;
}

function|script|updateBlueSageBookPages
{
    set QUEST_BlueSage, (QUEST_BlueSage & ~($@Q_BlueSageBookPages_MASK) | (@bookpages << $@Q_BlueSageBookPages_SHIFT));
    return;
}

function|script|updateBlueSageInvestigate
{
    set QUEST_BlueSage, (QUEST_BlueSage & ~($@Q_BlueSageInvestigate_MASK) | (@investigate << $@Q_BlueSageInvestigate_SHIFT));
    return;
}

function|script|blueSageNumberOfClearedNests
{
    set @slimenests, 0;
    if (QUEST_BlueSage & $@Q_BlueSageSlime0)
        set @slimenests, @slimenests+1;
    if (QUEST_BlueSage & $@Q_BlueSageSlime1)
        set @slimenests, @slimenests+1;
    if (QUEST_BlueSage & $@Q_BlueSageSlime2)
        set @slimenests, @slimenests+1;
    if (QUEST_BlueSage & $@Q_BlueSageSlime3)
        set @slimenests, @slimenests+1;
    if (QUEST_BlueSage & $@Q_BlueSageSlime4)
        set @slimenests, @slimenests+1;
    if (QUEST_BlueSage & $@Q_BlueSageSlime5)
        set @slimenests, @slimenests+1;
    if (QUEST_BlueSage & $@Q_BlueSageSlime6)
        set @slimenests, @slimenests+1;
    return;
}