#W# Source and Scripts added. Added Scripts/Settings.cs to expose some basic tweak able settings.

This commit is contained in:
WarrentyExpired 2026-08-06 11:06:05 -04:00
parent b51c58f514
commit 3045c83799
3512 changed files with 627673 additions and 0 deletions

View file

@ -0,0 +1,51 @@
using System;
using Server;
using Server.Mobiles;
namespace Server.Engines.Quests.Ninja
{
public class BlueNinjaQuestTeleporter : DynamicTeleporter
{
public override int LabelNumber{ get{ return 1026157; } } // teleporter
[Constructable]
public BlueNinjaQuestTeleporter() : base( 0x51C, 0x2 )
{
}
public override int NotWorkingMessage{ get{ return 1063198; } } // You stand on the strange floor tile but nothing happens.
public override bool GetDestination( PlayerMobile player, ref Point3D loc, ref Map map )
{
QuestSystem qs = player.Quest;
if ( qs is EminosUndertakingQuest && qs.FindObjective( typeof( GainInnInformationObjective ) ) != null )
{
loc = new Point3D( 411, 1116, 0 );
map = Map.Malas;
return true;
}
return false;
}
public BlueNinjaQuestTeleporter( 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();
}
}
}

View file

@ -0,0 +1,48 @@
using System;
using Server.Mobiles;
using Server.Items;
namespace Server.Engines.Quests.Ninja
{
public class EminosKatana : QuestItem
{
public override int LabelNumber{ get{ return 1063214; } } // Daimyo Emino's Katana
[Constructable]
public EminosKatana() : base( 0x13FF )
{
Weight = 1.0;
}
public EminosKatana( Serial serial ) : base( serial )
{
}
public override bool CanDrop( PlayerMobile player )
{
EminosUndertakingQuest qs = player.Quest as EminosUndertakingQuest;
if ( qs == null )
return true;
/*return !qs.IsObjectiveInProgress( typeof( ReturnSwordObjective ) )
&& !qs.IsObjectiveInProgress( typeof( SlayHenchmenObjective ) )
&& !qs.IsObjectiveInProgress( typeof( GiveEminoSwordObjective ) );*/
return false;
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,148 @@
using System;
using Server;
using Server.Items;
using Server.Mobiles;
using Server.Network;
namespace Server.Engines.Quests.Ninja
{
public class EminosKatanaChest : WoodenChest
{
[Constructable]
public EminosKatanaChest()
{
Movable = false;
ItemID = 0xE42;
GenerateTreasure();
}
public EminosKatanaChest( Serial serial ) : base( serial )
{
}
public override bool IsDecoContainer{ get{ return false; } }
private void GenerateTreasure()
{
for ( int i = this.Items.Count - 1; i >= 0; i-- )
this.Items[i].Delete();
for ( int i = 0; i < 75; i++ )
{
switch ( Utility.Random( 3 ) )
{
case 0: DropItem( new GoldBracelet() ); break;
case 1: DropItem( new GoldRing() ); break;
case 2: DropItem( Loot.RandomGem() ); break;
}
}
}
public override void OnDoubleClick( Mobile from )
{
PlayerMobile player = from as PlayerMobile;
if ( player != null && player.InRange( GetWorldLocation(), 2 ) )
{
QuestSystem qs = player.Quest;
if ( qs is EminosUndertakingQuest )
{
if ( EminosUndertakingQuest.HasLostEminosKatana( from ) )
{
Item katana = new EminosKatana();
if ( !player.PlaceInBackpack( katana ) )
{
katana.Delete();
player.SendLocalizedMessage( 1046260 ); // You need to clear some space in your inventory to continue with the quest. Come back here when you have more space in your inventory.
}
}
else
{
QuestObjective obj = qs.FindObjective( typeof( HallwayWalkObjective ) );
if ( obj != null && !obj.Completed )
{
Item katana = new EminosKatana();
if ( player.PlaceInBackpack( katana ) )
{
GenerateTreasure();
obj.Complete();
}
else
{
katana.Delete();
player.SendLocalizedMessage( 1046260 ); // You need to clear some space in your inventory to continue with the quest. Come back here when you have more space in your inventory.
}
}
}
}
}
base.OnDoubleClick( from );
}
public override bool CheckHold( Mobile m, Item item, bool message, bool checkItems, int plusItems, int plusWeight )
{
return false;
}
public override bool CheckItemUse( Mobile from, Item item )
{
return item == this;
}
public override bool CheckLift( Mobile from, Item item, ref LRReason reject )
{
if ( from.AccessLevel >= AccessLevel.GameMaster )
return true;
PlayerMobile player = from as PlayerMobile;
if ( player != null && player.Quest is EminosUndertakingQuest )
{
HallwayWalkObjective obj = player.Quest.FindObjective( typeof( HallwayWalkObjective ) ) as HallwayWalkObjective;
if ( obj != null )
{
if ( obj.StolenTreasure )
from.SendLocalizedMessage( 1063247 ); // The guard is watching you carefully! It would be unwise to remove another item from here.
else
return true;
}
}
return false;
}
public override void OnItemLifted( Mobile from, Item item )
{
PlayerMobile player = from as PlayerMobile;
if ( player != null && player.Quest is EminosUndertakingQuest )
{
HallwayWalkObjective obj = player.Quest.FindObjective( typeof( HallwayWalkObjective ) ) as HallwayWalkObjective;
if ( obj != null )
obj.StolenTreasure = true;
}
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,51 @@
using System;
using Server;
using Server.Mobiles;
namespace Server.Engines.Quests.Ninja
{
public class GreenNinjaQuestTeleporter : DynamicTeleporter
{
public override int LabelNumber{ get{ return 1026157; } } // teleporter
[Constructable]
public GreenNinjaQuestTeleporter() : base( 0x51C, 0x17E )
{
}
public override int NotWorkingMessage{ get{ return 1063198; } } // You stand on the strange floor tile but nothing happens.
public override bool GetDestination( PlayerMobile player, ref Point3D loc, ref Map map )
{
QuestSystem qs = player.Quest;
if ( qs is EminosUndertakingQuest && qs.FindObjective( typeof( UseTeleporterObjective ) ) != null )
{
loc = new Point3D( 410, 1125, 0 );
map = Map.Malas;
return true;
}
return false;
}
public GreenNinjaQuestTeleporter( 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();
}
}
}

View file

@ -0,0 +1,82 @@
using System;
using Server;
using Server.Items;
using Server.Mobiles;
namespace Server.Engines.Quests.Ninja
{
public class GuardianBarrier : Item
{
[Constructable]
public GuardianBarrier() : base( 0x3967 )
{
Movable = false;
Visible = false;
}
public override bool OnMoveOver( Mobile m )
{
if ( m.AccessLevel > AccessLevel.Player )
return true;
// If the mobile is to the north of the barrier, allow him to pass
if ( this.Y >= m.Y )
return true;
if ( m is BaseCreature )
{
Mobile master = ((BaseCreature)m).GetMaster();
// Allow creatures to cross from the south to the north only if their master is near to the north
if ( master != null && this.Y >= master.Y && master.InRange( this, 4 ) )
return true;
else
return false;
}
PlayerMobile pm = m as PlayerMobile;
if ( pm != null )
{
EminosUndertakingQuest qs = pm.Quest as EminosUndertakingQuest;
if ( qs != null )
{
SneakPastGuardiansObjective obj = qs.FindObjective( typeof( SneakPastGuardiansObjective ) ) as SneakPastGuardiansObjective;
if ( obj != null )
{
if ( m.Hidden )
return true; // Hidden ninjas can pass
if ( !obj.TaughtHowToUseSkills )
{
obj.TaughtHowToUseSkills = true;
qs.AddConversation( new NeedToHideConversation() );
}
}
}
}
return false;
}
public GuardianBarrier( 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();
}
}
}

View file

@ -0,0 +1,48 @@
using System;
using Server;
using Server.Mobiles;
using Server.Engines.Quests;
namespace Server.Engines.Quests.Ninja
{
public class NoteForZoel : QuestItem
{
public override int LabelNumber{ get{ return 1063186; } } // A Note for Zoel
[Constructable]
public NoteForZoel() : base( 0x14EF )
{
Weight = 1.0;
Hue = 0x6B9;
}
public NoteForZoel( Serial serial ) : base( serial )
{
}
public override bool CanDrop( PlayerMobile player )
{
EminosUndertakingQuest qs = player.Quest as EminosUndertakingQuest;
if ( qs == null )
return true;
//return !qs.IsObjectiveInProgress( typeof( GiveZoelNoteObjective ) );
return false;
}
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();
}
}
}

View file

@ -0,0 +1,59 @@
using System;
using Server;
using Server.Mobiles;
namespace Server.Engines.Quests.Ninja
{
public class WhiteNinjaQuestTeleporter : DynamicTeleporter
{
public override int LabelNumber{ get{ return 1026157; } } // teleporter
[Constructable]
public WhiteNinjaQuestTeleporter() : base( 0x51C, 0x47E )
{
}
public override int NotWorkingMessage{ get{ return 1063198; } } // You stand on the strange floor tile but nothing happens.
public override bool GetDestination( PlayerMobile player, ref Point3D loc, ref Map map )
{
QuestSystem qs = player.Quest;
if ( qs is EminosUndertakingQuest )
{
QuestObjective obj = qs.FindObjective( typeof( SearchForSwordObjective ) );
if ( obj != null )
{
if ( !obj.Completed )
obj.Complete();
loc = new Point3D( 411, 1085, 0 );
map = Map.Malas;
return true;
}
}
return false;
}
public WhiteNinjaQuestTeleporter( 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();
}
}
}