Found your idea interesting and actually started to fiddle. What you would want is at least 1 Core edit I would recommend 2. And for the Blood you would need the optional second Core edit, unless you want to do it in BaseCreature.
What I did!
Server - Mobile.cs Line ~5260
I took this,
private static VisibleDamageType m_VisibleDamageType;
public static VisibleDamageType VisibleDamageType { get { return m_VisibleDamageType; } set { m_VisibleDamageType = value; } }
and changed it to
public static VisibleDamageType VisibleDamageType { get; set; }
private VisibleDamageType m_VisibleDamageTypeInstance = VisibleDamageType;
public virtual VisibleDamageType VisibleDamageTypeInstance { get { return m_VisibleDamageTypeInstance; } }
The previous version allowed you to show or hide the damage numbers on a global setting, here it defaults to a global value based on the Expansion as befor but you get the option to override it in the creature.
Next part:
Server - Mobile.cs Line ~5547
lets change this (I am not sure why it wasnt using the property in the first place)
switch (m_VisibleDamageType)
to
switch (VisibleDamageTypeInstance)
Voila! Now you can override the property in the TreeMobile you have there! So no more numbers for it the others can still get them.
Now for the blood!
What I did and kind of liked was the way to add this to the core itself as well.
private bool m_CanBleed = true;
public virtual bool CanBleed { get { return m_CanBleed; } }
Reason why a property and not a simple variable in this case. Well because you can then override the property and you would not care about the (de-)serialization and if you like you can add some logic depening on the monster there too for special monster types.
And now so this actually has an effect!
Script - BaseWeapon ~2976
You will find the AddBlood method there.
public virtual void AddBlood(Mobile attacker, Mobile defender, int damage)
{
if (damage > 0)
All we need to do there is add our new CanBleed property in the check! Like this ..
public virtual void AddBlood(Mobile attacker, Mobile defender, int damage)
{
if (damage > 0 && defender.CanBleed)
Dont forget to recompile and set your tree up as well