Jump to content
Eternal Lands Official Forums
StouXy

Child of stars perk / Astro broken?

Recommended Posts

Hi, it's been a well known thing in EL that Child of Stars perk does NOT work as it should, if at all.
Or maybe, it's an issue to do with Astro.

I've been seeing this a lot as of late. I have Child of Stars perk + wearing Artificer cape, yet I can go 28k fe's without making a single EFE.

And then, we have people who make 5k fe's without the cape and without the perk and they get 2 efe's.

 

There has been many instances when people reported this weird behaviour of this perk and Artificer perk ( More like Astro works upside down - The better astro, the less rares you make )

 

The same issue happened in the past with Evanescence perk for example. Let alone the Armor Master perk, that gave extra armor to your enemy :D

 

Please, can you, @Entropy , double check if the astro works properly and if/or the Child of Stars perk ( Maybe Artif cape ) work as they are intended to? :)

 

Final conclusion: I think that Astro does NOT work as it should. My 2 cents. Please, double check.

I took a screenshot of my astro, and it seems kinda off :D I had Artif cape on and also I have Child of Stars perk. https://gyazo.com/20a11a21660184461aded2db2a946f5f
[09:52:33] Make rare, the lower, the better; positive is penalty
20 Minutes: 0
40 Minutes: 0
60 Minutes: 0


Thank you!

 

-StouXy-

Edited by StouXy

Share this post


Link to post
Share on other sites

Hello,

I've not done much testing on these mixing rare things, tho will share some of it.

I've marked few times while mixing enriches, I get enrich essences on fixed type of random numbers. Like if i get 1 EME while mixing magic essences of first 1.8k, i'll get another at 3.6k magic essences. It surely looks surprising as well as untruth. But I've marked this thing many times and got success. If I get rare in first 2k-5k essences I keeps on mixing or I just delay for later on. Still I really do not know how this Random Number Generator (RNG) works.

Also, I could not judge if artificer perk or cape working or not, as it surely helped me getting enriches time to time, using my above policy of mixing.

(Also for note, I mix with skeptic perk - with or without arti perk - depends on char)

Thanks & Regards

Share this post


Link to post
Share on other sites

I've made +50 halberds without HoA, with arti cape.

 

Then made 2 HoA's in 4 halberds without arti cape. :P

 

Tbh, I think most of the astro affected perks are broken. Such as lucky defender and lucky attacker. Also think arti cape is broken aswell.

 

 

Bu radu just asks for more input then never checks them either. And we have found that Armorer was broken, Eva perk was broken aswell...

Share this post


Link to post
Share on other sites

I am pretty sure the arti cape discussion has been ongoing since I've added it. Here is the code, if someone finds a problem with it, please let me know:


            int upper_limit=10000;
            int chance=manufacture_items_list[manufacture].chance_to_mutate;

            if(manufacture_items_list[manufacture].levels_boost_chance)
            if(experience_delta>0)chance+=experience_delta;

            upper_limit+=get_astrology_modifier_to_make_rare(player_id,0);

            if(check_player_flag(ARTIFICER,player_id))
            upper_limit=7000+get_astrology_modifier_to_make_rare(player_id,0)/4;

            if(what_random_day==RD_INCREASED_RARE_MANUFACTURE)
                {
                    upper_limit-=random_day_value;
                }

            if(what_random_day==RD_DECREASED_RARE_MANUFACTURE)
                {
                    upper_limit+=random_day_value;
                }

            rand_result=my_rand(upper_limit);

            if(chance+rand_result>upper_limit)
                {
                   //rare item

 

Share this post


Link to post
Share on other sites

Quote from wiki:  "by approximately 30% of the original chance."

 

If the base value (Original chance) is low, like 0.0001% for a random example, then 30% would not be a noticeable increase unless you crafted 1,000,000. (From the above, the 10000 might actually mean 1 in 10000 or 0.0001% so 30% increase would be 0.00013%)

 

As with anything random, you must consider variance

 

Imagine something simpler such as a coin toss. 50/50. Every coin clip has a 50% chance to be heads or tales. After flipping the coin for years you come across a time where you flip the coin heads 10 times in a row. You say to yourself, how can this be? Flipping a coin heads 10 times in a row on average will happen once in every 1024 attempts. That is more common then crafting whatever you are asking about.

 

 

[What does this all mean for Eternal Lands?]

 

Well, if something you craft has a 1/10000 chance to be what you want, the more players doing said craft, the more that will be in circulation. With a playerbase of 150-300 active users, the chances of these items to be on the market is very low. Not everyone is crafting.

 

Solution? Its either A or B.

 

A.) Keep everything the way it was for 16 years.

 

B.) Change

 

 

Just my 2cents. B)

Share this post


Link to post
Share on other sites

Ok i went through the code, and i want to put a small calculation example on how it affects with people that has the Child of star perk if it works right. This is the main important line,

 upper_limit=7000+get_astrology_modifier_to_make_rare(player_id,0)/4;

basicly it says if you have  neutral astro your chances are at this point 7000:1, if you have full negative astro (i think it was +-900 that you can get) you will have a chance of 7000+225=7225:1

chance to make one and on full positiv astro 6775; 

EDIT:( my estimate about the max return value was wrong :get_astrology_modifier_to_make_rare returns a value betwee -720 and 720). (that just changes the math a little bit but not so significantly to change the determination from it)

 

Of course it assumes that this function will take into account that you have the child of stars perk, and that it will give back either a negative value or 0;

get_astrology_modifier_to_make_rare(player_id,0)

I am not sure what the experience_delta is or where this comes from, i am assuming it will stay 0 for most people. depending on what it is and how it is calculated it can be a cause for the experience error that i feel as i mix less and less enriched the higher i got in level

if(experience_delta>0)chance+=experience_delta;

Ok going on to the last part that determines things

rand_result=my_rand(upper_limit);
            if(chance+rand_result>upper_limit)
                

the rand is at this point without a cape between 10900-9100, and with cape either 7225-6775 .

the next line is in the end the only deciding factor. lets say we want to have a 10% chance to make an Special Item, on 0 Astro normal day without artificer cape then the value should be 1000, so lets say chance is 1000;

so without cape you have a chance for a special item between 10.99% and 9.17%, the 0 Astro rate is here the assumed 10%

with cape you have a chance for a special item between 14.76%- and 13.84%, the 0 Astro rate is here 14.29%;

 

Long post short, the code does modify the chances of getting a rare item as it should, as long as the upper named astrology get function delivers the right value. The percentage on how much the Astro gets modified depends more on what the the values of chance and experience_delta are then on the value of the upper limit and the function that gets the players Astro.

 

 

Edited by vinoveritas

Share this post


Link to post
Share on other sites

I just could not see the item rareness difference in the code. From what I've seen with this code, is it same chance to make an EFE and EEE? which is clearly not....

Share this post


Link to post
Share on other sites
int chance=manufacture_items_list[manufacture].chance_to_mutate;

Here is the chance to make the rareness, in basic a value of 100 is 1% on normal day with 0 Astro.

 

What i see is that the scaling of the factor is pretty low.

if you have a 10% chance or a 11% chance does makes in your experience no big difference, same goes for the capes close to 15% on best day (assuming that exp_delta is 0 as there is no exp changes on mixing);

 

BTW i took 10% for this example as its nice numbers to calculate with, in reality the chances of getting anything are in the 0.00x% areas lets say the chance of making 1 EFE is 1:10000 on normal day without modificators,  then the variable chance would be 1;

so we have a random of 10900-9100 without artificer cave and a chance range of 1 means chance for a efe would be 0.00917% in worst case 0,01% in normal case and 0.011% in best case

and with the artificer cape 0.01384% in worst case,  0.01429% in normal, and 0,01476% in best case

(differences to upper calculation are rounding problems)

(edit forgot the eee calculation)

an eee has a probablilty of 1:1000 so the number chance is 10

so the chances are 0.0917% - 0.11% or 0.1384-0.1476%  so factor 10 higher

 

btw since its probably that the chance is so low the

experience_delta

Is a huge factor in the calculation. and its influences probably potential extremely higher then any Astro effects.

 

 

Edited by vinoveritas

Share this post


Link to post
Share on other sites

experience_delta=players[player_id].player_data.manufacturing_skill.cur-manufacture_items_list[manufacture].required_manufacture;

 

The last part, required_manufacture is for items that use the manu skill. For other skills, like alchemy, the alchemy skill is used, and so on.

 

Also keep in mind that this bonus only applies to some items, like some special swords and armors, not to things like EFEs and such.

Share this post


Link to post
Share on other sites

Btw, here is the child of starts relevant bonus (make rare)

 


//bonus returned is negative, penalty is positive
int get_astrology_modifier_to_make_rare(int player_id, int time_offset)
{
    int raw_bonus;
    int returned_number;

    if(check_player_flag(SKEPTIC, player_id))return 0;

    raw_bonus=pre_get_player_bonus(player_id, PLANET_CHANCE_TO_MAKE_RARE_ORBIT,time_offset);

    if(raw_bonus>90)returned_number=(raw_bonus-90)*8;
    else returned_number=-(90-raw_bonus)*8;

    if(check_player_flag(CHILD_OF_STARS, player_id) && returned_number>0)return 0;
    return returned_number;

}

 

Share this post


Link to post
Share on other sites

Well the logic of that function seams to be sound.

if(raw_bonus>90)returned_number=(raw_bonus-90)*8;
    else returned_number=-(90-raw_bonus)*8;

    if(check_player_flag(CHILD_OF_STARS, player_id) && returned_number>0)return 0;
    return returned_number;

These 4 lines make make sure that whatever your raw_bonus is it will be handled the same way and that if you have the child of stars perk that you get a negative or 0 as i did assume, earlier.

thank you for clearing up what experience_delta means, well i think the code checks out.

Just that the people (myself included) might not see much of it, because the chances are small enough that your personal luck level on the random number generator might drive you crazy.

Share this post


Link to post
Share on other sites

So is everything ok now? Can we 'demystify' the whole "astro/child of stars/artificer" not working? :)

 

Share this post


Link to post
Share on other sites
21 minutes ago, Entropy said:

So is everything ok now? Can we 'demystify' the whole "astro/child of stars/artificer" not working? :)

 

I think so.

 

Now we have to start the same discussion for the fighting :evilgrin:

Share this post


Link to post
Share on other sites
2 hours ago, Entropy said:

So is everything ok now? Can we 'demystify' the whole "astro/child of stars/artificer" not working? :)

 

Thank you for your willingness to share those codes :) 

Last thing I'd like to ask so we can close this matter 4ever now is, could we get a glimpse on the Astrology itself as a whole? :P Of couse no need to disclose the exact numbers and probabilities :P ( But would be nice to see :D )
With that, we all be happy and leave you alone for good :D Thanks

Edited by StouXy

Share this post


Link to post
Share on other sites
6 minutes ago, StouXy said:

With that, we all be happy and leave you alone for good :D Thanks

 

Hahahaha yeah, right.  :P

Share this post


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

So is everything ok now? Can we 'demystify' the whole "astro/child of stars/artificer" not working? :)

 

 

While you are at it, can we see the code for lucky attacker and lucky defender perks? :D

 

Also, my question is; When we had a problem in Eva perk and Armorer perks, the problem was in codes? Do you have the problematic codes saved somewhere to give us an idea how a problem seems like codewise?

Share this post


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

 

Hahahaha yeah, right.  :P

:D:D Hey! I was refering to this matter in particular :D We'll still bully him with other stuff okay :D

 

Share this post


Link to post
Share on other sites
35 minutes ago, Kaddy said:

 

While you are at it, can we see the code for lucky attacker and lucky defender perks? :D

 

Also, my question is; When we had a problem in Eva perk and Armorer perks, the problem was in codes? Do you have the problematic codes saved somewhere to give us an idea how a problem seems like codewise?

 

The Eva perk is way too old, I don't remember the details. The armorer perk I checked for the enemy instead of the player.

 

As for the lucky attacker/defender, it's very similar to the child of stars one.

 


int get_astrology_modifier_attack(int player_id, int time_offset)
{
    int raw_bonus;
    int percent;
    int returned_number;

    if(check_player_flag(SKEPTIC, player_id))return 0;

    raw_bonus=pre_get_player_bonus(player_id, PLANET_ATTACK_ORBIT,time_offset);
    if(raw_bonus>90)percent=-(raw_bonus-90)/18;
    else percent=(90-raw_bonus)/18;

    returned_number=(players[player_id].player_data.attack_skill.base*percent)/100;

    if(check_player_flag(LUCKY_ATTACKER, player_id) && returned_number<0)return 0;
    return returned_number;
}

int get_astrology_modifier_defense(int player_id, int time_offset)
{
    int raw_bonus;
    int percent;
    int returned_number;

    if(check_player_flag(SKEPTIC, player_id))return 0;

    raw_bonus=pre_get_player_bonus(player_id, PLANET_DEFENSE_ORBIT,time_offset);

    if(raw_bonus>90)percent=-(raw_bonus-90)/18;
    else percent=(90-raw_bonus)/18;

    returned_number=(players[player_id].player_data.defense_skill.base*percent)/100;

    if(check_player_flag(LUCKY_DEFENDER, player_id) && returned_number<0)return 0;
    return returned_number;
}

Share this post


Link to post
Share on other sites

Ok as requested i go through that code piece too :)

if(check_player_flag(SKEPTIC, player_id))return 0;

If you are skeptic the function always gives back a 0

  raw_bonus=pre_get_player_bonus(player_id, PLANET_DEFENSE_ORBIT,time_offset);

this line that is also present in the Astro function for rare, should give back a value which has probably 90 as the neutral value so if you are.

I speculate here that PLANTE_DEFENSE_ORBIT is a Constant, same like the PLANET_CHANCE_TO_MAKE_RARE_ORBIT at make rare, that does influence together with some stored data of the player will give out the Astro at a given time. the time_offset is most likely there to allow the predictors to work right.

if(raw_bonus>90)percent=-(raw_bonus-90)/18;
    else percent=(90-raw_bonus)/18;

OK this code has 1 big Difference to the make rare one, the percent calculation gives out the negative value when it is penalty and the positive value when it is good,  Based on the number here my guess is that the raw bonus can go between 0 and 180,

which would mean the value can go between -5 and 5 (-5 = raw bonus 180 5= raw bonus=0)

 

 returned_number=(players[player_id].player_data.defense_skill.base*percent)/100;

so here you have your players defense base number (they change on your defense levels, you can actually see it as sometimes 1 defense level makes a lot of differences in many parts) multiplied with your number. I can have a max +8 in my defense and attack skills, and i assume my defense_skill.base is probably 168.

168*5/100=840/100=8.4 (if we have a truncated integer as its usual in integer divisions its 8, and the same on the negative site. (Based on this calculation every 20 defense level would add 1 point on Astro, so for new fighters they have 0,20-39=1,   40-59=2,   60-79=3,   80-99=4,    100-119=5,    120-139=6,      140-159=7,     160-179=8)

 if(check_player_flag(LUCKY_DEFENDER, player_id) && returned_number<0)return 0;
    return returned_number;

Finally the last part of the Function, if your Value is negative return 0 if you have the LUCKY_DEFENDER perk. otherwise put out the positive number. 

So this function that should give back the Astro works as advertised.

The attack Astro getting function is the same with the Difference that it gets the Attack Astro orbit result.

so if there are errors with fighting its not based on this function, but maybe on some code that does not involve it.

 

Edited by vinoveritas

Share this post


Link to post
Share on other sites

so if there are errors with fighting its not based on this function, but maybe on some code that does not involve it.

I checked that too, the number is added correctly to the attacking/defending player, along with other bonuses and modifiers.

 

So, anything else? Or are we all happy?

Share this post


Link to post
Share on other sites
2 hours ago, Entropy said:

 

 

I checked that too, the number is added correctly to the attacking/defending player, along with other bonuses and modifiers.

 

So, anything else? Or are we all happy?

Thanks :)

The last thing, Astrology's code itself.

 

Then we'll leave you alone for good :D ( With this matter at least :D )

Share this post


Link to post
Share on other sites

Actually there is one point where i would like to have a check, and that is in the assigning of critical fails, i Monitore my critical fails on the making of big books. and i found that i do have more critical fails when my Astro is declining instead of the raising site. (this would also apply on the time that the indicator (which is assuming using the same functions we did check these days and should be working correct) would be declining or raising based on tests i did with indicators. It might be just bad luck on my sight, but i am trying these days only to mix Big books on the climbing side of Astro till it hits max peak.   (the difference is between 10% failure rate on raisinig Astro days and up to 50% on the falling Astro days. Its not really Dependant on the Astro number itself but more on the trend that the Astro has taken which has me actually wondering what is playing in there. and it very well might just be my luck. But it is pretty consistant trent i had in my book making history.

Share this post


Link to post
Share on other sites

The critical fail rate is 1/3 of the the normal fails. Astrology plays no role at all in it. Are your non critical fails different?

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

×