Item Value

New ideas, features you wish were in the game.
Post Reply
Domiano
Crimson Mold
Posts: 55
Joined: Sat 23.04.2011, 04:10

Item Value

Post by Domiano » Mon 14.01.2013, 16:25

I know that the devs have been kicking around how to change mangband's pricing system for a while. I'd like to throw my two cents in, and additionally see if we can get any more input from the community, and see where the Devs are at in the pricing process.

From a bare-bones standpoint, I believe the following three things are needed for the pricing system; Multiplicative value increase, Additive value increase, and different values of properties, depending where they came from.
Multiplicative value increase:
An exceedingly good resist on an item that is ALREADY great should increase its value more. Example;
A nether resist avari sells for far more than a nether elvenkind and a mediocre resist avari combined.
Additive value increase:
Extra Attacks on a weapon should likely not increase its value multiplicative. Weapon base value is extremely volatile, and so a multiplicative modifier could create confusing results here.
Different values:
Currently, +10 speed on a ring is NOT equal to +10 speed on boots. 4con on a shield is also worth WAY more than 6con on a ring.

I think that the process of deciding what value to equate every property on every item will be a long one. It can be SOMEWHAT shortened by only looking at properties that can exist outside of artifacts (aka, don't think about speed on a helmet)

PowerWyrm
Balrog
Posts: 1574
Joined: Sun 27.11.2005, 15:57

Re: Item Value

Post by PowerWyrm » Tue 15.01.2013, 12:06

The best way would be to implement the new Vanilla pricing system. Check PWMAngband for an implementation.

Domiano
Crimson Mold
Posts: 55
Joined: Sat 23.04.2011, 04:10

Re: Item Value

Post by Domiano » Sun 20.01.2013, 05:45

Looking at PWmang's code, I believe that this pricing system is a good starting point! However, I believe it does still need a few more tweaks to it. Here is my understanding of it thusfar (the file is obj-power.c in PW's code if you want to look yourself)
Every object is given a 'power'
Object price is defined as a*power + b*power*power, meaning it can be tweaked to have very linear, or a more quadrilateral pricing curve.
Slays/brands add power valued based on how much they will, to the average monster, increase the overall damage from the dice
It does not consider a weapon's critical hits when calculating the power of its dice
It gives double power to hit/damage if it is not on a weapon/shooter/missile
It gives power of 5 for damage, and power of 3 for tohit
For launchers, it adds power based assumed ammo damage.
For ammo, adds power based on assumed multiplier on assumed launcher
For extra attacks, it adds power based on overall damage increase, assuming you had 5bpr originally, and that you had exactly +15todam that was NOT from your weapon.
For launchers, increases power multiplicitavely based on total might multiplier, and number of shots it gives innately
Overall power on a launcher, and on a mele weapon are scaled by blows/shots/total might
For armor, adds power based on AC per weight unit
For anything, adds power for + toAC
If the +toAC is high, it doubles the bonus it gives to that portion of the +toAC
if the +toAC is VERYhigh, it quadruples the bonus it gives to that portion of the +toAC
It adds power based on various 'flags' which I do not fully understand.


From what I've heard from PW, these include stats, speed, abilities, resists, excetera. It apparently gives different amounts of power to different stats/resists, but I cannot find where it defines these things.
It adds extra power if an item has a certain 'set' of abilities, resists, excetera. (resist base all together, a specific set of slays, excetera)

It does NOT appear to assign different amounts of power for resists/stats/abilities based on where they come from.



My thoughts on this:
By and large, it is a good system. However, I feel it needs a few tweaks for mangband.
It does not factor in critical hits when calculating power. I feel this is necessary to accurately value weapons with strong dice and/or heavier weights.
In my opinion, the power gap between hit and damage should be increased. Tohit is incredibly weak compared to damage at most levels. I did a mock calculation assuming you were using Deathwreaker, the weapon that benefits the most from tohit, against Morgoth, with the proper buffs. I found that 1 point of damage was worth about 3 points of tohit.
For extra attack weapons, I believe the assumed +15todam is too low. I believe +20 (or more) is more adequate.
I absolutely love the fact that it gives more power for +toAC at exceedingly high values. I feel something similar should be done for hit/damage. (like, after +15 and after +25)
The fact that it does not appear to give power to stats/abilities/excetera based on where they come from is a huge oversite. How powerful is 4 con on a shield? How powerful is 4con on a ring? Their is an extreme gap in power here. I would also argue that 4 con on a shield is more than twice as powerful as 2con on a shield. Because of the importance of con, and the rarity of orcish avaris, their should be an increase in power per con on a shield after 2 con.
As another example, some resists on a body slot are less powerful than they would be elsewhere, due to their decreased rarity from DSMs. In other words, confusion on an shield/gloves is more powerful more than confusion on body armor. (In my opinion at least)


So that is my interpretation of ang's current pricing system. If anyone has any corrections/thoughts on this, please bring them up! I would love it if we could get a pricing system as close to perfect as possible for version 1.2!

PowerWyrm
Balrog
Posts: 1574
Joined: Sun 27.11.2005, 15:57

Re: Item Value

Post by PowerWyrm » Mon 21.01.2013, 12:40

Domiano wrote:It adds power based on various 'flags' which I do not fully understand. From what I've heard from PW, these include stats, speed, abilities, resists, excetera. It apparently gives different amounts of power to different stats/resists, but I cannot find where it defines these things.
It adds extra power if an item has a certain 'set' of abilities, resists, excetera. (resist base all together, a specific set of slays, excetera)
It does NOT appear to assign different amounts of power for resists/stats/abilities based on where they come from.
It seems you didn't look at list-object-flags.h in /common subdirectory.

/*
* File: list-object-flags.h
* Purpose: Object flags for all objects
*
* index: the flag number
* pval: is it a quantitative flag? FALSE means it's just on/off
* timed: what is the corresponding TMD_ flag
* id: when the flag is IDd
* type: what type of flag is it?
* power: base power rating for the flag (0 means it is unused or derived)
* pval_mult: weight of this flag relative to other pval flags
* wpn/bow/ring/amu/light/body/cloak/shield/hat/gloves/boots: power multiplier for this slot
* message: what is printed when the flag is IDd (but see also identify.c and list-slays.h)
*/

For example:

OF(DEX, TRUE, 0, OFID_WIELD, OFT_STAT, 8, 10, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, "")

Base power = 8
Add 10 power when used with other flags.
Doubled on gloves.

OF(SLAY_EVIL, FALSE, 0, OFID_NORMAL, OFT_SLAY, 0, 0, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, "")

Base power = 0 (in fact it's calculated from other values like hit/dam/monster...)
Tripled on anything other than a weapon.

OF(FREE_ACT, FALSE, 0, OFID_NORMAL, OFT_MISC, 8, 0, 1, 1, 2, 2, 2, 2, 2, 2, 2, 5, 2, "Your %s glows.")

Base power = 8
Doubled on anything other than weapon/bow/gloves.
Quintupled on gloves.

OF(RES_CONFU, FALSE, TMD_OPP_CONF, OFID_NORMAL, OFT_PROT, 24, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, "Your %s glows.")

Base power = 24

What you suggest is giving more power to CON on shields or resist confusion on gloves. This is really easily implemented:

OF(CON, TRUE, 0, OFID_WIELD, OFT_STAT, 12, 15, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, "")
becomes
OF(CON, TRUE, 0, OFID_WIELD, OFT_STAT, 12, 15, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, "")
for doubling the power of CON on shields

OF(RES_CONFU, FALSE, TMD_OPP_CONF, OFID_NORMAL, OFT_PROT, 24, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, "Your %s glows.")
becomes
OF(RES_CONFU, FALSE, TMD_OPP_CONF, OFID_NORMAL, OFT_PROT, 24, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, "Your %s glows.")
for doubling the power of resist confusion on gloves

For other ideas (like taking into account crits on weapons), you should make a post on the Angband forums: the devs will respond almost instantly with a TON of nice ideas.

Domiano
Crimson Mold
Posts: 55
Joined: Sat 23.04.2011, 04:10

Re: Item Value

Post by Domiano » Mon 21.01.2013, 16:02

Aah, I missed that. Looking over the power relativities, I have some suggested power changes, which I make comments about below (original unedited, comments to right=suggested changes)

Code: Select all

*
 * File: list-object-flags.h
 * Purpose: Object flags for all objects
 *
 * index: the flag number
 * pval: is it a quantitative flag? FALSE means it's just on/off
 * timed: what is the corresponding TMD_ flag
 * id: when the flag is IDd
 * type: what type of flag is it?
 * power: base power rating for the flag (0 means it is unused or derived)
 * pval_mult: weight of this flag relative to other pval flags
 * wpn/bow/ring/amu/light/body/cloak/shield/hat/gloves/boots: power multiplier for this slot
 * message: what is printed when the flag is IDd (but see also identify.c and list-slays.h)
 */

 
 /*The suggested changes I am making are based on the usefulnes/rarity of non-art items*/
 
/* index  pval  timed  id  type  power	pval_mult  wpn  bow  ring  amu  light  body  cloak  shield  hat  gloves  boots  message */
OF(NONE, FALSE, 0, 0, OFT_NONE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "")
OF(STR, TRUE, 0, OFID_WIELD, OFT_STAT, 9, 13, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, "") /*Double power str, dex, con, int on non-rings. Double power of wis/chr on non-amulets +6*/
OF(INT, TRUE, 0, OFID_WIELD, OFT_STAT, 5, 10, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, "") /*Increase wis, and int power to same lvl as strength*/
OF(WIS, TRUE, 0, OFID_WIELD, OFT_STAT, 5, 10, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, "") /*We can also apply a double power function in the power code file(for con on shield, or int and con combined on cloak exc)*/
OF(DEX, TRUE, 0, OFID_WIELD, OFT_STAT, 8, 10, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, "")
OF(CON, TRUE, 0, OFID_WIELD, OFT_STAT, 12, 15, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, "")
OF(CHR, TRUE, 0, OFID_WIELD, OFT_STAT, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, "")
OF(MANA, TRUE, 0, OFID_WIELD, OFT_PVAL, 5, 10, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, "") /*Doesn't exist in mang*/
OF(STEALTH, TRUE, 0, OFID_WIELD, OFT_PVAL, 8, 12, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, "Your %s glows.") /*Stealth is not currently powerful in mang. May want to decrease this value*/
OF(SEARCH, TRUE, 0, OFID_WIELD, OFT_PVAL, 2, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, "Your %s glows.")
OF(INFRA, TRUE, TMD_SINFRA, OFID_WIELD, OFT_PVAL, 4, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, "")
OF(TUNNEL, TRUE, 0, OFID_WIELD, OFT_PVAL, 3, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, "")
OF(SPEED, TRUE, TMD_FAST, OFID_WIELD, OFT_PVAL, 20, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, "") /*Decrease base power to 5, make multiplier 3 for rings, and 4 for all others*/
OF(BLOWS, TRUE, 0, OFID_WIELD, OFT_PVAL, 0, 50, 1, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, "") 
OF(SHOTS, TRUE, 0, OFID_WIELD, OFT_PVAL, 0, 50, 0, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, "")
OF(MIGHT, TRUE, 0, OFID_WIELD, OFT_PVAL, 0, 30, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, "")
OF(SLAY_ANIMAL, FALSE, 0, OFID_NORMAL, OFT_SLAY, 0, 0, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, "")
OF(SLAY_EVIL, FALSE, 0, OFID_NORMAL, OFT_SLAY, 0, 0, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, "")
OF(SLAY_UNDEAD, FALSE, 0, OFID_NORMAL, OFT_SLAY, 0, 0, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, "")
OF(SLAY_DEMON, FALSE, 0, OFID_NORMAL, OFT_SLAY, 0, 0, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, "")
OF(SLAY_ORC, FALSE, 0, OFID_NORMAL, OFT_SLAY, 0, 0, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, "")
OF(SLAY_TROLL, FALSE, 0, OFID_NORMAL, OFT_SLAY, 0, 0, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, "")
OF(SLAY_GIANT, FALSE, 0, OFID_NORMAL, OFT_SLAY, 0, 0, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, "")
OF(SLAY_DRAGON, FALSE, 0, OFID_NORMAL, OFT_SLAY, 0, 0, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, "")
OF(KILL_DRAGON, FALSE, 0, OFID_NORMAL, OFT_KILL, 0, 0, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, "")
OF(KILL_DEMON, FALSE, 0, OFID_NORMAL, OFT_KILL, 0, 0, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, "")
OF(KILL_UNDEAD, FALSE, 0, OFID_NORMAL, OFT_KILL, 0, 0, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, "")
OF(BRAND_POIS, FALSE, 0, OFID_WIELD, OFT_BRAND, 0, 0, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, "")
OF(BRAND_ACID, FALSE, 0, OFID_WIELD, OFT_BRAND, 0, 0, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, "")
OF(BRAND_ELEC, FALSE, 0, OFID_WIELD, OFT_BRAND, 0, 0, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, "")
OF(BRAND_FIRE, FALSE, 0, OFID_WIELD, OFT_BRAND, 0, 0, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, "")
OF(BRAND_COLD, FALSE, 0, OFID_WIELD, OFT_BRAND, 0, 0, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, "")
OF(SUST_STR, FALSE, 0, OFID_NORMAL, OFT_SUST, 9, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, "Your %s glows.") /*Sustain int/wis value should be increased at least to dex lvls*/
OF(SUST_INT, FALSE, 0, OFID_NORMAL, OFT_SUST, 4, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, "Your %s glows.") /*Maybe not though, since priests get resoration, and magi staffs restore int*/
OF(SUST_WIS, FALSE, 0, OFID_NORMAL, OFT_SUST, 4, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, "Your %s glows.")
OF(SUST_DEX, FALSE, 0, OFID_NORMAL, OFT_SUST, 7, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, "Your %s glows.")
OF(SUST_CON, FALSE, 0, OFID_NORMAL, OFT_SUST, 8, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, "Your %s glows.")
OF(SUST_CHR, FALSE, 0, OFID_NORMAL, OFT_SUST, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, "Your %s glows.")
OF(VULN_ACID, FALSE, 0, OFID_NORMAL, OFT_VULN, -6, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, "Your %s glows.")
OF(VULN_ELEC, FALSE, 0, OFID_NORMAL, OFT_VULN, -6, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, "Your %s glows.")
OF(VULN_FIRE, FALSE, 0, OFID_NORMAL, OFT_VULN, -6, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, "Your %s glows.")
OF(VULN_COLD, FALSE, 0, OFID_NORMAL, OFT_VULN, -6, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, "Your %s glows.")
OF(IM_ACID, FALSE, 0, OFID_NORMAL, OFT_IMM, 38, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, "Your %s glows.")
OF(IM_ELEC, FALSE, 0, OFID_NORMAL, OFT_IMM, 35, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, "Your %s glows.")
OF(IM_FIRE, FALSE, 0, OFID_NORMAL, OFT_IMM, 40, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, "Your %s glows.")
OF(IM_COLD, FALSE, 0, OFID_NORMAL, OFT_IMM, 37, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, "Your %s glows.")
OF(RES_ACID, FALSE, TMD_OPP_ACID, OFID_NORMAL, OFT_LRES, 5, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, "Your %s glows.") /*res acid should be worth the same as  the others.*/
OF(RES_ELEC, FALSE, TMD_OPP_ELEC, OFID_NORMAL, OFT_LRES, 6, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, "Your %s glows.")
OF(RES_FIRE, FALSE, TMD_OPP_FIRE, OFID_NORMAL, OFT_LRES, 6, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, "Your %s glows.")
OF(RES_COLD, FALSE, TMD_OPP_COLD, OFID_NORMAL, OFT_LRES, 6, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, "Your %s glows.")
OF(RES_POIS, FALSE, TMD_OPP_POIS, OFID_NORMAL, OFT_HRES, 28, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, "Your %s glows.")/*May want to decrease relative power on ring/body armor because of better options*/
OF(RES_FEAR, FALSE, TMD_BOLD, OFID_NORMAL, OFT_PROT, 6, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, "Your %s glows.")/*Decrease the relative power of this on body armor, because better options*/
OF(RES_LIGHT, FALSE, 0, OFID_NORMAL, OFT_HRES, 6, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, "Your %s glows.")/*may want to increase  power of res light a little, because it prevents blind from destruct*/
OF(RES_DARK, FALSE, 0, OFID_NORMAL, OFT_HRES, 16, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, "Your %s glows.")
OF(RES_BLIND, FALSE, 0, OFID_NORMAL, OFT_PROT, 16, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, "Your %s glows.")/*Increase the power of this to between 20*/
OF(RES_CONFU, FALSE, TMD_OPP_CONF, OFID_NORMAL, OFT_PROT, 24, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, "Your %s glows.")/*May want to decrease relative power on body armor, because better options*/
OF(RES_SOUND, FALSE, 0, OFID_NORMAL, OFT_HRES, 14, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, "Your %s glows.")
OF(RES_SHARD, FALSE, 0, OFID_NORMAL, OFT_HRES, 8, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, "Your %s glows.")
OF(RES_NEXUS, FALSE, 0, OFID_NORMAL, OFT_HRES, 15, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, "Your %s glows.")/*decrease the relative power of this on non-amulets, because trickeries are such a common choice*/
OF(RES_NETHR, FALSE, 0, OFID_NORMAL, OFT_HRES, 20, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, "Your %s glows.")/*Increase the power of this to 40, because it can only be a hidden power and is rare*/
OF(RES_CHAOS, FALSE, 0, OFID_NORMAL, OFT_HRES, 20, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, "Your %s glows.")
OF(RES_DISEN, FALSE, 0, OFID_NORMAL, OFT_HRES, 20, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, "Your %s glows.")
OF(RES_TIME, FALSE, 0, OFID_NORMAL, OFT_XRES, 20, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, "Your %s glows.")/*These two resists to not exist in mang*/
OF(RES_MANA, FALSE, 0, OFID_NORMAL, OFT_XRES, 20, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, "Your %s glows.")
OF(SLOW_DIGEST, FALSE, 0, OFID_TIMED, OFT_MISC, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, "You feel your %s slow your metabolism.")
OF(FEATHER, FALSE, 0, OFID_NORMAL, OFT_MISC, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, "Your %s slows your fall.")
OF(LIGHT, TRUE, 0, OFID_WIELD, OFT_PVAL, 3, 6, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, "")
OF(REGEN, FALSE, 0, OFID_TIMED, OFT_MISC, 5, 0, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, "You feel your %s speed up your recovery.")/*make bow relativity a two, glove relativity a 4*/
OF(ESP_POWER, FALSE, 0, 0, OFT_MISC, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "") /*power for this is handled elsewhere I guess... But I'd like it handled here so we can give it different power in different places (Like bows, and cloaks)*/
OF(SEE_INVIS, FALSE, TMD_SINVIS, OFID_WIELD, OFT_MISC, 6, 0, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, "")
OF(FREE_ACT, FALSE, 0, OFID_NORMAL, OFT_MISC, 8, 0, 1, 1, 2, 2, 2, 2, 2, 2, 2, 5, 2, "Your %s glows.") /*decrease power to 5 (so FA gloves are not TOO EXPENSIVE), give bows a relativity of 2*/
OF(HOLD_LIFE, FALSE, 0, OFID_NORMAL, OFT_MISC, 5, 0, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, "Your %s glows.") /*Make relativity a 4 on bows*/
OF(NO_FUEL, FALSE, 0, OFID_WIELD, OFT_LIGHT, 5, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, "")
OF(KNOWLEDGE, FALSE, 0, OFID_WIELD, OFT_KNOW, 60, 0, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, "")/*No idea what this is*/
OF(ANTI_MAGIC, FALSE, 0, OFID_TIMED, OFT_MELEE, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "Your %s provides an antimagic shield.")/*The following 4 things don't exist in mang*/
OF(IMPAIR_HP, FALSE, 0, OFID_TIMED, OFT_BAD, -9, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, "You feel your %s slow your recovery.")
OF(IMPAIR_MANA, FALSE, 0, OFID_TIMED, OFT_BAD, -9, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, "You feel your %s slow your mana recovery.")
OF(AFRAID, FALSE, TMD_AFRAID, OFID_WIELD, OFT_BAD, -20, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, "")
OF(IMPACT, FALSE, 0, OFID_NORMAL, OFT_MELEE, 10, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "Your %s causes an earthquake!")
OF(TELEPORT, FALSE, 0, OFID_NORMAL, OFT_BAD, -20, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, "Your %s teleports you.")
OF(AGGRAVATE, FALSE, 0, OFID_TIMED, OFT_BAD, -20, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, "You feel your %s aggravate things around you.")
OF(DRAIN_EXP, FALSE, 0, OFID_TIMED, OFT_BAD, -5, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, "You feel your %s drain your life.")
OF(IGNORE_ACID, FALSE, 0, OFID_NORMAL, OFT_IGNORE, 3, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, "")/*give this a relativity of 4 or so on armor*/
OF(IGNORE_ELEC, FALSE, 0, OFID_NORMAL, OFT_IGNORE, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, "")
OF(IGNORE_FIRE, FALSE, 0, OFID_NORMAL, OFT_IGNORE, 3, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, "")
OF(IGNORE_COLD, FALSE, 0, OFID_NORMAL, OFT_IGNORE, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, "")
OF(RES_STUN, FALSE, 0, OFID_NORMAL, OFT_PROT, 12, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, "Your %s glows.") /*does not exist*/
OF(BLESSED, FALSE, 0, OFID_WIELD, OFT_MELEE, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "")
OF(INSTA_ART, FALSE, 0, OFID_NONE, OFT_INT, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "")/*does not exist*/
OF(SPECIAL_ART, FALSE, 0, OFID_NONE, OFT_INT, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "")/*does not exist*/
OF(EASY_KNOW, FALSE, 0, OFID_NONE, OFT_INT, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "")/*does not exist*/
OF(TWO_HANDED, FALSE, 0, OFID_NONE, OFT_INT, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "")/*does not exist*/
OF(LIGHT_CURSE, FALSE, 0, OFID_WIELD, OFT_CURSE, -5, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, "")
OF(HEAVY_CURSE, FALSE, 0, OFID_WIELD, OFT_CURSE, -15, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, "")
OF(PERMA_CURSE, FALSE, 0, OFID_WIELD, OFT_CURSE, -25, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, "")
OF(ESP_ANIMAL, FALSE, 0, OFID_WIELD, OFT_ESP, 10, 0, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, "")/*PW specific*/
OF(ESP_EVIL, FALSE, 0, OFID_WIELD, OFT_ESP, 35, 0, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, "")/*PW specific*/
OF(ESP_UNDEAD, FALSE, 0, OFID_WIELD, OFT_ESP, 14, 0, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, "")/*PW specific*/
OF(ESP_DEMON, FALSE, 0, OFID_WIELD, OFT_ESP, 14, 0, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, "")/*PW specific*/
OF(ESP_ORC, FALSE, 0, OFID_WIELD, OFT_ESP, 3, 0, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, "")/*PW specific*/
OF(ESP_TROLL, FALSE, 0, OFID_WIELD, OFT_ESP, 7, 0, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, "")/*PW specific*/
OF(ESP_GIANT, FALSE, 0, OFID_WIELD, OFT_ESP, 10, 0, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, "")/*PW specific*/
OF(ESP_DRAGON, FALSE, 0, OFID_WIELD, OFT_ESP, 14, 0, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, "")/*PW specific*/
OF(ESP_ALL, FALSE, TMD_ESP, OFID_WIELD, OFT_ESP, 70, 0, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, "")/*Oh here is esp. Give it tripple power in cloaks, and 6x power on bows.*/
OF(ESP_RADIUS, FALSE, 0, OFID_WIELD, OFT_ESP, 35, 0, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, "")/*PW specific*/
OF(HATES_ACID, FALSE, 0, OFID_NONE, OFT_HATES, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "")/*PW specific*/
OF(HATES_ELEC, FALSE, 0, OFID_NONE, OFT_HATES, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "")/*PW specific*/
OF(HATES_FIRE, FALSE, 0, OFID_NONE, OFT_HATES, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "")/*PW specific*/
OF(HATES_COLD, FALSE, 0, OFID_NONE, OFT_HATES, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "")/*PW specific*/
OF(SPELLS_OK, FALSE, 0, OFID_NONE, OFT_INT, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "")/*PW specific*/
OF(SHOW_DICE, FALSE, 0, OFID_NONE, OFT_INT, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "")/*PW specific?*/
OF(SHOW_MULT, FALSE, 0, OFID_NONE, OFT_INT, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "")/*PW specific?*/
OF(BRAND_ICKY, FALSE, 0, OFID_WIELD, OFT_BRAND, 0, 0, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, "")/*PW specific*/
OF(BRAND_FIZZ, FALSE, 0, OFID_WIELD, OFT_BRAND, 0, 0, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, "")/*PW specific*/
OF(BRAND_BUZZ, FALSE, 0, OFID_WIELD, OFT_BRAND, 0, 0, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, "")/*PW specific*/
OF(BRAND_WARM, FALSE, 0, OFID_WIELD, OFT_BRAND, 0, 0, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, "")/*PW specific*/
OF(BRAND_COOL, FALSE, 0, OFID_WIELD, OFT_BRAND, 0, 0, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, "")/*PW specific*/
OF(POLY_RACE, TRUE, 0, OFID_WIELD, OFT_PVAL, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, "")/*PW specific*/

Also, I asked the Angband dev forum why they didn't include crits. Turns out, they just hadn't gotten to it yet. I recommend we Include them in the calculation.

Domiano
Crimson Mold
Posts: 55
Joined: Sat 23.04.2011, 04:10

Re: Item Value

Post by Domiano » Sun 03.03.2013, 19:09

Also, to slightly expand, the file that'd need to be edited in mang is object2.c, and the functions would be the 3 object_value functions.
For reference, you could check out obj-util.c in PW's code. he has 2 object_value functions.

Post Reply