Updates to the canned evil system for the ML Pestilence spawn.
Pigments of Tokuno have also have heritage items and special material "baseclothing" added. Bag of Sending was corrected for a client change that broke the localization FetidEssence, InterredGrizzle, PerstilentBandage corrected in prep for ML champ spawns. Ilhenir corrected in various ways, imcluding unique drop added to replace the "undiscovered" unique its suppoed to drop. Pestilence added to the spawn types for champs. PlayerMobile modified to reflect new champ spawn titles.
This commit is contained in:
parent
c57b83289e
commit
8adee67ccc
8 changed files with 39 additions and 89 deletions
|
|
@ -12,7 +12,8 @@ namespace Server.Engines.CannedEvil
|
|||
ForestLord,
|
||||
VerminHorde,
|
||||
UnholyTerror,
|
||||
SleepingDragon
|
||||
SleepingDragon,
|
||||
Pestilence
|
||||
}
|
||||
|
||||
public class ChampionSpawnInfo
|
||||
|
|
@ -90,6 +91,13 @@ namespace Server.Engines.CannedEvil
|
|||
new Type[]{ typeof( DeathwatchBeetle ), typeof( Kappa ) },
|
||||
new Type[]{ typeof( LesserHiryu ), typeof( RevenantLion ) },
|
||||
new Type[]{ typeof( Hiryu ), typeof( Oni ) }
|
||||
} ),
|
||||
new ChampionSpawnInfo( "The Corrupt", typeof( Ilhenir ), new string[]{ "Cleanser", "Expunger", "Depurator" } , new Type[][]
|
||||
{ // Unholy Terror
|
||||
new Type[]{ typeof( PlagueSpawn ), typeof( Bogling ) },
|
||||
new Type[]{ typeof( PlagueBeast ), typeof( BogThing ) },
|
||||
new Type[]{ typeof( PlagueBeastLord ), typeof( InterredGrizzle ) },
|
||||
new Type[]{ typeof( FetidEssence ), typeof( PestilentBandage ) }
|
||||
} )
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -34,6 +34,15 @@ namespace Server.Items
|
|||
typeof( Subdue )
|
||||
};
|
||||
|
||||
private static Type[] m_DyableHeritageItems = new Type[]
|
||||
{
|
||||
typeof( ChargerOfTheFallen ),
|
||||
typeof( SamuraiHelm ),
|
||||
typeof( HolySword ),
|
||||
typeof( LeggingsOfEmbers ),
|
||||
typeof( ShaminoCrossbow )
|
||||
};
|
||||
|
||||
public override int LabelNumber { get { return 1070933; } } // Pigments of Tokuno
|
||||
|
||||
private int m_UsesRemaining;
|
||||
|
|
@ -142,6 +151,8 @@ namespace Server.Items
|
|||
resource = ((BaseWeapon)i).Resource;
|
||||
else if( i is BaseArmor )
|
||||
resource = ((BaseArmor)i).Resource;
|
||||
else if (i is BaseClothing)
|
||||
resource = ((BaseClothing)i).Resource;
|
||||
|
||||
if( !CraftResources.IsStandard( resource ) )
|
||||
return true;
|
||||
|
|
@ -157,8 +168,9 @@ namespace Server.Items
|
|||
|| IsInTypeList( t, Leviathan.Artifacts )
|
||||
|| IsInTypeList( t, TreasureMapChest.Artifacts )
|
||||
|| IsInTypeList( t, m_Replicas )
|
||||
|| IsInTypeList( t, m_DyableHeritageItems )
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
private static bool IsInTypeList( Type t, Type[] list )
|
||||
{
|
||||
|
|
|
|||
|
|
@ -161,7 +161,7 @@ namespace Server.Items
|
|||
}
|
||||
else if( !this.IsChildOf( from.Backpack ) )
|
||||
{
|
||||
MessageHelper.SendLocalizedMessageTo( this, from, 1054107, 0x59 ); // The bag of sending must be in your backpack.
|
||||
MessageHelper.SendLocalizedMessageTo(this, from, 1062334, 0x59); // The bag of sending must be in your backpack.
|
||||
}
|
||||
else if( this.Charges == 0 )
|
||||
{
|
||||
|
|
@ -193,7 +193,7 @@ namespace Server.Items
|
|||
}
|
||||
else if( !m_Bag.IsChildOf( from.Backpack ) )
|
||||
{
|
||||
MessageHelper.SendLocalizedMessageTo( m_Bag, from, 1054107, 0x59 ); // The bag of sending must be in your backpack.
|
||||
MessageHelper.SendLocalizedMessageTo(m_Bag, from, 1062334, 0x59); // The bag of sending must be in your backpack. 1054107 is gone from client, using generic response
|
||||
}
|
||||
else if ( m_Bag.Charges == 0 )
|
||||
{
|
||||
|
|
@ -206,7 +206,7 @@ namespace Server.Items
|
|||
|
||||
if ( !item.IsChildOf( from.Backpack ) )
|
||||
{
|
||||
MessageHelper.SendLocalizedMessageTo( m_Bag, from, 1054152, 0x59 ); // You may only send items from your backpack to your bank box.
|
||||
MessageHelper.SendLocalizedMessageTo(m_Bag, from, 1054152, 0x59); // You may only send items from your backpack to your bank box.
|
||||
}
|
||||
else if ( item is BagOfSending || item is Container )
|
||||
{
|
||||
|
|
|
|||
|
|
@ -44,11 +44,10 @@ namespace Server.Mobiles
|
|||
Karma = -3700; // Guessed
|
||||
}
|
||||
|
||||
/*public override void GenerateLoot() -- Need to verify
|
||||
public override void GenerateLoot() // Need to verify
|
||||
{
|
||||
AddLoot( LootPack.Meager );
|
||||
AddLoot( LootPack.Average );
|
||||
}*/
|
||||
AddLoot( LootPack.FilthyRich );
|
||||
}
|
||||
|
||||
public override int GetAngerSound()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -45,11 +45,10 @@ namespace Server.Mobiles
|
|||
Karma = -3700; // Guessed
|
||||
}
|
||||
|
||||
/*public override void GenerateLoot() -- Need to verify
|
||||
public override void GenerateLoot() // -- Need to verify
|
||||
{
|
||||
AddLoot( LootPack.Meager );
|
||||
AddLoot( LootPack.Average );
|
||||
}*/
|
||||
AddLoot( LootPack.FilthyRich );
|
||||
}
|
||||
|
||||
// TODO: Acid Blood
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -56,78 +56,7 @@ namespace Server.Mobiles
|
|||
|
||||
}
|
||||
|
||||
public override void OnDamagedBySpell(Mobile attacker)
|
||||
{
|
||||
base.OnDamagedBySpell(attacker);
|
||||
|
||||
DoCounter(attacker);
|
||||
}
|
||||
|
||||
public override void OnGotMeleeAttack(Mobile attacker)
|
||||
{
|
||||
base.OnGotMeleeAttack(attacker);
|
||||
|
||||
DoCounter(attacker);
|
||||
}
|
||||
|
||||
private void DoCounter(Mobile attacker)
|
||||
{
|
||||
if (this.Map == null)
|
||||
return;
|
||||
|
||||
if (attacker is BaseCreature && ((BaseCreature)attacker).BardProvoked)
|
||||
return;
|
||||
|
||||
if (0.2 > Utility.RandomDouble())
|
||||
{
|
||||
/* Counterattack with Hit Poison Area
|
||||
* 20-25 damage, unresistable
|
||||
* Lethal poison, 100% of the time
|
||||
* Particle effect: Type: "2" From: "0x4061A107" To: "0x0" ItemId: "0x36BD" ItemIdName: "explosion" FromLocation: "(296 615, 17)" ToLocation: "(296 615, 17)" Speed: "1" Duration: "10" FixedDirection: "True" Explode: "False" Hue: "0xA6" RenderMode: "0x0" Effect: "0x1F78" ExplodeEffect: "0x1" ExplodeSound: "0x0" Serial: "0x4061A107" Layer: "255" Unknown: "0x0"
|
||||
* Doesn't work on provoked monsters
|
||||
*/
|
||||
|
||||
Mobile target = null;
|
||||
|
||||
if (attacker is BaseCreature)
|
||||
{
|
||||
Mobile m = ((BaseCreature)attacker).GetMaster();
|
||||
|
||||
if (m != null)
|
||||
target = m;
|
||||
}
|
||||
|
||||
if (target == null || !target.InRange(this, 18))
|
||||
target = attacker;
|
||||
|
||||
this.Animate(10, 4, 1, true, false, 0);
|
||||
|
||||
ArrayList targets = new ArrayList();
|
||||
|
||||
foreach (Mobile m in target.GetMobilesInRange(8))
|
||||
{
|
||||
if (m == this || !CanBeHarmful(m))
|
||||
continue;
|
||||
|
||||
if (m is BaseCreature && (((BaseCreature)m).Controlled || ((BaseCreature)m).Summoned || ((BaseCreature)m).Team != this.Team))
|
||||
targets.Add(m);
|
||||
else if (m.Player && m.Alive)
|
||||
targets.Add(m);
|
||||
}
|
||||
|
||||
for (int i = 0; i < targets.Count; ++i)
|
||||
{
|
||||
Mobile m = (Mobile)targets[i];
|
||||
|
||||
DoHarmful(m);
|
||||
|
||||
AOS.Damage(m, this, Utility.RandomMinMax(20, 25), true, 0, 0, 0, 100, 0);
|
||||
|
||||
m.FixedParticles(0x36BD, 1, 10, 0x1F78, 0xA6, 0, (EffectLayer)255);
|
||||
m.ApplyPoison(this, Poison.Lethal);
|
||||
}
|
||||
}
|
||||
}
|
||||
public override Poison HitPoison{ get{ return Poison.Lethal; } }
|
||||
public override bool CanHeal { get { return true; } }
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ namespace Server.Mobiles
|
|||
{
|
||||
public override ChampionSkullType SkullType{ get{ return ChampionSkullType.Pain; } }
|
||||
|
||||
public override Type[] UniqueList{ get{ return new Type[] { }; } }
|
||||
public override Type[] UniqueList{ get{ return new Type[] { typeof( Pacify ) }; } }
|
||||
public override Type[] SharedList{ get{ return new Type[] { typeof( ANecromancerShroud ),
|
||||
typeof( LieutenantOfTheBritannianRoyalGuard ),
|
||||
typeof( OblivionsNeedle ),
|
||||
|
|
@ -55,8 +55,8 @@ namespace Server.Mobiles
|
|||
SetSkill(SkillName.Tactics, 119.9);
|
||||
SetSkill(SkillName.Wrestling, 119.9);
|
||||
|
||||
Fame = 50000;
|
||||
Karma = -50000;
|
||||
Fame = 22500;
|
||||
Karma = -22500;
|
||||
|
||||
VirtualArmor = 44;
|
||||
}
|
||||
|
|
@ -69,7 +69,7 @@ namespace Server.Mobiles
|
|||
public override bool Unprovokable { get { return true; } }
|
||||
public override bool Uncalmable { get { return true; } }
|
||||
public override Poison PoisonImmune { get { return Poison.Lethal; } }
|
||||
public override int TreasureMapLevel { get { return 1; } }
|
||||
//public override int TreasureMapLevel { get { return 1; } }
|
||||
|
||||
public override int GetAngerSound()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -4057,6 +4057,9 @@ namespace Server.Mobiles
|
|||
return "...";
|
||||
}
|
||||
|
||||
[CommandProperty(AccessLevel.GameMaster)]
|
||||
public int Pestilence { get { return GetValue(ChampionSpawnType.Pestilence); } set { SetValue(ChampionSpawnType.Pestilence, value); } }
|
||||
|
||||
[CommandProperty( AccessLevel.GameMaster )]
|
||||
public int Abyss { get { return GetValue( ChampionSpawnType.Abyss ); } set { SetValue( ChampionSpawnType.Abyss, value ); } }
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue