Search Results
Searched for posts by Ischaldirh in all forums

Showing results 381 - 390 out of 903 total
Modify your search
Posted by Ischaldirh, Oct 17, 2011 at 3:14 pm
And with that I'll be claiming three rings: Ring of Searching, Ring of Polymorph, and Ring of Fire Resistance.
Posted by Ischaldirh, Oct 17, 2011 at 2:49 pm
Ischaldirh wrote
sooner or later I'll get around to going through and making sure I've credited everything and scored everyone correctly.

Turned out to be later

I fixed things. All scores should be correct now. I removed all of Kyselina's points, because his images are gone and I have no way to verify them. The rules got modified slightly; I recommend re-reading them (especially since it's been three and a half years since anyone looked at this thread).

I will also begin participating in this, if I find anything that isn't already taken!
Posted by Ischaldirh, Oct 17, 2011 at 2:44 am
So I tinkered around some more. The next part of the equation, according to Squash, is

if(RAND() % int(100 + WeaponToHitValue / Block Value / (1 << BlocksSinceLastTurn) * (100 + Success)) < 100)
then (block)

Which means that ideally for the defender, BlockValue is drastically larger than WeaponToHitValue, there have been no blocks since his last turn, and Success is 0. This will lead to, again ideally, a random number between 0 and (at least) 100; the closer the max number is to 100, the more likely the defender blocks.

I wasn't sure what WeaponToHitValue was so I just assumed it was the THV for the attacker. For the sake of not doing more math (and at Chao's suggestion) I assumed Guss was being attacked by Guss, which leads to a 50% chance for a successful block with each arm (so two 50% chances = 75% block chance).

HOOoooooly shit, now this is bizzare: I just got a bit of help from my coding friend and discovered something. I was unsure about " (1 << BlocksSinceLastTurn) " and how to handle it. Turns out "<<" is a bitshift operator in C. (If you don't understand that, look it up, it's complicated) Long story short, the first time you block, this value is 1. The second time, it becomes 2. The third time it's 4, then 8, 16, 32, and so on. I assume the intention is that it becomes exponentially more difficult to block multiple attacks in a turn. However, the surrounding code (as parsed by Squash, anyways) would imply that this number actually INCREASES the chance to block as it grows.

Double crap, I just realized I used the wrong number in WeaponToHitValue (I used Guss's block value instead of his THV). With his actual THV it becomes a 17% chance to block (but he still gets two chances at it). This seems... wrong.

I hate to ask you guys to go code-diving for me again... but can somebody dig up the code responsible for this? And ideally for determining some of these variables? I should be in bed already truth be told, and I certainly won't have time tomorrow...

EDIT: Also thought I'd mention, IVANcode is absolutely riddled with those bitshift operators. I remember when I was compiling the code in college, C++ compilers couldn't handle the C code because C++ uses a different operator for bitshifts. I didn't know what they were back then, I just remember seeing a royal goddamn shit-fuck-ton of the things.
Posted by Ischaldirh, Oct 17, 2011 at 1:37 am
Thanks warheck! This raises a couple questions...

Warheck wrote
Next I calculate the strength value of the Short Sword to be (90 * 200)/2000 = 9

How did you calculate this? I see Short Sword's StrengthModifier value (90) and Mithril's Strength value (200), but how did you find the formula (and the "/ 2000" part)?

Squashmonster wrote
If you have no weapon or our weapon's hit strength is 0 or less, then 0. If you're still here, pretend your weapon's hit strength was at least 10.

Having not seen the actual code myself, I did not realize this was a Min() function. Thus, I assumed it was either 0, or Max(HitStrength, 10).

Also, to answer your question, the class skill and specific skill bonuses are calculated (according to Squash) via: 1000 + (50 * SkillLevel). Guss has skill 8/9 with each sword.

Thanks, Warheck. I'm going to take this information and bang my head against the problem a bit more...
Posted by Ischaldirh, Oct 15, 2011 at 4:32 am
This is also the contents of the txt document I was working out of. Might save you some time...

Weapon weight = 500    /* mithril short sword */

1 astr requirement    /* actually a small decimal... game seems to round up however */

Hit strength = 19

1400 class skill bonus
1450 specific skill bonus

weapon THVBonus = 1    /* they're +2 */

move ease = 100    /* I assume he's unburdened */

/* This is where things got weird... */

to-hit-value
2 * 10^(-11) * 19 * 1400 * 1450 * 100 * 10000 / (stuff)
77140000000000 * 10^(-11) / (stuff)
771.4 / (stuff)
Stuff: 1000 + 500 + 1
771.4 / 1501
Base = 0.54097268487674883411059293804131
ThisToHit = dex * sqrt(2.5*per)
20 * sqrt(2.5*30)
ThisToHit = 173.20508075688772935274463415058
1 + (500 * 500) / (1000 + 500 / 2)
1 + 250000 / 250000           /* Actually my second pass at this. For this try I made an assumption about squash's work, assuming a + in the previous line was actually a *... */)
2
ThisToHit = 86.60254037844386467637231707525
To-Hit-Value = 43.301270189221932338186158537625

Block value = 9.0932667397366057910190932929013

Block Capability = 19 * 90 * 1400 * 1450 / 10000000
            =347.13

Block Strength = 347  /* If this were true, the next part would reveal that you would need to deal some 350 damage in order to pass a successful block. I don't feel this is accurate. */
Block Value = 9     /* Also was unable to do anything further with this number as the next lines involve an attacker, and I was too tired to work one up. */

It may actually be easier to crunch something else; say, a fresh character with some default shield. Either way I'm going to bed, fuck these numbers...
Posted by Ischaldirh, Oct 15, 2011 at 4:21 am
I was wondering with Chao about blocking capabilities of various things, and he mentioned Guugzamesh being a blocking fiend with his two short swords. So I dug up some stuff from Greatboards and the wiki and set to work trying to crunch numbers and find out some relevant and understandable information.

I screwed up somewhere along the line.

I've found that the IVANdevs were fond of creating extremely large numbers and then shaving off a lot of 0's (there's more than one instance of "divide by ten million" and the like). So I was very surprised when I started running into extremely small and not-neat decimal numbers (like, for example, 0.46616526154899332860822020122614... that's what I came up with as a final To-Hit Value for each of Guugzamesh's swords). I decided I must have been doing something wrong. I believe it had to do with weight values; I was using the in-game displayed weights, but I strongly doubt that the game mechanics themselves use those numbers. They're probably much, much larger. (item size * material density? I have a thread about this somewhere...)

So I thought I'd make a thread about it, and allow someone else to take a crack at it. The following pages will be useful:

Squashmonster's parsing of combat-related code
Guugzamesh's stats -- Keep in mind, as far as I understand, displayed stats are rounded averages -- so if it displays 20 AStr, that doesn't mean two 10 AStr arms, but two 20 AStr arms. This is consistent with every method I can find to check it.

You'll also need the materials list. Also maybe fire up the game... And for reference, when Squash refers to "Weight" he is in fact referring to ingame displayed weight. Checked via reverse engineering with his AStr requirement formula; ran it both ways (solved for both the AStr with known weight, and for weight with known AStr) and came out correct both times.

I suspect Squash made some mistakes, however. A code dive may be in order...
Posted by Ischaldirh, Oct 12, 2011 at 4:42 pm
I wish I could find out just how much faster say, an octiron flaming sword is than an adamantine two-handed scimitar...
Posted by Ischaldirh, Oct 12, 2011 at 2:24 am
As I recall however enchantments boost damage by a flat amount, rather than a percentage; thus a +10 twohanded sword would get just as much add'l damage as a +10 long sword. And also remember, that accuracy and durability are on a 20-point scale; once you reach the upper limits of that scale (unbelievably accurate etc) you can't go higher.
Posted by Ischaldirh, Oct 11, 2011 at 8:58 pm
Oh my I forgot about scimitars. I also realized Diamond should be on the list. I'll check this and then edit the initial post.

EDIT: Added. They both (scimitars and diamond) seem like excellent options. The scimitars are only marginally more difficult to wield than two-handed swords. Unfortunately, there's no "easy" way to get a valpurium weapon, other than two-handed swords. However a diamond scimitar is comparable to the valpurium two-hander, and for a lower Int requirement.

EDIT2: I also ignored accuracy for the purposes of these comparisons, as low accuracy can be offset with weapon enchantments.
Posted by Ischaldirh, Oct 10, 2011 at 3:40 am
chaostrom wrote
Isn't weight a factor also?

Yes, which is why the low-density material weapons had low damage, and adamant had really high damage. It also affects attack speed, I believe.

Edit: I found the relevant code for the flaming sword (or rather, the flaming effect) on the old forums:

truth flamingsword::HitEffect(character* Enemy, character* Hitter, v2 HitPos, int BodyPartIndex, int Direction, truth BlockedByArmour)
{
  truth BaseSuccess = meleeweapon::HitEffect(Enemy, Hitter, HitPos, BodyPartIndex, Direction, BlockedByArmour);

  if(Enemy->IsEnabled() && RAND() & 1)
  {
    if(Enemy->IsPlayer() || Hitter->IsPlayer() || Enemy->CanBeSeenByPlayer() || Hitter->CanBeSeenByPlayer())
      ADD_MESSAGE("%s sword burns %s.", Hitter->CHAR_POSSESSIVE_PRONOUN, Enemy->CHAR_DESCRIPTION(DEFINITE));

    return Enemy->ReceiveBodyPartDamage(Hitter, 3 + (RAND() & 3), FIRE, BodyPartIndex, Direction) || BaseSuccess;
  }
  else
    return BaseSuccess;
}

This appears to indicate (if I'm reading my C right) that the fire effect deals "3 + (Rand() & 3)" damage, or 3-5 damage, when triggered. That's actually quite a bit -- assuming 50% trigger chance, it's enough to beat out the bastard sword at all levels.