Opywang
Member
Hey there I am trying to add a new custom monster on shard from older version run uo, and it work great, but I got a new serv uo, and it doesn't work, and has error.
Line 90 error says this.
CS1501: Line 90: No overload for method 'GetLootingRights' takes 2 arguments
Scripts: One or more scripts failed to compile or no script files were found.
Here that what line 90 says.
List<DamageStore> rights = BaseCreature.GetLootingRights( creature.DamageEntries, creature.HitsMax );
If there is an another way that I can edit to make monster drop items in pack rather than corps that will be great also. I don't have to get this one fix it just anything that can make item drop in pack like doom boss.
Line 90 error says this.
CS1501: Line 90: No overload for method 'GetLootingRights' takes 2 arguments
Scripts: One or more scripts failed to compile or no script files were found.
Here that what line 90 says.
List<DamageStore> rights = BaseCreature.GetLootingRights( creature.DamageEntries, creature.HitsMax );
If there is an another way that I can edit to make monster drop items in pack rather than corps that will be great also. I don't have to get this one fix it just anything that can make item drop in pack like doom boss.
Code:
using System;
using System.Collections;
using System.Collections.Generic;
using Server;
using Server.Items;
namespace Server.Mobiles
{
[CorpseName( "a Deed Collectors corpse" )]
public class DeedCollectors : BaseCreature
{
public override bool IgnoreYoungProtection { get { return Core.ML; } }
public static Type[] ArtifactRarity10 { get { return m_ArtifactRarity10; } }
public static Type[] ArtifactRarity11 { get { return m_ArtifactRarity11; } }
private static Type[] m_ArtifactRarity10 = new Type[]
{
typeof( LegacyOfTheDreadLord ),
typeof( TheTaskmaster )
};
private static Type[] m_ArtifactRarity11 = new Type[]
{
typeof( WeaponSpeedIncreaseDeed ),
typeof( WeaponDamageIncreaseDeed ),
typeof( UseBestSkillIncreaseDeed ),
typeof( SpellDamageIncreaseDeed ),
typeof( HolyKnightsBreastplate ),
typeof( SpellChannelingIncreaseDeed ),
typeof( RegenStamIncreaseDeed ),
typeof( RegenManaIncreaseDeed ),
typeof( OrnateCrownOfTheHarrower ),
typeof( ShadowDancerLeggings ),
typeof( RegenHitsIncreaseDeed ),
typeof( ReflectPhysicalIncreaseDeed ),
typeof( MageWeaponIncreaseDeed ),
typeof( LuckIncreaseDeed ),
typeof( LowerRegCostIncreaseDeed ),
typeof( LowerManaCostIncreaseDeed ),
typeof( HitPoisonAreaIncreaseDeed ),
typeof( HitPhysicalAreaIncreaseDeed ),
typeof( HitMagicArrowIncreaseDeed ),
typeof( HitLowerDefendIncreaseDeed ),
typeof( HitLowerAttackIncreaseDeed ),
typeof( HitLightningIncreaseDeed ),
typeof( HitLeechStamIncreaseDeed ),
typeof( HitLeechManaIncreaseDeed ),
typeof( HitLeechHitsIncreaseDeed ),
typeof( HitHarmIncreaseDeed ),
typeof( HitFireballIncreaseDeed ),
typeof( HitFireAreaIncreaseDeed ),
typeof( HitEnergyAreaIncreaseDeed ),
typeof( HitDispelIncreaseDeed ),
typeof( HitColdAreaIncreaseDeed ),
typeof( DefendChanceIncreaseDeed ),
typeof( CastSpeedIncreaseDeed ),
typeof( BonusStrIncreaseDeed ),
typeof( BonusStamIncreaseDeed ),
typeof( BonusManaIncreaseDeed ),
typeof( BonusIntIncreaseDeed ),
typeof( BonusHitsIncreaseDeed ),
typeof( BonusDexIncreaseDeed ),
typeof( AttackChanceIncreaseDeed )
};
public static Item CreateRandomArtifact()
{
if ( !Core.AOS )
return null;
int count = ( m_ArtifactRarity10.Length * 5 ) + ( m_ArtifactRarity11.Length * 4 );
int random = Utility.Random( count );
Type type;
if ( random < ( m_ArtifactRarity10.Length * 5 ) )
{
type = m_ArtifactRarity10[random / 5];
}
else
{
random -= m_ArtifactRarity10.Length * 5;
type = m_ArtifactRarity11[random / 4];
}
return Loot.Construct( type );
}
public static Mobile FindRandomPlayer( BaseCreature creature )
{
List<DamageStore> rights = BaseCreature.GetLootingRights( creature.DamageEntries, creature.HitsMax );
for ( int i = rights.Count - 1; i >= 0; --i )
{
DamageStore ds = rights[i];
if ( !ds.m_HasRight )
rights.RemoveAt( i );
}
if ( rights.Count > 0 )
return rights[Utility.Random( rights.Count )].m_Mobile;
return null;
}
public static void DistributeArtifact( BaseCreature creature )
{
DistributeArtifact( creature, CreateRandomArtifact() );
}
public static void DistributeArtifact( BaseCreature creature, Item artifact )
{
DistributeArtifact( FindRandomPlayer( creature ), artifact );
}
public static void DistributeArtifact( Mobile to )
{
DistributeArtifact( to, CreateRandomArtifact() );
}
public static void DistributeArtifact( Mobile to, Item artifact )
{
if ( to == null || artifact == null )
return;
Container pack = to.Backpack;
if ( pack == null || !pack.TryDropItem( to, artifact, false ) )
to.BankBox.DropItem( artifact );
to.SendLocalizedMessage( 1062317 ); // For your valor in combating the fallen beast, a special Deed has been bestowed on you.
}
public static int GetArtifactChance( Mobile boss )
{
if ( !Core.AOS )
return 0;
int luck = LootPack.GetLuckChanceForKiller( boss );
int chance;
if ( boss is DeedCollectors )
chance = 15000 + (luck / 5);
else
chance = 2500 + (luck / 10);
return chance;
}
public static bool CheckArtifactChance( Mobile boss )
{
return GetArtifactChance( boss ) > Utility.Random( 100000 );
}
public override WeaponAbility GetWeaponAbility()
{
switch ( Utility.Random( 3 ) )
{
default:
case 0: return WeaponAbility.DoubleStrike;
case 1: return WeaponAbility.WhirlwindAttack;
case 2: return WeaponAbility.CrushingBlow;
}
}
public override void OnDeath( Container c )
{
base.OnDeath( c );
if ( !Summoned && !NoKillAwards && DeedCollectors.CheckArtifactChance( this ) )
DeedCollectors.DistributeArtifact( this );
}
[Constructable]
public DeedCollectors() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "the Deed Collectors";
Body = 318;
BaseSoundID = 0x165;
SetStr( 500 );
SetDex( 100 );
SetInt( 1000 );
SetHits( 15000 );
SetMana( 5000 );
SetDamage( 10, 15 );
SetDamageType( ResistanceType.Physical, 20 );
SetDamageType( ResistanceType.Fire, 20 );
SetDamageType( ResistanceType.Cold, 20 );
SetDamageType( ResistanceType.Poison, 20 );
SetDamageType( ResistanceType.Energy, 20 );
SetResistance( ResistanceType.Physical, 30 );
SetResistance( ResistanceType.Fire, 0 );
SetResistance( ResistanceType.Cold, 0 );
SetResistance( ResistanceType.Poison, 30 );
SetResistance( ResistanceType.Energy, 0 );
SetSkill( SkillName.Necromancy, 120, 120.0 );
SetSkill( SkillName.SpiritSpeak, 120.0, 120.0 );
SetSkill( SkillName.DetectHidden, 80.0 );
SetSkill( SkillName.EvalInt, 100.0 );
SetSkill( SkillName.Magery, 100.0 );
SetSkill( SkillName.Meditation, 120.0 );
SetSkill( SkillName.MagicResist, 150.0 );
SetSkill( SkillName.Tactics, 100.0 );
SetSkill( SkillName.Wrestling, 120.0 );
Fame = 28000;
Karma = -28000;
VirtualArmor = 64;
}
public override void GenerateLoot()
{
AddLoot( LootPack.SuperBoss, 5 );
AddLoot( LootPack.HighScrolls, Utility.RandomMinMax( 0, 0 ) );
}
public override bool BardImmune{ get{ return !Core.SE; } }
public override bool Unprovokable{ get{ return Core.SE; } }
public override bool AreaPeaceImmune { get { return Core.SE; } }
public override Poison PoisonImmune{ get{ return Poison.Lethal; } }
public override int TreasureMapLevel{ get{ return 1; } }
private static bool m_InHere;
public override void OnDamage( int amount, Mobile from, bool willKill )
{
if ( from != null && from != this && !m_InHere )
{
m_InHere = true;
AOS.Damage( from, this, Utility.RandomMinMax( 0, 0 ), 100, 0, 0, 0, 0 );
MovingEffect( from, 0xECA, 10, 0, false, false, 0, 0 );
PlaySound( 0x491 );
if ( 0.05 > Utility.RandomDouble() )
Timer.DelayCall( TimeSpan.FromSeconds( 1.0 ), new TimerStateCallback( CreateBones_Callback ), from );
m_InHere = false;
}
}
public virtual void CreateBones_Callback( object state )
{
Mobile from = (Mobile)state;
Map map = from.Map;
if ( map == null )
return;
int count = Utility.RandomMinMax( 0, 0 );
for ( int i = 0; i < count; ++i )
{
int x = from.X + Utility.RandomMinMax( -1, 1 );
int y = from.Y + Utility.RandomMinMax( -1, 1 );
int z = from.Z;
if ( !map.CanFit( x, y, z, 16, false, true ) )
{
z = map.GetAverageZ( x, y );
if ( z == from.Z || !map.CanFit( x, y, z, 16, false, true ) )
continue;
}
UnholyBone bone = new UnholyBone();
bone.Hue = 0;
bone.Name = "unholy bones";
bone.ItemID = Utility.Random( 0xECA, 9 );
bone.MoveToWorld( new Point3D( x, y, z ), map );
}
}
public DeedCollectors( 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 version = reader.ReadInt();
}
}
}
Last edited: