New Content - Implemented Pandamonium Stats

Darzil

Developer
Spaded here: http://kolspading.com/forums/viewtopic.php?f=2&t=225

Monster Stats :

The Laugh Floor
BL Imp - ML 65, HP 65 (Dwarf outfit shows 56-62 Def, 62-68 Att, 62-68 HP)
CH Imp - ML 62, HP 61 (Dwarf outfit shows 54-59 Def, 59-65 Att, 58-64 HP)
Pr Imp - ML 60, HP 60 (Dwarf outfit shows 52-57 Def, 57-63 Att, 57-63 HP)

Infernal Rackets Backstage
Inkubus - ML 58, HP 58 (Dwarf outfit shows 51-54 Def, 56-60 Att, 56-60 HP)
Serialbus - ML 60, HP 60 (Dwarf outfit shows 52-57 Def, 57-63 Att, 57-63 HP)
Suckubus - ML 55, HP 55 (Dwarf outfit shows 48-52 Def, 53-57 Att, 53-57 HP)

Drop rates seem to be :

BL Imp - 20% Imp Air
CH Imp - 25% Imp Air
Pr Imp - 15% Imp Air

Serialbus - 25% Bus Pass
Suckubus - 20% Bus Pass
Inkubus - 15% Bus Pass

Pandamonium Slums looks the same as earlier Friar's monsters, as you'd expect.
 

Theraze

Active member
Pandamonium monster update, as well as Cobb's Knob spaded, plus some extra monsters from StDoodle's incomplete monsters script.
 

Attachments

  • DarzilPandamonium.patch
    22.8 KB · Views: 29

Theraze

Active member
Scrap that. -_- Made up this alias that should present the proper values. From observed data, it turns the variance as well as the defensive drop into ints before it modifies the original value. That means that the value should be calculated as a range of to_int(original)-to_int(original/10)-to_int(original/20) up to to_int(original)-to_int(original/10)+to_int(original/20). This alias should calculate that...
alias defrange => ashq int mover = to_int("%%"); int variance = mover / 20; int low = mover - variance; low = low - to_int(low / 10); int high = mover + variance; high = high - to_int(high / 10); print("For a defense of %%the visible range should be " + low + "-" + high +" with a midrange of " + (((high - low) / 2) + low) + ".");
which presents data like this:
> defrange 65

For a defense of 65 the visible range should be 56-62 with a midrange of 59.

Anyways, my prior rounding ended up rounding... somehow else, that generally ended up with defense values +1 above reality. I'll work on fixing them up and resubmit. :(

Edit: Yeah, refined the alias, now it works with both CK and P. -_- I'd worked out the maths while driving a while ago, forgot it all, and then needed to repeatedly reread Darzil's comments to make it all come back. The above alias also now gives the midpoint, which is useful for trying to figure out what the data should be pre-wiki-reduction.

Please avoid the above patch. It makes my brain cry. This one makes it happier.
 

Attachments

  • DarzilPandamonium.patch
    19.4 KB · Views: 28
Last edited:

Theraze

Active member
Good point... though not exactly right. Here's one that turns the midrange into a float during calculation. This alias:
alias defrange => ashq int mover = to_int("%%"); int variance = mover / 20; int low = mover - variance; low = low - to_int(low / 10); int high = mover + variance; high = high - to_int(high / 10); print("For a defense of %%the visible range should be " + low + "-" + high +" with a midrange of " + ((to_float(high - low) / 2) + low) + ".");
gives these results:
> defrange 20

For a defense of 20 the visible range should be 18-19 with a midrange of 18.5.
As the actual midrange of the ones where it traverses a /20 edge are the only ones like this, it would be noticed at (exactly) 20, 39-41, 58-62, 77-83, etc. Basically, when the number plus or minus (number/20 - 1) is the value, the midrange will need to have been turned into a float to properly give an accurate midrange. :)

Though if you're talking about what the wiki shows? Yes, you're exactly right. They do a quick midrange int.
 
Last edited:

Darzil

Developer
It's more that for a defence of 20, you'll get 19, 20 or 21, which is then rounded to 18, 19 and 19. As it's a triangular distribution, the average will be roughly (18 + 19*2 + 19) = 18.75.

In practice, it seems to me that getting below an int is getting more 'accurate' than you really need to, and due to the above, no less accurate.
 

Theraze

Active member
Well, actually it ends up closer to an average of 18.09091 since you have 10 18s and a single 19 forming the average. The level before the reduction, you had 1 19, 1 21, and 9 20s... Given that anything from 95-105% are possible, that gives 11 major percentages, not counting smaller decimal percents. But I thought I should probably avoid that level of precision/annoyance. :)

On a... positive(?) note, I currently have an Excel sheet that will calculate the proper average based on the 95-105% variance, working with number - int(number * .05) through number + int(number * .05), then doing modified number - int(modified number / 10), then average (dropped 11 numbers in that range). :D Or to say it differently, column A is the number, B calculates the 11 variances, C drops the 10%, and D gives the average.

But yeah, levels of precision. The alias above gives me something that at least gives me something to guess at why the wiki has the data it has. Some wiki data, there's no understanding. Others... eh. :)

Edit: Made myself this new alias to give myself disturbing levels of precision using mafia itself, so I can delete that spreadsheet...
alias defrange => ashq int mover = to_int("%%"); int variance = mover / 20; int low = mover - variance; low = low - to_int(low / 10); int high = mover + variance; high = high - to_int(high / 10); float average = 0; int tempvar; for avetemp from 95 to 105 {tempvar = mover + to_int(to_float(avetemp - 100) / 100 * mover); tempvar = tempvar - to_int(tempvar / 10); average = average + tempvar;} average = average / 11; print("For a defense of %%the visible range should be " + low + "-" + high +" with a midrange of " + ((to_float(high - low) / 2) + low) + " and an actual average of " + average);
presents like this:
> defrange 20

For a defense of 20 the visible range should be 18-19 with a midrange of 18.5 and an actual average of 18.09091

Edit2: Oh, that's the problem... in your 19-21 example above, it would actually round to 18, 18*2, 19. Because 10% of 20 is 2, not 1. The quick average would be 18.25, which makes more sense given the 18.09091 average.
 
Last edited:

Theraze

Active member
Anyways, Pandamonium updates, plus 34 of StDoodle's incomplete monsters (awesome relay script, by the way) are now spaded. The only ones that I feel conflicted on are the nemesis monsters, which have the same name for multiple fights, and mafia don't have different stats between their versions, so they won't be accurate on the weaker versions... I've given them the nemesis cave stats, as that's the location listed currently. HP 220, Def/Atk 170 on most of them. Also, as we can now use scaling stats, DB Demon nemesis is MOX-4 for Atk, since it's MOX with LEW equipped, which is 4 moxie less than with the ULEW... Someone else's butt is [1000] for stats currently, as that's the 'top' for the spading possible.

As always, if there are any problems, let me know and I'll work on them. :)
 

Attachments

  • DarzilPandamonium.patch
    28.4 KB · Views: 33

Bale

Minion
The only ones that I feel conflicted on are the nemesis monsters, which have the same name for multiple fights, and mafia don't have different stats between their versions, so they won't be accurate on the weaker versions...

Considering that Ed is differentiated, the Nemesis fights should be differentiated as well... If you've got stats for the different forms, then it should be reported as a bug that mafia cannot tell them apart.
 
Top