make generated mag colors random
This commit is contained in:
+11
-1
@@ -701,10 +701,20 @@ uint8_t ItemCreator::generate_tech_disk_level(uint32_t tech_num, uint32_t area_n
|
|||||||
return range.min;
|
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) {
|
if (item.data1[0] == 0x02) {
|
||||||
item.data1[1] = 0x00;
|
item.data1[1] = 0x00;
|
||||||
item.assign_mag_stats(ItemMagStats());
|
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
@@ -121,7 +121,7 @@ private:
|
|||||||
void generate_common_armor_or_shield_type_and_variances(char area_norm, ItemData& item);
|
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);
|
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);
|
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_variances(uint8_t area_norm, ItemData& item);
|
||||||
void generate_common_weapon_grind(ItemData& item, uint8_t offset_within_subtype_range);
|
void generate_common_weapon_grind(ItemData& item, uint8_t offset_within_subtype_range);
|
||||||
void generate_common_weapon_bonuses(ItemData& item, uint8_t area_norm);
|
void generate_common_weapon_bonuses(ItemData& item, uint8_t area_norm);
|
||||||
|
|||||||
+9
-20
@@ -29,26 +29,15 @@ enum class EquipSlot {
|
|||||||
};
|
};
|
||||||
|
|
||||||
struct ItemMagStats {
|
struct ItemMagStats {
|
||||||
uint16_t iq;
|
uint16_t iq = 0;
|
||||||
uint16_t synchro;
|
uint16_t synchro = 40;
|
||||||
uint16_t def;
|
uint16_t def = 500;
|
||||||
uint16_t pow;
|
uint16_t pow = 0;
|
||||||
uint16_t dex;
|
uint16_t dex = 0;
|
||||||
uint16_t mind;
|
uint16_t mind = 0;
|
||||||
uint8_t flags;
|
uint8_t flags = 0;
|
||||||
uint8_t photon_blasts;
|
uint8_t photon_blasts = 0;
|
||||||
uint8_t color;
|
uint8_t color = 14;
|
||||||
|
|
||||||
ItemMagStats()
|
|
||||||
: iq(0),
|
|
||||||
synchro(40),
|
|
||||||
def(500),
|
|
||||||
pow(0),
|
|
||||||
dex(0),
|
|
||||||
mind(0),
|
|
||||||
flags(0),
|
|
||||||
photon_blasts(0),
|
|
||||||
color(14) {}
|
|
||||||
|
|
||||||
inline uint16_t def_level() const {
|
inline uint16_t def_level() const {
|
||||||
return this->def / 100;
|
return this->def / 100;
|
||||||
|
|||||||
Reference in New Issue
Block a user