make generated mag colors random

This commit is contained in:
Martin Michelsen
2024-01-01 12:08:32 -08:00
parent c6ce39623e
commit efe2515a44
3 changed files with 21 additions and 22 deletions
+11 -1
View File
@@ -701,10 +701,20 @@ uint8_t ItemCreator::generate_tech_disk_level(uint32_t tech_num, uint32_t area_n
return range.min;
}
void ItemCreator::generate_common_mag_variances(ItemData& item) const {
void ItemCreator::generate_common_mag_variances(ItemData& item) {
if (item.data1[0] == 0x02) {
item.data1[1] = 0x00;
item.assign_mag_stats(ItemMagStats());
// The original code (on PSO GC) assigns the mag color as 0x0E. We assign
// a random color instead.
if (this->version == Version::DC_NTE) {
item.data2[3] = 0x00;
} else if (is_v1_or_v2(this->version)) {
item.data2[3] = this->random_crypt.next() % 0x0E;
} else {
item.data2[3] = this->random_crypt.next() % 0x12;
}
}
}
+1 -1
View File
@@ -121,7 +121,7 @@ private:
void generate_common_armor_or_shield_type_and_variances(char area_norm, ItemData& item);
void generate_common_tool_variances(uint32_t area_norm, ItemData& item);
uint8_t generate_tech_disk_level(uint32_t tech_num, uint32_t area_norm);
void generate_common_mag_variances(ItemData& item) const;
void generate_common_mag_variances(ItemData& item);
void generate_common_weapon_variances(uint8_t area_norm, ItemData& item);
void generate_common_weapon_grind(ItemData& item, uint8_t offset_within_subtype_range);
void generate_common_weapon_bonuses(ItemData& item, uint8_t area_norm);
+9 -20
View File
@@ -29,26 +29,15 @@ enum class EquipSlot {
};
struct ItemMagStats {
uint16_t iq;
uint16_t synchro;
uint16_t def;
uint16_t pow;
uint16_t dex;
uint16_t mind;
uint8_t flags;
uint8_t photon_blasts;
uint8_t color;
ItemMagStats()
: iq(0),
synchro(40),
def(500),
pow(0),
dex(0),
mind(0),
flags(0),
photon_blasts(0),
color(14) {}
uint16_t iq = 0;
uint16_t synchro = 40;
uint16_t def = 500;
uint16_t pow = 0;
uint16_t dex = 0;
uint16_t mind = 0;
uint8_t flags = 0;
uint8_t photon_blasts = 0;
uint8_t color = 14;
inline uint16_t def_level() const {
return this->def / 100;