Jump to content

  •  

zloba

Member Since 07 Mar 2014
Offline Last Active Private
-----

Issues I've Posted

    Homunculus dead status possibly wrong

    Posted 6 Apr 2015

    Possibly map server send wrong homunculus dead state.

    In code we had:
    WBUFB(buf,26)=(battle_config.hom_rename && hd->homunculus.rename_flag ? 0x1 : 0x0) | (hd->homunculus.vaporize == HOM_ST_REST ? 0x2 : 0) | (hd->homunculus.hp > 0 ? 0x4 : 0);
    

    Possibly should be something like that:
    WBUFB(buf,26)=(battle_config.hom_rename && hd->homunculus.rename_flag ? 0x1 : 0x0) | (hd->homunculus.vaporize == HOM_ST_REST ? 0x2 : 0) | (hd->homunculus.hp <= 0 ? 0x4 : 0);
    

    Fear Breeze math error

    Posted 6 Apr 2015

    Suggest iRO Wiki at skill level 5 we had 30% (about 1\3) total overall chance of shoot more than one arrow at once.
    Roughly speaking this means that if we shot 100 times in 30 cases it will have two or more shots at a time. But in code we had only 12% max total overall chance to do that:
                        int chance = rnd()%100;
    					switch(sc->data[SC_FEARBREEZE]->val1){
    						case 5:
    							if( chance < 3){// 3 % chance to attack 5 times.
    								wd.div_ = 5;
    								break;
    							}
    						case 4:
    							if( chance < 7){// 6 % chance to attack 4 times.
    								wd.div_ = 4;
    								break;
    							}
    						case 3:
    							if( chance < 10){// 9 % chance to attack 3 times.
    								wd.div_ = 3;
    								break;
    							}
    						case 2:
    						case 1:
    							if( chance < 13){// 12 % chance to attack 2 times.
    								wd.div_ = 2;
    								break;
    							}
    					}
    

    This is a very well confirmed experimentally.

    Possibly it should be something like that:
                    int chance = rnd()%100;
                    int previousChance = 0;
                    switch (sc->data[SC_FEARBREEZE]->val1){
                    case 5:
                        if (chance < 3 + previousChance){// 3 % chance to attack 5 times.
                            wd.div_ = 5;
                            break;
                        }
                        previousChance += 3;
                    case 4:
                        if (chance < 7 + previousChance){// 6 % chance to attack 4 times.
                            wd.div_ = 4;
                            break;
                        }
                        previousChance += 6;
                    case 3:
                        if (chance < 10 + previousChance){// 9 % chance to attack 3 times.
                            wd.div_ = 3;
                            break;
                        }
                        previousChance += 9;
                    case 2:
                    case 1:
                        if (chance < 13 + previousChance){// 12 % chance to attack 2 times.
                            wd.div_ = 2;
                            break;
                        }
                    }