Overwrite
Complete Overwrite of the Folder with the free shard. ServUO 57.3 has been added.
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
using Server;
|
||||
using System;
|
||||
using Server.Mobiles;
|
||||
using Server.Engines.Quests;
|
||||
|
||||
// 0x1E06 => South
|
||||
// 0x1E03 => West
|
||||
// 0x1E04 => North
|
||||
// 0x1E05 => East
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class BloodyFootPrints : Item
|
||||
{
|
||||
[Constructable]
|
||||
public BloodyFootPrints(int itemID)
|
||||
: base(itemID)
|
||||
{
|
||||
Movable = false;
|
||||
Hue = 1975;
|
||||
}
|
||||
|
||||
public BloodyFootPrints(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write((int)0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,105 @@
|
||||
using System;
|
||||
|
||||
using Server;
|
||||
using Server.Mobiles;
|
||||
using Server.Items;
|
||||
using Server.Network;
|
||||
using Server.Gumps;
|
||||
using Server.SkillHandlers;
|
||||
using Server.Engines.Quests;
|
||||
|
||||
// 1158607 => brit
|
||||
// 1158608 => vesper
|
||||
// 1158609 => moonglow
|
||||
// 1158610 => yew
|
||||
|
||||
namespace Server.Engines.Khaldun
|
||||
{
|
||||
public class DamagedHeadstone : Item, IForensicTarget
|
||||
{
|
||||
public override int LabelNumber { get { return 1158561; } } // damaged headstone
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public int GumpLocalization { get; private set; }
|
||||
|
||||
public DamagedHeadstone(int gumpLoc)
|
||||
: base(0x1180)
|
||||
{
|
||||
GumpLocalization = gumpLoc;
|
||||
Movable = false;
|
||||
}
|
||||
|
||||
public void OnForensicEval(Mobile m)
|
||||
{
|
||||
if (!m.Player)
|
||||
return;
|
||||
|
||||
var quest = QuestHelper.GetQuest<GoingGumshoeQuest2>((PlayerMobile)m);
|
||||
|
||||
if (quest != null)
|
||||
{
|
||||
m.PrivateOverheadMessage(MessageType.Regular, 0x47E, 1158571, m.NetState); // *You examine the headstone...*
|
||||
m.SendLocalizedMessage(1158562, null, 0x23); // The damage to the epitaph seems deliberate. Using your training from Inspector Jasper you have found a hidden message among the scratches. You recreate the original epitaph in your mind's eye...
|
||||
|
||||
m.SendSound(quest.UpdateSound);
|
||||
|
||||
var gump = new Gump(50, 50);
|
||||
|
||||
gump.AddImage(0, 0, 0x66);
|
||||
gump.AddHtmlLocalized(47, 60, 146, 160, GumpLocalization, false, false);
|
||||
|
||||
m.SendGump(gump);
|
||||
|
||||
SetPrerequisite(quest);
|
||||
}
|
||||
else
|
||||
{
|
||||
m.PrivateOverheadMessage(MessageType.Regular, 0x47E, 1158563, m.NetState); // *It appears to be a normal, yet oddly damaged, headstone. The epitaph is illegible..*
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnDoubleClick(Mobile m)
|
||||
{
|
||||
if (m.InRange(GetWorldLocation(), 2))
|
||||
{
|
||||
m.PrivateOverheadMessage(MessageType.Regular, 0x47E, 1158563, m.NetState); // *It appears to be a normal, yet oddly damaged, headstone. The epitaph is illegible..*
|
||||
}
|
||||
else
|
||||
m.PrivateOverheadMessage(MessageType.Regular, 0x47E, 1019045, m.NetState); // I can't reach that.
|
||||
}
|
||||
|
||||
public void SetPrerequisite(GoingGumshoeQuest2 quest)
|
||||
{
|
||||
switch (GumpLocalization)
|
||||
{
|
||||
case 1158607: quest.VisitedHeastone1 = true; break;
|
||||
case 1158608: quest.VisitedHeastone2 = true; break;
|
||||
case 1158609: quest.VisitedHeastone3 = true; break;
|
||||
case 1158610: quest.VisitedHeastone4 = true; break;
|
||||
}
|
||||
}
|
||||
|
||||
public DamagedHeadstone(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write((int)0); // version
|
||||
|
||||
writer.Write(GumpLocalization);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
|
||||
GumpLocalization = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,352 @@
|
||||
using System;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public class KhaldunDecorationAddon : BaseAddon
|
||||
{
|
||||
public static KhaldunDecorationAddon Instance { get; set; }
|
||||
|
||||
// Ritual Table needs to be hued 1362
|
||||
// 14031 = hue 1
|
||||
private static int[,] m_AddOnSimpleComponents = new int[,] {
|
||||
{27, 74, 9, 1}, {28, 74, 9, 1}, {28, 73, 9, 1}// 1 2 3
|
||||
, {28, 72, 9, 1}, {28, 74, -1, 1}, {28, 72, -1, 1}// 4 5 6
|
||||
, {28, 73, -1, 1}, {27, 74, 6, 1}, {27, 74, 4, 1}// 7 8 9
|
||||
, {27, 74, 5, 1}, {27, 74, 7, 1}, {27, 74, 8, 1}// 10 11 12
|
||||
, {27, 74, 3, 1}, {27, 74, 2, 1}, {2879, 72, 0, 1}// 13 14 15
|
||||
, {2501, 72, 0, 7}, {27, 74, 1, 1}, {27, 74, 0, 1}// 16 17 18
|
||||
, {3644, 77, -3, 1}, {4014, 78, -3, 1}, {4014, 76, 1, 1}// 19 20 21
|
||||
, {3647, 77, -3, 7}, {4014, 76, 0, 1}, {3646, 77, -3, 4}// 22 23 24
|
||||
, {3644, 77, -2, 1}, {605, 72, -18, 1}, {4014, 75, -16, 1}// 25 26 27
|
||||
, {3647, 76, -16, 7}, {605, 74, -18, 1}, {605, 73, -18, 1}// 28 29 30
|
||||
, {4014, 73, -13, 1}, {3644, 72, -14, 1}, {605, 77, -18, 1}// 31 32 33
|
||||
, {4014, 75, -15, 1}, {605, 78, -18, 1}, {605, 80, -18, 1}// 34 35 36
|
||||
, {605, 79, -18, 1}, {605, 75, -18, 1}, {3644, 72, -13, 1}// 37 38 39
|
||||
, {3646, 76, -16, 4}, {3644, 76, -16, 1}, {605, 76, -18, 1}// 40 41 42
|
||||
, {27, 61, 9, 1}, {28, 62, 9, 1}, {28, 63, 9, 1}// 43 44 45
|
||||
, {28, 64, 9, 1}, {28, 65, 9, 1}, {28, 66, 9, 1}// 46 47 48
|
||||
, {28, 67, 9, 1}, {28, 68, 9, 1}, {28, 69, 9, 1}// 49 50 51
|
||||
, {28, 70, 9, 1}, {28, 71, 9, 1}, {28, 71, -1, 1}// 52 53 54
|
||||
, {28, 66, -1, 1}, {28, 65, -1, 1}, {28, 64, -1, 1}// 55 56 57
|
||||
, {28, 64, -1, 1}, {28, 63, -1, 1}, {28, 62, -1, 1}// 58 59 60
|
||||
, {4104, 64, 0, 7}, {3647, 69, -5, 7}, {3644, 69, -6, 1}// 61 62 63
|
||||
, {3646, 69, -6, 4}, {27, 61, 5, 1}, {27, 61, 4, 1}// 64 65 66
|
||||
, {27, 61, 3, 1}, {27, 61, 1, 1}, {27, 61, 2, 1}// 67 68 69
|
||||
, /*{5368, 67, 0, 1},*/ {27, 61, 0, 1}, {4014, 70, -7, 1}// 70 71 72
|
||||
, {33, 67, -1, 1}, /*{2501, 71, 0, 7},*/ {2879, 64, 0, 1}// 73 74 75
|
||||
, {2879, 63, 0, 1}, {2879, 62, 1, 1}, {29, 61, -1, 1}// 76 77 78
|
||||
, {2879, 62, 0, 1}, {4014, 70, -6, 1}, {3644, 69, -7, 1}// 79 80 81
|
||||
, /*{7866, 62, 2, 7},*/ {3646, 69, -5, 4}, {3644, 69, -5, 1}// 82 83 84
|
||||
, /*{5355, 62, 1, 7}, {5355, 62, 1, 8},*/ {2879, 71, 0, 1}// 85 86 87
|
||||
, {5357, 63, 0, 7}, {2879, 62, 2, 1}, {27, 61, 6, 1}// 88 89 90
|
||||
, {12254, 62, 4, 1}, {3647, 69, -6, 7}, {30, 70, -1, 1}// 91 92 93
|
||||
, {27, 61, 7, 1}, {27, 61, 8, 1}, {7427, 62, -10, 1}// 94 95 96
|
||||
, {7426, 62, -11, 1}, {7425, 62, -12, 1}, {7424, 62, -13, 1}// 97 98 99
|
||||
, {7423, 62, -14, 1}, {7409, 61, -9, 1}, {7428, 61, -10, 1}// 100 101 102
|
||||
, {7438, 61, -11, 1}, {7437, 61, -12, 1}, {7436, 61, -13, 1}// 103 104 105
|
||||
, {7422, 61, -14, 1}, {7410, 60, -9, 1}, {7429, 60, -10, 1}// 106 107 108
|
||||
, {7439, 60, -11, 1}, {7442, 60, -12, 1}, {7435, 60, -13, 1}// 109 110 111
|
||||
, {7421, 60, -14, 1}, {7411, 59, -9, 1}, {7430, 59, -10, 1}// 112 113 114
|
||||
, {7440, 59, -11, 1}, {7441, 59, -12, 1}, {7434, 59, -13, 1}// 115 116 117
|
||||
, {7420, 59, -14, 1}, {7412, 58, -9, 1}, {611, 67, -18, 1}// 118 119 120
|
||||
, {612, 67, -16, 1}, {4014, 65, -8, 1}, {3646, 64, -14, 4}// 122 123 124
|
||||
, {605, 69, -18, 1}, {605, 70, -18, 1}, {4014, 70, -10, 1}// 125 126 127
|
||||
, {605, 68, -18, 1}, {605, 65, -16, 1}, {3644, 59, -17, 1}// 128 129 130
|
||||
, {3647, 64, -14, 7}, {3647, 70, -11, 7}, {605, 71, -18, 1}// 131 132 133
|
||||
, {605, 66, -16, 1}, {3644, 59, -16, 1}, {605, 64, -16, 1}// 134 135 136
|
||||
, {3644, 65, -13, 1}, {6667, 59, -11, 1}, {4014, 65, -9, 1}// 137 138 139
|
||||
, {4014, 66, -9, 1}, {7431, 58, -10, 1}, {4014, 58, -17, 1}// 140 141 142
|
||||
, {3644, 64, -14, 1}, {6668, 60, -12, 1}, {4014, 69, -14, 1}// 143 144 145
|
||||
, {4014, 64, -13, 1}, {4014, 65, -14, 1}, {4014, 67, -12, 1}// 146 147 148
|
||||
, {4014, 66, -8, 1}, {3644, 70, -15, 1}, {3644, 71, -10, 1}// 151 153 155
|
||||
, {3646, 70, -11, 4}, {7417, 57, -13, 1}, {7416, 57, -12, 1}// 157 158 159
|
||||
, {7415, 57, -11, 1}, {3647, 59, -17, 4}, {7414, 57, -10, 1}// 161 162 163
|
||||
, {7413, 57, -9, 1}, {7419, 58, -14, 1}, {7418, 58, -13, 1}// 164 165 166
|
||||
, {7433, 58, -12, 1}, {3644, 71, -11, 1}, {3644, 70, -11, 1}// 167 168 169
|
||||
, {7432, 58, -11, 1}, {604, 67, -17, 1}, {4014, 54, -4, 1}// 170 171 172
|
||||
, {604, 52, -1, 1}, {604, 52, -2, 1}, {604, 52, -3, 1}// 173 174 175
|
||||
, {3644, 54, -3, 1}, {3644, 55, -3, 1}, {3644, 55, -4, 1}// 176 177 178
|
||||
, {604, 52, -4, 1}, {604, 52, -5, 1}, {604, 52, -6, 1}// 179 180 181
|
||||
, {604, 52, -7, 1}, {3647, 55, -3, 7}, {3646, 55, -3, 4}// 182 183 184
|
||||
, {3644, 54, -16, 1}, {3644, 53, -16, 1}, {3644, 53, -17, 1}// 185 186 187
|
||||
, {604, 50, -15, 1}, {604, 50, -11, 1}, {604, 50, -13, 1}// 188 189 190
|
||||
, {604, 50, -14, 1}, {604, 50, -10, 1}, {604, 50, -12, 1}// 191 192 193
|
||||
, {3647, 53, -16, 4}, {604, 50, -16, 1}, {4014, 54, -17, 1}// 194 195 196
|
||||
, {604, 50, -17, 1}, {604, 50, -18, 1}, {4014, 54, -12, 1}// 197 198 199
|
||||
, {604, 50, -9, 1}, {604, 50, -19, 1}, {41040, 28, 5, 1}// 200 201 202
|
||||
, {41017, 28, 6, 1}, {41030, 25, 0, 1}, {41029, 24, 0, 1}// 203 204 205
|
||||
, {41031, 26, 0, 1}, {41032, 27, 0, 1}, {41018, 27, 6, 1}// 206 207 208
|
||||
, {41019, 26, 6, 1}, {41020, 25, 6, 1}, {41021, 24, 6, 1}// 209 210 211
|
||||
, {607, 32, -3, 1}, {607, 31, -3, 1}, {5453, 32, 3, 1}// 212 213 214
|
||||
, {5453, 32, 2, 1}, {607, 28, -3, 1}, {41039, 29, 5, 1}// 215 216 217
|
||||
, {41016, 29, 6, 1}, {41038, 29, 4, 1}, {41036, 29, 2, 1}// 218 219 220
|
||||
, {41035, 29, 1, 1}, {41038, 29, 3, 1}, {41037, 29, 3, 1}// 221 222 223
|
||||
, {607, 30, -3, 1}, {607, 29, -3, 1}, {607, 25, -10, 1}// 224 225 226
|
||||
, {607, 27, -10, 1}, {607, 24, -15, 1}, {607, 26, -10, 1}// 227 228 229
|
||||
, {607, 25, -15, 1}, {28, 15, 11, 1}, {28, 14, 11, 1}// 230 231 232
|
||||
, {28, 13, 11, 1}, {28, 10, 11, 1}, {5453, 21, 9, 1}// 233 234 235
|
||||
, {27, 9, 10, 1}, {27, 9, 9, 1}, {28, 11, 11, 1}// 236 237 238
|
||||
, {28, 12, 11, 1}, {27, 15, 11, 1}, {27, 15, 9, 1}// 239 240 241
|
||||
, {27, 9, 11, 1}, {27, 15, 10, 1}, {4014, 17, -4, 1}// 242 243 244
|
||||
, {4014, 20, -6, 1}, {4014, 19, -6, 1}, {4088, 8, -1, 7}// 245 246 247
|
||||
, /*{2501, 8, -3, 7},*/ {41027, 23, 1, 1}, {41026, 23, 2, 1}// 248 249 250
|
||||
, {41025, 23, 3, 1}, {41022, 23, 6, 1}, {41024, 23, 4, 0}// 251 252 253
|
||||
, {12254, 10, 5, 1}, /*{5368, 9, -3, 1},*/ {3644, 16, -6, 1}// 254 255 256
|
||||
, {3644, 17, -7, 1}, {2879, 8, 0, 1}, {2879, 8, -1, 1}// 257 258 259
|
||||
, {2879, 8, -2, 1}, {2879, 8, -3, 1}, {3644, 20, -7, 1}// 260 261 262
|
||||
, {33, 9, -4, 1}, {3644, 17, -3, 1}, {28, 8, -4, 1}// 263 264 265
|
||||
, {28, 9, 1, 1}, {28, 8, 1, 1}, {5453, 23, -2, 1}// 266 267 268
|
||||
, {5453, 22, 0, 1}, {4104, 8, 0, 7}, {3646, 18, -3, 4}// 269 270 271
|
||||
, /*{5356, 8, -2, 7},*/ {5453, 20, 8, 1}, {27, 9, 8, 1}// 272 273 274
|
||||
, {3646, 16, -6, 4}, {27, 9, 7, 1}, {27, 9, 6, 1}// 275 276 277
|
||||
, {27, 9, 5, 1}, {27, 9, 4, 1}, {27, 9, 3, 1}// 278 279 280
|
||||
, {27, 9, 2, 1}, {4014, 17, -6, 1}, {3646, 19, -7, 4}// 281 282 283
|
||||
, {3646, 17, -7, 4}, {3647, 18, -3, 7}, {3644, 19, -7, 1}// 284 285 286
|
||||
, {3644, 18, -3, 1}, {5453, 23, -3, 1}, {5453, 21, 1, 1}// 287 288 289
|
||||
, {3646, 23, -7, 4}, /*{5356, 8, -2, 8},*/ {3647, 23, -7, 7}// 290 291 292
|
||||
, {3644, 23, -7, 1}, {30, 13, -4, 1}, {28, 14, -4, 1}// 293 294 295
|
||||
, {28, 15, -4, 1}, {27, 15, -3, 1}, {27, 15, -2, 1}// 296 297 298
|
||||
, {32, 15, 4, 1}, {27, 15, -1, 1}, {27, 15, 0, 1}// 299 300 301
|
||||
, {27, 15, 1, 1}, {31, 15, 8, 1}, {27, 15, 2, 1}// 302 303 304
|
||||
, {27, 15, 3, 1}, {3644, 15, -9, 1}, {3644, 22, -14, 1}// 305 306 307
|
||||
, {3644, 23, -8, 1}, {3644, 8, -10, 1}, {3644, 8, -9, 1}// 308 309 310
|
||||
, {3644, 12, -9, 1}, {607, 22, -15, 1}, {607, 18, -15, 1}// 311 312 313
|
||||
, {607, 15, -15, 1}, {607, 23, -15, 1}, {607, 21, -15, 1}// 314 315 316
|
||||
, {607, 19, -15, 1}, {607, 20, -15, 1}, {607, 9, -11, 1}// 317 318 319
|
||||
, {607, 11, -11, 1}, {4014, 11, -9, 1}, {4014, 15, -10, 1}// 320 321 322
|
||||
, {4014, 17, -14, 1}, {4014, 16, -14, 1}, {612, 12, -11, 1}// 323 324 325
|
||||
, {4014, 22, -13, 1}, {3647, 8, -10, 7}, {607, 14, -15, 1}// 326 327 328
|
||||
, {604, 12, -14, 1}, {611, 12, -15, 1}, {607, 8, -11, 1}// 329 330 331
|
||||
, {4014, 16, -10, 1}, {4014, 16, -9, 1}, {4014, 23, -13, 1}// 332 333 334
|
||||
, {4014, 17, -13, 1}, {4014, 12, -10, 1}, {3646, 22, -14, 4}// 335 336 337
|
||||
, {607, 10, -11, 1}, {607, 17, -15, 1}, {3646, 15, -9, 4}// 338 339 340
|
||||
, {604, 12, -13, 1}, {604, 12, -12, 1}, {607, 13, -15, 1}// 341 342 343
|
||||
, {607, 16, -15, 1}, {3647, 12, -9, 7}, {3646, 12, -9, 4}// 344 345 346
|
||||
, {3646, 8, -10, 4}/*, {7867, 7, -1, 7}, {2501, 7, -2, 7}*/// 347 348 349
|
||||
, {2879, 7, -2, 1}, {2879, 7, 0, 1}, {2879, 7, -1, 1}// 350 351 352
|
||||
, {29, 6, -4, 1}, {28, 7, 1, 1}, {27, 6, -2, 1}// 353 354 355
|
||||
, {27, 6, 1, 1}, {604, 6, -7, 1}, {604, 6, -6, 1}// 356 357 358
|
||||
, {2879, 7, -3, 1}, {28, 7, -4, 1}, {27, 6, 0, 1}// 359 360 361
|
||||
, {27, 6, -1, 1}, {27, 6, -3, 1}, {4014, 7, -10, 1}// 362 363 364
|
||||
, {604, 6, -10, 1}, {604, 6, -8, 1}, {604, 6, -9, 1}// 365 366 367
|
||||
, {607, 7, -11, 1}, {4014, 7, -9, 1}, {610, 6, -11, 1}// 368 369 370
|
||||
, {3807, -23, 9, 1}, {4014, -19, 9, 1}, {3644, -18, 9, 1}// 371 372 373
|
||||
, {6786, -24, 9, 1}, {4014, -21, 2, 1}, {4014, -20, 2, 1}// 374 379 380
|
||||
, {4014, -17, 5, 1}, {3807, -21, 7, 1}, {3809, -23, 8, 1}// 381 383 384
|
||||
, {3809, -21, 6, 1}, {3647, -20, 1, 7}, {3647, -19, 6, 4}// 385 386 387
|
||||
, {605, -18, 2, 1}, {605, -21, -5, 1}, {605, -19, -5, 1}// 388 389 390
|
||||
, {605, -20, -5, 1}, {605, -24, -5, 1}, {7848, -23, 3, 1}// 391 392 393
|
||||
, {605, -23, -5, 1}, {605, -12, 2, 1}, {605, -16, 2, 1}// 394 395 396
|
||||
, {605, -17, 2, 1}, {4014, -15, 3, 1}, {605, -14, 2, 1}// 397 398 399
|
||||
, {605, -13, 2, 1}, {605, -15, 2, 1}, {3647, -21, 1, 7}// 400 401 402
|
||||
, {3646, -21, 1, 4}, {3644, -20, 1, 1}, {3644, -21, 1, 1}// 403 404 405
|
||||
, {3644, -16, 3, 1}, {6787, -24, 8, 1}, {3646, -20, 1, 4}// 406 407 408
|
||||
, {3644, -16, 4, 1}, {3644, -19, 6, 1}, {605, -22, -5, 1}// 409 411 412
|
||||
, {3646, -16, 3, 4}, {27, -35, 9, 1}, {27, -29, 10, 1}// 413 414 415
|
||||
, {27, -35, 12, 1}, {31, -29, 9, 1}, {28, -29, 13, 1}// 416 417 418
|
||||
, {27, -29, 11, 1}, {604, -29, 18, 1}, {28, -34, 13, 1}// 419 420 421
|
||||
, {28, -30, 13, 1}, {604, -29, 16, 1}, {604, -29, 17, 1}// 422 423 424
|
||||
, {28, -33, 13, 1}, {28, -32, 13, 1}, {604, -29, 14, 1}// 425 426 427
|
||||
, {604, -29, 19, 1}, {27, -29, 13, 1}, {27, -35, 13, 1}// 428 429 430
|
||||
, {3644, -27, 16, 1}, {604, -29, 15, 1}, {27, -29, 12, 1}// 431 432 433
|
||||
, {27, -35, 10, 1}, {28, -31, 13, 1}, {3644, -27, 15, 1}// 434 435 436
|
||||
, {4014, -28, 14, 1}, {27, -35, 11, 1}, {3646, -27, 16, 4}// 437 438 439
|
||||
, {5356, -30, 0, 7}/*, {5356, -34, 0, 8}, {5356, -34, 0, 7}*/// 440 441 442
|
||||
, /*{2501, -34, 1, 7},*/ {2880, -30, 0, 1}, {2880, -31, 0, 1}// 443 444 445
|
||||
, {2879, -34, 3, 1}, {2879, -34, 2, 1}, {2879, -34, 1, 1}// 446 447 448
|
||||
, {2879, -34, 0, 1}, {27, -29, 4, 1}, {28, -34, -1, 1}// 449 450 451
|
||||
, {28, -32, -1, 1}, {27, -35, 0, 1}, {604, -28, -2, 1}// 452 453 454
|
||||
, {604, -28, -3, 1}, {604, -28, -4, 1}, {605, -26, -5, 1}// 455 456 457
|
||||
, {611, -28, -5, 1}, {27, -29, 0, 1}, {27, -35, 1, 1}// 458 459 460
|
||||
, {3644, -27, 2, 1}, {612, -28, -1, 1}, {605, -25, -5, 1}// 461 462 463
|
||||
, {3809, -26, 7, 1}, {605, -29, -1, 1}, {27, -35, 4, 1}// 464 465 466
|
||||
, {3807, -26, 8, 1}, {32, -29, 5, 1}, {27, -29, 1, 1}// 467 468 469
|
||||
, {27, -35, 6, 1}, {28, -33, -1, 1}, {3644, -28, 2, 1}// 470 471 472
|
||||
, {27, -35, 3, 1}, {27, -35, 2, 1}, {27, -35, 7, 1}// 473 475 476
|
||||
, {27, -29, 2, 1}, {27, -35, 8, 1}, {29, -35, -1, 1}// 477 478 479
|
||||
, {3807, -26, 5, 1}, {605, -27, -5, 1}/*, {7867, -34, 2, 7}*/// 480 481 482
|
||||
, {3809, -26, 4, 1}, {27, -29, 3, 1}, {27, -35, 5, 1}// 483 484 485
|
||||
, {28, -29, -1, 1}, {12254, -34, 6, 1}, {28, -30, -1, 1}// 486 488 489
|
||||
, {28, -31, -1, 1}/*, {5359, -71, 14, 7}, {7867, -72, 14, 7}*/// 490 491 492
|
||||
, /*{5370, -69, 9, 1},*/ {5357, -66, 9, 7}, {5357, -72, 15, 7}// 493 494 495
|
||||
, {3647, -71, 10, 7}, {3646, -71, 10, 4}, {2879, -65, 9, 1}// 496 497 498
|
||||
, {2879, -66, 9, 1}, {27, -63, 11, 1}, {3644, -68, 14, 1}// 499 500 501
|
||||
, {3644, -64, 13, 1}, {3644, -70, 10, 1}, {4014, -67, 11, 1}// 502 503 504
|
||||
, {27, -63, 9, 1}, {3644, -71, 11, 1}, {3644, -71, 10, 1}// 505 506 507
|
||||
, {4014, -63, 13, 1}, {27, -63, 10, 1}, {27, -61, 15, 1}// 508 509 510
|
||||
, {27, -61, 18, 1}, {4014, -66, 16, 1}, {3644, -66, 15, 1}// 511 512 513
|
||||
, {4014, -65, 16, 1}, {26, -61, 19, 1}, {4014, -65, 15, 1}// 514 515 516
|
||||
, {28, -62, 19, 1}, {4014, -67, 12, 1}, {28, -61, 11, 1}// 517 518 519
|
||||
, {28, -72, 19, 1}, {27, -61, 13, 1}, {28, -62, 11, 1}// 520 521 522
|
||||
, {4014, -68, 15, 1}, {28, -71, 19, 1}, {28, -70, 19, 1}// 523 524 525
|
||||
, {28, -69, 19, 1}, {28, -67, 19, 1}, {28, -68, 19, 1}// 526 527 528
|
||||
, {27, -61, 14, 1}, {28, -66, 19, 1}, {28, -63, 19, 1}// 529 530 531
|
||||
, {28, -65, 19, 1}, {27, -61, 12, 1}, {28, -64, 19, 1}// 532 533 534
|
||||
, {2879, -72, 15, 1}, {2879, -71, 15, 1}, {2879, -71, 14, 1}// 535 536 537
|
||||
, {2879, -72, 14, 1}, {27, -61, 16, 1}, {3644, -66, 11, 1}// 538 539 540
|
||||
, {27, -61, 17, 1}/*, {5355, -66, 8, 8}, {5355, -66, 8, 7}*/// 541 542 543
|
||||
, {3647, -63, -5, 7}, {3646, -63, -5, 4}, {2879, -66, 8, 1}// 555 556 557
|
||||
, {2879, -65, 8, 1}, {28, -64, 7, 1}, {28, -65, 7, 1}// 558 564 565
|
||||
, {28, -67, 7, 1}, {28, -66, 7, 1}, {28, -63, 7, 1}// 566 567 568
|
||||
, {27, -63, 8, 1}, {4014, -68, 4, 1}, {4014, -67, 4, 1}// 569 570 571
|
||||
, {27, -68, 8, 1}, {27, -63, 6, 1}, {28, -68, 8, 1}// 572 573 574
|
||||
, {29, -68, 7, 1}, {27, -63, 7, 1}, {3644, -63, -4, 1}// 575 576 577
|
||||
, {4014, -62, -3, 1}, {3644, -63, 2, 1}, {3644, -63, 1, 1}// 578 579 580
|
||||
, {30, -69, 8, 1}, {3644, -63, -5, 1}, {3647, -69, -9, 7}// 581 582 583
|
||||
, {3647, -70, -9, 7}, {3646, -69, -9, 4}, {3644, -70, -9, 1}// 584 585 586
|
||||
, {3644, -69, -10, 1}, {3646, -70, -9, 4}, {605, -72, -11, 1}// 587 588 589
|
||||
, {605, -69, -11, 1}, {4014, -72, -10, 1}, {4014, -72, -9, 1}// 590 591 592
|
||||
, {605, -66, -11, 1}, {605, -67, -11, 1}, {605, -68, -11, 1}// 593 594 595
|
||||
, {605, -70, -11, 1}, {3644, -69, -9, 1}, {605, -71, -11, 1}// 596 597 598
|
||||
, /*{2501, -78, 14, 7}, {2501, -78, 15, 7},*/ {2879, -78, 15, 1}// 599 600 601
|
||||
, {2879, -78, 14, 1}, {2879, -78, 13, 1}, {12254, -78, 11, 1}// 602 603 604
|
||||
, {28, -78, 19, 1}, {28, -77, 19, 1}, {28, -76, 19, 1}// 605 606 607
|
||||
, {28, -75, 19, 1}, {28, -74, 19, 1}, {28, -73, 19, 1}// 608 609 610
|
||||
, {27, -79, 10, 1}, {27, -79, 9, 1}, {27, -79, 13, 1}// 611 612 613
|
||||
, {27, -79, 14, 1}, {27, -79, 12, 1}, {27, -79, 11, 1}// 614 615 616
|
||||
, {604, -78, 18, 1}, {27, -79, 16, 1}, {27, -79, 15, 1}// 617 618 619
|
||||
, {604, -78, 17, 1}, {604, -78, 19, 1}, {604, -75, 6, 1}// 620 621 625
|
||||
, {604, -75, 5, 1}, {604, -75, 4, 1}, {604, -75, 2, 1}// 626 627 628
|
||||
, {604, -75, 3, 1}, {604, -75, -5, 1}, {604, -75, 1, 1}// 629 630 631
|
||||
, {604, -75, -2, 1}, {604, -75, 0, 1}, {604, -75, -1, 1}// 632 633 634
|
||||
, {604, -75, -4, 1}, {604, -75, -3, 1}, {604, -75, -6, 1}// 635 636 637
|
||||
, {604, -75, -7, 1}, {29, -79, 8, 1}, {33, -75, 8, 1}// 638 639 640
|
||||
, {604, -75, 7, 1}, {28, -78, 8, 1}, {28, -77, 8, 1}// 641 642 643
|
||||
, {28, -76, 8, 1}, {604, -75, 8, 1}, {604, -75, -8, 1}// 644 645 646
|
||||
, {604, -75, -9, 1}, {604, -75, -10, 1}, {4014, -73, -10, 1}// 647 648 649
|
||||
, {605, -74, -11, 1}, {605, -73, -11, 1}, {4014, -73, -9, 1}// 650 651 652
|
||||
, {611, -75, -11, 1}// 653
|
||||
};
|
||||
|
||||
public override BaseAddonDeed Deed { get { return null; } }
|
||||
|
||||
[Constructable]
|
||||
public KhaldunDecorationAddon()
|
||||
{
|
||||
Instance = this;
|
||||
|
||||
for (int i = 0; i < m_AddOnSimpleComponents.Length / 4; i++)
|
||||
AddComponent(new AddonComponent(m_AddOnSimpleComponents[i, 0]), m_AddOnSimpleComponents[i, 1], m_AddOnSimpleComponents[i, 2], m_AddOnSimpleComponents[i, 3]);
|
||||
|
||||
AddComplexComponent((BaseAddon)this, 4643, 59, -12, 1, 1105, -1, "", 1);// 121
|
||||
AddComplexComponent((BaseAddon)this, 8429, 60, -9, 2, 1105, -1, "", 1);// 149
|
||||
AddComplexComponent((BaseAddon)this, 8429, 59, -9, 2, 1105, -1, "", 1);// 150
|
||||
AddComplexComponent((BaseAddon)this, 4646, 57, -12, 2, 1105, -1, "", 1);// 152
|
||||
AddComplexComponent((BaseAddon)this, 4646, 57, -11, 2, 1105, -1, "", 1);// 154
|
||||
AddComplexComponent((BaseAddon)this, 4648, 62, -12, 2, 1105, -1, "", 1);// 156
|
||||
AddComplexComponent((BaseAddon)this, 4648, 62, -11, 2, 1105, -1, "", 1);// 160
|
||||
AddComplexComponent((BaseAddon)this, 14031, -22, 7, 1, 1, -1, "Hole", 1);// 375
|
||||
AddComplexComponent((BaseAddon)this, 14031, -23, 6, 1, 1, -1, "Hole", 1);// 376
|
||||
AddComplexComponent((BaseAddon)this, 18818, -24, -2, 1, 1105, -1, "", 1);// 377
|
||||
AddComplexComponent((BaseAddon)this, 18819, -24, -3, 1, 1105, -1, "", 1);// 378
|
||||
AddComplexComponent((BaseAddon)this, 14031, -23, 7, 1, 1, -1, "Hole", 1);// 382
|
||||
AddComplexComponent((BaseAddon)this, 14031, -22, 6, 1, 1, -1, "Hole", 1);// 410
|
||||
AddComplexComponent((BaseAddon)this, 18820, -25, -2, 1, 1105, -1, "", 1);// 474
|
||||
AddComplexComponent((BaseAddon)this, 18821, -25, -3, 1, 1105, -1, "", 1);// 487
|
||||
AddComplexComponent((BaseAddon)this, 4077, -68, -1, 1, 1105, -1, "", 1);// 544
|
||||
AddComplexComponent((BaseAddon)this, 4076, -69, -1, 1, 1105, -1, "", 1);// 545
|
||||
AddComplexComponent((BaseAddon)this, 4073, -70, -1, 1, 1105, -1, "", 1);// 546
|
||||
AddComplexComponent((BaseAddon)this, 4078, -68, -2, 1, 1105, -1, "", 1);// 547
|
||||
AddComplexComponent((BaseAddon)this, 4074, -69, -2, 1, 1105, -1, "", 1);// 548
|
||||
AddComplexComponent((BaseAddon)this, 4070, -70, -2, 1, 1105, -1, "", 1);// 549
|
||||
AddComplexComponent((BaseAddon)this, 4075, -68, -3, 1, 1105, -1, "", 1);// 550
|
||||
AddComplexComponent((BaseAddon)this, 4072, -69, -3, 1, 1105, -1, "", 1);// 551
|
||||
AddComplexComponent((BaseAddon)this, 4071, -70, -3, 1, 1105, -1, "", 1);// 552
|
||||
AddComplexComponent((BaseAddon)this, 6571, -64, 2, 8, 0, 1, "", 1);// 553
|
||||
AddComplexComponent((BaseAddon)this, 6571, -64, -2, 4, 0, 1, "", 1);// 554
|
||||
AddComplexComponent((BaseAddon)this, 6571, -72, -4, 4, 0, 1, "", 1);// 559
|
||||
AddComplexComponent((BaseAddon)this, 6571, -72, 0, 4, 0, 1, "", 1);// 560
|
||||
AddComplexComponent((BaseAddon)this, 6571, -67, 0, 4, 0, 1, "", 1);// 561
|
||||
AddComplexComponent((BaseAddon)this, 6571, -67, -4, 4, 0, 1, "", 1);// 562
|
||||
AddComplexComponent((BaseAddon)this, 6571, -64, -6, 8, 0, 1, "", 1);// 563
|
||||
AddComplexComponent((BaseAddon)this, 6571, -74, 2, 8, 0, 1, "", 1);// 622
|
||||
AddComplexComponent((BaseAddon)this, 6571, -74, -2, 4, 0, 1, "", 1);// 623
|
||||
AddComplexComponent((BaseAddon)this, 6571, -74, -6, 8, 0, 1, "", 1);// 624
|
||||
|
||||
}
|
||||
|
||||
public KhaldunDecorationAddon( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
private static void AddComplexComponent(BaseAddon addon, int item, int xoffset, int yoffset, int zoffset, int hue, int lightsource)
|
||||
{
|
||||
AddComplexComponent(addon, item, xoffset, yoffset, zoffset, hue, lightsource, null, 1);
|
||||
}
|
||||
|
||||
private static void AddComplexComponent(BaseAddon addon, int item, int xoffset, int yoffset, int zoffset, int hue, int lightsource, string name, int amount)
|
||||
{
|
||||
AddonComponent ac;
|
||||
ac = new AddonComponent(item);
|
||||
if (name != null && name.Length > 0)
|
||||
ac.Name = name;
|
||||
if (hue != 0)
|
||||
ac.Hue = hue;
|
||||
if (amount > 1)
|
||||
{
|
||||
ac.Stackable = true;
|
||||
ac.Amount = amount;
|
||||
}
|
||||
if (lightsource != -1)
|
||||
ac.Light = (LightType) lightsource;
|
||||
addon.AddComponent(ac, xoffset, yoffset, zoffset);
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( 0 ); // Version
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
|
||||
Instance = this;
|
||||
}
|
||||
}
|
||||
|
||||
public class KhaldunWorkshop : BaseAddon
|
||||
{
|
||||
private static int[,] m_AddOnSimpleComponents = new int[,] {
|
||||
{7864, 4, 0, 12} // 7 8 9
|
||||
, {4179, 4, 1, 10}, {4130, -2, -3, 10}, {9932, -2, -2, 10}// 10 11 12
|
||||
, {7867, -2, 0, 12}, {7129, -2, 1, 10}, {4014, -1, 1, 4}// 13 14 15
|
||||
, {4015, 1, -3, 4}, {4017, 1, -2, 4}, {4017, 1, 0, 4}// 16 17 18
|
||||
, {2879, 4, 1, 4}, {2879, -2, -3, 4}, {2879, 4, 0, 4}// 19 20 21
|
||||
, {2879, 4, -1, 4}, {2879, 4, -2, 4}, {2879, 4, -3, 4}// 22 23 24
|
||||
, {2879, -2, 1, 4}, {2879, -2, 0, 4}, {2879, -2, -1, 4}// 25 26 27
|
||||
, {2879, -2, -2, 4}// 28
|
||||
};
|
||||
|
||||
public override BaseAddonDeed Deed { get { return null; } }
|
||||
|
||||
[Constructable]
|
||||
public KhaldunWorkshop()
|
||||
{
|
||||
for (int i = 0; i < m_AddOnSimpleComponents.Length / 4; i++)
|
||||
AddComponent(new AddonComponent(m_AddOnSimpleComponents[i, 0]), m_AddOnSimpleComponents[i, 1], m_AddOnSimpleComponents[i, 2], m_AddOnSimpleComponents[i, 3]);
|
||||
}
|
||||
|
||||
public KhaldunWorkshop(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0); // Version
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
using System;
|
||||
using Server;
|
||||
using Server.Gumps;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public class DetectiveBook : Item
|
||||
{
|
||||
[Constructable]
|
||||
public DetectiveBook() : base(4082)
|
||||
{
|
||||
}
|
||||
|
||||
public override void GetProperties(ObjectPropertyList list)
|
||||
{
|
||||
base.GetProperties(list);
|
||||
|
||||
list.Add(1158598); // Book title
|
||||
list.Add(1154760, "K. Jasper, Chief Inspector"); // By: ~1_NAME~
|
||||
}
|
||||
|
||||
public override void OnDoubleClick(Mobile m)
|
||||
{
|
||||
if (IsChildOf(m.Backpack))
|
||||
{
|
||||
Gump g = new Gump(150, 150);
|
||||
g.AddImage(0, 0, 30236);
|
||||
g.AddHtmlLocalized(110, 30, 350, 630, 1158600, false, false); // Book content
|
||||
|
||||
m.SendGump(g);
|
||||
}
|
||||
}
|
||||
|
||||
public DetectiveBook(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
using Server;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public class DetectiveCredentials : BaseNecklace
|
||||
{
|
||||
public override int LabelNumber { get { return 1158641; } } // RBG Detective Branch Official Credential
|
||||
|
||||
[Constructable]
|
||||
public DetectiveCredentials()
|
||||
: base(0x1088)
|
||||
{
|
||||
Hue = 1176;
|
||||
LootType = LootType.Blessed;
|
||||
}
|
||||
|
||||
public DetectiveCredentials(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write((int)0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,116 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
using Server;
|
||||
using Server.Prompts;
|
||||
using Server.Mobiles;
|
||||
using Server.Items;
|
||||
using Server.SkillHandlers;
|
||||
using Server.Gumps;
|
||||
using Server.Network;
|
||||
using Server.Engines.Quests;
|
||||
|
||||
namespace Server.Engines.Khaldun
|
||||
{
|
||||
public class DustPile : Item, IForensicTarget
|
||||
{
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public TrapDoor Door { get; set; }
|
||||
|
||||
public DustPile(TrapDoor door)
|
||||
: base(0x573D)
|
||||
{
|
||||
Movable = false;
|
||||
Hue = 2044;
|
||||
Name = "";
|
||||
Door = door;
|
||||
}
|
||||
|
||||
public void OnForensicEval(Mobile m)
|
||||
{
|
||||
if (!m.Player)
|
||||
return;
|
||||
|
||||
var quest = QuestHelper.GetQuest<GoingGumshoeQuest2>((PlayerMobile)m);
|
||||
|
||||
if (quest != null)
|
||||
{
|
||||
if (HasFoundClue(quest))
|
||||
{
|
||||
m.SendLocalizedMessage(1158613); // You have already documented this clue.
|
||||
}
|
||||
else
|
||||
{
|
||||
m.PrivateOverheadMessage(MessageType.Regular, 0x47E, 1157722, "Forensics", m.NetState); // *Your proficiency in ~1_SKILL~ reveals more about the item*
|
||||
m.SendLocalizedMessage(1158612, null, 0x23); // You have identified a clue! This item seems pertinent to the investigation!
|
||||
|
||||
m.SendSound(quest.UpdateSound);
|
||||
m.SendSound(m.Female ? 0x30B : 0x41A);
|
||||
|
||||
m.CloseGump(typeof(GumshoeItemGump));
|
||||
m.SendGump(new GumshoeItemGump(m, ItemID, Hue, "a dust pile", 1158617, null));
|
||||
|
||||
/*The dust seems to have have settled in a distinct pattern around whatever once was placed at this location.
|
||||
* Whatever it was, it was certainly small enough to be taken away in a hurry.*/
|
||||
|
||||
SetFoundClue(quest);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void SetFoundClue(GoingGumshoeQuest2 quest)
|
||||
{
|
||||
if (Door == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
switch (Door.Keyword.ToLower())
|
||||
{
|
||||
case "boreas": quest.ClueDust1 = true; break;
|
||||
case "moriens": quest.ClueDust2 = true; break;
|
||||
case "carthax": quest.ClueDust3 = true; break;
|
||||
case "tenebrae": quest.ClueDust4 = true; break;
|
||||
}
|
||||
}
|
||||
|
||||
private bool HasFoundClue(GoingGumshoeQuest2 quest)
|
||||
{
|
||||
if (Door == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
switch (Door.Keyword.ToLower())
|
||||
{
|
||||
case "boreas": return quest.ClueDust1;
|
||||
case "moriens": return quest.ClueDust2;
|
||||
case "carthax": return quest.ClueDust3;
|
||||
case "tenebrae": return quest.ClueDust4;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public DustPile(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write((int)0); // version
|
||||
writer.Write(Door);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
Door = reader.ReadItem() as TrapDoor;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,220 @@
|
||||
using System;
|
||||
|
||||
using Server;
|
||||
using Server.Mobiles;
|
||||
using Server.Items;
|
||||
using Server.SkillHandlers;
|
||||
using Server.Network;
|
||||
using Server.Gumps;
|
||||
using Server.Engines.Quests;
|
||||
|
||||
namespace Server.Engines.Khaldun
|
||||
{
|
||||
public class BaseGumshoeForensicItem : Item, IForensicTarget
|
||||
{
|
||||
public virtual string ItemName { get { return null; } }
|
||||
public virtual int Cliloc { get { return 0; } }
|
||||
|
||||
public override bool DisplayWeight { get { return false; } }
|
||||
|
||||
public BaseGumshoeForensicItem(int itemID)
|
||||
: base(itemID)
|
||||
{
|
||||
Movable = false;
|
||||
}
|
||||
|
||||
public void OnForensicEval(Mobile m)
|
||||
{
|
||||
if (!m.Player)
|
||||
return;
|
||||
|
||||
var quest = QuestHelper.GetQuest<GoingGumshoeQuest2>((PlayerMobile)m);
|
||||
|
||||
if (quest != null)
|
||||
{
|
||||
m.PrivateOverheadMessage(MessageType.Regular, 0x47E, 1157722, "Forensics", m.NetState); // *Your proficiency in ~1_SKILL~ reveals more about the item*
|
||||
m.SendLocalizedMessage(1158612, null, 0x23); // You have identified a clue! This item seems pertinent to the investigation!
|
||||
|
||||
m.SendSound(quest.UpdateSound);
|
||||
m.SendSound(m.Female ? 0x30B : 0x41A);
|
||||
|
||||
m.CloseGump(typeof(GumshoeItemGump));
|
||||
m.SendGump(new GumshoeItemGump(m, ItemID, Hue, ItemName, Cliloc, null));
|
||||
}
|
||||
}
|
||||
|
||||
public BaseGumshoeForensicItem(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write((int)0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
public class GumshoeBottles : BaseGumshoeForensicItem
|
||||
{
|
||||
public override string ItemName { get { return "bottles of wine"; } }
|
||||
public override int Cliloc { get { return 1158572; } }
|
||||
|
||||
[Constructable]
|
||||
public GumshoeBottles()
|
||||
: base(0x9C5)
|
||||
{
|
||||
}
|
||||
|
||||
public GumshoeBottles(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write((int)0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
public class GumshoeDeed : BaseGumshoeForensicItem
|
||||
{
|
||||
public override string ItemName { get { return "deed"; } }
|
||||
public override int Cliloc { get { return 1158575; } }
|
||||
|
||||
[Constructable]
|
||||
public GumshoeDeed()
|
||||
: base(0x14EF)
|
||||
{
|
||||
}
|
||||
|
||||
public GumshoeDeed(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write((int)0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
public class GumshoeRope : BaseGumshoeForensicItem
|
||||
{
|
||||
public override string ItemName { get { return "rope"; } }
|
||||
public override int Cliloc { get { return 1158573; } }
|
||||
|
||||
[Constructable]
|
||||
public GumshoeRope()
|
||||
: base(0x14FA)
|
||||
{
|
||||
}
|
||||
|
||||
public GumshoeRope(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write((int)0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
public class GumshoeMap : BaseGumshoeForensicItem
|
||||
{
|
||||
public override string ItemName { get { return "map"; } }
|
||||
public override int Cliloc { get { return 1158574; } }
|
||||
|
||||
[Constructable]
|
||||
public GumshoeMap()
|
||||
: base(0x14EB)
|
||||
{
|
||||
}
|
||||
|
||||
public GumshoeMap(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write((int)0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
|
||||
public class GumshoeTools : BaseGumshoeForensicItem
|
||||
{
|
||||
public override string ItemName { get { return "tools"; } }
|
||||
public override int Cliloc { get { return 1158576; } }
|
||||
|
||||
[Constructable]
|
||||
public GumshoeTools()
|
||||
: base(0x1EBB)
|
||||
{
|
||||
}
|
||||
|
||||
public GumshoeTools(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write((int)0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
using System;
|
||||
using Server.Mobiles;
|
||||
|
||||
namespace Server.Items
|
||||
{
|
||||
public class GumshoeTitleDeed : BaseRewardTitleDeed
|
||||
{
|
||||
public override TextDefinition Title { get { return 1158638; } } // Gumpshoe
|
||||
|
||||
[Constructable]
|
||||
public GumshoeTitleDeed()
|
||||
{
|
||||
}
|
||||
|
||||
public GumshoeTitleDeed(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write((int)0);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int v = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,191 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
using Server;
|
||||
using Server.Prompts;
|
||||
using Server.Mobiles;
|
||||
using Server.Items;
|
||||
using Server.SkillHandlers;
|
||||
using Server.Network;
|
||||
using Server.Gumps;
|
||||
using Server.Engines.Quests;
|
||||
|
||||
namespace Server.Engines.Khaldun
|
||||
{
|
||||
public class MysteriousBook : Item, IForensicTarget
|
||||
{
|
||||
public override int LabelNumber { get { return 1158583; } } // mysterious book
|
||||
public static readonly Point3D SpawnLocation = new Point3D(6240, 2885, 7);
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public TrapDoor Door { get; set; }
|
||||
|
||||
public MysteriousBook(TrapDoor door)
|
||||
: base(0x42b8)
|
||||
{
|
||||
Movable = false;
|
||||
Door = door;
|
||||
Hue = 1950;
|
||||
}
|
||||
|
||||
public void OnForensicEval(Mobile m)
|
||||
{
|
||||
if (!m.Player)
|
||||
return;
|
||||
|
||||
var quest = QuestHelper.GetQuest<GoingGumshoeQuest2>((PlayerMobile)m);
|
||||
|
||||
if (quest != null)
|
||||
{
|
||||
if (HasFoundClue1(quest))
|
||||
{
|
||||
m.SendLocalizedMessage(1158613); // You have already documented this clue.
|
||||
}
|
||||
else
|
||||
{
|
||||
m.PrivateOverheadMessage(MessageType.Regular, 0x47E, 1157722, "Forensics", m.NetState); // *Your proficiency in ~1_SKILL~ reveals more about the item*
|
||||
m.SendLocalizedMessage(1158612, null, 0x23); // You have identified a clue! This item seems pertinent to the investigation!
|
||||
|
||||
m.SendSound(quest.UpdateSound);
|
||||
m.SendSound(m.Female ? 0x30B : 0x41A);
|
||||
|
||||
m.CloseGump(typeof(GumshoeItemGump));
|
||||
m.SendGump(new GumshoeItemGump(m, ItemID, Hue, "book", 1158577, null));
|
||||
|
||||
SetFoundClue1(quest);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void OnInscribeTarget(Mobile m)
|
||||
{
|
||||
var quest = QuestHelper.GetQuest<GoingGumshoeQuest2>((PlayerMobile)m);
|
||||
|
||||
if (quest != null)
|
||||
{
|
||||
if (HasFoundClue2(quest))
|
||||
{
|
||||
m.SendLocalizedMessage(1158613); // You have already documented this clue.
|
||||
}
|
||||
else
|
||||
{
|
||||
m.PrivateOverheadMessage(MessageType.Regular, 0x47E, 1158582, m.NetState); // *You copy several pages onto some parchment and roll it up...*
|
||||
m.SendLocalizedMessage(1158612, null, 0x23); // You have identified a clue! This item seems pertinent to the investigation!
|
||||
m.AddToBackpack(new RolledParchment(GetPage()));
|
||||
m.PlaySound(0x249);
|
||||
|
||||
m.SendSound(quest.UpdateSound);
|
||||
|
||||
SetFoundClue2(quest);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void SetFoundClue1(GoingGumshoeQuest2 quest)
|
||||
{
|
||||
if (Door == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
switch (Door.Keyword.ToLower())
|
||||
{
|
||||
case "boreas": quest.ClueBook1_1 = true; break;
|
||||
case "moriens": quest.ClueBook2_1 = true; break;
|
||||
case "carthax": quest.ClueBook3_1 = true; break;
|
||||
case "tenebrae": quest.ClueBook4_1 = true; break;
|
||||
}
|
||||
}
|
||||
|
||||
private void SetFoundClue2(GoingGumshoeQuest2 quest)
|
||||
{
|
||||
if (Door == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
switch (Door.Keyword.ToLower())
|
||||
{
|
||||
case "boreas": quest.ClueBook1_2 = true; break;
|
||||
case "moriens": quest.ClueBook2_2 = true; break;
|
||||
case "carthax": quest.ClueBook3_2 = true; break;
|
||||
case "tenebrae": quest.ClueBook4_2 = true; break;
|
||||
}
|
||||
}
|
||||
|
||||
private bool HasFoundClue1(GoingGumshoeQuest2 quest)
|
||||
{
|
||||
if (Door == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
switch (Door.Keyword.ToLower())
|
||||
{
|
||||
case "boreas": return quest.ClueBook1_1;
|
||||
case "moriens": return quest.ClueBook2_1;
|
||||
case "carthax": return quest.ClueBook3_1;
|
||||
case "tenebrae": return quest.ClueBook4_1;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
private bool HasFoundClue2(GoingGumshoeQuest2 quest)
|
||||
{
|
||||
if (Door == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
switch (Door.Keyword.ToLower())
|
||||
{
|
||||
case "boreas": return quest.ClueBook1_2;
|
||||
case "moriens": return quest.ClueBook2_2;
|
||||
case "carthax": return quest.ClueBook3_2;
|
||||
case "tenebrae": return quest.ClueBook4_2;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
private int GetPage()
|
||||
{
|
||||
if (Door == null)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
switch (Door.Keyword.ToLower())
|
||||
{
|
||||
case "boreas": return 1158629;
|
||||
case "moriens": return 1158630;
|
||||
case "carthax": return 1158631;
|
||||
case "tenebrae": return 1158632;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
public MysteriousBook(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write((int)0); // version
|
||||
writer.Write(Door);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
Door = reader.ReadItem() as TrapDoor;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
using Server;
|
||||
using Server.Prompts;
|
||||
using Server.Mobiles;
|
||||
using Server.Items;
|
||||
using Server.SkillHandlers;
|
||||
using Server.Network;
|
||||
using Server.Gumps;
|
||||
using Server.Engines.Quests;
|
||||
|
||||
namespace Server.Engines.Khaldun
|
||||
{
|
||||
public class RolledParchment : Item
|
||||
{
|
||||
public override int LabelNumber { get { return 1158578; } } // rolled parchment
|
||||
|
||||
public int Page { get; set; }
|
||||
|
||||
public RolledParchment(int page)
|
||||
: base(0x2831)
|
||||
{
|
||||
Page = page;
|
||||
}
|
||||
|
||||
public override void GetProperties(ObjectPropertyList list)
|
||||
{
|
||||
base.GetProperties(list);
|
||||
|
||||
list.Add(Page);
|
||||
}
|
||||
|
||||
public override void OnDoubleClick(Mobile m)
|
||||
{
|
||||
m.CloseGump(typeof(GumshoeItemGump));
|
||||
m.SendGump(new GumshoeItemGump(m, ItemID, Hue, "rolled parchment", 1158580, "Copied From a Book Found in a Hidden Supply Cache"));
|
||||
|
||||
m.PrivateOverheadMessage(MessageType.Regular, 0x47E, 1157722, "its origin", m.NetState); // *Your proficiency in ~1_SKILL~ reveals more about the item*
|
||||
m.SendSound(m.Female ? 0x30B : 0x41A);
|
||||
}
|
||||
|
||||
public RolledParchment(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write((int)0); // version
|
||||
writer.Write(Page);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
Page = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,221 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
using Server;
|
||||
using Server.Prompts;
|
||||
using Server.Mobiles;
|
||||
using Server.Items;
|
||||
using Server.SkillHandlers;
|
||||
using Server.Network;
|
||||
using Server.Engines.Quests;
|
||||
|
||||
namespace Server.Engines.Khaldun
|
||||
{
|
||||
public class TrapDoor : Item, IRevealableItem, IForensicTarget
|
||||
{
|
||||
//public static readonly Point3D TeleportDestination1 = new Point3D(6242, 2892, 17);
|
||||
|
||||
public Timer HideTimer { get; set; }
|
||||
public bool CheckWhenHidden { get { return true; } }
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public Map DestinationMap { get; set; }
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public Point3D Destination { get; set; }
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public string Keyword { get; set; }
|
||||
|
||||
private bool _HasBeenExamined;
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public bool HasBeenExamined
|
||||
{
|
||||
get
|
||||
{
|
||||
return _HasBeenExamined;
|
||||
}
|
||||
set
|
||||
{
|
||||
bool current = _HasBeenExamined;
|
||||
_HasBeenExamined = value;
|
||||
|
||||
if (!current && _HasBeenExamined)
|
||||
{
|
||||
HideTimer = Timer.DelayCall(TimeSpan.FromMinutes(20), () => Hide() );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public TrapDoor(string keyword, Point3D dest, Map destMap)
|
||||
: base(0xA1CD)
|
||||
{
|
||||
Keyword = keyword;
|
||||
Destination = dest;
|
||||
DestinationMap = destMap;
|
||||
|
||||
Movable = false;
|
||||
Visible = false;
|
||||
}
|
||||
|
||||
public override void Delete()
|
||||
{
|
||||
base.Delete();
|
||||
|
||||
if (HideTimer != null)
|
||||
{
|
||||
HideTimer.Stop();
|
||||
HideTimer = null;
|
||||
}
|
||||
}
|
||||
|
||||
private void Hide()
|
||||
{
|
||||
Visible = false;
|
||||
HasBeenExamined = false;
|
||||
ItemID = 0xA1CD;
|
||||
|
||||
if (HideTimer != null)
|
||||
{
|
||||
HideTimer.Stop();
|
||||
HideTimer = null;
|
||||
}
|
||||
}
|
||||
|
||||
public bool CheckReveal(Mobile m)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public bool CheckPassiveDetect(Mobile m)
|
||||
{
|
||||
if (m.InRange(Location, 4))
|
||||
{
|
||||
if (Utility.Random(100) < 10)
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public void OnRevealed(Mobile m)
|
||||
{
|
||||
m.PrivateOverheadMessage(MessageType.Regular, 0x47E, 1158556, m.NetState); // *You notice something hidden in the floor...*
|
||||
Visible = true;
|
||||
}
|
||||
|
||||
public void OnForensicEval(Mobile m)
|
||||
{
|
||||
if (!m.Player)
|
||||
return;
|
||||
|
||||
var quest = QuestHelper.GetQuest<GoingGumshoeQuest2>((PlayerMobile)m);
|
||||
|
||||
if (quest != null && CheckPrerequisite(quest))
|
||||
{
|
||||
m.PrivateOverheadMessage(MessageType.Regular, 0x47E, 1158559, m.NetState); // *You discover a hidden trap door!*
|
||||
m.SendLocalizedMessage(1158611, null, 0x23); // It seems a trap door has been hidden in some false pavers. The heavy wooden door is secured with a rotating combination lock that accepts alpha-numeric characters. You'll need to figure out the passcode to unlock it...
|
||||
|
||||
m.SendSound(quest.UpdateSound);
|
||||
|
||||
HasBeenExamined = true;
|
||||
ItemID = 0xA1CC;
|
||||
|
||||
if (HideTimer != null)
|
||||
{
|
||||
HideTimer.Stop();
|
||||
HideTimer = null;
|
||||
|
||||
HideTimer = Timer.DelayCall(TimeSpan.FromMinutes(20), () => Hide());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private bool CheckPrerequisite(GoingGumshoeQuest2 quest)
|
||||
{
|
||||
switch (Keyword.ToLower())
|
||||
{
|
||||
case "boreas": return quest.VisitedHeastone1; // brit
|
||||
case "moriens": return quest.VisitedHeastone2; // vesper
|
||||
case "carthax": return quest.VisitedHeastone3; // moonglow
|
||||
case "tenebrae": return quest.VisitedHeastone4; // yew
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public override void OnDoubleClick(Mobile m)
|
||||
{
|
||||
if (Destination == Point3D.Zero || DestinationMap == null || DestinationMap == Map.Internal || String.IsNullOrEmpty(Keyword))
|
||||
return;
|
||||
|
||||
if (m.InRange(GetWorldLocation(), 2) && _HasBeenExamined)
|
||||
{
|
||||
m.Prompt = new TrapDoorPrompt(this);
|
||||
}
|
||||
}
|
||||
|
||||
private class TrapDoorPrompt : Prompt
|
||||
{
|
||||
public override int MessageCliloc { get { return 1158557; } }
|
||||
|
||||
public TrapDoor Door { get; set; }
|
||||
|
||||
public TrapDoorPrompt(TrapDoor door)
|
||||
{
|
||||
Door = door;
|
||||
}
|
||||
|
||||
public override void OnResponse(Mobile from, string text)
|
||||
{
|
||||
if (Door.Destination == Point3D.Zero || Door.DestinationMap == null || Door.DestinationMap == Map.Internal || String.IsNullOrEmpty(Door.Keyword))
|
||||
return;
|
||||
|
||||
if (!string.IsNullOrEmpty(text) && text.Trim().ToLower() == Door.Keyword.ToLower())
|
||||
{
|
||||
Effects.SendLocationParticles(EffectItem.Create(from.Location, from.Map, EffectItem.DefaultDuration), 0x3728, 10, 10, 2023);
|
||||
from.MoveToWorld(Door.Destination, Door.DestinationMap);
|
||||
Effects.SendLocationParticles(EffectItem.Create(Door.Destination, Door.DestinationMap, EffectItem.DefaultDuration), 0x3728, 10, 10, 5023);
|
||||
}
|
||||
else
|
||||
{
|
||||
from.SendLocalizedMessage(1155663); // Nothign Happens
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnCancel(Mobile from)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
public TrapDoor(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write((int)0); // version
|
||||
|
||||
writer.Write(Keyword);
|
||||
writer.Write(Destination);
|
||||
writer.Write(DestinationMap);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
|
||||
Keyword = reader.ReadString();
|
||||
Destination = reader.ReadPoint3D();
|
||||
DestinationMap = reader.ReadMap();
|
||||
|
||||
Hide();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user