| Author |
Message |
![[Post New]](/dcforum/templates/default/images/icon_minipost_new.gif) 07/12/2009 18:51:08
|
Elite
Godlike
![[Avatar]](/dcforum/images/avatar/7fa732b517cbed14a48843d74526c11a.jpg)
Joined: 10/21/2007 13:24:50
Messages: 417
Offline
|
In a way yes what you say is true about exp farming but say we do make the healing monster a lot stronger by shooting deemers... eventually it will pick off the weaker ones and then only the high levels will be alive. This means it will be alot harder to win the map not necessarily exp farming, I think that the difference in servers makes a big difference.
If we did that here we would be signing a death sentence and not really exploiting a bug
|
WM: 383 Elite_Guard(AI)
AM: 381 Elite_Junkie(AI)
MM: 382 Elite_Medic(AI)
EN: 384 Elite_Engine(AI)
My skin: Elite(AI)
Most rocket launcher kills: 459 |
|
|
 |
![[Post New]](/dcforum/templates/default/images/icon_minipost_new.gif) 07/12/2009 22:02:17
|
Wail
Rampage
Joined: 09/20/2007 21:14:41
Messages: 183
Offline
|
Well, I don't disagree that the differences in servers would likely mean less potential for abuse. It really depends on specifics, though.
For example, lets say you've got a "HealingMonster" that doesn't have an attack, but can only heal other monsters. Well, kill off everything but the "HealingMonsters" on a wave and you have a bunch of monsters just sitting around healing each other so you can farm XP. Worse, the more effective their healing power the easier it is to farm them. The only hard thing in this scenario would be getting players to cooperate.
Even if you give these guys attacks, unless they're serious threats unto themselves (aside from any potential healing effects they might be able to do) you've still got that potential for XP farming collusion. And making a monster that's hard unto itself PLUS heals other monsters with any degree of effectiveness is going to raise the overall challenge level of the server.
I'm not saying it shouldn't be done, I definitely do like the idea and have given it some thought. But I think approaching it in the way I suggested (damage negation vs. straight up healing) is better if it actually does remove the potential for abuse.
|
|
|
 |
![[Post New]](/dcforum/templates/default/images/icon_minipost_new.gif) 07/13/2009 01:13:03
|
Szlat
Wicked Sick!
Joined: 05/18/2005 18:32:41
Messages: 2124
Location: UK
Offline
|
The xp awarded looks like it is based on the damage you are doing, capped by the monster's health. It is not based on how much health you actually take off the monster.
I am not sure adding an inventory item for negating damage will work - the UT2004RPG code doesn't check inventory items.
Just having a shield-healing monster would be one way of not increasing the health of the monster, and would make them more difficult to kill. But would still allow you to farm xp off them.
The only way to get the damage reduced, and hence get less xp, would be for the monster to have an ability that did it. That would reduce the damage before xp was awarded, so the xp would be less. However, certain types of attack (e.g. rod) bypass all abilities, so doing this would make those attacks relatively more powerful, as people using rod would get xp, but people using weapons would just have their damage negated.
I don't think you can just knock up the DR of the monster, as I think it gets recalculated every time.
So, I am not sure there is an easy way of healing monsters that isn't exploitable.
|
|
|
 |
![[Post New]](/dcforum/templates/default/images/icon_minipost_new.gif) 07/13/2009 10:05:07
|
Wail
Rampage
Joined: 09/20/2007 21:14:41
Messages: 183
Offline
|
Szlat wrote:
The xp awarded looks like it is based on the damage you are doing, capped by the monster's health. It is not based on how much health you actually take off the monster.
I am not sure adding an inventory item for negating damage will work - the UT2004RPG code doesn't check inventory items.
Hmm. If that's the case it would be a shame.
< regales >
On Monster Mash ...
< /regales>
We have a monster called the Shrike which has a stealth mode wherein its skin changes textures, becoming camo (based on the location where it is standing) or transparent (the invisible combo skin). When it's in the stealth state, it takes no damage from mines - This is done in the monster's TakeDamage IIRC.
Trying to kill a stealthed Shrike with mines is just pointless, and doesn't garner any experience. So the idea here being that if a monster pawn can reduce damage to 0 in TakeDamage and no experience is awarded, then using an Armor (subclass of Inventory whose effects occur during Pawn TakeDamage) should achieve the same thing (just without having to change every monster's pawn).
Anyway, if I have some time later today I'll mock up something quick and see if it has the effect I'm hoping, if not there's always the option of temporarily making a monster invulnerable...
|
|
|
 |
![[Post New]](/dcforum/templates/default/images/icon_minipost_new.gif) 07/13/2009 12:18:58
|
Szlat
Wicked Sick!
Joined: 05/18/2005 18:32:41
Messages: 2124
Location: UK
Offline
|
Wail wrote:
On Monster Mash ...We have a monster called the Shrike which has a stealth mode wherein its skin changes textures, becoming camo (based on the location where it is standing) or transparent (the invisible combo skin). When it's in the stealth state, it takes no damage from mines - This is done in the monster's TakeDamage IIRC.
Trying to kill a stealthed Shrike with mines is just pointless, and doesn't garner any experience. So the idea here being that if a monster pawn can reduce damage to 0 in TakeDamage and no experience is awarded, then using an Armor (subclass of Inventory whose effects occur during Pawn TakeDamage) should achieve the same thing (just without having to change every monster's pawn).
You are correct in that armor should reduce the damage done in the Pawn TakeDamage function. However, things are not quite that simple.
The Pawn TakeDamage looks like this:
Code:
if (Weapon != None)
Weapon.AdjustPlayerDamage( Damage, InstigatedBy, HitLocation, Momentum, DamageType );
if (DrivenVehicle != None)
DrivenVehicle.AdjustDriverDamage( Damage, InstigatedBy, HitLocation, Momentum, DamageType );
if ( (InstigatedBy != None) && InstigatedBy.HasUDamage() )
Damage *= 2;
actualDamage = Level.Game.ReduceDamage(Damage, self, instigatedBy, HitLocation, Momentum, DamageType);
if( DamageType.default.bArmorStops && (actualDamage > 0) )
actualDamage = ShieldAbsorb(actualDamage);
The code for awarding xp is in the UT2004RPG RPGRules NetDamage function.
Now the code for handling Armor as an inventory item is in GameInfo.ReduceDamage, and is expected to be called in the Game.ReduceDamage call. This function also handles invulnerability, and as a last action would normally call the NetDamage function.
However, the Invasion ReduceDamage is very naughty. If the injured is a monster, it just returns damage. It does not call super.ReduceDamage, so the armor handling does not execute. And neither does it call NetDamage.
For this reason, Mysterial added a FakeMonsterWeapon which is given to all monsters. Then the call Weapon.AdjustPlayerDamage line in the Pawn TakeDamage code calls the AdjustPlayerDamage in the FakeMonsterWeapon, which calls NetDamage.
So in Invasion, the xp is awarded during the Weapon.AdjustPlayerDamage, so very little will stop the xp being given. I reckon the only way would be to modify all monsters to have their own TakeDamage function, so that they reduce the damage before calling super.TakeDamage - which is what I expect your Shrike does.
Subclassing every single monster is a big job.
|
|
|
 |
![[Post New]](/dcforum/templates/default/images/icon_minipost_new.gif) 07/13/2009 13:20:55
|
Thè-Hättêr
Wicked Sick!
![[Avatar]](/dcforum/images/avatar/2387337ba1e0b0249ba90f55b2ba2521.jpg)
Joined: 06/09/2008 23:49:41
Messages: 615
Location: Mexico
Offline
|
i dont like it.. why? well if monsters do the exp for healing then what the medic does? ...killing and gain more exp¿? medic is the easiest character and if you add a healing monster now the medic wont do a thing he wond move and he only will send the pet..
|
"Only a few find the way, some don't recognise it when they do, some don't ever want to."
Cheshire, The Cat
Alice and the Hatter: Quotes: Alice in Wonderland
Alice: What a funny watch! It tells the day of the month, and it doesn't tell what o'clock it is!
The Hatter: Why should it? Does your watch tell you what year it is?
Alice: Of course not, but that's because it stays the same year for such a long time together.
The Hatter: …which is just the case with mine.
HERE IS MY NEW SKIN ... please take time to download it
MY SKIN--
thanks road
working on a new skill please support and advice would be great |
|
|
 |
![[Post New]](/dcforum/templates/default/images/icon_minipost_new.gif) 07/13/2009 14:50:27
|
Elite
Godlike
![[Avatar]](/dcforum/images/avatar/7fa732b517cbed14a48843d74526c11a.jpg)
Joined: 10/21/2007 13:24:50
Messages: 417
Offline
|
They are talking about a monster that heals other monsters not a pet that heals other players...
|
WM: 383 Elite_Guard(AI)
AM: 381 Elite_Junkie(AI)
MM: 382 Elite_Medic(AI)
EN: 384 Elite_Engine(AI)
My skin: Elite(AI)
Most rocket launcher kills: 459 |
|
|
 |
![[Post New]](/dcforum/templates/default/images/icon_minipost_new.gif) 07/13/2009 18:24:58
|
Thè-Hättêr
Wicked Sick!
![[Avatar]](/dcforum/images/avatar/2387337ba1e0b0249ba90f55b2ba2521.jpg)
Joined: 06/09/2008 23:49:41
Messages: 615
Location: Mexico
Offline
|
still..
|
"Only a few find the way, some don't recognise it when they do, some don't ever want to."
Cheshire, The Cat
Alice and the Hatter: Quotes: Alice in Wonderland
Alice: What a funny watch! It tells the day of the month, and it doesn't tell what o'clock it is!
The Hatter: Why should it? Does your watch tell you what year it is?
Alice: Of course not, but that's because it stays the same year for such a long time together.
The Hatter: …which is just the case with mine.
HERE IS MY NEW SKIN ... please take time to download it
MY SKIN--
thanks road
working on a new skill please support and advice would be great |
|
|
 |
![[Post New]](/dcforum/templates/default/images/icon_minipost_new.gif) 07/15/2009 12:02:52
|
Wail
Rampage
Joined: 09/20/2007 21:14:41
Messages: 183
Offline
|
Szlat wrote:
Wail wrote:
On Monster Mash ...We have a monster called the Shrike which has a stealth mode wherein its skin changes textures, becoming camo (based on the location where it is standing) or transparent (the invisible combo skin). When it's in the stealth state, it takes no damage from mines - This is done in the monster's TakeDamage IIRC.
Trying to kill a stealthed Shrike with mines is just pointless, and doesn't garner any experience. So the idea here being that if a monster pawn can reduce damage to 0 in TakeDamage and no experience is awarded, then using an Armor (subclass of Inventory whose effects occur during Pawn TakeDamage) should achieve the same thing (just without having to change every monster's pawn).
You are correct in that armor should reduce the damage done in the Pawn TakeDamage function. However, things are not quite that simple.
The Pawn TakeDamage looks like this:
Code:
if (Weapon != None)
Weapon.AdjustPlayerDamage( Damage, InstigatedBy, HitLocation, Momentum, DamageType );
if (DrivenVehicle != None)
DrivenVehicle.AdjustDriverDamage( Damage, InstigatedBy, HitLocation, Momentum, DamageType );
if ( (InstigatedBy != None) && InstigatedBy.HasUDamage() )
Damage *= 2;
actualDamage = Level.Game.ReduceDamage(Damage, self, instigatedBy, HitLocation, Momentum, DamageType);
if( DamageType.default.bArmorStops && (actualDamage > 0) )
actualDamage = ShieldAbsorb(actualDamage);
The code for awarding xp is in the UT2004RPG RPGRules NetDamage function.
Now the code for handling Armor as an inventory item is in GameInfo.ReduceDamage, and is expected to be called in the Game.ReduceDamage call. This function also handles invulnerability, and as a last action would normally call the NetDamage function.
However, the Invasion ReduceDamage is very naughty. If the injured is a monster, it just returns damage. It does not call super.ReduceDamage, so the armor handling does not execute. And neither does it call NetDamage.
For this reason, Mysterial added a FakeMonsterWeapon which is given to all monsters. Then the call Weapon.AdjustPlayerDamage line in the Pawn TakeDamage code calls the AdjustPlayerDamage in the FakeMonsterWeapon, which calls NetDamage.
So in Invasion, the xp is awarded during the Weapon.AdjustPlayerDamage, so very little will stop the xp being given. I reckon the only way would be to modify all monsters to have their own TakeDamage function, so that they reduce the damage before calling super.TakeDamage - which is what I expect your Shrike does.
Subclassing every single monster is a big job.
This is highly amusing in a kind of depressing way. Although MM runs a gametype subclass of Invasion, so fixing Invasion snafus is not out of the question (though fixing the UT2004RPG fixes might prove more complicated).
|
|
|
 |
|
|
|
|