65 lines
2.2 KiB
Go
65 lines
2.2 KiB
Go
package objprop
|
|
|
|
import (
|
|
"github.com/inkyblackness/hacked/ss1/content/interpreters"
|
|
"github.com/inkyblackness/hacked/ss1/content/object"
|
|
)
|
|
|
|
var basicWeapon = interpreters.New().
|
|
With("Damage", 0, 2).As(interpreters.RangedValue(0, 0x7FFF)).
|
|
With("OffenceValue", 2, 1).
|
|
With("DamageType", 3, 1).As(damageType).
|
|
With("SpecialDamageType", 4, 1).As(specialDamageType).
|
|
With("ArmorPenetration", 7, 1)
|
|
|
|
var weaponGenerics = interpreters.New().
|
|
With("FireRate", 0, 1).
|
|
With("AmmoType", 1, 1).As(interpreters.Bitfield(map[uint32]string{
|
|
0x01: "AmmoType0",
|
|
0x02: "AmmoType1",
|
|
0x04: "AmmoType2",
|
|
0x08: "AmmoType3",
|
|
0xF0: "AmmoSubclass"}))
|
|
|
|
var projectileWeapons = interpreters.New().
|
|
Refining("BasicWeapon", 0, 8, basicWeapon, interpreters.Always).
|
|
With("ProjectileTravelSpeed", 8, 1).
|
|
With("Projectile", 9, 4).As(interpreters.SpecialValue("ObjectTriple")).
|
|
With("AttackMass", 13, 1).
|
|
With("AttackSpeed", 14, 2).As(interpreters.RangedValue(-10000, +10000))
|
|
|
|
var meleeWeapons = interpreters.New().
|
|
Refining("BasicWeapon", 0, 8, basicWeapon, interpreters.Always).
|
|
With("EnergyUsage", 8, 1).
|
|
With("AttackMass", 9, 1).
|
|
With("Range", 10, 1).
|
|
With("AttackSpeed", 11, 2).As(interpreters.RangedValue(-10000, +10000))
|
|
|
|
var energyBeamWeapons = interpreters.New().
|
|
Refining("BasicWeapon", 0, 8, basicWeapon, interpreters.Always).
|
|
With("MaxCharge", 8, 1).
|
|
With("AttackMass", 9, 1).
|
|
With("Range", 10, 1).
|
|
With("AttackSpeed", 11, 2).As(interpreters.RangedValue(-10000, +10000))
|
|
|
|
var energyProjectileWeapons = interpreters.New().
|
|
Refining("BasicWeapon", 0, 8, basicWeapon, interpreters.Always).
|
|
With("MaxCharge", 8, 1).
|
|
With("AttackMass", 9, 1).
|
|
With("AttackSpeed", 10, 2).As(interpreters.RangedValue(-10000, +10000)).
|
|
With("ProjectileTravelSpeed", 12, 1).
|
|
With("Projectile", 13, 4).As(interpreters.SpecialValue("ObjectTriple")).
|
|
With("Flags", 17, 1).As(interpreters.Bitfield(map[uint32]string{
|
|
0x02: "Stun"}))
|
|
|
|
func initGuns() {
|
|
objClass := object.Class(0)
|
|
|
|
genericDescriptions[objClass] = weaponGenerics
|
|
|
|
setSpecific(objClass, 2, projectileWeapons)
|
|
setSpecific(objClass, 3, meleeWeapons)
|
|
setSpecific(objClass, 4, energyBeamWeapons)
|
|
setSpecific(objClass, 5, energyProjectileWeapons)
|
|
}
|