bool u16_get_experience_i12(uint16_t* field, uint16_t inc_xp) { int integer; integer = fxptoi12(*field); if (*field + inc_xp < 65536) { *field += inc_xp; } else { *field = 65535; } return (fxptoi12(*field) > integer)? true: false; }
tduel::tduel(hero& left, hero& right) : left_(left) , right_(right) , turn_(0) , endturn_(NULL) , lskill0_(NULL) , lskill1_(NULL) , hp_(TOTAL_HP / 2) , finished_(false) { int larger_force, force_distance; setting_[0].force_ = fxptoi9(left.force_); setting_[1].force_ = fxptoi9(right.force_); if (setting_[0].force_ >= setting_[1].force_) { larger_force = 0; force_distance = setting_[0].force_ - setting_[1].force_; } else { larger_force = 1; force_distance = setting_[1].force_ - setting_[0].force_; } setting_[larger_force].count_ = MAX_CARDS; setting_[larger_force].min_point_ = LARGER_MIN_POINT; setting_[larger_force].max_point_ = LARGER_MAX_POINT; setting* t = setting_ + (larger_force ^ 1); if (force_distance == 0) { t->count_ = MAX_CARDS; t->min_point_ = LARGER_MIN_POINT; t->max_point_ = LARGER_MAX_POINT; } else { t->count_ = std::max(MIN_CARDS, MAX_CARDS - force_distance / 5); t->min_point_ = std::max(SMALLER_MIN_POINT, LARGER_MIN_POINT - (force_distance + 4) / 5); t->max_point_ = std::max(SMALLER_MAX_POINT, LARGER_MAX_POINT - (force_distance + 4) / 5); } for (int index = 0; index < 2; index ++) { if (index == 0) { setting_[index].skill_ = fxptoi12(left.skill_[hero_skill_hero]); } else { setting_[index].skill_ = fxptoi12(right.skill_[hero_skill_hero]); } if (!setting_[index].skill_) { setting_[index].skill_ = 1; } setting_[index].deadfight_ = false; setting_[index].fightback_ = false; } }
void set_hero(const hero_map& heros, hero& h) { config* ptr = NULL; if (config& cfg = prefs.child("hero")) { ptr = &cfg; } else { ptr = &prefs.add_child("hero"); } config& cfg = *ptr; std::stringstream str; cfg["name"] = h.name(); cfg["surname"] = h.surname(); cfg["biography"] = h.biography2(heros); cfg["leadership"] = fxptoi9(h.leadership_); cfg["force"] = fxptoi9(h.force_); cfg["intellect"] = fxptoi9(h.intellect_); cfg["spirit"] = fxptoi9(h.spirit_); cfg["charm"] = fxptoi9(h.charm_); cfg["gender"] = h.gender_; cfg["image"] = h.image_; for (int i = 0; i < HEROS_MAX_ARMS; i ++) { str.str(""); str << "arms" << i; cfg[str.str()] = fxptoi12(h.arms_[i]); } for (int i = 0; i < HEROS_MAX_SKILL; i ++) { str.str(""); str << "skill" << i; cfg[str.str()] = fxptoi12(h.skill_[i]); } cfg["base_catalog"] = h.base_catalog_; cfg["feature"] = h.feature_; cfg["side_feature"] = h.side_feature_; cfg["tactic"] = h.tactic_; cfg["utype"] = h.utype_; cfg["character"] = h.character_; write_preferences(); }
std::string hero::adaptability_str2(uint16_t adaptability) { char text[_MAX_PATH]; sprintf(text, "%s%u", HERO_PREFIX_STR_ADAPTABILITY, fxptoi12(adaptability)); return dgettext("wesnoth-hero", text); }