- Added Scrolls of Transcendence and Scrolls of Alacrity. Scrolls of Transcendence, togheter with 105 Powerscrolls, will spawn while doing champion spawns.
(http://www.uodemise.com/discussion/showthread.php?t=116067) - Rune Beetle Armor Corruption now works properly (http://www.uodemise.com/discussion/showthread.php?t=123086) - the Animal Trainer now will say only "Your pet has been stabled" when you stable a pet (won't affect Pre-AoS) (http://www.uodemise.com/discussion/showthread.php?t=123113) - Acid elementals now use the proper poison level, and are vulnerable to elemental slayers. When animated, they turn in wraith or banshee (http://www.uodemise.com/discussion/showthread.php?t=125749) - You can't drop items on the same tile a mobile (PC or NPC) is (http://www.uodemise.com/discussion/showthread.php?t=116540) - the Embrace Honor virtue ability now works as per OSI (http://www.uodemise.com/discussion/showthread.php?t=125722) - Woodland Belts now are dyable (http://www.uodemise.com/discussion/showthread.php?t=128444) - You can combine folded cloth and bottle of liquor to make firebombs (http://www.uodemise.com/discussion/showthread.php?t=125257) - SoS now are not anymore facet specific, as per OSI (http://www.uodemise.com/discussion/showthread.php?t=115477)
This commit is contained in:
parent
e519ff2497
commit
37043076e0
19 changed files with 1236 additions and 17 deletions
|
|
@ -387,6 +387,137 @@ namespace Server.Engines.CannedEvil
|
|||
Start();
|
||||
}
|
||||
|
||||
#region Scroll of Transcendence
|
||||
private ScrollofTranscendence CreateRandomTramSoT()
|
||||
{
|
||||
int level;
|
||||
double random = Utility.RandomDouble();
|
||||
|
||||
if (0.2 >= random)
|
||||
level = 5;
|
||||
else if (0.4 >= random)
|
||||
level = 4;
|
||||
else if (0.6 >= random)
|
||||
level = 3;
|
||||
else if (0.8 >= random)
|
||||
level = 2;
|
||||
else
|
||||
level = 1;
|
||||
|
||||
return ScrollofTranscendence.CreateRandom(level, level);
|
||||
}
|
||||
|
||||
private ScrollofTranscendence CreateRandomFelSoT()
|
||||
{
|
||||
int level;
|
||||
double random = Utility.RandomDouble();
|
||||
|
||||
if (0.2 >= random)
|
||||
level = 10;
|
||||
else if (0.4 >= random)
|
||||
level = 9;
|
||||
else if (0.6 >= random)
|
||||
level = 8;
|
||||
else if (0.8 >= random)
|
||||
level = 7;
|
||||
else
|
||||
level = 6;
|
||||
|
||||
return ScrollofTranscendence.CreateRandom(level, level);
|
||||
}
|
||||
|
||||
private PowerScroll CreateRandomFelPS()
|
||||
{
|
||||
return PowerScroll.CreateRandomNoCraft(5, 5);
|
||||
}
|
||||
|
||||
public static void GiveScrollOfTranscendenceFelTo ( Mobile killer, ScrollofTranscendence SoTF )
|
||||
{
|
||||
if( SoTF == null || killer == null ) //sanity
|
||||
return;
|
||||
|
||||
killer.SendLocalizedMessage( 1094936 ); // You have received a Scroll of Transcendence!
|
||||
|
||||
if ( killer.Alive )
|
||||
killer.AddToBackpack( SoTF );
|
||||
else
|
||||
{
|
||||
if( killer.Corpse != null && !killer.Corpse.Deleted )
|
||||
killer.Corpse.DropItem( SoTF );
|
||||
else
|
||||
killer.AddToBackpack( SoTF );
|
||||
}
|
||||
|
||||
|
||||
// Justice reward
|
||||
PlayerMobile pm = (PlayerMobile)killer;
|
||||
for (int j = 0; j < pm.JusticeProtectors.Count; ++j)
|
||||
{
|
||||
Mobile prot = (Mobile)pm.JusticeProtectors[j];
|
||||
if (prot.Map != killer.Map || prot.Kills >= 5 || prot.Criminal || !JusticeVirtue.CheckMapRegion(killer, prot))
|
||||
continue;
|
||||
|
||||
int chance = 0;
|
||||
|
||||
switch (VirtueHelper.GetLevel(prot, VirtueName.Justice))
|
||||
{
|
||||
case VirtueLevel.Seeker: chance = 60; break;
|
||||
case VirtueLevel.Follower: chance = 80; break;
|
||||
case VirtueLevel.Knight: chance = 100; break;
|
||||
}
|
||||
|
||||
if (chance > Utility.Random(100))
|
||||
{
|
||||
prot.SendLocalizedMessage(1049368); // You have been rewarded for your dedication to Justice!
|
||||
ScrollofTranscendence SoTFduplicate = new ScrollofTranscendence ( SoTF.Skill, SoTF.Value );
|
||||
prot.AddToBackpack( SoTFduplicate );
|
||||
}
|
||||
}
|
||||
}
|
||||
public static void GivePowerScrollFelTo ( Mobile killer, PowerScroll PS )
|
||||
{
|
||||
if( PS == null || killer == null ) //sanity
|
||||
return;
|
||||
|
||||
killer.SendLocalizedMessage(1049524); // You have received a scroll of power!
|
||||
|
||||
if ( killer.Alive )
|
||||
killer.AddToBackpack( PS );
|
||||
else
|
||||
{
|
||||
if( killer.Corpse != null && !killer.Corpse.Deleted )
|
||||
killer.Corpse.DropItem( PS );
|
||||
else
|
||||
killer.AddToBackpack( PS );
|
||||
}
|
||||
|
||||
// Justice reward
|
||||
PlayerMobile pm = (PlayerMobile)killer;
|
||||
for (int j = 0; j < pm.JusticeProtectors.Count; ++j)
|
||||
{
|
||||
Mobile prot = (Mobile)pm.JusticeProtectors[j];
|
||||
if (prot.Map != killer.Map || prot.Kills >= 5 || prot.Criminal || !JusticeVirtue.CheckMapRegion(killer, prot))
|
||||
continue;
|
||||
|
||||
int chance = 0;
|
||||
|
||||
switch (VirtueHelper.GetLevel(prot, VirtueName.Justice))
|
||||
{
|
||||
case VirtueLevel.Seeker: chance = 60; break;
|
||||
case VirtueLevel.Follower: chance = 80; break;
|
||||
case VirtueLevel.Knight: chance = 100; break;
|
||||
}
|
||||
|
||||
if (chance > Utility.Random(100))
|
||||
{
|
||||
prot.SendLocalizedMessage(1049368); // You have been rewarded for your dedication to Justice!
|
||||
PowerScroll PSduplicate = new PowerScroll ( PS.Skill, PS.Value );
|
||||
prot.AddToBackpack( PSduplicate );
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
public void OnSlice()
|
||||
{
|
||||
if( !m_Active || Deleted )
|
||||
|
|
@ -445,6 +576,41 @@ namespace Server.Engines.CannedEvil
|
|||
|
||||
if( killer is PlayerMobile )
|
||||
{
|
||||
#region Scroll of Transcendence
|
||||
if ( Core.ML )
|
||||
{
|
||||
if ( Map == Map.Felucca )
|
||||
{
|
||||
if ( Utility.RandomDouble() < 0.001 )
|
||||
{
|
||||
PlayerMobile pm = (PlayerMobile)killer;
|
||||
double random = Utility.Random ( 49 );
|
||||
|
||||
if ( random <= 24 )
|
||||
{
|
||||
ScrollofTranscendence SoTF = CreateRandomFelSoT();
|
||||
GiveScrollOfTranscendenceFelTo ( pm, SoTF );
|
||||
}
|
||||
else
|
||||
{
|
||||
PowerScroll PS = CreateRandomFelPS();
|
||||
GivePowerScrollFelTo ( pm, PS );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ( Map == Map.Ilshenar || Map == Map.Tokuno )
|
||||
{
|
||||
if ( Utility.RandomDouble() < 0.0015 )
|
||||
{
|
||||
killer.SendLocalizedMessage( 1094936 ); // You have received a Scroll of Transcendence!
|
||||
ScrollofTranscendence SoTT = CreateRandomTramSoT();
|
||||
killer.AddToBackpack( SoTT );
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
int mobSubLevel = GetSubLevelFor( m ) + 1;
|
||||
|
||||
if( mobSubLevel >= 0 )
|
||||
|
|
|
|||
|
|
@ -251,7 +251,7 @@ namespace Server.Engines.Harvest
|
|||
{
|
||||
SOS sos = messages[i];
|
||||
|
||||
if ( from.Map == sos.TargetMap && from.InRange( sos.TargetLocation, 60 ) )
|
||||
if ( ( from.Map == Map.Felucca || from.Map == Map.Trammel ) && from.InRange( sos.TargetLocation, 60 ) )
|
||||
{
|
||||
Item preLoot = null;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue