Example #1
0
func (s Species) Type() [2]pkm.Type {
	b := readStruct(
		s.v.ROM,
		s.v.AddrSpeciesData,
		s.i,
		structSpeciesData,
		6, 7,
	)
	return [2]pkm.Type{
		pkm.Type(b[0]),
		pkm.Type(b[1]),
	}
}
Example #2
0
File: move.go Project: Anaminus/pkm
func (m Move) Type() pkm.Type {
	b := readStruct(
		m.v.ROM,
		m.v.AddrMoveData,
		m.i,
		structMoveData,
		2,
	)
	return pkm.Type(b[0])
}
Example #3
0
func (v *Version) TypeEffectiveness(atk pkm.Type, def [2]pkm.Type) float64 {
	v.ROM.Seek(v.AddrTypeEffect.ROM(), 0)
	var mult byte = 4
	for q := make([]byte, structTypeEffect.Size()); ; {
		v.ROM.Read(q)
		if a, d := pkm.Type(q[0]), pkm.Type(q[1]); a == 0xFF || d == 0xFF {
			break
		} else if a == atk && (d == def[0] || d == def[1]) {
			switch q[2] {
			case 0:
				mult = 0
			case 5:
				mult >>= 1
			case 20:
				mult <<= 1
			}
		}
	}
	return float64(mult) / 4
}