mirror of
https://github.com/OpenDiablo2/OpenDiablo2
synced 2025-01-14 21:36:40 -05:00
162 lines
4.3 KiB
Go
162 lines
4.3 KiB
Go
package d2datadict
|
|
|
|
import (
|
|
"log"
|
|
|
|
"github.com/OpenDiablo2/OpenDiablo2/d2common"
|
|
)
|
|
|
|
//MonsterSoundRecord represents a single line in MonSounds.txt
|
|
//Information gathered from [https://d2mods.info/forum/kb/viewarticle?a=418]
|
|
type MonsterSoundRecord struct {
|
|
//ID is the identifier, used in MonStats.txt to refer to a particular sound record
|
|
ID string
|
|
|
|
//Melee attack sound ID, refers to a sound from Sounds.txt
|
|
Attack1 string
|
|
|
|
//Weapon attack sound ID, refers to a sound from Sounds.txt
|
|
Weapon1 string
|
|
|
|
//Delay in frames of Attack1 sound
|
|
Attack1Delay int
|
|
|
|
//Delay in frames of Weapon1 sound
|
|
Weapon1Delay int
|
|
|
|
//Probability of playing Attack1 sound instead of Weapon1
|
|
Attack1Probability int
|
|
|
|
//Overrides weapon volume from Sounds.txt
|
|
Weapon1Volume int
|
|
|
|
//Ditto, 2 sets of sounds are possible
|
|
Attack2 string
|
|
Weapon2 string
|
|
Attack2Delay int
|
|
Weapon2Delay int
|
|
Attack2Probability int
|
|
Weapon2Volume int
|
|
|
|
//Sound when monster takes a hit, refers to a sound from Sounds.txt
|
|
HitSound string
|
|
|
|
//Sound when monster dies, refers to a sound from Sounds.txt
|
|
DeathSound string
|
|
|
|
//Delay in frames of HitSound
|
|
HitDelay int
|
|
|
|
//Delay in frames of DeathSound
|
|
DeaDelay int
|
|
|
|
//Sound when monster enters skill mode
|
|
Skill1 string
|
|
Skill2 string
|
|
Skill3 string
|
|
Skill4 string
|
|
|
|
//Sound played each loop of the WL animation
|
|
Footstep string
|
|
|
|
//Additional WL animation sound
|
|
FootstepLayer string
|
|
|
|
//Number of footstep sounds played (e.g. 2 for two-legged monsters)
|
|
FootstepCount int
|
|
|
|
//FsOff, possibly delay between footstep sounds
|
|
FootstepOffset int
|
|
|
|
//Probability of playing footstep sound, percentage
|
|
FootstepProbability int
|
|
|
|
//Sound when monster is neutral (also played when walking)
|
|
Neutral string
|
|
|
|
//Delay in frames between neutral sounds
|
|
NeutralTime int
|
|
|
|
//Sound when monster is initialized
|
|
Init string
|
|
|
|
//Sound when monster is encountered
|
|
Taunt string
|
|
|
|
//Sound when monster retreats
|
|
Flee string
|
|
|
|
//The following are related to skills in some way
|
|
//Initial monster animation code (MonMode.txt)
|
|
CvtMo1 string
|
|
//ID of skill
|
|
CvtSk1 string
|
|
//End monster animation code (MonMode.txt)
|
|
CvtTgt1 string
|
|
|
|
CvtMo2 string
|
|
CvtSk2 string
|
|
CvtTgt2 string
|
|
|
|
CvtMo3 string
|
|
CvtSk3 string
|
|
CvtTgt3 string
|
|
}
|
|
|
|
//MonsterSounds stores the MonsterSoundRecords
|
|
var MonsterSounds map[string]*MonsterSoundRecord
|
|
|
|
//LoadMonsterSounds loads MonsterSoundRecords into MonsterSounds
|
|
func LoadMonsterSounds(file []byte) {
|
|
MonsterSounds = make(map[string]*MonsterSoundRecord)
|
|
|
|
d := d2common.LoadDataDictionary(file)
|
|
for d.Next() {
|
|
record := &MonsterSoundRecord{
|
|
ID: d.String("Id"),
|
|
Attack1: d.String("Attack1"),
|
|
Weapon1: d.String("Weapon1"),
|
|
Attack1Delay: d.Number("Att1Del"),
|
|
Weapon1Delay: d.Number("Wea1Del"),
|
|
Attack1Probability: d.Number("Att1Prb"),
|
|
Weapon1Volume: d.Number("Wea1Vol"),
|
|
Attack2: d.String("Attack2"),
|
|
Weapon2: d.String("Weapon2"),
|
|
Attack2Delay: d.Number("Att2Del"),
|
|
Weapon2Delay: d.Number("Wea2Del"),
|
|
Attack2Probability: d.Number("Att2Prb"),
|
|
Weapon2Volume: d.Number("Wea2Vol"),
|
|
Skill1: d.String("Skill1"),
|
|
Skill2: d.String("Skill2"),
|
|
Skill3: d.String("Skill3"),
|
|
Skill4: d.String("Skill4"),
|
|
Footstep: d.String("Footstep"),
|
|
FootstepLayer: d.String("FootstepLayer"),
|
|
FootstepCount: d.Number("FsCnt"),
|
|
FootstepOffset: d.Number("FsOff"),
|
|
FootstepProbability: d.Number("FsPrb"),
|
|
Neutral: d.String("Neutral"),
|
|
NeutralTime: d.Number("NeuTime"),
|
|
Init: d.String("Init"),
|
|
Taunt: d.String("Taunt"),
|
|
Flee: d.String("Flee"),
|
|
CvtMo1: d.String("CvtMo1"),
|
|
CvtMo2: d.String("CvtMo2"),
|
|
CvtMo3: d.String("CvtMo3"),
|
|
CvtSk1: d.String("CvtSk1"),
|
|
CvtSk2: d.String("CvtSk2"),
|
|
CvtSk3: d.String("CvtSk3"),
|
|
CvtTgt1: d.String("CvtTgt1"),
|
|
CvtTgt2: d.String("CvtTgt2"),
|
|
CvtTgt3: d.String("CvtTgt3"),
|
|
}
|
|
MonsterSounds[record.ID] = record
|
|
}
|
|
|
|
if d.Err != nil {
|
|
panic(d.Err)
|
|
}
|
|
|
|
log.Printf("Loaded %d MonsterUniqueModifier records", len(MonsterUniqueModifiers))
|
|
}
|