Ok, i have had this bit of code from an old svn i am trying to make it work in my new pub 54 test server .
Basically it is a snippet of code to allow for random artifact drop chance but i keep getting this error now.
any help would be great thanks :)

Errors:
+ Mobiles/BaseCreature.cs:
CS0128: Line 5012: A local variable named 'speechType' is already defined in
this scope
Scripts: One or more scripts failed to compile or no script files were found.
- Press return to exit, or R to try again.
 

Attachments

  • BaseCreature.cs
    159 KB · Views: 6
This is the OnBeforeDeath section as you have. with return base.OnBeforeDeath(); twice
Plus you have the parts about AnimatedDead and Region doom etc, in there twice.

Clean it up and it should work fine
If you want a fresh copy of OnBeforeDeath, see below


C#:
public override bool OnBeforeDeath()
  {
  int treasureLevel = TreasureMapLevel;
  if (treasureLevel == 1 && this.Map == Map.Trammel && TreasureMap.IsInHavenIsland(this))
  {
  Mobile killer = this.LastKiller;
  if (killer is BaseCreature)
  killer = ((BaseCreature)killer).GetMaster();
  if (killer is PlayerMobile && ((PlayerMobile)killer).Young)
  treasureLevel = 0;
  }
  if (!Summoned && !NoKillAwards && !IsBonded && treasureLevel >= 0)
  {
  if (m_Paragon && Paragon.ChestChance > Utility.RandomDouble())
  PackItem(new ParagonChest(this.Name, treasureLevel));
  else if ((Map == Map.Felucca || Map == Map.Trammel) && TreasureMap.LootChance >= Utility.RandomDouble())
  PackItem(new TreasureMap(treasureLevel, Map));
  }
  if (!Summoned && !NoKillAwards && !m_HasGeneratedLoot)
  {
  m_HasGeneratedLoot = true;
  GenerateLoot(false);
  }
  if (!NoKillAwards && Region.IsPartOf("Doom"))
  {
  int bones = Engines.Quests.Doom.TheSummoningQuest.GetDaemonBonesFor(this);
  if (bones > 0)
  PackItem(new DaemonBone(bones));
  }
  if (IsAnimatedDead)
  Effects.SendLocationEffect(Location, Map, 0x3728, 13, 1, 0x461, 4);
  InhumanSpeech speechType = this.SpeechType;
  if (speechType != null)
  speechType.OnDeath(this);
  if (m_ReceivedHonorContext != null)
  m_ReceivedHonorContext.OnTargetKilled();
   
  if( Utility.RandomDouble() < 0.20 ) // 20% chance
  {
  switch ( Utility.Random(1) ) // your list of items
  {
  case 0: AddToBackpack(new ChainLegs()); break;
  //  case 1: AddToBackpack(new AngelicEmbrace()); break;
  //  case 2: AddToBackpack(new AngeroftheGods()); break;
  //  case 3: AddToBackpack(new Annihilation()); break;
  //  case 4: AddToBackpack(new ArcanicRobe()); break;
  //  case 5: AddToBackpack(new ArmsOfToxicity()); break;
  //  case 6: AddToBackpack(new BookOfKnowledge()); break;
  // case 7: AddToBackpack(new CircletOfTheSorceress()); break;
  //  case 8: AddToBackpack(new DarkGuardiansChest()); break;
  //  case 9: AddToBackpack(new DarkLordsPitchfork()); break;
  //  case 10: AddToBackpack(new DarkNeck()); break;
  //  case 11: AddToBackpack(new DeathsMask()); break;
  //  case 12: AddToBackpack(new DupresCollar()); break;
  //  case 13: AddToBackpack(new EvilMageGloves()); break;
  //  case 14: AddToBackpack(new EyesOfHate()); break;
  //  case 15: AddToBackpack(new FalseGodsScepter()); break;
  //  case 16: AddToBackpack(new FesteringWound()); break;
  //  case 17: AddToBackpack(new Fortifiedarms()); break;
  //  case 18: AddToBackpack(new FortunateBlades()); break;
  //  case 19: AddToBackpack(new FurCapeOfTheSorceress()); break;
  //  case 20: AddToBackpack(new Fury()); break;
  //  case 21: AddToBackpack(new GeishasObi()); break;
  //  case 22: AddToBackpack(new GlovesOfCorruption()); break;
  //  case 23: AddToBackpack(new Frostbringer()); break;
  //  case 24: AddToBackpack(new GlovesOfRegeneration()); break;
  //  case 25: AddToBackpack(new HellForgedArms()); break;
  //  case 26: AddToBackpack(new Indecency()); break;
  //  case 27: AddToBackpack(new JadeScimitar()); break;
  //  case 28: AddToBackpack(new JinBaoriOfGoodFortune()); break;
  //  case 29: AddToBackpack(new KamiNarisIndestructableDoubleAxe()); break;
  //  case 30: AddToBackpack(new LeggingsOfDeceit()); break;
  // case 31: AddToBackpack(new LeggingsOfEnlightenment()); break;
  //  case 32: AddToBackpack(new LensesOfFocus()); break;
  //  case 33: AddToBackpack(new LongShot()); break;
  //  case 34: AddToBackpack(new LuckyEarrings()); break;
  //  case 35: AddToBackpack(new MadmansHatchet()); break;
  //  case 36: AddToBackpack(new MagesBand()); break;
  //  case 37: AddToBackpack(new MagiciansIllusion()); break;
  //  case 38: AddToBackpack(new MagiciansMempo()); break;
  //  case 39: AddToBackpack(new MarbleShield()); break;
  //  case 40: AddToBackpack(new MauloftheBeast()); break;
  // case 41: AddToBackpack(new MerlinsPants()); break;
  //  case 42: AddToBackpack(new MinersPickaxe()); break;
  //  case 43: AddToBackpack(new NordicVikingSword()); break;
  //  case 44: AddToBackpack(new NoxBow()); break;
  //  case 45: AddToBackpack(new Pestilence()); break;
  //  case 46: AddToBackpack(new RamusNecromanticScalpel()); break;
  //  case 47: AddToBackpack(new Retort()); break;
  //  case 48: AddToBackpack(new RobeOfTreason()); break;
  //  case 49: AddToBackpack(new RoyalArchersBow()); break;
  //  case 50: AddToBackpack(new RoyalGuardsChestplate()); break;
  // case 51: AddToBackpack(new RoyalGuardsGorget()); break;
  // case 52: AddToBackpack(new SamuraiBokuto()); break;
  // case 53: AddToBackpack(new ShadowBlade()); break;
  //  case 54: AddToBackpack(new ShimmeringTalisman()); break;
  //  case 55: AddToBackpack(new SprintersSandals()); break;
  //  case 56: AddToBackpack(new SwiftStrike()); break;
  // case 57: AddToBackpack(new TownGuardsHalberd()); break;
  // case 58: AddToBackpack(new WarriorsClasp()); break;
  //  case 59: AddToBackpack(new YashimotosHatsuburi()); break;
         }
  }
  return base.OnBeforeDeath();
   
       if (!Summoned && !NoKillAwards && !IsBonded)
       {
         if (treasureLevel >= 0)
         {
           if (m_Paragon && XmlParagon.GetChestChance(this) > Utility.RandomDouble())
           {
             XmlParagon.AddChest(this, treasureLevel);
           }
           else if ((Map == Map.Felucca || Map == Map.Trammel) && TreasureMap.LootChance >= Utility.RandomDouble())
           {
             PackItem(new TreasureMap(treasureLevel, Map));
           }
         }

         if (m_Paragon && Paragon.ChocolateIngredientChance > Utility.RandomDouble())
         {
           switch (Utility.Random(4))
           {
             case 0:
               PackItem(new CocoaButter());
               break;
             case 1:
               PackItem(new CocoaLiquor());
               break;
             case 2:
               PackItem(new SackOfSugar());
               break;
             case 3:
               PackItem(new Vanilla());
               break;
           }
         }
       }

       if (!Summoned && !NoKillAwards && !m_HasGeneratedLoot)
       {
         m_HasGeneratedLoot = true;
         GenerateLoot(false);
       }

       if (!NoKillAwards && Region.IsPartOf("Doom"))
       {
         int bones = TheSummoningQuest.GetDaemonBonesFor(this);

         if (bones > 0)
         {
           PackItem(new DaemonBone(bones));
         }
       }
             
       

       if (IsAnimatedDead)
       {
         Effects.SendLocationEffect(Location, Map, 0x3728, 13, 1, 0x461, 4);
       }

       InhumanSpeech speechType = SpeechType;

       if (speechType != null)
       {
         speechType.OnDeath(this);
       }

       if (m_ReceivedHonorContext != null)
       {
         m_ReceivedHonorContext.OnTargetKilled();
       }

       return base.OnBeforeDeath();
     }


fresh copy

C#:
  public override bool OnBeforeDeath()
     {
       int treasureLevel = TreasureMapLevel;

       if (treasureLevel == 1 && Map == Map.Trammel && TreasureMap.IsInHavenIsland(this))
       {
         Mobile killer = LastKiller;

         if (killer is BaseCreature)
         {
           killer = ((BaseCreature)killer).GetMaster();
         }

         if (killer is PlayerMobile && ((PlayerMobile)killer).Young)
         {
           treasureLevel = 0;
         }
       }

       if (!Summoned && !NoKillAwards && !IsBonded)
       {
         if (treasureLevel >= 0)
         {
           if (m_Paragon && XmlParagon.GetChestChance(this) > Utility.RandomDouble())
           {
             XmlParagon.AddChest(this, treasureLevel);
           }
           else if ((Map == Map.Felucca || Map == Map.Trammel) && TreasureMap.LootChance >= Utility.RandomDouble())
           {
             PackItem(new TreasureMap(treasureLevel, Map));
           }
         }

         if (m_Paragon && Paragon.ChocolateIngredientChance > Utility.RandomDouble())
         {
           switch (Utility.Random(4))
           {
             case 0:
               PackItem(new CocoaButter());
               break;
             case 1:
               PackItem(new CocoaLiquor());
               break;
             case 2:
               PackItem(new SackOfSugar());
               break;
             case 3:
               PackItem(new Vanilla());
               break;
           }
         }
       }

       if (!Summoned && !NoKillAwards && !m_HasGeneratedLoot)
       {
         m_HasGeneratedLoot = true;
         GenerateLoot(false);
       }

       if (!NoKillAwards && Region.IsPartOf("Doom"))
       {
         int bones = TheSummoningQuest.GetDaemonBonesFor(this);

         if (bones > 0)
         {
           PackItem(new DaemonBone(bones));
         }
       }

       if (IsAnimatedDead)
       {
         Effects.SendLocationEffect(Location, Map, 0x3728, 13, 1, 0x461, 4);
       }

       InhumanSpeech speechType = SpeechType;

       if (speechType != null)
       {
         speechType.OnDeath(this);
       }

       if (m_ReceivedHonorContext != null)
       {
         m_ReceivedHonorContext.OnTargetKilled();
       }

       return base.OnBeforeDeath();
     }
 
Ok so i got this to compile?


Code:
public override bool OnBeforeDeath()
        {
            int treasureLevel = TreasureMapLevel;

            if (treasureLevel == 1 && this.Map == Map.Trammel && TreasureMap.IsInHavenIsland(this))
            {
                Mobile killer = this.LastKiller;

                if (killer is BaseCreature)
                    killer = ((BaseCreature)killer).GetMaster();

                if (killer is PlayerMobile && ((PlayerMobile)killer).Young)
                    treasureLevel = 0;
            }

            if (!Summoned && !NoKillAwards && !IsBonded && treasureLevel >= 0)
            {
                if (m_Paragon && Paragon.ChestChance > Utility.RandomDouble())
                    PackItem(new ParagonChest(this.Name, treasureLevel));
                else if ((Map == Map.Felucca || Map == Map.Trammel) && TreasureMap.LootChance >= Utility.RandomDouble())
                    PackItem(new TreasureMap(treasureLevel, Map));
            }

            if (!Summoned && !NoKillAwards && !m_HasGeneratedLoot)
            {
                m_HasGeneratedLoot = true;
                GenerateLoot(false);
            }

            if (!NoKillAwards && Region.IsPartOf("Doom"))
            {
                int bones = Engines.Quests.Doom.TheSummoningQuest.GetDaemonBonesFor(this);

                if (bones > 0)
                    PackItem(new DaemonBone(bones));
            }

            if (IsAnimatedDead)
                Effects.SendLocationEffect(Location, Map, 0x3728, 13, 1, 0x461, 4);

            InhumanSpeech speechType = this.SpeechType;

            if (speechType != null)
                speechType.OnDeath(this);

            if (m_ReceivedHonorContext != null)
                m_ReceivedHonorContext.OnTargetKilled();
            
            if( Utility.RandomDouble() < 0.20 ) // 20% chance
            {
            switch ( Utility.Random(1) ) // your list of items
            {
                    case 0: AddToBackpack(new ChainLegs()); break;
                  //  case 1: AddToBackpack(new AngelicEmbrace()); break;
                  //  case 2: AddToBackpack(new AngeroftheGods()); break;
                  //  case 3: AddToBackpack(new Annihilation()); break;
                  //  case 4: AddToBackpack(new ArcanicRobe()); break;
                  //  case 5: AddToBackpack(new ArmsOfToxicity()); break;
                  //  case 6: AddToBackpack(new BookOfKnowledge()); break;
                  // case 7: AddToBackpack(new CircletOfTheSorceress()); break;
                  //  case 8: AddToBackpack(new DarkGuardiansChest()); break;
                  //  case 9: AddToBackpack(new DarkLordsPitchfork()); break;
                  //  case 10: AddToBackpack(new DarkNeck()); break;
                  //  case 11: AddToBackpack(new DeathsMask()); break;
                //  case 12: AddToBackpack(new DupresCollar()); break;
                //  case 13: AddToBackpack(new EvilMageGloves()); break;
                  //  case 14: AddToBackpack(new EyesOfHate()); break;
                  //  case 15: AddToBackpack(new FalseGodsScepter()); break;
                  //  case 16: AddToBackpack(new FesteringWound()); break;
                  //  case 17: AddToBackpack(new Fortifiedarms()); break;
                  //  case 18: AddToBackpack(new FortunateBlades()); break;
                  //  case 19: AddToBackpack(new FurCapeOfTheSorceress()); break;
                  //  case 20: AddToBackpack(new Fury()); break;
                  //  case 21: AddToBackpack(new GeishasObi()); break;
                  //  case 22: AddToBackpack(new GlovesOfCorruption()); break;
                  //  case 23: AddToBackpack(new Frostbringer()); break;
                  //  case 24: AddToBackpack(new GlovesOfRegeneration()); break;
                  //  case 25: AddToBackpack(new HellForgedArms()); break;
                  //  case 26: AddToBackpack(new Indecency()); break;
                  //  case 27: AddToBackpack(new JadeScimitar()); break;
                  //  case 28: AddToBackpack(new JinBaoriOfGoodFortune()); break;
                  //  case 29: AddToBackpack(new KamiNarisIndestructableDoubleAxe()); break;
                  //  case 30: AddToBackpack(new LeggingsOfDeceit()); break;
                  // case 31: AddToBackpack(new LeggingsOfEnlightenment()); break;
                  //  case 32: AddToBackpack(new LensesOfFocus()); break;
                  //  case 33: AddToBackpack(new LongShot()); break;
                  //  case 34: AddToBackpack(new LuckyEarrings()); break;
                  //  case 35: AddToBackpack(new MadmansHatchet()); break;
                  //  case 36: AddToBackpack(new MagesBand()); break;
                  //  case 37: AddToBackpack(new MagiciansIllusion()); break;
                  //  case 38: AddToBackpack(new MagiciansMempo()); break;
                  //  case 39: AddToBackpack(new MarbleShield()); break;
                  //  case 40: AddToBackpack(new MauloftheBeast()); break;
                  // case 41: AddToBackpack(new MerlinsPants()); break;
                  //  case 42: AddToBackpack(new MinersPickaxe()); break;
                  //  case 43: AddToBackpack(new NordicVikingSword()); break;
                  //  case 44: AddToBackpack(new NoxBow()); break;
                  //  case 45: AddToBackpack(new Pestilence()); break;
                  //  case 46: AddToBackpack(new RamusNecromanticScalpel()); break;
                  //  case 47: AddToBackpack(new Retort()); break;
                  //  case 48: AddToBackpack(new RobeOfTreason()); break;
                  //  case 49: AddToBackpack(new RoyalArchersBow()); break;
                  //  case 50: AddToBackpack(new RoyalGuardsChestplate()); break;
                  // case 51: AddToBackpack(new RoyalGuardsGorget()); break;
                  // case 52: AddToBackpack(new SamuraiBokuto()); break;
                  // case 53: AddToBackpack(new ShadowBlade()); break;
                  //  case 54: AddToBackpack(new ShimmeringTalisman()); break;
                  //  case 55: AddToBackpack(new SprintersSandals()); break;
                  //  case 56: AddToBackpack(new SwiftStrike()); break;
                  // case 57: AddToBackpack(new TownGuardsHalberd()); break;
                  // case 58: AddToBackpack(new WarriorsClasp()); break;
                  //  case 59: AddToBackpack(new YashimotosHatsuburi()); break;
            }
            }

    
			if (!Summoned && !NoKillAwards && !IsBonded)
			{
				if (treasureLevel >= 0)
				{
					if (m_Paragon && XmlParagon.GetChestChance(this) > Utility.RandomDouble())
					{
						XmlParagon.AddChest(this, treasureLevel);
					}
					else if ((Map == Map.Felucca || Map == Map.Trammel) && TreasureMap.LootChance >= Utility.RandomDouble())
					{
						PackItem(new TreasureMap(treasureLevel, Map));
					}
				}

				if (m_Paragon && Paragon.ChocolateIngredientChance > Utility.RandomDouble())
				{
					switch (Utility.Random(4))
					{
						case 0:
							PackItem(new CocoaButter());
							break;
						case 1:
							PackItem(new CocoaLiquor());
							break;
						case 2:
							PackItem(new SackOfSugar());
							break;
						case 3:
							PackItem(new Vanilla());
							break;
					}
				}
			}

			if (!Summoned && !NoKillAwards && !m_HasGeneratedLoot)
			{
				m_HasGeneratedLoot = true;
				GenerateLoot(false);
			}

			if (!NoKillAwards && Region.IsPartOf("Doom"))
			{
				int bones = TheSummoningQuest.GetDaemonBonesFor(this);

				if (bones > 0)
				{
					PackItem(new DaemonBone(bones));
				}
			}
						
			

			if (IsAnimatedDead)
			{
				Effects.SendLocationEffect(Location, Map, 0x3728, 13, 1, 0x461, 4);
			}


			if (speechType != null)
			{
				speechType.OnDeath(this);
			}

			if (m_ReceivedHonorContext != null)
			{
				m_ReceivedHonorContext.OnTargetKilled();
			}

			return base.OnBeforeDeath();
		}
 

Attachments

  • BaseCreature.cs
    158.9 KB · Views: 7
Last edited by a moderator:
Edited above post for code tags.

For the love of whatever deity you pray to, please use code tags in the future.
 
Back