
ZIP
.ART File
I considered making these 8-sided (because of the bag at the side) but 5 seems to look okay in game.
MObreck, on 30 April 2022 - 12:02 AM, said:
Padlowan, on 19 July 2025 - 03:15 AM, said:
MajorTom 2417, on 31 August 2025 - 12:43 PM, said:
Padlowan, on 02 September 2025 - 09:42 AM, said:
define MP5_FIRE1 251 define MP5_FIRE2 252 definesound MP5_FIRE1 sounds/weapons/mp5/mp5_fire.ogg -128 -64 253 0 0 definesound MP5_FIRE2 sounds/weapons/mp5/mp5_fire.ogg -128 -64 253 0 0 define MP5_FIRE1_FAR 762 define MP5_FIRE2_FAR 763 definesound MP5_FIRE1_FAR sounds/weapons/mp5/mp5_fire_far.ogg -512 0 128 0 -32768 definesound MP5_FIRE2_FAR sounds/weapons/mp5/mp5_fire_far.ogg -512 0 128 0 -32768
defstate enemy_shootmp5
{
// Play alternating sounds so we don't overwhelm the sound system
set ACTORTEMP MP5_FIRE1
set ACTORTEMP2 MP5_FIRE1_FAR
state actor_shoot_sound
}
endsdefstate actor_shoot_sound
{
ifpdistg GUNSHOT_DIST_FAR
set ACTORTEMP ACTORTEMP2
else
ifpdistg GUNSHOT_DIST_CLOSE
{
add ACTORTEMP2 ACTORSOUNDCYC
soundvar ACTORTEMP2
}
soundvar ACTORTEMP
xor ACTORSOUNDCYC 1
}
ends// Distance where actors will play both sounds (in enemy_shared.con) to prevent hard cutover
define GUNSHOT_DIST_CLOSE 16384
// Distance where all gunshots will cut over to distant ones
define GUNSHOT_DIST_FAR 20384
// Captures a given gun fire sound and remaps it based on distance from the source
appendevent EVENT_SOUND
{
switch RETURN
{
case MP5_FIRE1
case MP5_FIRE2
// Failsafe to return original sound
set ACTORTEMP RETURN
ldist ACTORCHECK THISACTOR player[].i
ifg ACTORCHECK GUNSHOT_DIST_FAR
{
switch RETURN
{
case MP5_FIRE1
set ACTORTEMP MP5_FIRE1_FAR
break
case MP5_FIRE2
set ACTORTEMP MP5_FIRE2_FAR
break
default
set ACTORTEMP SPAS12_FIRE2_FAR
break
}
endswitch
}
// Return new sound
set RETURN ACTORTEMP
break
}
endswitch
}
endevent/*
// Dynamic explosion sound handling
*/
define EXPLOSION_DIST_MED 8192
define EXPLOSION_DIST_FAR 16384
// Captures a given explosion sound and remaps it based on distance from the source
appendevent EVENT_SOUND
{
switch RETURN
{
case RPG7_ROCKETEXPLO
case GREN_EXPLO
case EXPLOSION01
case PIPEBOMB_EXPLODE
case RPG_EXPLODE
case LASERTRIP_EXPLODE
dist ACTORCHECK THISACTOR player[].i
// Play tinnitus sound for nearby explosions (but not during startup animation)
ifl ACTORCHECK 2048
ifand player[].gm 4
screensound EXPLOSION_TINNITUS
rand ACTORTEMP 3
add ACTORTEMP EXPLOSION_NEAR1
ifg ACTORCHECK EXPLOSION_DIST_MED
add ACTORTEMP 4
ifg ACTORCHECK EXPLOSION_DIST_FAR
add ACTORTEMP 4
// Do not use dynamic near or medium sounds for weapon explosions
ifl ACTORTEMP EXPLOSION_FAR1
{
ife RETURN RPG7_ROCKETEXPLO
set ACTORTEMP RETURN
else
ife RETURN GREN_EXPLO
set ACTORTEMP RETURN
}
// Handle the hardcoded PIPEBOMB_EXPLODE in the intro animation
ife RETURN PIPEBOMB_EXPLODE
{
ifand player[].gm 4
nullop
else
set ACTORTEMP -1
}
// Return new sound
set RETURN ACTORTEMP
break
}
endswitch
}
endevent