Feedback / Suggestions for the Global Kill Tracking System

Dan

Staff Member
Administrator
Game Master
Screenshot_2024-09-24_201138.png
Kill Tracker System:
  • A new Kill Tracker System has been introduced to monitor your progress in killing specific monsters worldwide.
    • This system is in BETA and scores may be reset before the system goes live.
  • You can view your kill counts for specific monsters and track your achievements as you battle various creatures on Heritage.
    • Visit the Kill Tracking Herald currently set up in Luna.
    • [ShowKills - command to view your own and other's kill tracker.
  • When you kill a kill-tracked creature you will be notified with a green system message.
    • Once a tracked creature is killed for the first time it will add the kill tracker object to your Kill Tracking Menu for you to view.
    • There are currently a lot of creatures set up to have their kills tracked/can be collected.
      • More/All will be added as time goes on.
  • The player who delivers the final death blow is considered the "killer" of any one creature.
  • Please report any bugs or suggested improvements regarding this initial implementation.
This system is currently only live for testing purposes. This is not the final version. Further enhancements will include a reward system/special loot obtainable from certain kill-tracked monsters after certain milestones are reached. Total scores across all characters on an account could also be tied into overall Rank scores. I am interested in other ways to enhance/improve on this general idea. Please share them here or in Discord.

Current List of kill-trackable monsters:
Code:
private static readonly Dictionary<Type, Func<IKillTracker>> _TrackerMap = new()
{
    { typeof(AbysmalHorror), () => new AbyssmalHorrorKillTracker() },
    { typeof(AcidElemental), () => new AcidElementalKillTracker() },
    { typeof(AgapiteElemental), () => new AgapiteElementalKillTracker() },
    { typeof(AirElemental), () => new AirElementalKillTracker() },
    { typeof(Alligator), () => new AlligatorKillTracker() },
    { typeof(AncientLich), () => new AncientLichKillTracker() },
    { typeof(AncientWyrm), () => new AncientWyrmKillTracker() },
    { typeof(ArcticOgreLord), () => new ArcticOgreLordKillTracker() },

    { typeof(Balron), () => new BalronKillTracker() },
    { typeof(Barracoon), () => new BarracoonKillTracker() },
    { typeof(Beetle), () => new BeetleKillTracker() },
    { typeof(BlackBear), () => new BlackBearKillTracker() },
    { typeof(BloodElemental), () => new BloodElementalKillTracker() },
    { typeof(BogThing), () => new BogThingKillTracker() },
    { typeof(BoneDemon), () => new BoneDemonKillTracker() },
    { typeof(BoneKnight), () => new BoneKnightKillTracker() },
    { typeof(BoneMagi), () => new BoneMagiKillTracker() },
    { typeof(BronzeElemental), () => new BronzeElementalKillTracker() },
    { typeof(BrownBear), () => new BrownBearKillTracker() },
    { typeof(Bull), () => new BullKillTracker() },

    { typeof(Centaur), () => new CentaurKillTracker() },
    { typeof(Changeling), () => new ChangelingKillTracker() },
    { typeof(ClockworkExodus), () => new ClockworkExodusKillTracker() },
    { typeof(CopperElemental), () => new CopperElementalKillTracker() },
    { typeof(CoraTheSorceress), () => new CoraTheSorceressKillTracker() },
    { typeof(Corpser), () => new CorpserKillTracker() },
    { typeof(Cow), () => new CowKillTracker() },
    { typeof(CuSidhe), () => new CuSidheKillTracker() },
    { typeof(Cyclops), () => new CyclopsKillTracker() },

    { typeof(Daemon), () => new DaemonKillTracker() },
    { typeof(DarknightCreeper), () => new DarknightCreeperKillTracker() },
    { typeof(DarkWisp), () => new DarkWispKillTracker() },
    { typeof(DeepSeaSerpent), () => new DeepSeaSerpentKillTracker() },
    { typeof(DemonKnight), () => new DarkFatherKillTracker() },
    { typeof(DesertOstard), () => new DesertOstardKillTracker() },
    { typeof(DireWolf), () => new DireWolfKillTracker() },
    { typeof(Dragon), () => new DragonKillTracker() },
    { typeof(DragonTurtle), () => new DragonTurtleKillTracker() },
    { typeof(Drake), () => new DrakeKillTracker() },
    { typeof(DreadHorn), () => new DreadHornKillTracker() },
    { typeof(DreadSpider), () => new DreadSpiderKillTracker() },
    { typeof(DullCopperElemental), () => new DullCopperElementalKillTracker() },

    { typeof(Eagle), () => new EagleKillTracker() },
    { typeof(EarthElemental), () => new EarthElementalKillTracker() },
    { typeof(ElderGazer), () => new ElderGazerKillTracker() },
    { typeof(Ettin), () => new EttinKillTracker() },
    { typeof(EvilMage), () => new EvilMageKillTracker() },
    { typeof(EvilMageLord), () => new EvilMageLordKillTracker() },

    { typeof(FairyDragon), () => new FairyDragonKillTracker() },
    { typeof(FanDancer), () => new FanDancerKillTracker() },
    { typeof(FireBeetle), () => new FireBeetleKillTracker() },
    { typeof(FireElemental), () => new FireElementalKillTracker() },
    { typeof(FireSteed), () => new FireSteedKillTracker() },
    { typeof(FleshRenderer), () => new FleshrendererKillTracker() },
    { typeof(ForestOstard), () => new ForestOstardKillTracker() },
    { typeof(FrenziedOstard), () => new FrenziedOstardKillTracker() },
    { typeof(FrostSpider), () => new FrostSpiderKillTracker() },
    { typeof(FrostTroll), () => new FrostTrollKillTracker() },

    { typeof(Gaman), () => new GamanKillTracker() },
    { typeof(Gazer), () => new GazerKillTracker() },
    { typeof(Ghoul), () => new GhoulKillTracker() },
    { typeof(GiantRat), () => new GiantRatKillTracker() },
    { typeof(GiantSerpent), () => new GiantSerpentKillTracker() },
    { typeof(GiantSpider), () => new GiantSpiderKillTracker() },
    { typeof(GiantToad), () => new GiantToadKillTracker() },
    { typeof(GoldenElemental), () => new GoldenElementalKillTracker() },
    { typeof(Gorilla), () => new GorillaKillTracker() },
    { typeof(GreaterDragon), () => new GreaterDragonKillTracker() },
    { typeof(GreatHart), () => new GreatHartKillTracker() },
    { typeof(GrizzlyBear), () => new GrizzlyBearKillTracker() },

    { typeof(Harpy), () => new HarpyKillTracker() },
    { typeof(Harrower), () => new HarrowerKillTracker() },
    { typeof(HeadlessOne), () => new HeadlessOneKillTracker() },
    { typeof(Hind), () => new HindKillTracker() },
    { typeof(Hiryu), () => new HiryuKillTracker() },
    { typeof(Horse), () => new HorseKillTracker() },

    { typeof(IceElemental), () => new IceElementalKillTracker() },
    { typeof(IceFiend), () => new IceFiendKillTracker() },
    { typeof(Imp), () => new ImpKillTracker() },
    { typeof(Impaler), () => new ImpalerKillTracker() },

    { typeof(JukaLord), () => new JukaLordKillTracker() },
    { typeof(JukaMage), () => new JukaMageKillTracker() },
    { typeof(JukaWarrior), () => new JukaWarriorKillTracker() },

    { typeof(Kirin), () => new KirinKillTracker() },

    { typeof(LadyMelisande), () => new LadyMelisandeKillTracker() },
    { typeof(LesserHiryu), () => new LesserHiryuKillTracker() },
    { typeof(Lich), () => new LichKillTracker() },
    { typeof(LichLord), () => new LichLordKillTracker() },
    { typeof(Lion), () => new LionKillTracker() },
    { typeof(Lizardman), () => new LizardmanKillTracker() },
    { typeof(Llama), () => new LlamaKillTracker() },
    { typeof(LordOaks), () => new LordOaksKillTracker() },

    { typeof(Medusa), () => new MedusaKillTracker() },
    { typeof(Mephitis), () => new MephitisKillTracker() },
    { typeof(Miasma), () => new MiasmaKillTracker() },
    { typeof(Mongbat), () => new MongbatKillTracker() },
    { typeof(MountainGoat), () => new MountainGoatKillTracker() },
    { typeof(Mummy), () => new MummyKillTracker() },

    { typeof(Najasaurus), () => new NajasaurusKillTracker() },
    { typeof(Navrey), () => new NavreyKillTracker() },
    { typeof(Neira), () => new NeiraKillTracker() },
    { typeof(Nightmare), () => new NightmareKillTracker() },

    { typeof(Ogre), () => new OgreKillTracker() },
    { typeof(OgreLord), () => new OgreLordKillTracker() },
    { typeof(Oni), () => new OniKillTracker() },
    { typeof(OphidianArchmage), () => new OphidianArchmageKillTracker() },
    { typeof(OphidianKnight), () => new OphidianKnightKillTracker() },
    { typeof(OphidianMage), () => new OphidianMageKillTracker() },
    { typeof(OphidianMatriarch), () => new OphidianMatriarchKillTracker() },
    { typeof(OphidianWarrior), () => new OphidianWarriorKillTracker() },
    { typeof(Orc), () => new OrcKillTracker() },
    { typeof(OrcBomber), () => new OrcBomberKillTracker() },
    { typeof(OrcBrute), () => new OrcBruteKillTracker() },
    { typeof(OrcCaptain), () => new OrcCaptainKillTracker() },
    { typeof(OrcChopper), () => new OrcChopperKillTracker() },
    { typeof(OrcishLord), () => new OrcishLordKillTracker() },
    { typeof(OrcishMage), () => new OrcishMageKillTracker() },
    { typeof(OrcScout), () => new OrcScoutKillTracker() },

    { typeof(Phoenix), () => new PhoenixKillTracker() },
    { typeof(PolarBear), () => new PolarBearKillTracker() },
    { typeof(PlagueBeast), () => new PlagueBeastKillTracker() },
    { typeof(PlagueBeastLord), () => new PlagueBeastLordKillTracker() },

    { typeof(RaiJu), () => new RaiJuKillTracker() },
    { typeof(Raptor), () => new RaptorKillTracker() },
    { typeof(Ratman), () => new RatmanKillTracker() },
    { typeof(RatmanArcher), () => new RatmanArcherKillTracker() },
    { typeof(RatmanMage), () => new RatmanMageKillTracker() },
    { typeof(Reaper), () => new ReaperKillTracker() },
    { typeof(Reptalon), () => new ReptalonKillTracker() },
    { typeof(Rikktor), () => new RikktorKillTracker() },
    { typeof(RottingCorpse), () => new RottingCorpseKillTracker() },
    { typeof(RuneBeetle), () => new RuneBeetleKillTracker() },

    { typeof(Satyr), () => new SatyrKillTracker() },
    { typeof(Scorpion), () => new ScorpionKillTracker() },
    { typeof(SeaSerpent), () => new SeaSerpentKillTracker() },
    { typeof(Shade), () => new ShadeKillTracker() },
    { typeof(ShadowIronElemental), () => new ShadowIronElementalKillTracker() },
    { typeof(ShadowKnight), () => new ShadowKnightKillTracker() },
    { typeof(ShadowWisp), () => new ShadowWispKillTracker() },
    { typeof(ShadowWyrm), () => new ShadowWyrmKillTracker() },
    { typeof(SilverSerpent), () => new SilverSerpentKillTracker() },
    { typeof(SkeletalKnight), () => new SkeletalKnightKillTracker() },
    { typeof(SkeletalMage), () => new SkeletalMageKillTracker() },
    { typeof(Skeleton), () => new SkeletonKillTracker() },
    { typeof(Slime), () => new SlimeKillTracker() },
    { typeof(Snake), () => new SnakeKillTracker() },
    { typeof(SnowElemental), () => new SnowElementalKillTracker() },
    { typeof(Spectre), () => new SpectreKillTracker() },
    { typeof(Spellbinder), () => new SpellbinderKillTracker() },
    { typeof(StoneHarpy), () => new StoneHarpyKillTracker() },
    { typeof(StygianDragon), () => new StygianDragonKillTracker() },

    { typeof(TerathanAvenger), () => new TerathanAvengerKillTracker() },
    { typeof(TerathanDrone), () => new TerathanDroneKillTracker() },
    { typeof(TerathanMatriarch), () => new TerathanMatriarchKillTracker() },
    { typeof(TerathanWarrior), () => new TerathanWarriorKillTracker() },
    { typeof(TimberWolf), () => new TimberWolfKillTracker() },
    { typeof(Titan), () => new TitanKillTracker() },
    { typeof(Travesty), () => new TravestyKillTracker() },
    { typeof(Troglodyte), () => new TroglodyteKillTracker() },
    { typeof(Troll), () => new TrollKillTracker() },
    { typeof(TsukiWolf), () => new TsukiWolfKillTracker() },

    { typeof(Unicorn), () => new UnicornKillTracker() },

    { typeof(ValoriteElemental), () => new ValoriteElementalKillTracker() },
    { typeof(VampireBat), () => new VampireBatKillTracker() },
    { typeof(VeriteElemental), () => new VeriteElementalKillTracker() },

    { typeof(Walrus), () => new WalrusKillTracker() },
    { typeof(WandererOfTheVoid), () => new WandererOfTheVoidKillTracker() },
    { typeof(WaterElemental), () => new WaterElementalKillTracker() },
    { typeof(WhiteWyrm), () => new WhiteWyrmKillTracker() },
    { typeof(Wisp), () => new WispKillTracker() },
    { typeof(Wraith), () => new WraithKillTracker() },

    { typeof(YomotsuElder), () => new YomotsuElderKillTracker() },
    { typeof(YomotsuPriest), () => new YomotsuPriestKillTracker() },
    { typeof(YomotsuWarrior), () => new YomotsuWarriorKillTracker() },

    { typeof(Zombie), () => new ZombieKillTracker() }
};
 
Last edited:
OP
Dan

Dan

Staff Member
Administrator
Game Master
If you don't see a creature you regularly kill on the above list drop a message below with that creature/creatures and I will try to get those added in asap. Otherwise, I will continue to update it with random types every few days. When new ones will be added the list in the original post will also get updated.
 
OP
Dan

Dan

Staff Member
Administrator
Game Master
Screenshot 2024-09-26 001719.png
Added the ability to view other people's kill trackers from the Global Kill Tracker Score Book. (You can still use the [ShowKills command on people as well)
 
OP
Dan

Dan

Staff Member
Administrator
Game Master
Something else I am considering - Once you kill a creature and unlock its "card" in your kill tracker, you could click on that monster from inside your kill tracker to see more information on that type of creature. A sort of UO Bestiary. Maybe make certain information available after X kills.

Information could include:
  • Slayer vulnerabilities
  • Tamable status (y/n)
  • Average stats
  • Unique facts
  • Sounds they make with the ability to play them
  • Possible list of locations killed (could get tricky though with custom events/spawn points during events)
 
OP
Dan

Dan

Staff Member
Administrator
Game Master
Something else that could be added is more ways to sort the kill tracker cards from inside the kill tracker.

Currently, it just lists the cards alphabetically by their names. Another sorting option that will be added soon is a way to sort from high to low and low to high based on kills.

Another more difficult but possible option would be to add filters for types. Example: Orc, Undead, Reptile, Dragons, and so on. This could get tricky though since a lot of monsters would identify as multiple types.
 

adverserath

Novice III
C# Nerd
Supporter
essentially a pokedex for uo mobs. could we then allow animal lore to work without skill checks, based on the number of kills of the mob type?
 
OP
Dan

Dan

Staff Member
Administrator
Game Master
Added 50+ new types.
  • Updated the original list at the bottom of the first post showing all the creatures to collect.
Will look into adding a toggle option to turn on and off the system message for getting a kill-tracked kill.
  • Currently only stops once a type is maxed out. ADDED [KillAlerts command
The new and final hard cap per kill type is now 5,000.
 
OP
Dan

Dan

Staff Member
Administrator
Game Master
There is also a possibility that kills will not have to be reset once the system is completed.
  • Certain types of monsters/animals being tracked currently could be removed in the final version, resulting in those types being lost, but overall the data seems to be working out well enough that most of it might be able to be moved over to the final system.
 
OP
Dan

Dan

Staff Member
Administrator
Game Master
Changes
  • Added even more creatures to be kill-tracked. (updated the original list)
  • There is now an individual damage increase % to mobs that is given as you gather kills.
    • Capped at 5% for 5,000 kills.
    • This damage increase % is sent as a system message on kills and is also displayed in the menu.
  • The Menu has been renamed to the PvM Card.
  • The command [ShowKills has been changed to [ShowCard
  • A new command [KillAlerts has been added.
    • When you use the [KillAlerts command it will shut off (on by default) the system messages displaying your kill totals and damage increase % bonuses when you kill a kill-tracked creature.
    • Using the command again will turn it back on.
 
OP
Dan

Dan

Staff Member
Administrator
Game Master
Changes/Fixes
  • Controlled creatures will now pass along the damage increase bonus.
  • Alerts for the damage increase bonus now only display once a player has a bonus of at least 0.01%.
  • PvM Card and alerts now display the correct bonus that is being applied.
    • Due to a rounding error, they were showing slightly incorrect information. It now only displays in increments of 0.01% for every 10 kills.
 

FireFly

Journeyman II
Supporter
Question about damage bonus from whole system: we have 2separate damage bonus systems(one including di tactic anatomy etc and second that including slayers/honor/chiv spells etc) that % going where? Or its diffrent extra dmg?
 
OP
Dan

Dan

Staff Member
Administrator
Game Master
It is applying it directly in the BaseCreature OnDamage method so it is bypassing other checks. It is being applied on top of everything else. It is an extra damage bonus per creature up to 5%.
 

PIRAT

Newbie II
Points added to the Total score should depend on difficulty level of the killed monster, for example: +Fame/10000.
 
OP
Dan

Dan

Staff Member
Administrator
Game Master
What is this system for? Just to watch how many monsters have you killed?
Right now it gives a small bonus in damage as you get more kills on a selected type. There will also be another menu added to each monster type eventually that will show some basic stats and slayer vulnerabilities of types.

This is where you can suggest what else you would like to see added to it.
 

Sensay

Novice
What is the maximum damage bonus?
Post automatically merged:

Right now it gives a small bonus in damage as you get more kills on a selected type. There will also be another menu added to each monster type eventually that will show some basic stats and slayer vulnerabilities of types.

This is where you can suggest what else you would like to see added to it.
What is the maximum damage bonus?Does it work for pets?
 

FireFly

Journeyman II
Supporter
I have question about when this 5%is added? After all other di and dmg modifiers applies or to base dmg?
 

PLAY NOW

Heritage

Address
play.trueuo.com
Port
2593
Uptime
7 hours
Players Online
18
Houses
850
Vendors
294
Gold
5,083,316,877gp
Top Bottom