#[v1.4.0] CASSIE Replacement

1 messages · Page 1 of 1 (latest)

short smelt
#

Plugin to modify or replace CASSIE.

Uses speakertoys in conjunction with empty CASSIE messages (Contains only .s) to imitate CASSIE with custom audio files. Audio files provided must be in the .ogg format, have a rate of 48 khz & be mono (stereo causes the sound effects to play at about half speed)
LabAPI and EXILED versions both available in the latest release (EXILED exclusive prior)

DEPENDENCIES:
https://github.com/Killers0992/AudioPlayerApi/ (Has only one version that can be loaded either in EXILED or LabAPI, please load this in LabAPI)

Source:
https://github.com/icedchai/CassieReplacement
v1.4.0 download:
https://github.com/icedchai/CassieReplacement/releases/tag/v1.4.0

Config guide:

base_directories:
-
# Path of this directory.
  path: full\path\to\folder
  # Prefix to put in the name of each registered clip from this directory.
  prefix: word_
  # The amount of time each clip in this directory may bleed into the next.
  bleed_time: 5
# This is the volume of the speaker making CASSIE's words. Please adjust so that words spoken are loud enough to overpower the PA noise, but not so loud it clips or hurts to listen to.
cassie_volume: 1```
bleed_time essentially means that the next word will start this number of seconds before the current word ends.

DEMO VIDEOS
1. CASSIE AI line graciously provided to me by CzariYT
2. My friend's voicelines followed by CASSIE voicelines (those ones had to be manually processed, this plugin does not play vanilla CASSIE lines on its own.)
GitHub

AudioPlayerApi is a dependency for plugins which adds ability to play ogg files in any position on map. - Killers0992/AudioPlayerApi

GitHub

new features:

prefix_(word) and suffix_(word) for messages (eg. prefix_j one two three suffix_k four five six prefix_ suffix_ seven eight nine is processed into jone jtwo jthree jfourk jfivek jsix...

worldly elbow
short smelt
#

No

left tree
#

can you implement this into the server as a cassie for example i make a custom voicing for mtf wave spawn and put it in and when mtf spawns it can plays the sound of me voicing it?

short smelt
left tree
#

let's go 😮

short smelt
#

thats how you let my plugin know to take over

past quarry
short smelt
#

this plugin can theoretically be used to play music if you define it as a cassie word

short smelt
#

yes

#

But it will be broadcast across the entire facility

past quarry
#

Golden plugin

#

Finally can play "The only thing they fear is you" when someone is clutching

#

But it doesn't matter if it heard across the entire facility

#

For me

short smelt
#

if you need help setting it up I will be available

#

If youre playing music i recommend to play the word as a silent announcement

past quarry
#

Alright, i will message you if i get stuck somewhere

rain ocean
#

where 14.1

short smelt
#

It is for 14.1

native pollen
# short smelt It is for 14.1

[2025-06-05 19:17:15.159 +02:00] [ERROR] [Exiled.Loader] Error while initializing plugin CassieReplacement (at )! System.TypeLoadException: Could not load type of field 'CassieReplacement.Plugin:<CassiePlayer>k__BackingField' (0) due to: Could not load file or assembly 'AudioPlayerApi, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies.
at System.Reflection.RuntimeConstructorInfo.InternalInvoke (System.Object obj, System.Object[] parameters, System.Boolean wrapExceptions) [0x00029] in <069d7b80a3914a08b6825aa362b07f5e>:0
at System.Reflection.RuntimeConstructorInfo.DoInvoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00086] in <069d7b80a3914a08b6825aa362b07f5e>:0
at System.Reflection.RuntimeConstructorInfo.Invoke (System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00000] in <069d7b80a3914a08b6825aa362b07f5e>:0
at System.Reflection.ConstructorInfo.Invoke (System.Object[] parameters) [0x00000] in <069d7b80a3914a08b6825aa362b07f5e>:0
at Exiled.Loader.Loader.CreatePlugin (System.Reflection.Assembly assembly) [0x000c8] in <2c587ff547f14947a5f065027b80e14d>:0

short smelt
#

You need to install AudioPlayerApi

native pollen
#

where is that

short smelt
#

Its linked, hold on

#

also I'm working on an update with vast improvements

#

@native pollen

native pollen
short smelt
#

Its for both, you can install it in whichever one youre using

#

i assume youre using the exiled edition

native pollen
#

yh

short smelt
#

so install the audioplayerapi and its dependencies in exiled plugins folder

native pollen
#

holly why is there 7 dependency Pause

#

do i need all of em

#

Can I use this plugin for like spawn waves? with diffrent text colors aswell? Hmmm

#

-# @short smelt

short smelt
short smelt
#

hold on let me do something rq

native pollen
#

how Pause

short smelt
#

for colors do <color=red> in subtitles

#

here is a prototype of the dev branch, its good enough for use i just didnt get to making a release for it

#

it has a few extra features that i didnt want to add but its basically done

native pollen
#

I dont get it how this works- pepesob

short smelt
#

its in configs

short smelt
#

https://github.com/icedchai/CassieReplacement/releases/tag/v1.6.0-alpha2

Changes

Added Jams and auto number parsing!

planned features:

suffix detection (plural, past present and future tense)
number parsing configuration (custom parsers for other languages)

AudioPlayerApi needed

This build is for EXILED, the LabAPI version is untested but should work

GitHub

Changes
Added Jams and auto number parsing!
planned features:
suffix detection (plural, past present and future tense)
number parsing configuration (custom parsers for other languages)
AudioPlayerA...

GitHub

Recompille for 14.1.0

short smelt
worldly elbow
#

Oh

worldly elbow
short smelt
#

like "-ing", "-ed", "-s"

worldly elbow
short smelt
#

yes

#

yield is added

#

that might have been undocumented

short smelt
#

https://github.com/icedchai/CassieReplacement/releases/tag/v1.6.0

  • Added noparse tag that allows CASSIE to say entirely basegame sentences
  • Added overrides for LabAPI
  • Added configs for speaker creation
  • Added JAM, PITCH, YIELD support
  • Added Number Parsing
GitHub

Added noparse tag that allows CASSIE to say entirely basegame sentences
Added overrides for LabAPI
Added configs for speaker creation
Added JAM, PITCH, YIELD support
Added Number Parsing

Full Chan...

vital pecan
#

It’s over

#

Everyone will feel it

short smelt
vital pecan
#

jk

#

just gonna use some old CB lines probally

#

cool plugin

short smelt
#

thanks

copper sphinx
vital pecan
copper sphinx
#

I haven’t looked thru the config but does it change full sentences like ntf wave ?

copper sphinx
#

Nice

short smelt
#

it cannot change alpha warhead or decon though

#

those two are technically not cassie

copper sphinx
short smelt
#

theyre just audio files that play

copper sphinx
#

ah

short smelt
#

and they add a cassie subtitle

copper sphinx
#

and you cant, ignore or force another audio file before it ?

short smelt
#

for alpha warhead, i might be able to just entirely disable the warhead and just turn all the lights red, and at the end of the countdown i just nuke the facility myself. not sure about decon, i heard there is a more native function to disable cassie for that

copper sphinx
vital pecan
#

hire me

#

jk

stoic jay
#

What AI did ur friend use to generate the C.A.S.S.I.E Voice?

long yarrow
#

Hey! Not really accusstomed with SCP:SL modding stuff, so bear with me:
Is there any particular reason why the decontamination announcement isn't overridden as well? Like I said I don't know much about the modding scene for this particular game but I do know C# & how to use harmony

empty goblet
short smelt
#

^

#

same with nuke

#

if i am made aware of a new functionality though i will see what i can do

rough steppe
short smelt
#

just make it spatial

rough steppe
#

Well i don't mean a global audioplayer

#

I mean an AudioPlayer which is created via position and doesn't move. But still isn't global

#

You understand?

#

Or to make it understandable:
How do I bind an Audioplayer to a specific Location on the Map?

short smelt
#

yeah, audioplayers themselves are global, but they dont make noise on their own

#

they send sounds to Speaker objects

#

which exist in space on the map

#

the Speaker can be made global, or to be spatial (which means it makes a noise from a specific position)

rough steppe
#

It would be really helpful If you Had an code example for me to understand

rough steppe
#

Oh now i understand thank you so much

#

(i literally killed my brain thinking of ways how it may works.)

#

Well.... Gonna Work on it tmrw thanks tho