Sign in to follow this  
Sindusk

[WU] Datamining

Recommended Posts

On 6/18/2016 at 5:37 AM, Block said:

Interesting stuff, thanks. Would you be willing to share the Excel files from the screenshots? 

I currently host everything on Google Sheets. I might be willing to share, but there's data in there I'd like to keep to myself for now. I may be able to work something out in the near future to open the sheets up.

12 hours ago, Worksock said:

wasn't expecting shield ql to matter so little for blocking

how much does rarity affect these results?

what about large shield vs small shield, how big is the block difference?

 

also I remember seeing somewhere in the code when I was skimming through that armor rarity affects web/aosp, know anything about it?

Yeah the shield QL seems to do nearly nothing, which is kind of disappointing. I can't help but feel that my simulator may have a bug or something that doesn't account for QL... but the results do seem to rise a little with higher QL... so maybe it is working. I'm not sure, but I'll double check to make sure that the shield QL is being passed to all the right places, and if it is indeed a bug, I will fix it and re-post my results.

 

From what I read, rarity has no effect on shields at all. Aside from making you look pretty and shiny, I guess. I'll run a deep simulation (increase the sample size to 10x of the normal) between a fantastic and normal shield to confirm my results, then post.

 

Large shield vs. Small shield is a good question. I didn't even consider it since everyone I ever saw only used large metal shield (aside from the Scale of Libila, of course). I'll run some tests and get back to you on the results later today.

5 hours ago, dingov said:

its nice you took all the time to make this but im skeptic about the libila 25% increased damage. have you tested this?

I've not actually tested it through simulation, no, but I can tell you that from reading the code I'm 90% sure it works as advertised. I will run simulations later to ensure that my theory is correct.

3 hours ago, joedobo said:

nice! I"m looking forward to reading one of your mods. Did you publish one? I don't remember right off-hand.

 

Something I ran into recently is that players can throw hot liquid at opponents and do damage. How hot the liquid is and its weight affect damage. It's in Archery.class thrownItem(). I didn't follow this all the way through a combat calculation as I was just interested in what was going on with "getTemperature()".

 

That forge burn time sheet is interesting. I been working on a mod to make it so folks can put more say 20 peats in a forge and get 20 hours of burn time (assuming 1 peat normally gives an hour). Although, that short for Item.class temperature field is an obstacle to this goal....eh, I'll figure something out.

I never published a mod. I wrote a few client mods but I keep them to myself.

 

I saw the hot liquid thing in archery and must say I was intrigued. I heard stories about people throwing cauldrons of hot water at players and instantly killing them a while ago. I'm still writing my archery simulator so perhaps I will be able to simulate how it works and figure out what's going on with it.

2 hours ago, Aniel said:

Hi i have a question about shields, what's the difference between a metal and a wooden shield

Good question. Similar to the Large shield vs. Small shield, wooden shields didn't cross my mind. I'll simulate some later today and post my results.

Edited by Sindusk

Share this post


Link to post
Share on other sites
On 6/16/2016 at 0:49 PM, Sindusk said:

This cannot be answered by anyone except a developer. However, if I were to hazard a guess, I'd say that the only thing really significantly difference is skill gain calculations. It was necessary due to the action timer difference. The rest of the differences are server-specific settings and mods.

 

@Sindusk

There are two thoughts on this.  First, most who have intelligently commented on the subject believe the logic lies in the "old" versions of certain methods, though when the blocks are reintroduce there are skills that still do not seem to tick right, no one has yet offered real proof that the logic is still in the WU code. The alternate thought is that the actual skill gain for WO was removed and/or couple key formula were slightly modified to mask it so that the skill gain could not be gamed.  In the first case a simple replace seems to disprove it is "the" logic alone, second case is more difficult to prove. In addition, there have been a number of other minor things that suggest a divergence in the logic in some small areas as well as some rumors that also imply a divergence such as one of the more recent rumors is supposedly that people have shattered Seryll recently with spells other than NoLocate.

 

Also, i ask if you would mind incorporating some of the details from the old thread; some of us pulled data from WU and posted to help others, but the OP did not like the concept and considered it off-topic.  Some very useful details in there that of course will never be saved anywhere else like the Wiki because they came from WU code, and perhaps you could expand a few of the details.

 

 

 

Share this post


Link to post
Share on other sites
1 hour ago, ClericGunem said:

 

@Sindusk

There are two thoughts on this.  First, most who have intelligently commented on the subject believe the logic lies in the "old" versions of certain methods, though when the blocks are reintroduce there are skills that still do not seem to tick right, no one has yet offered real proof that the logic is still in the WU code. The alternate thought is that the actual skill gain for WO was removed and/or couple key formula were slightly modified to mask it so that the skill gain could not be gamed.  In the first case a simple replace seems to disprove it is "the" logic alone, second case is more difficult to prove. In addition, there have been a number of other minor things that suggest a divergence in the logic in some small areas as well as some rumors that also imply a divergence such as one of the more recent rumors is supposedly that people have shattered Seryll recently with spells other than NoLocate.

 

Also, i ask if you would mind incorporating some of the details from the old thread; some of us pulled data from WU and posted to help others, but the OP did not like the concept and considered it off-topic.  Some very useful details in there that of course will never be saved anywhere else like the Wiki because they came from WU code, and perhaps you could expand a few of the details.

Good comments. I'll try to answer as much as I can here.

 

I have not yet started to investigate or simulate skillgain. I have simulated the knowledge and skill check portion of the skill, but ignored the skillgain portion for now as I continue to focus on unraveling combat. However, upon quick inspection, there is indeed two methods of skill gain side by side in the code.

Spoiler

    private final void doSkillGainNew(double check, double power, double learnMod, float times, double skillDivider) {
        double bonus = 1.0;
        double diff = Math.abs(check - this.knowledge);
        short sType = SkillSystem.getTypeFor(this.number);
        boolean awardBonus = true;
        if (sType == 1 || sType == 0) {
            awardBonus = false;
        }
        if (diff <= 15.0 && awardBonus) {
            bonus = 1.0 + 0.10000000149011612 * (diff / 15.0);
        }
        if (power < 0.0) {
            if (this.knowledge < 20.0) {
                this.alterSkill((100.0 - this.knowledge) / (this.getDifficulty(this.parent.priest) * this.knowledge * this.knowledge) * learnMod * bonus, false, times, true, skillDivider);
            }
        } else {
            this.alterSkill((100.0 - this.knowledge) / (this.getDifficulty(this.parent.priest) * this.knowledge * this.knowledge) * learnMod * bonus, false, times, true, skillDivider);
        }
    }

    private final void doSkillGainOld(double power, double learnMod, float times) {
        if (power >= 0.0) {
            if (this.knowledge < 20.0) {
                this.alterSkill((100.0 - this.knowledge) / (this.getDifficulty(this.parent.priest) * this.knowledge * this.knowledge) * learnMod, false, times);
            } else if (power > 0.0 && power < 40.0) {
                this.alterSkill((100.0 - this.knowledge) / (this.getDifficulty(this.parent.priest) * this.knowledge * this.knowledge) * learnMod, false, times);
            } else if (this.number == 10055 || this.number == 10053 || this.number == 10054) {
                Creature cret = null;
                try {
                    cret = Server.getInstance().getCreature(this.parent.getId());
                    if (cret.loggerCreature1 > 0) {
                        logger.log(Level.INFO, cret.getName() + " POWER=" + power);
                    }
                }
                catch (NoSuchCreatureException var7_5) {
                }
                catch (NoSuchPlayerException var7_6) {
                    // empty catch block
                }
            }
        }
    }

 

Both have calls to alter skill, so it would be best for me to include that as well.

Spoiler

    protected void alterSkill(double advanceMultiplicator, boolean decay, float times) {
        this.alterSkill(advanceMultiplicator, decay, times, false, 1.0);
    }

    protected void alterSkill(double advanceMultiplicator, boolean decay, float times, boolean useNewSystem, double skillDivider) {
        if (this.parent.hasSkillGain) {
            times = Math.min(SkillSystem.getTickTimeFor(this.getNumber()) > 0 ? 100.0f : 30.0f, times);
            advanceMultiplicator *= (double)(times * Servers.localServer.getSkillGainRate());
            this.lastUsed = System.currentTimeMillis();
            boolean isplayer = false;
            long pid = this.parent.getId();
            if (WurmId.getType(pid) == 0) {
                isplayer = true;
            }
            double oldknowledge = this.knowledge;
            if (decay) {
                if (isplayer) {
                    if (this.knowledge <= 70.0) {
                        return;
                    }
                    double villageMod = 1.0;
                    try {
                        Player player = Players.getInstance().getPlayer(pid);
                        villageMod = player.getVillageSkillModifier();
                    }
                    catch (NoSuchPlayerException nsp) {
                        logger.log(Level.WARNING, "Player with id " + this.id + " is decaying skills while not online?", (Throwable)((Object)nsp));
                    }
                    this.knowledge = Math.max(1.0, this.knowledge + advanceMultiplicator * villageMod);
                } else {
                    this.knowledge = Math.max(1.0, this.knowledge + advanceMultiplicator);
                }
            } else {
                advanceMultiplicator *= skillMod;
                if (this.number == 10086 && Servers.localServer.isChallengeOrEpicServer() && !Server.getInstance().isPS()) {
                    advanceMultiplicator *= 0.5;
                }
                if (isplayer) {
                    try {
                        Player player = Players.getInstance().getPlayer(pid);
                        int currstam = player.getStatus().getStamina();
                        float staminaMod = 1.0f;
                        if (currstam <= 400) {
                            staminaMod = 0.1f;
                        }
                        if (player.getCultist() != null && player.getCultist().levelElevenSkillgain()) {
                            staminaMod *= 1.25f;
                        }
                        if (player.getDeity() != null) {
                            if (player.mustChangeTerritory() && !player.isFighting()) {
                                staminaMod = 0.1f;
                                if (Server.rand.nextInt(100) == 0) {
                                    player.getCommunicator().sendAlertServerMessage("You sense a lack of energy. Rumours have it that " + player.getDeity().name + " wants " + player.getDeity().getHisHerItsString() + " champions to move between kingdoms and seek out the enemy.");
                                }
                            }
                            if (player.getDeity().learner) {
                                if (player.getFaith() > 20.0f && player.getFavor() >= 10.0f) {
                                    staminaMod += 0.1f;
                                }
                            } else if (player.getDeity().warrior && player.getFaith() > 20.0f && player.getFavor() >= 20.0f && this.isFightingSkill()) {
                                staminaMod += 0.25f;
                            }
                        }
                        staminaMod += Math.max(player.getStatus().getNutritionlevel() / 10.0f - 0.05f, 0.0f);
                        if (player.isFighting() && currstam <= 400) {
                            staminaMod = 0.0f;
                        }
                        advanceMultiplicator *= (double)staminaMod;
                        if (player.getEnemyPresense() > Player.minEnemyPresence && !this.ignoresEnemy()) {
                            advanceMultiplicator *= 0.800000011920929;
                        }
                        if (this.knowledge < this.minimum || this.basicPersonal && this.knowledge < 20.0) {
                            advanceMultiplicator *= 3.0;
                        }
                        if (player.hasSleepBonus()) {
                            advanceMultiplicator *= 2.0;
                        }
                        advanceMultiplicator *= (double)(1.0f + (float)this.affinity * 0.1f);
                        if (player.getMovementScheme().samePosCounts > 20) {
                            advanceMultiplicator = 0.0;
                        }
                        if (!player.isPaying() && this.knowledge >= 20.0) {
                            advanceMultiplicator = 0.0;
                            if (!player.isPlayerAssistant() && Server.rand.nextInt(500) == 0) {
                                player.getCommunicator().sendNormalServerMessage("You may only gain skill beyond level 20 if you have a premium account.", 2);
                            }
                        }
                        if ((this.number == 10055 || this.number == 10053 || this.number == 10054) && player.loggerCreature1 > 0) {
                            logger.log(Level.INFO, player.getName() + " advancing " + Math.min(1.0, advanceMultiplicator * this.knowledge / skillDivider) + "!");
                        }
                    }
                    catch (NoSuchPlayerException nsp) {
                        advanceMultiplicator = 0.0;
                        logger.log(Level.WARNING, "Player with id " + this.id + " is learning skills while not online?", (Throwable)((Object)nsp));
                    }
                }
                if (useNewSystem) {
                    double maxSkillRate = 40.0;
                    double rateMod = 1.0;
                    short sType = SkillSystem.getTypeFor(this.number);
                    if (sType == 1 || sType == 0) {
                        maxSkillRate = 60.0;
                        rateMod = 1.2;
                    }
                    double skillRate = Math.min(maxSkillRate, skillDivider * (1.0 + this.knowledge / (100.0 - 90.0 * (this.knowledge / 110.0))) * rateMod);
                    this.knowledge = Math.max(1.0, this.knowledge + Math.min(1.0, advanceMultiplicator * this.knowledge / skillRate));
                } else {
                    this.knowledge = Math.max(1.0, this.knowledge + Math.min(1.0, advanceMultiplicator * this.knowledge));
                }
                if (this.minimum < this.knowledge) {
                    this.minimum = this.knowledge;
                }
                this.checkTitleChange(oldknowledge, this.knowledge);
            }
            try {
                if (oldknowledge != this.knowledge && (this.saveCounter == 0 || this.knowledge > 50.0) || decay) {
                    this.saveValue(isplayer);
                }
                this.saveCounter = (byte)(this.saveCounter + 1);
                if (this.saveCounter == 10) {
                    this.saveCounter = 0;
                }
            }
            catch (IOException ex) {
                logger.log(Level.WARNING, "Failed to save skill " + this.getName() + "(" + this.getNumber() + ") for creature " + this.parent.getId(), ex);
            }
            if (pid != -10 && isplayer) {
                try {
                    int diff;
                    Player holder = Players.getInstance().getPlayer(pid);
                    float weakMod = 1.0f;
                    double bonusKnowledge = this.knowledge;
                    float ws = holder.getBonusForSpellEffect(41);
                    if (ws > 0.0f) {
                        weakMod = 0.8f;
                    }
                    if (this.number == 102 && this.knowledge < 40.0) {
                        float x = holder.getBonusForSpellEffect(25);
                        if (x > 0.0f) {
                            double diff2 = 40.0 - this.knowledge;
                            bonusKnowledge = this.knowledge + diff2 * (double)x / 100.0;
                        } else {
                            float hs = holder.getBonusForSpellEffect(40);
                            if (hs > 0.0f) {
                                double diff3 = 40.0 - this.knowledge;
                                bonusKnowledge = this.knowledge + diff3 * (double)hs / 100.0;
                            }
                        }
                    }
                    bonusKnowledge *= (double)weakMod;
                    if (isplayer && (diff = (int)this.knowledge - (int)oldknowledge) > 0) {
                        holder.achievement(371, diff);
                    }
                    if (!this.parent.paying) {
                        bonusKnowledge = Math.min(20.0, bonusKnowledge);
                    }
                    holder.getCommunicator().sendUpdateSkill(this.number, (float)bonusKnowledge, this.isTemporary() ? 0 : this.affinity);
                    if (this.number != 2147483644 && this.number != 2147483642) {
                        holder.resetInactivity(true);
                    }
                }
                catch (NoSuchPlayerException nsp) {
                    logger.log(Level.WARNING, "" + pid + ":" + nsp.getMessage(), (Throwable)((Object)nsp));
                }
            }
        }
    }

 

For now, I'll leave the code here for those who want to inspect the differences between the two more closely. I'd like to continue my investigation into the workings of the combat system and will tackle this at a future date. With my simulation program, I'm sure there's quite a bit to be learned from skillgain, in both Wurm Unlimited and Wurm Online (assuming the skillGainOld is how Wurm Online works).

 

As for the old thread, I did not see it before. I only very recently started using these Wurm Online forums. I took a quick look through and spotted a lot of really nice information there. However, I want to back up all my data with my own personal evidence and findings, and not go off of hearsay. If you can find specific posts in that thread with good information, I will fact check it to the best of my ability, then incorporate it into my OP.

Share this post


Link to post
Share on other sites

Updated the OP:

  • Added Skill Penalty to the Weapon Stat Table.
  • Added a simplified hit chance calculation.
  • Added shield type simulation (large metal vs. small metal vs. medium wooden etc.)
  • Added shield rarity simulation (sorry for this everyone... :( )

Share this post


Link to post
Share on other sites
On 6/16/2016 at 6:33 AM, Sindusk said:

Spell Casting

 

Religious spell casting power is based 100% on channeling and no other factors apply. Here are some simulations to assist in gaining a better overall picture of how channeling affects the results. I'm going to use Blessings of the Dark as the spell of choice, but all 60 difficulty spells should function identically. Each image will increment the channeling skill by 5, and show the new results. Each test runs 1 million casts on a single item, then prints statistics on the results.

  Hide contents

aSrULkI.png

mJeZbwW.png

9nkR7KV.png

FM81wMh.png

531Dm2U.png

j6ZK9uZ.png

lG6dZDX.png

t0kkMyI.png

m9iFKmJ.png

vhZCFzh.png

ACsaxUG.png

Now, for fun, since I can technically set the value of skills higher than 100 in the simulator, here is 110, 125, and 150 skill:

Z6xUwX7.png

QYdeobR.png

L5bYX7b.png

 

Well then, that's out of the way. Just to illustrate the amount of difference that difficulty makes a spell, I'll give a reference point by comparing 50 and 70 channeling to the 20 and 40 difficulty spells, Courier and Dark Messenger

 

 

I'm sorry, but Channeling is not the only factor when enchanting items. You ought to look at the code again for this.

 

A bonus is applied, capped at 70, which is calculated from alignment, deed enchantment bonus, domain bonus, and a Religion skillcheck. It's pretty easy to max out, and I notice that your tests don't actually include those things as a variable. This is pretty well-documented at this point by myself, asdf, and some others.

  • Like 1

Share this post


Link to post
Share on other sites
1 hour ago, Ostentatio said:

 

 

I'm sorry, but Channeling is not the only factor when enchanting items. You ought to look at the code again for this.

 

A bonus is applied, capped at 70, which is calculated from alignment, deed enchantment bonus, domain bonus, and a Religion skillcheck. It's pretty easy to max out, and I notice that your tests don't actually include those things as a variable. This is pretty well-documented at this point by myself, asdf, and some others.

Wouldn't the altar and deed faith bonus he applied there make it reach the maximum bonus anyway?

Share this post


Link to post
Share on other sites
4 hours ago, Ostentatio said:

 

 

I'm sorry, but Channeling is not the only factor when enchanting items. You ought to look at the code again for this.

 

A bonus is applied, capped at 70, which is calculated from alignment, deed enchantment bonus, domain bonus, and a Religion skillcheck. It's pretty easy to max out, and I notice that your tests don't actually include those things as a variable. This is pretty well-documented at this point by myself, asdf, and some others.

I misspoke in my OP. It does seem to imply that "Channeling is the only factor" - when what I really meant was "Channeling is the only skill." I apologize for the confusion and will change the OP. My simulations account for the other factors at play, and max out the bonus every time, considering how easy it is to do so.

Share this post


Link to post
Share on other sites

Quick update to add some Meditation messages. Will likely add some parry rate simulations tomorrow.

Share this post


Link to post
Share on other sites
11 minutes ago, Sindusk said:

Quick update to add some Meditation messages. Will likely add some parry rate simulations tomorrow.

 

cannot add the meditation answers, against the rules.... just a warning 

  • Like 1

Share this post


Link to post
Share on other sites

Do these meditation messages even work? I've never had any of the insanity messages show up for me when I meditate

Share this post


Link to post
Share on other sites
1 hour ago, Worksock said:

Do these meditation messages even work? I've never had any of the insanity messages show up for me when I meditate

 

Do you mean the questions?  There is a little asinine/inane message, but you would always see it so i presume you mean questions...

 

If you are talking questions/answers or tiles?

Yes, they work you have to be on the right spot with the appropriate ql and type of rug vs your level of meditation.  

PoP title can be found without a problem first try every time as far as i have seen rock tile ~500-1000 dirts above water level, i.e. mountain

PoI takes 5-6 mine tiles tops,

PoK,3x3 sand and water (sandy beach),

PoL 3x3 of flowers bordering water, one tile away from the water. (lot of ways to make a Love tile, but really requirement is no sand and not touching water iirc, along with open water)  

 

*note PoK and PoL require "open water" which appears to be 20-21 tiles of water (WU code indicates a single water tile ~20 tiles away parallel to the path tile in any direction iirc, but easier just to find a beach) then you just have to "feel around" 

Share this post


Link to post
Share on other sites

wanna look into fishing code? I heard its a mess, and from what ive seen its a mess >_< Im aiming for 100 fishing and im going very slow at 99.999939 atm.

Edited by Nicrolis
  • Like 1

Share this post


Link to post
Share on other sites
5 hours ago, Nicrolis said:

wanna look into fishing code? I heard its a mess, and from what ive seen its a mess >_< Im aiming for 100 fishing and im going very slow at 99.999939 atm.

1) You're crazy

2) I'll check it out and get back to you. Skillgain on WU vs WO is different though, but perhaps I can offer some insight into how to increase the difficulty of fishing, since that appears to be a factor.

8 hours ago, ClericGunem said:

 

cannot add the meditation answers, against the rules.... just a warning 

Oh, I did not know that... Thank you for the warning. The messages I posted are what occurs after you start meditating, not answers to the questions. Do you know if that's against the rules?

 

In theory they should work but I've noticed the same as others, where sometimes you'll get a message for "no path" even when on a correct tile. But if you see one of these messages, it's likely you're on a path tile.

  • Like 1

Share this post


Link to post
Share on other sites

They used to be against the rules to show the meditation answers, now it is not against the rules anymore with one major condition: everyone should make a conscious decision if they want to see them or not - so as long as it requires user interaction and are not just posted in plain sight it is not against the rules.

 

So whoever posts them should take reasonable precautions to make sure they are hidden for those who do not want to know them in advance but want to explore them by themselves.

 

I hope I made this as explicit as possible :)

Edited by Thorakkanath
  • Like 1

Share this post


Link to post
Share on other sites
7 minutes ago, Sindusk said:

In theory they should work but I've noticed the same as others, where sometimes you'll get a message for "no path" even when on a correct tile. But if you see one of these messages, it's likely you're on a path tile.

didn't realize that these messages only show up on path tiles, that explains why i've never seen them

oh well

 

could you do a shield bashing test?

Share this post


Link to post
Share on other sites

I have an insanity tile that well to say the least I've definitely meditated on quite a few thousand times for questions alone and it never gave any of the unique insanity messages

 

Unless I'm misreading something it's nice to see wu code tests giving the same results I've found on test and feelings on live, practically no difference in shield size affecting blocking %

Share this post


Link to post
Share on other sites

Wanna tell people what does rarity on med rugs do? When i did, nobody believed me :)

 

[edit] oh actually people did believe me, nevermind then! :P (spoilers: it does very much nothing)

Edited by asdf

Share this post


Link to post
Share on other sites
3 hours ago, asdf said:

Wanna tell people what does rarity on med rugs do? When i did, nobody believed me :)

 

[edit] oh actually people did believe me, nevermind then! :P (spoilers: it does very much nothing)

Rare/supreme rugs get less damage, means you can make longer sessions and its easier to imp them up. That is not a small feat on higher levels. :)

  • Like 1

Share this post


Link to post
Share on other sites
6 hours ago, Sindusk said:

 

2) I'll check it out and get back to you. Skillgain on WU vs WO is different though, but perhaps I can offer some insight into how to increase the difficulty of fishing, since that appears to be a factor.

 

Yup xD The whole calculating difficulty was what i was looking for. i think ive adjusted myself to the point where im getting around 30-40% skill gain ticks, but im unsure as im not actually counting the ticks and then dividing. from my experience you get a chance for a tick every second or 2.

Share this post


Link to post
Share on other sites

I just spent quite some time trying to figure out the difference between the Wurm Online skill gain method vs. the Wurm Unlimited skill gain method to try and answer your question. The conclusion I came to was that your best chances of getting a proper skillgain tick would be to get the highest difficulty possible to match your current skill. However, sadly, with fishing, the skill tick difficulty is exactly 50 every 2 seconds:

fishing.skillCheck(50.0, source, 0.0, false, 2.0f);

With that in mind, the only ways to increase difficulty or skill gain is to use the "source" that is passed in - the fishing rod. I assume you are already doing the following, in which case you are being as effective as you can at gaining skill:

  • Lowest quality possible (increase to difficulty)
  • Highest CoC/BotD possible (up to 104% increased skillgain with a 104 cast)

Share this post


Link to post
Share on other sites

interesting. I felt that i was getting more skill gain with an 18ql rod vs a 1ql. ill have to let it hit 1 then :P

 

and ya i try to get the highest coc possible. You can ask noizhea about how many times i pestered him for botd rods back in BL :P hed do around 5-7 of them for me with 90 casts and they would get chewed down to 80ish in a week or so.

Share this post


Link to post
Share on other sites
19 hours ago, asdf said:

Wanna tell people what does rarity on med rugs do? When i did, nobody believed me :)

 

[edit] oh actually people did believe me, nevermind then! :P (spoilers: it does very much nothing)

 

heh, no increased question chance on rare+ rugs, then?

Share this post


Link to post
Share on other sites

any information regarding how much armour smithing titles help improving and if this applies to other titles like Master Tanner?

  • Like 1

Share this post


Link to post
Share on other sites
8 hours ago, KyleBooze said:

any information regarding how much armour smithing titles help improving and if this applies to other titles like Master Tanner?

 

This was covered in a previous topic. See Bdew's posts on this page: 

 

 

Share this post


Link to post
Share on other sites

Blessings of the Dark, is it really the equivalent to Wind of Ages + Circle of Cunning? I'm asking because some years back someone mentioned to me that BotD wasn't as effective as the separate spells, so I'm kinda on the fence.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this