- give SW's sounds proper names and move their definition out of the EXE.

Also handle custom rolloff by the sound engine
This commit is contained in:
Christoph Oelckers 2023-05-26 23:27:46 +02:00
parent 0e64a38812
commit 1cb86af5f9
7 changed files with 2549 additions and 779 deletions

View file

@ -63,6 +63,7 @@ enum SICommands
SI_PitchSet,
SI_PitchSetDuke,
SI_DukeFlags,
SI_SWFlags,
SI_Loop,
SI_BloodRelVol,
SI_Volume,
@ -102,6 +103,7 @@ static const char *SICommandStrings[] =
"$pitchset",
"$pitchsetduke",
"$dukeflags",
"$swflags",
"$loop",
"$bloodrelvol",
"$volume",
@ -157,7 +159,8 @@ static FSoundID S_AddSound(const char* logicalname, int lumpnum, FScanner* sc)
FSoundID S_AddSound(const char* logicalname, const char* lumpname, FScanner* sc)
{
int lump = fileSystem.CheckNumForFullName(lumpname, true, ns_sounds);
if (lump == -1 && sc) sc->ScriptMessage("%s: sound file not found", sc->String);
if (lump == -1 && sc)
sc->ScriptMessage("%s: sound file not found", sc->String);
return S_AddSound(logicalname, lump, sc);
}
@ -468,15 +471,18 @@ static void S_AddSNDINFO (int lump)
case SI_DukeFlags: {
static const char* dukeflags[] = { "LOOP", "MSFX", "TALK", "GLOBAL", nullptr};
// dukesound <logical name> <flag> <flag> <flag>..
// Sets a pitch range for the sound.
// dukeflags <logical name> <flag> <flag> <flag>..
sc.MustGetString();
auto sfxid = soundEngine->FindSoundTentative(sc.String, DEFAULT_LIMIT);
int flags = 0;
while (sc.GetString())
{
int bit = sc.MatchString(dukeflags);
if (bit == -1) break;
if (bit == -1)
{
sc.UnGet();
break;
}
flags |= 1 << bit;
}
if (isDukeEngine())
@ -497,6 +503,40 @@ static void S_AddSNDINFO (int lump)
}
case SI_SWFlags: {
static const char* swflags[] = { "PLAYERVOICE", "PLAYERSPEECH", "LOOP", nullptr };
// swflags <logical name> <flag> <flag> <flag>..
sc.MustGetString();
auto sfxid = soundEngine->FindSoundTentative(sc.String, DEFAULT_LIMIT);
int flags = 0;
while (sc.GetString())
{
int bit = sc.MatchString(swflags);
if (bit == -1)
{
sc.UnGet();
break;
}
flags |= 1 << bit;
}
if (isSWALL())
{
auto sfx = soundEngine->GetWritableSfx(sfxid);
if (sfx->UserData.Size() < 1)
{
sfx->UserData.Resize(1);
}
sfx->UserData[0] = flags;
}
else
{
sc.ScriptMessage("'$swflags' is not available in the current game and will be ignored");
}
break;
}
case SI_Loop: {
// loop <logical name> <start> <end>
// Sets loop points for the given sound in samples. Only really useful for WAV - for Ogg and FLAC use the metadata they can contain.

View file

@ -91,8 +91,8 @@ END_BLD_NS
static void SerializeSession(FSerializer& arc)
{
// In Duke and Blood we now have reliable sound names.
if (isDukeEngine() || isBlood()) arc.SetUniqueSoundNames();
// Only Exhumed still depends in indexed sounds.
if (!isExhumed()) arc.SetUniqueSoundNames();
arc.ReadObjects(false);
SerializeMap(arc);

View file

@ -1399,20 +1399,20 @@ enum
short SoundAngle(int x, int y);
//void PlaySound(int num, short angle, short vol);
int _PlaySound(int num, DSWActor* sprite, PLAYER* player, const DVector3 *const pos, int flags, int channel, EChanFlags sndflags);
int _PlaySound(FSoundID num, DSWActor* sprite, PLAYER* player, const DVector3 *const pos, int flags, int channel, EChanFlags sndflags);
void InitAmbient(int num, DSWActor* actor);
inline void PlaySound(int num, PLAYER* player, int flags, int channel = 8, EChanFlags sndflags = CHANF_NONE)
{
_PlaySound(num, nullptr, player, nullptr, flags | v3df_follow, channel, sndflags);
_PlaySound(soundEngine->FindSoundByResID(num), nullptr, player, nullptr, flags | v3df_follow, channel, sndflags);
}
inline void PlaySound(int num, int flags, int channel = 8, EChanFlags sndflags = CHANF_NONE)
{
_PlaySound(num, nullptr, nullptr, nullptr, flags, channel, sndflags);
_PlaySound(soundEngine->FindSoundByResID(num), nullptr, nullptr, nullptr, flags, channel, sndflags);
}
inline void PlaySound(int num, const DVector3 &pos, int flags, int channel = 8, EChanFlags sndflags = CHANF_NONE)
{
_PlaySound(num, nullptr, nullptr, &pos, flags, channel, sndflags);
_PlaySound(soundEngine->FindSoundByResID(num), nullptr, nullptr, &pos, flags, channel, sndflags);
}
int _PlayerSound(int num, PLAYER* pp);
@ -2073,7 +2073,7 @@ inline bool PLAYER_MOVING(PLAYER* pp)
inline void PlaySound(int num, DSWActor* actor, int flags, int channel = 8, EChanFlags sndflags = CHANF_NONE)
{
_PlaySound(num, actor, nullptr, nullptr, flags, channel, sndflags);
_PlaySound(soundEngine->FindSoundByResID(num), actor, nullptr, nullptr, flags, channel, sndflags);
}
struct ANIM

View file

@ -56,27 +56,13 @@ enum EChanExFlags
CHANEXF_DONTPAN = 0x40000000,
};
// Parentally locked sounds list
int PLocked_Sounds[] =
enum ESoundFlags
{
483,328,334,335,338,478,450,454,452,453,456,457,458,455,460,462,
461,464,466,465,467,463,342,371,254,347,350,432,488,489,490,76,339,
499,500,506,479,480,481,482,78,600,467,548,547,544,546,545,542,541,540,
539,536,529,525,522,521,515,516,612,611,589,625,570,569,567,565,
558,557
SFLAG_PLAYERVOICE = 1,
SFLAG_PLAYERSPEECH = 2,
SFLAG_LOOP = 4
};
//
// Includes digi.h to build the table
//
#define DIGI_TABLE
VOCstruct voc[] =
{
#include "digi.h"
};
#undef DIGI_TABLE
//
// Includes ambient.h to build the table of ambient sounds for game
@ -116,7 +102,7 @@ enum
const int MAXLEVLDIST = 19000; // The higher the number, the further away you can hear sound
short SoundDist(const DVector3& pos, int basedist)
short SoundDist(const DVector3& pos, double basedist)
{
double tx, ty, tz;
double sqrdist;
@ -127,12 +113,12 @@ short SoundDist(const DVector3& pos, int basedist)
if (basedist < 0) // if basedist is negative
{
double decayshift = 2;
int decay = abs(basedist) / DECAY_CONST;
int decay = abs(int(basedist)) / DECAY_CONST;
for (int i = 0; i < decay; i++)
decayshift *= 2;
if (fabs(double(basedist) / decayshift) >= distance)
if (fabs(basedist / decayshift) >= distance)
distance = 0;
else
distance *= decay;
@ -153,38 +139,6 @@ short SoundDist(const DVector3& pos, int basedist)
return short(distance);
}
//==========================================================================
//
// Calculate rolloff info.
//
//==========================================================================
FRolloffInfo GetRolloff(int basedist)
{
FRolloffInfo info;
if (basedist < 0) // if basedist is negative
{
double decayshift = 2;
int decay = abs(basedist) / DECAY_CONST;
for (int i = 0; i < decay; i++)
decayshift *= 2;
info.RolloffType = ROLLOFF_Doom;
info.MinDistance = (float)(-basedist / decayshift / 16.);
info.MaxDistance = MAXLEVLDIST / 16.f / decay;
}
else
{
info.RolloffType = ROLLOFF_Doom;
info.MinDistance = basedist / 16.f;
info.MaxDistance = info.MinDistance + MAXLEVLDIST / 16.f;
}
return info;
}
//==========================================================================
//
//
@ -231,7 +185,6 @@ void StopAmbientSound(void)
void InitAmbient(int num, DSWActor* actor)
{
VOCstruct* vp;
int pitch = 0;
short angle, sound_dist;
int tx, ty, tz;
@ -250,11 +203,12 @@ void InitAmbient(int num, DSWActor* actor)
}
return;
}
auto vnum = FSoundID::fromInt(ambarray[num].diginame);
auto vnum = soundEngine->FindSoundByResID(ambarray[num].diginame);
if (!soundEngine->isValidSoundId(vnum))
{
return; // linked sound does not exist.
}
auto sfx = soundEngine->GetSfx(vnum);
auto amb = new AmbientSound;
amb->spot = actor;
@ -262,7 +216,7 @@ void InitAmbient(int num, DSWActor* actor)
amb->vocIndex = vnum;
amb->ChanFlags = CHANF_TRANSIENT;
if (ambarray[num].ambient_flags & v3df_dontpan) amb->ChanFlags |= EChanFlags::FromInt(CHANEXF_DONTPAN);
if (voc[vnum.index()].voc_flags & vf_loop) amb->ChanFlags |= CHANF_LOOP;
if (sfx->UserData[0] & SFLAG_LOOP) amb->ChanFlags |= CHANF_LOOP;
amb->maxIndex = ambarray[num].maxtics;
amb->curIndex = 0;
amb->intermit = !!(ambarray[num].ambient_flags & v3df_intermit);
@ -296,15 +250,11 @@ static void RestartAmbient(AmbientSound* amb)
{
if (!SoundEnabled()) return;
auto& vp = voc[amb->vocIndex.index()];
auto rolloff = GetRolloff(vp.voc_distance);
int pitch = 0;
if (vp.pitch_hi <= vp.pitch_lo) pitch = vp.pitch_lo;
else pitch = vp.pitch_lo + (StdRandomRange(vp.pitch_hi - vp.pitch_lo));
auto sfx = soundEngine->GetSfx(amb->vocIndex);
amb->curIndex = PlayClock;
if (!soundEngine->IsSourcePlayingSomething(SOURCE_Ambient, amb, CHAN_BODY, amb->vocIndex))
soundEngine->StartSound(SOURCE_Ambient, amb, nullptr, CHAN_BODY, EChanFlags::FromInt(amb->ChanFlags), amb->vocIndex, 1.f, ATTN_NORM, &rolloff, S_ConvertPitch(pitch));
soundEngine->StartSound(SOURCE_Ambient, amb, nullptr, CHAN_BODY, EChanFlags::FromInt(amb->ChanFlags), amb->vocIndex, 1.f, ATTN_NORM);
}
//==========================================================================
//
@ -348,7 +298,7 @@ static void DoTimedSound(AmbientSound* amb)
int ambid = RandomizeAmbientSpecials(amb->ambIndex);
if (ambid != -1)
{
amb->vocIndex = FSoundID::fromInt(ambarray[ambid].diginame);
amb->vocIndex = soundEngine->FindSoundByResID(ambarray[ambid].diginame);
amb->maxIndex = StdRandomRange(ambarray[ambid].maxtics);
}
RestartAmbient(amb);
@ -369,9 +319,10 @@ static void UpdateAmbients()
for (auto& amb : ambients)
{
auto spot = amb->spot;
auto sdist = SoundDist(spot->spr.pos, voc[amb->vocIndex.index()].voc_distance);
auto sfx = soundEngine->GetSfx(amb->vocIndex);
auto sdist = SoundDist(spot->spr.pos, sfx->Rolloff.MinDistance * 16);
if (sdist < 255 && amb->vocIndex.index() == DIGI_WHIPME)
if (sdist < 255 && sfx->ResourceId == DIGI_WHIPME)
{
PLAYER* pp = Player + screenpeek;
if (!FAFcansee(spot->spr.pos, spot->sector(), pp->actor->getPosWithOffsetZ(), pp->cursector))
@ -481,20 +432,15 @@ void InitFX(void)
{
auto &S_sfx = soundEngine->GetSounds();
S_sfx.Resize(countof(voc));
for (size_t i = 1; i < countof(voc); i++)
for (auto& sfx : S_sfx)
{
auto& entry = voc[i];
auto lump = S_LookupSound(entry.name);
if (lump > 0)
if (sfx.UserData.Size() < 1)
{
auto& newsfx = S_sfx[i];
newsfx.name = entry.name;
newsfx.lumpnum = lump;
newsfx.NearLimit = 6;
newsfx.bTentative = false;
sfx.UserData.Resize(1);
sfx.UserData[0] = 0;
}
}
soundEngine->HashSounds();
for (auto& sfx : S_sfx)
{
@ -581,7 +527,8 @@ void SWSoundEngine::CalcPosVel(int type, const void* source, const float pt[3],
{
// For unpanned sounds the volume must be set directly and the position taken from the listener.
*pos = campos;
auto sdist = SoundDist(vPos, voc[chanSound.index()].voc_distance);
auto sfx = soundEngine->GetSfx(chanSound);
auto sdist = SoundDist(vPos, sfx->Rolloff.MinDistance * 16);
if (chan) SetVolume(chan, (255 - sdist) * (1 / 255.f));
}
@ -637,15 +584,15 @@ void GameInterface::UpdateSounds(void)
//
//==========================================================================
int _PlaySound(int num, DSWActor* actor, PLAYER* pp, const DVector3* const ppos, int flags, int channel, EChanFlags cflags)
int _PlaySound(const FSoundID sndid, DSWActor* actor, PLAYER* pp, const DVector3* const ppos, int flags, int channel, EChanFlags cflags)
{
if (Prediction || !SoundEnabled() || !soundEngine->isValidSoundId(FSoundID::fromInt(num)))
if (Prediction || !SoundEnabled() || !soundEngine->isValidSoundId(sndid))
return -1;
auto sps = actor;
auto pos = ppos ? *ppos : DVector3(0, 0, 0);
auto vp = &voc[num];
auto sfx = soundEngine->GetSfx(sndid);
int sourcetype = SOURCE_None;
cflags |= channel == 8 ? CHANF_OVERLAP : CHANF_NONE; // for the default channel we do not want to have sounds stopping each other.
void* source = nullptr;
@ -685,15 +632,10 @@ int _PlaySound(int num, DSWActor* actor, PLAYER* pp, const DVector3* const ppos,
//if (flags & v3df_doppler) cflags |= EChanFlags::FromInt(CHANEXF_NODOPPLER); // intentionally not implemented
//if (flags & v3df_dontpan) cflags |= EChanFlags::FromInt(CHANEXF_DONTPAN); // disabled due to poor use
if (vp->voc_flags & vf_loop) cflags |= CHANF_LOOP; // with the new sound engine these can just be started and don't have to be stopped ever.
if (sfx->UserData[0] & SFLAG_LOOP) cflags |= CHANF_LOOP; // with the new sound engine these can just be started and don't have to be stopped ever.
int pitch = 0;
if (vp->pitch_hi <= vp->pitch_lo) pitch = vp->pitch_lo;
else if (vp->pitch_hi != vp->pitch_lo) pitch = vp->pitch_lo + (StdRandomRange(vp->pitch_hi - vp->pitch_lo));
auto rolloff = GetRolloff(vp->voc_distance);
FVector3 spos = GetSoundPos(pos);
auto chan = soundEngine->StartSound(sourcetype, source, &spos, channel, cflags, FSoundID::fromInt(num), 1.f, ATTN_NORM, &rolloff, S_ConvertPitch(pitch));
auto chan = soundEngine->StartSound(sourcetype, source, &spos, channel, cflags, sndid, 1.f, ATTN_NORM);
if (chan && sourcetype == SOURCE_Unattached) chan->Source = sps; // needed for sound termination.
return 1;
}
@ -811,7 +753,6 @@ void PlaySpriteSound(DSWActor* actor, int attrib_ndx, int flags)
int _PlayerSound(int num, PLAYER* pp)
{
int handle;
VOCstruct* vp;
if (Prediction)
return 0;
@ -821,24 +762,25 @@ int _PlayerSound(int num, PLAYER* pp)
return 0;
}
if (num < 0 || num >= DIGI_MAX || !soundEngine->isValidSoundId(FSoundID::fromInt(num)) || !SoundEnabled())
auto sndid = soundEngine->FindSoundByResID(num);
if (num < 0 || num >= DIGI_MAX || !soundEngine->isValidSoundId(sndid) || !SoundEnabled())
return 0;
if (pp->Flags & (PF_DEAD)) return 0; // You're dead, no talking!
auto sfx = soundEngine->GetSfx(sndid);
// If this is a player voice and he's already yacking, forget it.
vp = &voc[num];
// Not a player voice, bail.
if (vp->priority != PRI_PLAYERVOICE && vp->priority != PRI_PLAYERDEATH && vp->priority != PRI_PLAYERSPEECH)
if (!(sfx->UserData[0] & (SFLAG_PLAYERSPEECH|SFLAG_PLAYERVOICE)))
return 0;
// Don't talk if not allowed to.
if (vp->priority == PRI_PLAYERSPEECH && !snd_speech)
if ((sfx->UserData[0] & SFLAG_PLAYERSPEECH) && !snd_speech)
return 0;
// The surfacing sound should not block other player speech.
if (soundEngine->IsSourcePlayingSomething(SOURCE_Player, pp, CHAN_VOICE, FSoundID::fromInt(DIGI_SURFACE)))
if (soundEngine->IsSourcePlayingSomething(SOURCE_Player, pp, CHAN_VOICE, soundEngine->FindSoundByResID(DIGI_SURFACE)))
{
soundEngine->StopSound(SOURCE_Player, pp, CHAN_VOICE);
}
@ -846,7 +788,7 @@ int _PlayerSound(int num, PLAYER* pp)
// He wasn't talking, but he will be now.
if (!soundEngine->IsSourcePlayingSomething(SOURCE_Player, pp, CHAN_VOICE))
{
soundEngine->StartSound(SOURCE_Player, pp, nullptr, CHAN_VOICE, 0, FSoundID::fromInt(num), 1.f, ATTN_NORM);
soundEngine->StartSound(SOURCE_Player, pp, nullptr, CHAN_VOICE, 0, soundEngine->FindSoundByResID(num), 1.f, ATTN_NORM);
}
return 0;
@ -854,7 +796,7 @@ int _PlayerSound(int num, PLAYER* pp)
void StopPlayerSound(PLAYER* pp, int which)
{
soundEngine->StopSound(SOURCE_Player, pp, CHAN_VOICE, FSoundID::fromInt(which));
soundEngine->StopSound(SOURCE_Player, pp, CHAN_VOICE, soundEngine->FindSoundByResID(which));
}
bool SoundValidAndActive(DSWActor* spr, int channel)
@ -1000,11 +942,11 @@ void StopFX()
DEFINE_ACTION_FUNCTION(_SW, PlaySound)
{
PARAM_PROLOGUE;
PARAM_INT(sound);
PARAM_SOUND(sound);
PARAM_INT(vflags);
PARAM_INT(channel);
PARAM_INT(cflags);
PlaySound(sound, vflags, channel, EChanFlags::FromInt(cflags));
_PlaySound(sound, nullptr, nullptr, nullptr, vflags, channel, EChanFlags::FromInt(cflags));
return 0;
}

File diff suppressed because it is too large Load diff

View file

@ -122,7 +122,7 @@ struct SW native
TFLAG_BUNNYFRIENDLY = 1,
};
native static void PlaySound(int sound, int flags, int channel = CHAN_AUTO, int cflags = 0);
native static void PlaySound(Sound snd, int flags, int channel = CHAN_AUTO, int cflags = 0);
native static void StopSound();
native static bool IsSoundPlaying(int channel); // soundEngine.IsSourcePlayingSomething(SOURCE_None, nullptr, CHAN_VOICE))
native static void PlaySong(int trackid);
@ -309,642 +309,3 @@ struct SWPlayer native
native int Health();
native int MaxUserHealth();
}
struct SWSnd native
{
enum ESounds
{
DIGI_NULL= 0,
DIGI_SWORDSWOOSH= 1,
DIGI_STAR= 2,
DIGI_STARCLINK= 3,
DIGI_STARWIZ= 4,
DIGI_UZIFIRE= 5,
DIGI_RICHOCHET1= 6,
DIGI_RICHOCHET2= 7,
DIGI_REMOVECLIP= 8,
DIGI_REPLACECLIP= 9,
DIGI_SHELL= 10,
DIGI_RIOTFIRE= 11,
DIGI_RIOTFIRE2= 12,
DIGI_RIOTRELOAD= 13,
DIGI_BOLTEXPLODE= 14,
DIGI_BOLTWIZ= 15,
DIGI_30MMFIRE= 16,
DIGI_30MMRELOAD= 17,
DIGI_30MMEXPLODE= 18,
DIGI_30MMWIZ= 19,
DIGI_HEADFIRE= 20,
DIGI_HEADSHOTWIZ= 21,
DIGI_HEADSHOTHIT= 22,
DIGI_MINETHROW= 23,
DIGI_MINEBOUNCE= 24,
DIGI_MINEBLOW= 25,
DIGI_MINEBEEP= 26,
DIGI_HEARTBEAT= 27,
DIGI_HEARTFIRE= 28,
DIGI_HEARTWIZ= 29,
DIGI_MISSLFIRE= 30,
DIGI_MISSLEXP= 31,
DIGI_RFWIZ= 32,
DIGI_NAPFIRE= 33,
DIGI_NAPWIZ= 34,
DIGI_NAPPUFF= 35,
DIGI_MIRVFIRE= 36,
DIGI_MIRVWIZ= 37,
DIGI_SPIRALFIRE= 38,
DIGI_SPIRALWIZ= 39,
DIGI_MAGIC1= 40,
DIGI_MAGIC2= 41,
DIGI_MAGIC3= 42,
DIGI_MAGIC4= 43,
DIGI_MAGIC5= 44,
DIGI_MAGIC6= 45,
DIGI_MAGIC7= 46,
DIGI_SWCLOAKUNCLOAK= 47,
DIGI_DHVOMIT= 48,
DIGI_DHCLUNK= 49,
DIGI_DHSQUISH= 50,
DIGI_NULL_DHSQUISH= 50,
DIGI_PROJECTILELAVAHIT=51,
DIGI_PROJECTILEWATERHIT=52,
DIGI_KEY= 53,
DIGI_ITEM= 54,
DIGI_BIGITEM= 55,
DIGI_BODYFALL1= 56,
DIGI_HITGROUND= 57,
DIGI_BODYSQUISH1= 58,
DIGI_BODYBURN= 59,
DIGI_BODYBURNSCREAM= 60,
DIGI_BODYCRUSHED1= 61,
DIGI_BODYHACKED1= 62,
DIGI_BODYSINGED= 63,
DIGI_DROWN= 64,
DIGI_SCREAM1= 65,
DIGI_SCREAM2= 66,
DIGI_SCREAM3= 67,
DIGI_HIT1= 68,
DIGI_ELECTRICUTE1= 69,
DIGI_REMOVEME= 70,
DIGI_IMPALED= 71,
DIGI_OOF1= 72,
DIGI_ACTORBODYFALL1= 73,
IGI_ACTORHITGROUND= 74,
DIGI_COOLIEEXPLODE= 75,
DIGI_COOLIESCREAM= 76,
DIGI_COOLIEALERT= 77,
DIGI_COOLIEAMBIENT= 78,
DIGI_COOLIEPAIN= 79,
DIGI_CGMATERIALIZE= 80,
DIGI_CGALERT= 81,
DIGI_CGTHIGHBONE= 82,
DIGI_CGAMBIENT= 83,
DIGI_CGPAIN= 84,
DIGI_CGMAGIC= 85,
DIGI_CGMAGICHIT= 86,
DIGI_CGSCREAM= 87,
DIGI_NINJAAMBIENT= 88,
DIGI_NINJASTAR= 89,
DIGI_NINJAPAIN= 90,
DIGI_NINJASCREAM= 91,
DIGI_NINJAALERT= 92,
DIGI_NINJAUZIATTACK= 93,
DIGI_NINJARIOTATTACK= 94,
DIGI_RIPPERAMBIENT= 95,
DIGI_RIPPERALERT= 96,
DIGI_RIPPERATTACK= 97,
DIGI_RIPPERPAIN= 98,
DIGI_RIPPERSCREAM= 99,
DIGI_RIPPERHEARTOUT= 100,
DIGI_GRDAMBIENT= 101,
DIGI_GRDALERT= 102,
DIGI_GRDPAIN= 103,
DIGI_GRDSCREAM= 104,
DIGI_GRDFIREBALL= 105,
DIGI_GRDSWINGAXE= 106,
DIGI_GRDAXEHIT= 107,
DIGI_SPAMBIENT= 108,
DIGI_SPALERT= 109,
DIGI_SPPAIN= 110,
DIGI_SPSCREAM= 111,
DIGI_SPBLADE= 112,
DIGI_SPELEC= 113,
DIGI_SPTELEPORT= 114,
DIGI_AHAMBIENT= 115,
DIGI_AHSCREAM= 116,
DIGI_AHEXPLODE= 117,
DIGI_AHSWOOSH= 118,
DIGI_HORNETBUZZ= 119,
DIGI_HORNETSTING= 120,
DIGI_HORNETPAIN= 121,
DIGI_HORNETDEATH= 122,
DIGI_SERPAMBIENT= 123,
DIGI_SERPALERT= 124,
DIGI_SERPPAIN= 125,
DIGI_SERPSCREAM= 126,
DIGI_SERPDEATHEXPLODE=127,
DIGI_SERPSWORDATTACK= 128,
DIGI_SERPMAGICLAUNCH= 129,
DIGI_SERPSUMMONHEADS= 130,
DIGI_SERPTAUNTYOU= 131,
DIGI_LAVABOSSAMBIENT= 132,
DIGI_LAVABOSSSWIM= 133,
DIGI_LAVABOSSRISE= 134,
DIGI_LAVABOSSALERT= 135,
DIGI_LAVABOSSFLAME= 136,
DIGI_LAVABOSSMETEOR= 137,
DIGI_LAVABOSSMETEXP= 138,
DIGI_LAVABOSSPAIN= 139,
DIGI_LAVABOSSSIZZLE= 140,
DIGI_LAVABOSSEXPLODE= 141,
DIGI_BOATSTART= 142,
DIGI_BOATRUN= 143,
DIGI_BOATSTOP= 144,
DIGI_BOATFIRE= 145,
DIGI_TANKSTART= 146,
DIGI_TANKRUN= 147,
DIGI_TANKSTOP= 148,
DIGI_TANKIDLE= 149,
DIGI_TANKFIRE= 150,
DIGI_TRUKRUN= 151,
DIGI_TRUKIDLE= 152,
DIGI_SUBRUN= 153,
DIGI_SUBIDLE= 154,
DIGI_SUBDOOR= 155,
DIGI_BOMBRFLYING= 156,
DIGI_BOMBRDROPBOMB= 157,
DIGI_BUBBLES= 158,
DIGI_CHAIN= 159,
DIGI_CHAINDOOR= 160,
DIGI_CRICKETS= 161,
DIGI_WOODDOOROPEN= 162,
DIGI_WOODDOORCLOSE= 163,
DIGI_METALDOOROPEN= 164,
DIGI_METALDOORCLOSE= 165,
DIGI_SLIDEDOOROPEN= 166,
DIGI_SLIDEDOORCLOSE= 167,
DIGI_STONEDOOROPEN= 168,
DIGI_STONEDOORCLOSE= 169,
DIGI_SQUEAKYDOOROPEN= 170,
DIGI_SQUEAKYDOORCLOSE=171,
DIGI_DRILL= 172,
DIGI_CAVEDRIP1= 173,
DIGI_CAVEDRIP2= 174,
DIGI_DRIP= 175,
DIGI_WATERFALL1= 176,
DIGI_WATERFALL2= 177,
DIGI_WATERFLOW1= 178,
DIGI_WATERFLOW2= 179,
DIGI_ELEVATOR= 180,
DIGI_SMALLEXP= 181,
DIGI_MEDIUMEXP= 182,
DIGI_LARGEEXP= 183,
DIGI_HUGEEXP= 184,
DIGI_NULL_HUGEEXP= 184,
DIGI_FIRE1= 185,
DIGI_FIRE2= 186,
DIGI_FIREBALL1= 187,
DIGI_FIREBALL2= 188,
DIGI_GEAR1= 189,
DIGI_GONG= 190,
DIGI_LAVAFLOW1= 191,
DIGI_MACHINE1= 192,
DIGI_MUBBUBBLES1= 193,
DIGI_EARTHQUAKE= 194,
DIGI_SEWERFLOW1= 195,
DIGI_SPLASH1= 196,
DIGI_STEAM1= 197,
DIGI_VOLCANOSTEAM1= 198,
DIGI_STOMPER= 199,
DIGI_SWAMP= 200,
DIGI_REGULARSWITCH= 201,
DIGI_BIGSWITCH= 202,
DIGI_STONESWITCH= 203,
DIGI_GLASSSWITCH= 204,
DIGI_HUGESWITCH= 205,
DIGI_THUNDER= 206,
DIGI_TELEPORT= 207,
DIGI_UNDERWATER= 208,
DIGI_UNLOCK= 209,
DIGI_SQUEAKYVALVE= 210,
DIGI_VOID1= 211,
DIGI_VOID2= 212,
DIGI_VOID3= 213,
DIGI_VOID4= 214,
DIGI_VOID5= 215,
DIGI_ERUPTION= 216,
DIGI_VOLCANOPROJECTILE= 217,
DIGI_LIGHTWIND= 218,
DIGI_STRONGWIND= 219,
DIGI_BREAKINGWOOD= 220,
DIGI_BREAKSTONES= 221,
DIGI_ENGROOM1= 222,
DIGI_ENGROOM2= 223,
DIGI_ENGROOM3= 224,
DIGI_ENGROOM4= 225,
DIGI_ENGROOM5= 226,
DIGI_BREAKGLASS= 227,
DIGI_MUSSTING= 228,
DIGI_HELI= 229,
DIGI_BIGHART= 230,
DIGI_WIND4= 231,
DIGI_SPOOKY1= 232,
DIGI_DRILL1= 233,
DIGI_JET= 234,
DIGI_DRUMCHANT= 235,
DIGI_BUZZZ= 236,
DIGI_CHOP_CLICK= 237,
DIGI_SWORD_UP= 238,
DIGI_UZI_UP= 239,
DIGI_SHOTGUN_UP= 240,
DIGI_ROCKET_UP= 241,
DIGI_GRENADE_UP= 242,
DIGI_RAIL_UP= 243,
DIGI_MINE_UP= 244,
DIGI_TAUNTAI1= 246,
DIGI_TAUNTAI2= 247,
DIGI_TAUNTAI3= 248,
DIGI_TAUNTAI4= 249,
DIGI_TAUNTAI5= 250,
DIGI_TAUNTAI6= 251,
DIGI_TAUNTAI7= 252,
DIGI_TAUNTAI8= 253,
DIGI_TAUNTAI9= 254,
DIGI_TAUNTAI10= 255,
DIGI_PLAYERPAIN1= 256,
DIGI_PLAYERPAIN2= 257,
DIGI_PLAYERPAIN3= 258,
DIGI_PLAYERPAIN4= 259,
DIGI_PLAYERPAIN5= 260,
DIGI_PLAYERYELL1= 261,
DIGI_PLAYERYELL2= 262,
DIGI_PLAYERYELL3= 263,
DIGI_SEARCHWALL= 264,
DIGI_NOURINAL= 265,
DIGI_FALLSCREAM= 266,
DIGI_GOTITEM1= 267,
DIGI_LASTPLAYERVOICE= 268,
DIGI_RAILFIRE= 269,
DIGI_NULL_RAILFIRE= 269,
DIGI_RAILREADY= 270,
DIGI_RAILPWRUP= 271,
DIGI_NUCLEAREXP= 272,
DIGI_NUKESTDBY= 273,
DIGI_NUKECDOWN= 274,
DIGI_NUKEREADY= 275,
DIGI_CHEMGAS= 276,
DIGI_CHEMBOUNCE= 277,
DIGI_THROW= 278,
DIGI_PULL= 279,
DIGI_MINEARM= 280,
DIGI_HEARTDOWN= 281,
DIGI_TOOLBOX= 282,
DIGI_NULL_TOOLBOX= 282,
DIGI_GASPOP= 283,
DIGI_40MMBNCE= 284,
DIGI_BURGLARALARM= 285,
DIGI_CARALARM= 286,
DIGI_CARALARMOFF= 287,
DIGI_CALTROPS= 288,
DIGI_NIGHTON= 289,
DIGI_NIGHTOFF= 290,
DIGI_SHOTSHELLSPENT= 291,
DIGI_BUSSKID= 292,
DIGI_BUSCRASH= 293,
DIGI_BUSENGINE= 294,
DIGI_ARMORHIT= 295,
DIGI_ASIREN1= 296,
DIGI_FIRETRK1= 297,
DIGI_TRAFFIC1= 298,
DIGI_TRAFFIC2= 299,
DIGI_TRAFFIC3= 300,
DIGI_TRAFFIC4= 301,
DIGI_TRAFFIC5= 302,
DIGI_TRAFFIC6= 303,
DIGI_HELI1= 304,
DIGI_JET1= 305,
DIGI_MOTO1= 306,
DIGI_MOTO2= 307,
DIGI_NEON1= 308,
DIGI_SUBWAY= 309,
DIGI_TRAIN1= 310,
DIGI_COINS= 311,
DIGI_SWORDCLANK= 312,
DIGI_RIPPER2AMBIENT= 313,
DIGI_RIPPER2ALERT= 314,
DIGI_RIPPER2ATTACK= 315,
DIGI_RIPPER2PAIN= 316,
DIGI_RIPPER2SCREAM= 317,
DIGI_RIPPER2HEARTOUT=318,
DIGI_M60= 319,
DIGI_SUMOSCREAM= 320,
DIGI_SUMOALERT= 321,
DIGI_SUMOAMBIENT= 322,
DIGI_SUMOPAIN= 323,
DIGI_RAMUNLOCK= 324,
DIGI_CARDUNLOCK= 325,
DIGI_ANCIENTSECRET= 326,
DIGI_AMERICANDRIVER= 327,
DIGI_DRIVELIKEBABOON= 328,
DIGI_BURNBABY= 329,
DIGI_LIKEBIGWEAPONS= 330,
DIGI_COWABUNGA= 331,
DIGI_NOCHARADE= 332,
DIGI_TIMETODIE= 333,
DIGI_EATTHIS= 334,
DIGI_FIRECRACKERUPASS=335,
DIGI_HOLYCOW= 336,
DIGI_HOLYPEICESOFCOW= 337,
DIGI_HOLYSHIT= 338,
DIGI_HOLYPEICESOFSHIT=339,
DIGI_PAYINGATTENTION= 340,
DIGI_EVERYBODYDEAD= 341,
DIGI_KUNGFU= 342,
DIGI_HOWYOULIKEMOVE= 343,
DIGI_NOMESSWITHWANG= 344,
DIGI_RAWREVENGE= 345,
DIGI_YOULOOKSTUPID= 346,
DIGI_TINYDICK= 347,
DIGI_NOTOURNAMENT= 348,
DIGI_WHOWANTSWANG= 349,
DIGI_MOVELIKEYAK= 350,
DIGI_ALLINREFLEXES= 351,
DIGI_EVADEFOREVER= 352,
DIGI_MRFLY= 353,
DIGI_SHISEISI= 354,
DIGI_LIKEFIREWORKS= 355,
DIGI_LIKEHIROSHIMA= 356,
DIGI_LIKENAGASAKI= 357,
DIGI_LIKEPEARL= 358,
DIGI_IAMSHADOW= 359,
DIGI_ILIKENUKES= 360,
DIGI_ILIKESWORD= 361,
DIGI_ILIKESHURIKEN= 362,
DIGI_BADLUCK= 363,
DIGI_NOMOVIEMRCHAN= 364,
DIGI_REALLIFEMRCHAN= 365,
DIGI_NOLIKEMUSIC= 366,
DIGI_NODIFFERENCE= 367,
DIGI_NOFEAR= 368,
DIGI_NOPAIN= 369,
DIGI_NOREPAIRMAN= 370,
DIGI_SONOFABITCH= 371,
DIGI_PAINFORWEAK= 372,
DIGI_GOSPEEDY= 373,
DIGI_GETTINGSTIFF= 374,
DIGI_TOMBRAIDER= 375,
DIGI_STICKYGOTU1= 376,
DIGI_STICKYGOTU2= 377,
DIGI_STICKYGOTU3= 378,
DIGI_STICKYGOTU4= 379,
DIGI_SWORDGOTU1= 380,
DIGI_SWORDGOTU2= 381,
DIGI_SWORDGOTU3= 382,
DIGI_HURTBAD1= 383,
DIGI_HURTBAD2= 384,
DIGI_HURTBAD3= 385,
DIGI_HURTBAD4= 386,
DIGI_HURTBAD5= 387,
DIGI_TOILETGIRLSCREAM= 388,
DIGI_TOILETGIRLALERT= 389,
DIGI_TOILETGIRLAMBIENT=390,
DIGI_TOILETGIRLPAIN= 391,
DIGI_TOILETGIRLTAUNT1= 392,
DIGI_TOILETGIRLTAUNT2= 393,
DIGI_SUMOFART= 394,
DIGI_GIBS1= 395,
DIGI_GIBS2= 396,
DIGI_BIRDS1= 397,
DIGI_BIRDS2= 398,
DIGI_TOILET= 399,
DIGI_FORKLIFTIDLE= 400,
DIGI_FORKLIFTRUN= 401,
DIGI_TOYCAR= 402,
DIGI_UZIMATIC= 403,
DIGI_COMPUTERPOWER= 404,
DIGI_GENERATORON= 405,
DIGI_GENERATORRUN= 406,
DIGI_BIGDRILL= 407,
DIGI_FLUORLIGHT= 408,
DIGI_AMOEBA= 409,
DIGI_BODYFALL2= 410,
DIGI_GIBS3= 411,
DIGI_NINJACHOKE= 412,
DIGI_TRAIN3= 413,
DIGI_TRAINR02= 414,
DIGI_TRAIN8= 415,
DIGI_TRASHLID= 416,
DIGI_GETMEDKIT= 417,
DIGI_AHH= 418,
DIGI_PALARM= 419,
DIGI_PFLIP= 420,
DIGI_PROLL1= 421,
DIGI_PROLL2= 422,
DIGI_PROLL3= 423,
DIGI_BUNNYATTACK= 424,
DIGI_BUNNYDIE1= 425,
DIGI_BUNNYDIE2= 426,
DIGI_BUNNYDIE3= 427,
DIGI_BUNNYAMBIENT= 428,
DIGI_STONESLIDE= 429,
DIGI_NINJAINHALF= 430,
DIGI_RIPPER2CHEST= 431,
DIGI_WHIPME= 432,
DIGI_ENDLEV= 433,
DIGI_MDALARM= 434,
DIGI_BREAKMETAL= 435,
DIGI_BREAKDEBRIS= 436,
DIGI_BREAKMARBELS= 437,
DIGI_BANZAI= 438,
DIGI_HAHA1= 439,
DIGI_HAHA2= 440,
DIGI_HAHA3= 441,
DIGI_ITEM_SPAWN= 442,
DIGI_NOREPAIRMAN2= 443,
DIGI_NOPOWER= 444,
DIGI_DOUBLEUZI= 445,
DIGI_NOTORDBUNNY= 446,
DIGI_CANBEONLYONE= 447,
DIGI_MIRROR1= 448,
DIGI_MIRROR2= 449,
DIGI_HITTINGWALLS= 450,
DIGI_GOTRAILGUN= 451,
DIGI_RABBITHUMP1= 452,
DIGI_RABBITHUMP2= 453,
DIGI_RABBITHUMP3= 454,
DIGI_RABBITHUMP4= 455,
DIGI_FAGRABBIT1= 456,
DIGI_FAGRABBIT2= 457,
DIGI_FAGRABBIT3= 458,
DIGI_STINKLIKEBABBOON= 459,
DIGI_WHATYOUEATBABY= 460,
DIGI_WHATDIEDUPTHERE= 461,
DIGI_YOUGOPOOPOO= 462,
DIGI_PULLMYFINGER= 463,
DIGI_SOAPYOUGOOD= 464,
DIGI_WASHWANG= 465,
DIGI_DROPSOAP= 466,
DIGI_REALTITS= 467,
DIGI_MSTRLEEP= 468,
DIGI_SEEKLEEPADVICE= 469,
DIGI_AVENGELEEPDEATH= 470,
DIGI_LEEPGHOST= 471,
DIGI_DOOR1= 472,
DIGI_DOOR2= 473,
DIGI_DOOR3= 474,
DIGI_FLAGWAVE= 475,
DIGI_SURFACE= 476,
DIGI_GASHURT= 477,
DIGI_BONUS_GRAB= 478,
DIGI_ANIMECRY= 479,
DIGI_ANIMESING1= 480,
DIGI_ANIMEMAD1= 481,
DIGI_ANIMESING2= 482,
DIGI_ANIMEMAD2= 483,
DIGI_PLAYER_TELEPORT= 484,
DIGI_INTRO_SLASH= 485,
DIGI_WARNING= 486,
DIGI_INTRO_WHIRL= 487,
DIGI_TOILETGIRLFART1= 488,
DIGI_TOILETGIRLFART2= 489,
DIGI_TOILETGIRLFART3= 490,
DIGI_WINDCHIMES= 491,
DIGI_MADATCARPET= 492,
DIGI_JUMPONCARPET= 493,
DIGI_USEBROKENVEHICLE= 494,
DIGI_STEPONCALTROPS= 495,
DIGI_WANGSEESERP= 496,
DIGI_SERPTAUNTWANG= 497,
DIGI_WANGTAUNTSERP1= 498,
DIGI_WANGTAUNTSERP2= 499,
DIGI_WANGORDER1= 500,
DIGI_WANGORDER2= 501,
DIGI_WANGDROWNING= 502,
DIGI_ZILLAREGARDS= 503,
DIGI_PMESSAGE= 504,
DIGI_SHAREND_UGLY1= 505,
DIGI_SHAREND_UGLY2= 506,
DIGI_SHAREND_TELEPORT= 507,
DIGI_HOTHEADSWITCH= 508,
DIGI_BOATCREAK= 509,
DIGI_BOATRUN2= 510,
DIGI_BOATIDLE= 511,
DIGI_SHIPBELL= 512,
DIGI_FOGHORN= 513,
DIGI_CANNON= 514,
DIGI_JG41001= 515,
DIGI_JG41012= 516,
DIGI_JG41018= 517,
DIGI_JG41028= 518,
DIGI_JG41048= 519,
DIGI_JG41052= 520,
DIGI_JG41058= 521,
DIGI_JG41060= 522,
DIGI_JG41075= 523,
DIGI_JG42004= 524,
DIGI_JG42019= 525,
DIGI_JG42021= 526,
DIGI_JG42028= 527,
DIGI_JG42033= 528,
DIGI_JG42034= 529,
DIGI_JG42050= 530,
DIGI_JG42056= 531,
DIGI_JG42061= 532,
DIGI_JG43004= 533,
DIGI_JG43015= 534,
DIGI_JG43019= 535,
DIGI_JG43021= 536,
DIGI_JG44011= 537,
DIGI_JG44014= 538,
DIGI_JG44027= 539,
DIGI_JG44038= 540,
DIGI_JG44039= 541,
DIGI_JG44048= 542,
DIGI_JG44052= 543,
DIGI_JG45014= 544,
DIGI_JG44068= 545,
DIGI_JG45010= 546,
DIGI_JG45018= 547,
DIGI_JG45030= 548,
DIGI_JG45033= 549,
DIGI_JG45043= 550,
DIGI_JG45053= 551,
DIGI_JG45067= 552,
DIGI_JG46005= 553,
DIGI_JG46010= 554,
DIGI_LANI049= 555,
DIGI_LANI051= 556,
DIGI_LANI052= 557,
DIGI_LANI054= 558,
DIGI_LANI060= 559,
DIGI_LANI063= 560,
DIGI_LANI065= 561,
DIGI_LANI066= 562,
DIGI_LANI073= 563,
DIGI_LANI075= 564,
DIGI_LANI077= 565,
DIGI_LANI079= 566,
DIGI_LANI089= 567,
DIGI_LANI091= 568,
DIGI_LANI093= 569,
DIGI_LANI095= 570,
DIGI_VENTWALK= 571,
DIGI_CARWALK= 572,
DIGI_JETSOAR= 573,
DIGI_VACUUM= 574,
DIGI_GIRLNINJAALERTT= 575,
DIGI_GIRLNINJASCREAM= 576,
DIGI_GIRLNINJAALERT= 577,
DIGI_PRUNECACKLE= 578,
DIGI_PRUNECACKLE2= 579,
DIGI_PRUNECACKLE3= 580,
DIGI_SUMOSTOMP= 581,
DIGI_VATOR= 582,
DIGI_JG9009= 583,
DIGI_Z16004= 584,
DIGI_Z16012= 585,
DIGI_Z16022= 586,
DIGI_Z16027= 587,
DIGI_JG93030= 588,
DIGI_JG94002= 589,
DIGI_Z17010= 590,
DIGI_Z17052= 591,
DIGI_Z17025= 592,
DIGI_ML25014= 593,
DIGI_ML250101= 594,
DIGI_JG9022= 595,
DIGI_JG9032= 596,
DIGI_JG9038= 597,
DIGI_JG9055= 598,
DIGI_JG9060= 599,
DIGI_JG92055= 600,
DIGI_ML25032= 601,
DIGI_JG92036= 602,
DIGI_JG92042= 603,
DIGI_ML26001= 604,
DIGI_JG93000= 605,
DIGI_JG93011= 606,
DIGI_JG93018= 607,
DIGI_JG93023= 608,
DIGI_ML26008= 609,
DIGI_ML26011= 610,
DIGI_JG94007= 611,
DIGI_JG94024= 612,
DIGI_JG94039= 613,
DIGI_JG95012= 614,
DIGI_ZILLASTOMP= 615,
DIGI_ZC1= 616,
DIGI_ZC2= 617,
DIGI_ZC3= 618,
DIGI_ZC4= 619,
DIGI_ZC5= 620,
DIGI_ZC6= 621,
DIGI_ZC7= 622,
DIGI_ZC8= 623,
DIGI_ZC9= 624,
DIGI_Z16043= 625,
}
}

View file

@ -89,7 +89,7 @@ class SWCreditsScreen : SkippableScreenJob
override void Start()
{
// Lo Wang feel like singing!
SW.PlaySound(SWSnd.DIGI_JG95012, SW.v3df_none, CHAN_VOICE, CHANF_UI);
SW.PlaySound("JG95012", SW.v3df_none, CHAN_VOICE, CHANF_UI);
}
override void OnTick()
@ -190,13 +190,13 @@ class SWSummaryScreen : SummaryScreenBase
switch (random(0, 2))
{
case 0:
anim.Init("BONUS_PUNCH%02d", 15, SWSnd.DIGI_PLAYERYELL3, 8);
anim.Init("BONUS_PUNCH%02d", 15, "PLAYERYELL3", 8);
break;
case 1:
anim.Init("BONUS_KICK%02d", 15, SWSnd.DIGI_PLAYERYELL2, 8);
anim.Init("BONUS_KICK%02d", 15, "PLAYERYELL2", 8);
break;
case 2:
anim.Init("BONUS_GRAB%02d", 15, SWSnd.DIGI_BONUS_GRAB, 20);
anim.Init("BONUS_GRAB%02d", 15, "BONUS_GRAB", 20);
break;
}
rest[0] = TexMan.CheckForTexture("BONUS_PUNCH00", TexMan.Type_Any);
@ -377,9 +377,9 @@ class SWCutscenes ui
SW.PlaySong(0);
Array<int> soundinfo;
soundinfo.Pushv(
1, SWSnd.DIGI_NOMESSWITHWANG,
5, SWSnd.DIGI_INTRO_SLASH,
15, SWSnd.DIGI_INTRO_WHIRL);
1, int(Sound("NOMESSWITHWANG")),
5, int(Sound("INTRO_SLASH")),
15,int(Sound("INTRO_WHIRL")));
runner.Append(new("SWDRealmsScreen").Init());
runner.Append(MoviePlayerJob.CreateWithSoundinfo("sw.anm", soundinfo, MoviePlayer.NOSOUNDCUTOFF | MoviePlayer.NOMUSICCUTOFF, 8, 360, 128));
}
@ -395,11 +395,11 @@ class SWCutscenes ui
{
Array<int> soundinfo;
soundinfo.Pushv(
1, SWSnd.DIGI_SERPTAUNTWANG,
16, SWSnd.DIGI_SHAREND_TELEPORT,
35, SWSnd.DIGI_WANGTAUNTSERP1,
51, SWSnd.DIGI_SHAREND_UGLY1,
64, SWSnd.DIGI_SHAREND_UGLY2);
1, int(Sound("SERPTAUNTWANG")),
16, int(Sound("SHAREND_TELEPORT")),
35, int(Sound("WANGTAUNTSERP1")),
51, int(Sound("SHAREND_UGLY1")),
64, int(Sound("SHAREND_UGLY2")));
runner.Append(MoviePlayerJob.CreateWithSoundinfo("swend.anm", soundinfo, MoviePlayer.NOSOUNDCUTOFF, 16, 16, 140));
}
@ -413,10 +413,10 @@ class SWCutscenes ui
{
Array<int> soundinfo;
soundinfo.Pushv(
2, SWSnd.DIGI_JG41012,
30, SWSnd.DIGI_HOTHEADSWITCH,
42, SWSnd.DIGI_HOTHEADSWITCH,
59, SWSnd.DIGI_JG41028);
2, int(Sound("JG41012")),
30, int(Sound("HOTHEADSWITCH")),
42, int(Sound("HOTHEADSWITCH")),
59, int(Sound("JG41028")));
runner.Append(MoviePlayerJob.CreateWithSoundinfo("sumocinm.anm", soundinfo, MoviePlayer.NOSOUNDCUTOFF, 10, 40, 130));
}
@ -430,22 +430,22 @@ class SWCutscenes ui
{
Array<int> soundinfo;
soundinfo.Pushv(
1, SWSnd.DIGI_ZC1,
5, SWSnd.DIGI_JG94024,
14, SWSnd.DIGI_ZC2,
30, SWSnd.DIGI_ZC3,
32, SWSnd.DIGI_ZC4,
37, SWSnd.DIGI_ZC5,
63, SWSnd.DIGI_Z16043,
63, SWSnd.DIGI_ZC6,
63, SWSnd.DIGI_ZC7,
72, SWSnd.DIGI_ZC7,
73, SWSnd.DIGI_ZC4,
77, SWSnd.DIGI_ZC5,
87, SWSnd.DIGI_ZC8,
103, SWSnd.DIGI_ZC7,
108, SWSnd.DIGI_ZC9,
120, SWSnd.DIGI_JG94039);
1, int(Sound("ZC1")),
5, int(Sound("JG94024")),
14, int(Sound("ZC2")),
30, int(Sound("ZC3")),
32, int(Sound("ZC4")),
37, int(Sound("ZC5")),
63, int(Sound("Z16043")),
63, int(Sound("ZC6")),
63, int(Sound("ZC7")),
72, int(Sound("ZC7")),
73, int(Sound("ZC4")),
77, int(Sound("ZC5")),
87, int(Sound("ZC8")),
103,int(Sound("ZC7")),
108,int(Sound("ZC9")),
120,int(Sound("JG94039")));
runner.Append(MoviePlayerJob.CreateWithSoundinfo("zfcin.anm", soundinfo, MoviePlayer.NOSOUNDCUTOFF, 16, 16, 140));
runner.Append(new("SWCreditsScreen").Init());
}