A general RFE discussion thread

Oct 5, 2016, 3:38 pm
#26
Ischaldirh's avatar
Ex-Tyrant of the IVANers


Joined: Dec 8, 2007
Occupation: Junior Scientist
Location: Not California
Interests: (Astro)Physics, Exoplanets, Singing praise to Valpurus while smashing skulls with a bloody warhammer, Jogging
Posts: 2,862
Serin-Delaunay wrote
That's my interpretation too. I think the player is protected from damage by AV, but physically it might make more sense to make personal damage reduction dependent on material flexibility, as flexible materials could absorb more of the energy of the sound waves. Material strength would play a bigger part in object breakage (and probably does already).

Then again, similar arguments could probably be applied to a lot of damage types, depending on how one interprets "strength" and "flexibility" as material properties.

All in all it sounds more complicated than it's probably worth? Idk.
Oct 5, 2016, 5:50 pm
#27
Joined: Dec 11, 2008
Posts: 1,770
Ischaldirh wrote
All in all it sounds more complicated than it's probably worth? Idk.

There's actually damage types in the game, but most of them don't do anything but change the language used when a character takes a hit.

In the case of enner beast screams, they do SOUND damage so we could write our own little code for how to handle it without much trouble.
There's a check for what kind of damage resistance a character or item has:

int character::GetResistance(int Type) const
{
  switch(Type&0xFFF)
  {
   case PHYSICAL_DAMAGE:
   case SOUND:
   case DRAIN:
   case MUSTARD_GAS_DAMAGE:
   case PSI:
    return 0;
   case ENERGY: return GetEnergyResistance();
   case FIRE: return GetFireResistance();
   case POISON: return GetPoisonResistance();
   case ELECTRICITY: return GetElectricityResistance();
   case ACID: return GetAcidResistance();
  }

  ABORT("Resistance lack detected!");
  return 0;
}

As you can see, the elemental damage types call their own functions to return the amount of resistance any given character has for them - currently this is solely based on values given in Material.dat.
If we wrote in "case SOUND: return GetSoundResistance()" we could then write our own "GetSoundResistance" function which calculates resistance based on material flexibility or alternatively, define a sound resistance value for certain materials in Material.dat.

Currently the only reduction to sound damage is, in fact, your AV.
Oct 5, 2016, 6:15 pm
#28
Ischaldirh's avatar
Ex-Tyrant of the IVANers


Joined: Dec 8, 2007
Occupation: Junior Scientist
Location: Not California
Interests: (Astro)Physics, Exoplanets, Singing praise to Valpurus while smashing skulls with a bloody warhammer, Jogging
Posts: 2,862
Is there a way to specify if an *item* is resistant to a type of damage, without transferring that resistance to someone wearing the item?
Oct 5, 2016, 6:41 pm
#29
Joined: Dec 11, 2008
Posts: 1,770
Ischaldirh wrote
Is there a way to specify if an *item* is resistant to a type of damage, without transferring that resistance to someone wearing the item?

Technically yes although it's going to start getting pretty complicated.
We'd need to change some code to allow items to calculate their own resistance when they take damage first - currently they don't reduce the damage they take by any means, because their "take damage" code doesn't check for resistance to certain damage types.
All they do currently with respect to damage types is check whether they can be broken - only physical, sound, acid and energy damage can break an item.

(Of course there's also separate code for checking whether an item bursts into flames when it takes fire damage)

As for making sure the player doesn't inherit the resistance... hrmm that's going to be quite a bit more difficult because the GetTotalResistance() code for a humanoid character always takes into account the armor or items the player is wearing on the bodypart that's taken the hit.

I'd have to have a think about it, currently the only thing jumping to mind is having some kind of unique flag or value in the script file that alerts the code that this items needs a fat boost to resistance against a given damage type when it gets hit, completely separate from its innate damage resistance.
Something like this:
helmet
{
   CONFIG SOUNDPROOF
   {
    BitmapPos = 64, 64;
    Possibility = 5;
    MainMaterialConfig = { 7, STEEL, METEORIC_STEEL, DRAGON_HIDE, ARCANITE, MITHRIL, OCTIRON, ADAMANT; }
    MaterialConfigChances = { 7, 100, 25, 25, 25, 25, 10, 5; }
    HelmetBitmapPos = 112, 496;
    Adjective = "soundproof";
    SoundResistance = 0;
    SelfishSoundResistance = 100;
   }
}

Where the above "soundproof" helmet has 0 sound resistance that would be passed on to the player, but 100 for itself that would be taken into account when it gets hit by an enner beast scream.
i.e. The helmet itself is soundproof...
Oct 5, 2016, 11:22 pm
#30
Ischaldirh's avatar
Ex-Tyrant of the IVANers


Joined: Dec 8, 2007
Occupation: Junior Scientist
Location: Not California
Interests: (Astro)Physics, Exoplanets, Singing praise to Valpurus while smashing skulls with a bloody warhammer, Jogging
Posts: 2,862
That sounds complicated. I was going to suggest that flexible material items themselves would resist sound damage (flapping around instead of shattering), but would not protect the player. Sounds like more work than it's worth. Though similar code would allow for i.e. boots that wouldn't be destroyed by walking in acid.
Oct 6, 2016, 1:02 am
#31
Joined: Apr 2, 2014
Location: North Tyris
Posts: 628
Isn't acid resistance already intrinsical to stone materials? I thought this is why weeping blade does not break from it's own acid.
Oct 6, 2016, 1:09 am
#32
Joined: Apr 9, 2016
Occupation: Priestx of Sophos
Location: Standing on a big mine in GC1
Interests: the relation of queer crystal hyperfeminism and amphibious neutronium cybersocialist art
Posts: 258
red_kangaroo wrote
Isn't acid resistance already intrinsical to stone materials? I thought this is why weeping blade does not break from it's own acid.
Weeping crystal blades don't break from acid due to material properties, but try dipping other types of weeping blades in bottles of sulphuric acid.
Oct 6, 2016, 9:23 am
#33
capristo's avatar
The Imperialist


Joined: Dec 2, 2007
Location: New Attnam
Interests: bananas
Posts: 2,170
Ischaldirh wrote
That sounds complicated. I was going to suggest that flexible material items themselves would resist sound damage (flapping around instead of shattering), but would not protect the player. Sounds like more work than it's worth. Though similar code would allow for i.e. boots that wouldn't be destroyed by walking in acid.

I thought that was already the case? I have never seen leather items break from the Enner's screams
Oct 6, 2016, 4:54 pm
#34
Joined: Dec 11, 2008
Posts: 1,770
capristo wrote
I thought that was already the case? I have never seen leather items break from the Enner's screams

Just ran a quick test and found that they can in fact break from being yelled at.
Also, I'd hope people have stronger stuff than leather by the time they get to the Enner but RNG can be cruel.
Oct 6, 2016, 4:58 pm
#35
Ischaldirh's avatar
Ex-Tyrant of the IVANers


Joined: Dec 8, 2007
Occupation: Junior Scientist
Location: Not California
Interests: (Astro)Physics, Exoplanets, Singing praise to Valpurus while smashing skulls with a bloody warhammer, Jogging
Posts: 2,862
Quote
Weeping crystal blades don't break from acid due to material properties

This seems like a much simpler solution. Can we make some (soft) materials resistant/immune to sound-type damage?
Oct 6, 2016, 5:45 pm
#36
capristo's avatar
The Imperialist


Joined: Dec 2, 2007
Location: New Attnam
Interests: bananas
Posts: 2,170
Well I just meant leather as an example of a flexible item. I feel like I see tons of shattered glass, as others have mentioned. Lots of exploding wands. But I guess I never paid close enough attention to the flexible stuff.
Oct 6, 2016, 5:50 pm
#37
Joined: Dec 11, 2008
Posts: 1,770
Ischaldirh wrote
This seems like a much simpler solution. Can we make some (soft) materials resistant/immune to sound-type damage?

We could go with my earlier suggestion of just slapping sound resistance onto certain materials' script entries.
The changes in the source code to handle it would also be relatively small.

Of course we'd then need to brainstorm just how resistant we want certain materials to be, and do some field testing!
Oct 6, 2016, 6:35 pm
#38
Joined: Apr 9, 2016
Occupation: Priestx of Sophos
Location: Standing on a big mine in GC1
Interests: the relation of queer crystal hyperfeminism and amphibious neutronium cybersocialist art
Posts: 258
What are the materials people think should resist sound damage? Is it possible to classify them simply using already existing properties (probably strength and flexibility) rather than adding a new flag and setting it on individual materials?
For instance, flexibility > 4, or flexibility*strength > 150?
Oct 6, 2016, 6:47 pm
#39
Joined: Dec 11, 2008
Posts: 1,770
I think it wouldn't hurt to have the SoundResistance value in the script files - that way if we wanted to have magical items that boost sound resistance it'd be easier to code them in (Ring of Sound Resistance for example).
But I also like the idea of having a function to calculate sound resistance based on the material's physical properties...

I'm currently looking into what reduces the impact of a shock wave in real life and it's looking more like the more stuff you have in the way between you and the shock wave, the better.
Bomb suits for example have a big layer of foam, which goes squishy (flexible!) when hit by the wave and causing the force to disperse as much as possible before it impacts the guy inside the suit.
But it also has a ballistic plate made of thicker materials which helps in the same manner while also protecting against shrapnel.

From this I'd think flexibility is the main factor, but we should maybe also consider material volume (or density) instead of strength? Material strength could just be used for determining whether the item breaks rather than reducing the sound damage - or if it does, it doesn't have as much of an impact as Volume and Flexibility.
Oct 6, 2016, 7:56 pm
#40
Joined: Apr 9, 2016
Occupation: Priestx of Sophos
Location: Standing on a big mine in GC1
Interests: the relation of queer crystal hyperfeminism and amphibious neutronium cybersocialist art
Posts: 258
This is kind of what I was alluding to on the last page; damage reduction for most damage types is based on AV, which is material strength times the item's strength ratio. However, for sound damage and blunt weapons it would physically make more sense for damage reduction to be based on how much energy the item absorbs, and the best approximation IVAN can make to that would come from item volume (or thickness, which could be approximated using bodypart volume) and material flexibility.

However, if a system like this was implemented, blunt force would have to be separated from sharp implements, and equipment would end up with two armour values, which... bleh.

Also, strong dense inflexible armour could still help with sound damage reduction. Assuming the armour is rigidly attached to the body (lolno) The additional volume from the armour causes slightly more energy to be transferred to the character. The additional mass from the armour reduces the change in the character's velocity from that energy (which would be proportional to the amplitude of the sound passing through the character's body). If the armour is dense, the latter effect should be dominant.

Of course, this ia a world where standing next to an enner beast poses great health risks but being one is fine. Probably it should just work however is most fun.
Oct 6, 2016, 8:22 pm
#41
Joined: Dec 11, 2008
Posts: 1,770
We could put blunt damage aside for another day (if we really wanted to do it), but in the mean time Sound damage is much simpler to handle since it's just another element.
On the subject of separate calculations for blunt damage, at the very least there's already a framework in place for blunt/sharp/piercing weapons that we could take advantage of, but it's only used to print different messages to the message log currently.

I think we should just mock up some test branches, compile them and see which approach works best in an actual game - flat resistance via script files, separate sound damage resistance based on material density and flexibility, or a combination of both?

Also as it is, the displayed AV value isn't really that helpful or informative at all since it's a number with no context other than "this armor has a bigger number so it must be better".
Oct 6, 2016, 8:51 pm
#42
Joined: Apr 9, 2016
Occupation: Priestx of Sophos
Location: Standing on a big mine in GC1
Interests: the relation of queer crystal hyperfeminism and amphibious neutronium cybersocialist art
Posts: 258
Raising END to 1000 in wizmode and getting instakilled by a critical hit while naked makes it pretty clear that AV provides some kind of protection far greater than just being subtracted from damage values. :>
Oct 6, 2016, 9:25 pm
#43
Ischaldirh's avatar
Ex-Tyrant of the IVANers


Joined: Dec 8, 2007
Occupation: Junior Scientist
Location: Not California
Interests: (Astro)Physics, Exoplanets, Singing praise to Valpurus while smashing skulls with a bloody warhammer, Jogging
Posts: 2,862
Serin-Delaunay wrote
Probably it should just work however is most fun.

This was my conclusion too.
Oct 6, 2016, 9:54 pm
#44
Joined: Dec 11, 2008
Posts: 1,770
Serin-Delaunay wrote
Raising END to 1000 in wizmode and getting instakilled by a critical hit while naked makes it pretty clear that AV provides some kind of protection far greater than just being subtracted from damage values. :>

Sorry, my fault here for not being clear on what I meant.
All I meant was that, unless you knew the code behind it, the AV value you see in game isn't actually all that helpful to know except for making decisions on what armor is better than others.
i.e. you can see a new body armor and say "OH! This armor says 18! It must be good. But 18 what?" because it isn't a flat damage reduction or anything (and even then you can't see flat damage numbers.)

And the reason I brought that up was in the context of needing to have two different AVs for sharp/blunt damage - since the currently displayed value isn't really all that helpful I don't think it's something we need to worry about.
As it is, you need to put a metal plate mail on before you figure out that the bigger AV has its downsides like the DEX and AGI penalty, so I think it'd be fair to leave the AVs as is and have the players figure out that the "lower AV" flexible armors are actually better against blunt damage.

There's definitely benefits to wearing armor of some variety over going nude, I think it was covered in another thread (probably the "anything you don't want to make a thread for" thread) where, as far as I remember, there was some code that did a check to see whether you had a piece of armor equipped on a certain bodypart when doing the damage check and there were severe penalties for not having one - particularly for being bitten by canines.
Of course there's that on top of the fact that it has all the other nice effects like stopping zombies from inflicting leprosy, or being able to punch hedgehogs.
Oct 6, 2016, 10:10 pm
#45
Joined: Apr 9, 2016
Occupation: Priestx of Sophos
Location: Standing on a big mine in GC1
Interests: the relation of queer crystal hyperfeminism and amphibious neutronium cybersocialist art
Posts: 258
Speaking of being bitten by canines... Rabies for president in 0508?
Oct 6, 2016, 11:04 pm
#46
Ischaldirh's avatar
Ex-Tyrant of the IVANers


Joined: Dec 8, 2007
Occupation: Junior Scientist
Location: Not California
Interests: (Astro)Physics, Exoplanets, Singing praise to Valpurus while smashing skulls with a bloody warhammer, Jogging
Posts: 2,862
Quote
have the players figure out that the "lower AV" flexible armors are actually better against blunt damage.

As long as we're discussing this, I feel it's worth discussion how, IRL, war hammers and various forms of mace (flanged maces, in particular) were designed to be more effective against armor. At the end of the day, it would still be substantially better to be wearing heavy plate armor when being struck by one, as opposed to wearing something lighter (mail, leather, etc). The idea with these weapons was to focus a large amount of force (heavy weight on the end of a stick) onto a small area (small hammer head, spikes, flanges, etc) in order to be more likely to damage or pierce the armor and get at the soft, gooey bits underneath. The fact that said large amount of force could also break bones and cause concussions, while certainly not negligible, was not why you would choose to use one over a sword. Swords can do those things and also cut up flesh rather nicely... but sharp edges just don't do as well against metal plates. That said, (plate) armor would definitely absorb and disperse a lot of the shock from a blow, substantially reducing the amount of broken bones and concussions that result.

There's tons of youtube videos discussing the various advantages of "blunt" weapons compared to bladed ones. A few involve armor, but a cursory search didn't turn up anybody willing to destroy a suit of plate by smashing it with a flanged mace or morning star.

Oddly, it occurs to me that a morning star (which the IVAN mace bears a striking resemblance to) would be almost a piercing weapon, being as it's a ball covered in spikes...

I guess what I'm getting at is that, if anything, blunt weapons (incl. possibly axes?) should be more likely to break rigid armor and shields, and maybe ignore some of the AV. (For that matter, bladed weapons (swords and axes) should be more likely to break flexible armor.) But I don't think that, in terms of protection, light armor should in no case be better than heavy armor.

At least, from a realism standpoint.
Oct 7, 2016, 7:15 pm
#47
Joined: Mar 17, 2008
Occupation: Software developer
Location: Ohio
Interests: Physics
Posts: 67
red_kangaroo wrote
Isn't acid resistance already intrinsical to stone materials? I thought this is why weeping blade does not break from it's own acid.

When I made weeping blades, originally they were going to coat themselves in acid, just like daggers of venom (which I made at the same time). Then I found out that the acid broke them, so I changed the mechanics to just spash acid on things they hit, about as often as flaming swords deal fire damage. They're supposed to *seem* immune to their own acid, but it's not actually the case.

As far as the sound resistance: since there is only one source of sound damage in the game (that I know of), I'm all for just leaving it as AV and spending our time on kiwi reanimation and other things that will happen more than once per run.
Oct 8, 2016, 4:33 am
#48
Joined: Sep 8, 2010
Occupation: Petty Functionary
Location: Drinking pea soup in the world map
Interests: Mangoes
Posts: 1,143
This is such an intense thread, I'm almost lost already.

Serin-Delaunay wrote
Speaking of being bitten by canines... Rabies for president in 0508?

Could do. Would affect Cha for one thing...
Oct 8, 2016, 9:24 am
#49
Joined: Apr 2, 2014
Location: North Tyris
Posts: 628
Serin-Delaunay wrote
Speaking of being bitten by canines... Rabies for president in 0508?

Speaking of which... do hiccups work in 0.57? I haven't seen them yet.
Oct 9, 2016, 11:36 pm
#50
Ischaldirh's avatar
Ex-Tyrant of the IVANers


Joined: Dec 8, 2007
Occupation: Junior Scientist
Location: Not California
Interests: (Astro)Physics, Exoplanets, Singing praise to Valpurus while smashing skulls with a bloody warhammer, Jogging
Posts: 2,862
I'm dumb, we now have two ideas-related threads. Though the other was getting a bit... unwieldy.

I got reminiscant tonight and dug around the ancient forums, and found this little gem of an idea from 10 years ago. Hit it, Dalboz:

dalboz wrote
I've just realized: if IVAN has an icebox (like nethack) you can buy bananas cheap in New Attnam, put them in a icebox, then resell them at Attnam for great prices!

Can this be a thing?
Jump to