diff --git a/language.def_voice b/language.def_voice index 7036e61f1..be6a8707c 100644 --- a/language.def_voice +++ b/language.def_voice @@ -476,6 +476,32 @@ SWWM_SUBS_DEFAULT_MRTOUCH4 = "Boop."; SWWM_SUBS_DEFAULT_NMRFLICK = "2"; SWWM_SUBS_DEFAULT_MRFLICK1 = "Click."; SWWM_SUBS_DEFAULT_MRFLICK2 = "Clack."; +// Mirror interaction +SWWM_SUBS_DEFAULT_NMIRROR = "10"; +SWWM_SUBS_DEFAULT_MIRROR1 = "Who's that handsome robot? Oh! It's me~"; +SWWM_SUBS_DEFAULT_MIRROR2 = "Looking good..."; +SWWM_SUBS_DEFAULT_MIRROR3 = "Does this chassis make my ass look fat?"; +SWWM_SUBS_DEFAULT_MIRROR4 = "It's me, Demo-chan!"; +SWWM_SUBS_DEFAULT_MIRROR5 = "I think I look cute today."; +SWWM_SUBS_DEFAULT_MIRROR6 = "Hmmm... My body could use some nice polishing."; +SWWM_SUBS_DEFAULT_MIRROR7 = "That's a mirror."; +SWWM_SUBS_DEFAULT_MIRROR8 = "Nice and reflective, just how I like it."; +SWWM_SUBS_DEFAULT_MIRROR9 = "I should really try not to break this."; +SWWM_SUBS_DEFAULT_MIRROR10 = "I kinda like looking at myself... Not that it's wrong or anything."; +// Kiss hit +SWWM_SUBS_DEFAULT_NSMOOCH = "3"; +SWWM_SUBS_DEFAULT_SMOOCH1 = "Smoochies~"; +SWWM_SUBS_DEFAULT_SMOOCH2 = "$$SWWM_SUBS_DEFAULT_SMOOCH1"; // all subtitles are the same here, only the sound changes +SWWM_SUBS_DEFAULT_SMOOCH3 = "$$SWWM_SUBS_DEFAULT_SMOOCH1"; +// Randomization ranges for other voices +SWWM_DEFAULT_NGRUNT = "5"; +SWWM_DEFAULT_NUSEGRUNT = "4"; +SWWM_DEFAULT_NLOPAIN = "2"; +SWWM_DEFAULT_NPAIN = "3"; +SWWM_DEFAULT_NHIPAIN = "3"; +SWWM_DEFAULT_NDEATH = "8"; +SWWM_DEFAULT_NJUMP = "5"; +SWWM_DEFAULT_NKISS = "10"; //// LEGACY VOICE - Fallout 4 JP Sole Survivor SWWM_VOICENAME_LEGACY = "Classic"; // new weapon received @@ -731,3 +757,12 @@ SWWM_SUBS_LEGACY_KORAXMASTERS6 = "None of your damn business."; SWWM_SUBS_LEGACY_KORAXMASTERS7 = "Yes, I am."; SWWM_SUBS_LEGACY_KORAXMASTERS8 = "That's none of your business."; SWWM_SUBS_LEGACY_KORAXMASTERS9 = "Just shut up already..."; +// Randomization ranges for other voices +SWWM_LEGACY_NGRUNT = "6"; +SWWM_LEGACY_NUSEGRUNT = "1"; // technically zero +SWWM_LEGACY_NLOPAIN = "5"; +SWWM_LEGACY_NPAIN = "5"; +SWWM_LEGACY_NHIPAIN = "5"; +SWWM_LEGACY_NDEATH = "5"; +SWWM_LEGACY_NJUMP = "1"; // technically zero +SWWM_LEGACY_NKISS = "1"; diff --git a/language.es_voice b/language.es_voice index 1f0898436..9f42600bc 100644 --- a/language.es_voice +++ b/language.es_voice @@ -418,6 +418,19 @@ SWWM_SUBS_DEFAULT_MRTOUCH4 = "Bup."; // Mortal Rifle finger flick SWWM_SUBS_DEFAULT_MRFLICK1 = "Clic."; SWWM_SUBS_DEFAULT_MRFLICK2 = "Clac."; +// Mirror interaction +SWWM_SUBS_DEFAULT_MIRROR1 = "¿Quien es ese robot tan guapo? ¡Oh! Soy yo~"; +SWWM_SUBS_DEFAULT_MIRROR2 = "Que vien me veo..."; +SWWM_SUBS_DEFAULT_MIRROR3 = "¿Este chasis me hace el culo gordo?"; +SWWM_SUBS_DEFAULT_MIRROR4 = "Soy yo, ¡Demo-chan!"; +SWWM_SUBS_DEFAULT_MIRROR5 = "Me veo bien bonita hoy."; +SWWM_SUBS_DEFAULT_MIRROR6 = "Hmmm... A mi cuerpo le vendría bien un buen abrillantado."; +SWWM_SUBS_DEFAULT_MIRROR7 = "Es un espejo."; +SWWM_SUBS_DEFAULT_MIRROR8 = "Todo bien reflejado, tal como me gusta."; +SWWM_SUBS_DEFAULT_MIRROR9 = "En serio debería intentar no romper esto."; +SWWM_SUBS_DEFAULT_MIRROR10 = "La verdad es que me gusta mirarme... Tampoco es que sea algo malo o tal."; +// Kiss hit +SWWM_SUBS_DEFAULT_SMOOCH1 = "Besitos~"; //// LEGACY VOICE - Fallout 4 JP Sole Survivor // voice name SWWM_VOICENAME_LEGACY = "Clásico"; diff --git a/language.version b/language.version index 6edc49d95..a4be9a002 100644 --- a/language.version +++ b/language.version @@ -1,3 +1,3 @@ [default] -SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r731 \cu(Wed 18 Jan 23:31:28 CET 2023)\c-"; -SWWM_SHORTVER="\cw1.3pre r731 \cu(2023-01-18 23:31:28)\c-"; +SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r732 \cu(Thu 19 Jan 10:11:24 CET 2023)\c-"; +SWWM_SHORTVER="\cw1.3pre r732 \cu(2023-01-19 10:11:24)\c-"; diff --git a/sndinfo.defvoice b/sndinfo.defvoice index a16c89a2f..81bf155a0 100644 --- a/sndinfo.defvoice +++ b/sndinfo.defvoice @@ -13,6 +13,10 @@ voice/default/grunt2 = "sounds/voice/default/demogrunt2.ogg" voice/default/grunt3 = "sounds/voice/default/demogrunt3.ogg" voice/default/grunt4 = "sounds/voice/default/demogrunt4.ogg" voice/default/grunt5 = "sounds/voice/default/demogrunt5.ogg" +voice/default/usegrunt1 = "sounds/voice/default/demousegrunt1.ogg" +voice/default/usegrunt2 = "sounds/voice/default/demousegrunt2.ogg" +voice/default/usegrunt3 = "sounds/voice/default/demousegrunt3.ogg" +voice/default/usegrunt4 = "sounds/voice/default/demousegrunt4.ogg" voice/default/hipain1 = "sounds/voice/default/demohipain1.ogg" voice/default/hipain2 = "sounds/voice/default/demohipain2.ogg" voice/default/hipain3 = "sounds/voice/default/demohipain3.ogg" @@ -26,13 +30,16 @@ voice/default/jump2 = "sounds/voice/default/demojump2.ogg" voice/default/jump3 = "sounds/voice/default/demojump3.ogg" voice/default/jump4 = "sounds/voice/default/demojump4.ogg" voice/default/jump5 = "sounds/voice/default/demojump5.ogg" - -$random voice/default/grunt { voice/default/grunt1 voice/default/grunt2 voice/default/grunt3 voice/default/grunt4 voice/default/grunt5 } -$random voice/default/lopain { voice/default/lopain1 voice/default/lopain2 } -$random voice/default/pain { voice/default/pain1 voice/default/pain2 voice/default/pain3 } -$random voice/default/hipain { voice/default/hipain1 voice/default/hipain2 voice/default/hipain3 voice/default/hipain2 voice/default/hipain1 } -$random voice/default/death { voice/default/death1 voice/default/death2 voice/default/death3 voice/default/death4 voice/default/death5 voice/default/death6 voice/default/death7 voice/default/death8 } -$random voice/default/jump { voice/default/jump1 voice/default/jump2 voice/default/jump3 voice/default/jump4 voice/default/jump5 } +voice/default/kiss1 = "sounds/voice/default/demokiss1.ogg" +voice/default/kiss2 = "sounds/voice/default/demokiss2.ogg" +voice/default/kiss3 = "sounds/voice/default/demokiss3.ogg" +voice/default/kiss4 = "sounds/voice/default/demokiss4.ogg" +voice/default/kiss5 = "sounds/voice/default/demokiss5.ogg" +voice/default/kiss6 = "sounds/voice/default/demokiss6.ogg" +voice/default/kiss7 = "sounds/voice/default/demokiss7.ogg" +voice/default/kiss8 = "sounds/voice/default/demokiss8.ogg" +voice/default/kiss9 = "sounds/voice/default/demokiss9.ogg" +voice/default/kiss10 = "sounds/voice/default/demokiss10.ogg" voice/default/fightstart1 = "sounds/voice/default/va/demofightstart1.ogg" voice/default/fightstart2 = "sounds/voice/default/va/demofightstart2.ogg" @@ -311,11 +318,6 @@ voice/default/usefail6 = "sounds/voice/default/va/demousefail6.ogg" voice/default/usefail7 = "sounds/voice/default/va/demousefail7.ogg" voice/default/usefail8 = "sounds/voice/default/va/demousefail8.ogg" voice/default/usefail9 = "sounds/voice/default/va/demousefail9.ogg" -voice/default/usegrunt1 = "sounds/voice/default/va/demousegrunt1.ogg" -voice/default/usegrunt2 = "sounds/voice/default/va/demousegrunt2.ogg" -voice/default/usegrunt3 = "sounds/voice/default/va/demousegrunt3.ogg" -voice/default/usegrunt4 = "sounds/voice/default/va/demousegrunt4.ogg" -$random voice/default/usegrunt { voice/default/usegrunt1 voice/default/usegrunt2 voice/default/usegrunt3 voice/default/usegrunt4 } voice/default/cubeget = "sounds/voice/default/va/democubeget.ogg" voice/default/akariget = "sounds/voice/default/va/demoakariget.ogg" voice/default/signalsget = "sounds/voice/default/va/demosignalsget.ogg" @@ -427,3 +429,16 @@ voice/default/mrtouch3 = "sounds/voice/default/va/demomrtouch3.ogg" voice/default/mrtouch4 = "sounds/voice/default/va/demomrtouch4.ogg" voice/default/mrflick1 = "sounds/voice/default/va/demomrflick1.ogg" voice/default/mrflick2 = "sounds/voice/default/va/demomrflick2.ogg" +voice/default/mirror1 = "sounds/voice/default/va/demomirror1.ogg" +voice/default/mirror2 = "sounds/voice/default/va/demomirror2.ogg" +voice/default/mirror3 = "sounds/voice/default/va/demomirror3.ogg" +voice/default/mirror4 = "sounds/voice/default/va/demomirror4.ogg" +voice/default/mirror5 = "sounds/voice/default/va/demomirror5.ogg" +voice/default/mirror6 = "sounds/voice/default/va/demomirror6.ogg" +voice/default/mirror7 = "sounds/voice/default/va/demomirror7.ogg" +voice/default/mirror8 = "sounds/voice/default/va/demomirror8.ogg" +voice/default/mirror9 = "sounds/voice/default/va/demomirror9.ogg" +voice/default/mirror10 = "sounds/voice/default/va/demomirror10.ogg" +voice/default/smooch1 = "sounds/voice/default/va/demosmooch1.ogg" +voice/default/smooch2 = "sounds/voice/default/va/demosmooch2.ogg" +voice/default/smooch3 = "sounds/voice/default/va/demosmooch3.ogg" diff --git a/sndinfo.oldvoice b/sndinfo.oldvoice index 92ab5b4ce..dbd6840e1 100644 --- a/sndinfo.oldvoice +++ b/sndinfo.oldvoice @@ -11,6 +11,7 @@ voice/legacy/grunt3 = "sounds/voice/legacy/demogrunt3.ogg" voice/legacy/grunt4 = "sounds/voice/legacy/demogrunt4.ogg" voice/legacy/grunt5 = "sounds/voice/legacy/demogrunt5.ogg" voice/legacy/grunt6 = "sounds/voice/legacy/demogrunt6.ogg" +voice/legacy/usegrunt1 = DSEMPTY // no sounds available voice/legacy/hipain1 = "sounds/voice/legacy/demohipain1.ogg" voice/legacy/hipain2 = "sounds/voice/legacy/demohipain2.ogg" voice/legacy/hipain3 = "sounds/voice/legacy/demohipain3.ogg" @@ -27,13 +28,9 @@ voice/legacy/pain3 = "sounds/voice/legacy/demopain3.ogg" voice/legacy/pain4 = "sounds/voice/legacy/demopain4.ogg" voice/legacy/pain5 = "sounds/voice/legacy/demopain5.ogg" voice/legacy/pain6 = "sounds/voice/legacy/demopain6.ogg" - -$random voice/legacy/grunt { voice/legacy/grunt1 voice/legacy/grunt2 voice/legacy/grunt3 voice/legacy/grunt4 voice/legacy/grunt5 voice/legacy/grunt6 } -$random voice/legacy/lopain { voice/legacy/lopain1 voice/legacy/lopain2 voice/legacy/lopain3 voice/legacy/lopain4 voice/legacy/lopain5 } -$random voice/legacy/pain { voice/legacy/pain1 voice/legacy/pain2 voice/legacy/pain3 voice/legacy/pain4 voice/legacy/pain5 } -$random voice/legacy/hipain { voice/legacy/hipain1 voice/legacy/hipain2 voice/legacy/hipain3 voice/legacy/hipain4 voice/legacy/hipain5 } -$random voice/legacy/death { voice/legacy/death1 voice/legacy/death2 voice/legacy/death3 voice/legacy/death4 voice/legacy/death5 } -voice/legacy/jump = DSEMPTY // no sounds available +voice/legacy/jump1 = DSEMPTY // no sounds available +voice/legacy/kiss1 = "sounds/voice/legacy/demokiss.ogg" +$volume voice/legacy/kiss1 0.4 // kinda loud by default voice/legacy/fightstart1 = "sounds/voice/legacy/va/demofightstart1.ogg" voice/legacy/fightstart2 = "sounds/voice/legacy/va/demofightstart2.ogg" diff --git a/sounds/demolitionist/demoblow.ogg b/sounds/demolitionist/demoblow.ogg deleted file mode 100644 index ef048a5fb..000000000 Binary files a/sounds/demolitionist/demoblow.ogg and /dev/null differ diff --git a/sounds/voice/default/demokiss1.ogg b/sounds/voice/default/demokiss1.ogg new file mode 100644 index 000000000..6f5a1ed8e Binary files /dev/null and b/sounds/voice/default/demokiss1.ogg differ diff --git a/sounds/voice/default/demokiss10.ogg b/sounds/voice/default/demokiss10.ogg new file mode 100644 index 000000000..dcebdabfb Binary files /dev/null and b/sounds/voice/default/demokiss10.ogg differ diff --git a/sounds/voice/default/demokiss2.ogg b/sounds/voice/default/demokiss2.ogg new file mode 100644 index 000000000..fd441594a Binary files /dev/null and b/sounds/voice/default/demokiss2.ogg differ diff --git a/sounds/voice/default/demokiss3.ogg b/sounds/voice/default/demokiss3.ogg new file mode 100644 index 000000000..ec817798b Binary files /dev/null and b/sounds/voice/default/demokiss3.ogg differ diff --git a/sounds/voice/default/demokiss4.ogg b/sounds/voice/default/demokiss4.ogg new file mode 100644 index 000000000..aa76ad82b Binary files /dev/null and b/sounds/voice/default/demokiss4.ogg differ diff --git a/sounds/voice/default/demokiss5.ogg b/sounds/voice/default/demokiss5.ogg new file mode 100644 index 000000000..3ca86bf41 Binary files /dev/null and b/sounds/voice/default/demokiss5.ogg differ diff --git a/sounds/voice/default/demokiss6.ogg b/sounds/voice/default/demokiss6.ogg new file mode 100644 index 000000000..bd461152e Binary files /dev/null and b/sounds/voice/default/demokiss6.ogg differ diff --git a/sounds/voice/default/demokiss7.ogg b/sounds/voice/default/demokiss7.ogg new file mode 100644 index 000000000..1aec5e72e Binary files /dev/null and b/sounds/voice/default/demokiss7.ogg differ diff --git a/sounds/voice/default/demokiss8.ogg b/sounds/voice/default/demokiss8.ogg new file mode 100644 index 000000000..5dbb8606e Binary files /dev/null and b/sounds/voice/default/demokiss8.ogg differ diff --git a/sounds/voice/default/demokiss9.ogg b/sounds/voice/default/demokiss9.ogg new file mode 100644 index 000000000..9c2064c02 Binary files /dev/null and b/sounds/voice/default/demokiss9.ogg differ diff --git a/sounds/voice/default/va/demousegrunt1.ogg b/sounds/voice/default/demousegrunt1.ogg similarity index 100% rename from sounds/voice/default/va/demousegrunt1.ogg rename to sounds/voice/default/demousegrunt1.ogg diff --git a/sounds/voice/default/va/demousegrunt2.ogg b/sounds/voice/default/demousegrunt2.ogg similarity index 100% rename from sounds/voice/default/va/demousegrunt2.ogg rename to sounds/voice/default/demousegrunt2.ogg diff --git a/sounds/voice/default/va/demousegrunt3.ogg b/sounds/voice/default/demousegrunt3.ogg similarity index 100% rename from sounds/voice/default/va/demousegrunt3.ogg rename to sounds/voice/default/demousegrunt3.ogg diff --git a/sounds/voice/default/va/demousegrunt4.ogg b/sounds/voice/default/demousegrunt4.ogg similarity index 100% rename from sounds/voice/default/va/demousegrunt4.ogg rename to sounds/voice/default/demousegrunt4.ogg diff --git a/sounds/voice/default/va/demogethit10.ogg b/sounds/voice/default/va/demogethit10.ogg index 0ed07a01b..37626519c 100644 Binary files a/sounds/voice/default/va/demogethit10.ogg and b/sounds/voice/default/va/demogethit10.ogg differ diff --git a/sounds/voice/default/va/demogetquadravol.ogg b/sounds/voice/default/va/demogetquadravol.ogg index b1b4cf757..c317ae6cc 100644 Binary files a/sounds/voice/default/va/demogetquadravol.ogg and b/sounds/voice/default/va/demogetquadravol.ogg differ diff --git a/sounds/voice/default/va/demomirror1.ogg b/sounds/voice/default/va/demomirror1.ogg new file mode 100644 index 000000000..28e60c7b8 Binary files /dev/null and b/sounds/voice/default/va/demomirror1.ogg differ diff --git a/sounds/voice/default/va/demomirror10.ogg b/sounds/voice/default/va/demomirror10.ogg new file mode 100644 index 000000000..075461359 Binary files /dev/null and b/sounds/voice/default/va/demomirror10.ogg differ diff --git a/sounds/voice/default/va/demomirror2.ogg b/sounds/voice/default/va/demomirror2.ogg new file mode 100644 index 000000000..210fa58be Binary files /dev/null and b/sounds/voice/default/va/demomirror2.ogg differ diff --git a/sounds/voice/default/va/demomirror3.ogg b/sounds/voice/default/va/demomirror3.ogg new file mode 100644 index 000000000..d8fe96346 Binary files /dev/null and b/sounds/voice/default/va/demomirror3.ogg differ diff --git a/sounds/voice/default/va/demomirror4.ogg b/sounds/voice/default/va/demomirror4.ogg new file mode 100644 index 000000000..25bce4a8d Binary files /dev/null and b/sounds/voice/default/va/demomirror4.ogg differ diff --git a/sounds/voice/default/va/demomirror5.ogg b/sounds/voice/default/va/demomirror5.ogg new file mode 100644 index 000000000..199690172 Binary files /dev/null and b/sounds/voice/default/va/demomirror5.ogg differ diff --git a/sounds/voice/default/va/demomirror6.ogg b/sounds/voice/default/va/demomirror6.ogg new file mode 100644 index 000000000..8acb96dd7 Binary files /dev/null and b/sounds/voice/default/va/demomirror6.ogg differ diff --git a/sounds/voice/default/va/demomirror7.ogg b/sounds/voice/default/va/demomirror7.ogg new file mode 100644 index 000000000..339a535ba Binary files /dev/null and b/sounds/voice/default/va/demomirror7.ogg differ diff --git a/sounds/voice/default/va/demomirror8.ogg b/sounds/voice/default/va/demomirror8.ogg new file mode 100644 index 000000000..720503221 Binary files /dev/null and b/sounds/voice/default/va/demomirror8.ogg differ diff --git a/sounds/voice/default/va/demomirror9.ogg b/sounds/voice/default/va/demomirror9.ogg new file mode 100644 index 000000000..895aaf9c2 Binary files /dev/null and b/sounds/voice/default/va/demomirror9.ogg differ diff --git a/sounds/voice/default/va/demosmooch1.ogg b/sounds/voice/default/va/demosmooch1.ogg new file mode 100644 index 000000000..097db3279 Binary files /dev/null and b/sounds/voice/default/va/demosmooch1.ogg differ diff --git a/sounds/voice/default/va/demosmooch2.ogg b/sounds/voice/default/va/demosmooch2.ogg new file mode 100644 index 000000000..dddfae1b9 Binary files /dev/null and b/sounds/voice/default/va/demosmooch2.ogg differ diff --git a/sounds/voice/default/va/demosmooch3.ogg b/sounds/voice/default/va/demosmooch3.ogg new file mode 100644 index 000000000..67e61c4c4 Binary files /dev/null and b/sounds/voice/default/va/demosmooch3.ogg differ diff --git a/sounds/demolitionist/demokiss.ogg b/sounds/voice/legacy/demokiss.ogg similarity index 100% rename from sounds/demolitionist/demokiss.ogg rename to sounds/voice/legacy/demokiss.ogg diff --git a/zscript/items/swwm_collectibles_gesture.zsc b/zscript/items/swwm_collectibles_gesture.zsc index 8b05ddf52..d87bd1d41 100644 --- a/zscript/items/swwm_collectibles_gesture.zsc +++ b/zscript/items/swwm_collectibles_gesture.zsc @@ -283,7 +283,16 @@ Class KirinPlushGesture : SWWMItemGesture action void A_KissPlush() { if ( swwm_mutevoice < 4 ) - A_StartSound("demolitionist/smooch",CHAN_DEMOVOICE,CHANF_OVERLAP,.4); + { + String myvoice = CVar.GetCVar('swwm_voicetype',player).GetString(); + int loudlv = swwm_voiceamp; + int maxkiss = StringTable.Localize("$SWWM_"..myvoice.."_NKISS").ToInt(); + int idx = (maxkiss<=1)?1:Random[DemoLines](1,maxkiss); + A_StartSound(String.Format("voice/%s/kiss%d",myvoice,idx),CHAN_DEMOVOICE,CHANF_OVERLAP); + if ( loudlv > 1 ) A_StartSound(String.Format("voice/%s/kiss%d",myvoice,idx),CHAN_DEMOVOICEAUX,CHANF_OVERLAP); + if ( loudlv > 2 ) A_StartSound(String.Format("voice/%s/kiss%d",myvoice,idx),CHAN_DEMOVOICEAUX2,CHANF_OVERLAP); + if ( loudlv > 3 ) A_StartSound(String.Format("voice/%s/kiss%d",myvoice,idx),CHAN_DEMOVOICEAUX3,CHANF_OVERLAP); + } SWWMHandler.DoFlash(self,Color(48,255,128,128),10); SWWMHandler.DoFlash(self,Color(24,255,128,128),30); int numpt = Random[ExploS](6,9); diff --git a/zscript/player/swwm_player.zsc b/zscript/player/swwm_player.zsc index 01bc312b6..09861a941 100644 --- a/zscript/player/swwm_player.zsc +++ b/zscript/player/swwm_player.zsc @@ -97,7 +97,7 @@ Class Demolitionist : PlayerPawn int invwipe; // inventory wipe flags for next level - transient int lastbang, lastbust; + transient int lastbang, lastbust, lastkiss; transient bool ingivecheat; @@ -870,10 +870,10 @@ Class Demolitionist : PlayerPawn MarkSound("demolitionist/whitm3"); MarkSound("demolitionist/whitl1"); MarkSound("demolitionist/whitl2"); - MarkSound("demolitionist/buttslam"); + MarkSound("demolitionist/buttslam1"); + MarkSound("demolitionist/buttslam2"); + MarkSound("demolitionist/buttslam3"); MarkSound("demolitionist/buttslamx"); - MarkSound("demolitionist/smooch"); - MarkSound("demolitionist/blowkiss"); MarkSound("demolitionist/petting"); MarkSound("demolitionist/knockout"); } diff --git a/zscript/player/swwm_player_anim.zsc b/zscript/player/swwm_player_anim.zsc index e7c7c6db1..6e19aba4d 100644 --- a/zscript/player/swwm_player_anim.zsc +++ b/zscript/player/swwm_player_anim.zsc @@ -409,10 +409,12 @@ extend Class Demolitionist lastbump *= 1.04; if ( swwm_mutevoice < 4 ) { - A_StartSound(String.Format("voice/%s/hipain",myvoice),CHAN_DEMOVOICE,CHANF_OVERLAP); - if ( loudlv > 1 ) A_StartSound(String.Format("voice/%s/hipain",myvoice),CHAN_DEMOVOICEAUX,CHANF_OVERLAP); - if ( loudlv > 2 ) A_StartSound(String.Format("voice/%s/hipain",myvoice),CHAN_DEMOVOICEAUX2,CHANF_OVERLAP); - if ( loudlv > 3 ) A_StartSound(String.Format("voice/%s/hipain",myvoice),CHAN_DEMOVOICEAUX3,CHANF_OVERLAP); + int maxpain = StringTable.Localize("$SWWM_"..myvoice.."_NHIPAIN").ToInt(); + int idx = (maxpain<=1)?1:Random[DemoLines](1,maxpain); + A_StartSound(String.Format("voice/%s/hipain%d",myvoice,idx),CHAN_DEMOVOICE,CHANF_OVERLAP); + if ( loudlv > 1 ) A_StartSound(String.Format("voice/%s/hipain%d",myvoice,idx),CHAN_DEMOVOICEAUX,CHANF_OVERLAP); + if ( loudlv > 2 ) A_StartSound(String.Format("voice/%s/hipain%d",myvoice,idx),CHAN_DEMOVOICEAUX2,CHANF_OVERLAP); + if ( loudlv > 3 ) A_StartSound(String.Format("voice/%s/hipain%d",myvoice,idx),CHAN_DEMOVOICEAUX3,CHANF_OVERLAP); } } else if ( lastdamage > 30 ) @@ -422,10 +424,12 @@ extend Class Demolitionist lastbump *= 1.02; if ( swwm_mutevoice < 4 ) { - A_StartSound(String.Format("voice/%s/pain",myvoice),CHAN_DEMOVOICE,CHANF_OVERLAP); - if ( loudlv > 1 ) A_StartSound(String.Format("voice/%s/pain",myvoice),CHAN_DEMOVOICEAUX,CHANF_OVERLAP); - if ( loudlv > 2 ) A_StartSound(String.Format("voice/%s/pain",myvoice),CHAN_DEMOVOICEAUX2,CHANF_OVERLAP); - if ( loudlv > 3 ) A_StartSound(String.Format("voice/%s/pain",myvoice),CHAN_DEMOVOICEAUX3,CHANF_OVERLAP); + int maxpain = StringTable.Localize("$SWWM_"..myvoice.."_NPAIN").ToInt(); + int idx = (maxpain<=1)?1:Random[DemoLines](1,maxpain); + A_StartSound(String.Format("voice/%s/pain%d",myvoice,idx),CHAN_DEMOVOICE,CHANF_OVERLAP); + if ( loudlv > 1 ) A_StartSound(String.Format("voice/%s/pain%d",myvoice,idx),CHAN_DEMOVOICEAUX,CHANF_OVERLAP); + if ( loudlv > 2 ) A_StartSound(String.Format("voice/%s/pain%d",myvoice,idx),CHAN_DEMOVOICEAUX2,CHANF_OVERLAP); + if ( loudlv > 3 ) A_StartSound(String.Format("voice/%s/pain%d",myvoice,idx),CHAN_DEMOVOICEAUX3,CHANF_OVERLAP); } } else if ( lastdamage > 0 ) @@ -435,10 +439,12 @@ extend Class Demolitionist lastbump *= 1.01; if ( swwm_mutevoice < 4 ) { - A_StartSound(String.Format("voice/%s/lopain",myvoice),CHAN_DEMOVOICE,CHANF_OVERLAP); - if ( loudlv > 1 ) A_StartSound(String.Format("voice/%s/lopain",myvoice),CHAN_DEMOVOICEAUX,CHANF_OVERLAP); - if ( loudlv > 2 ) A_StartSound(String.Format("voice/%s/lopain",myvoice),CHAN_DEMOVOICEAUX2,CHANF_OVERLAP); - if ( loudlv > 3 ) A_StartSound(String.Format("voice/%s/lopain",myvoice),CHAN_DEMOVOICEAUX3,CHANF_OVERLAP); + int maxpain = StringTable.Localize("$SWWM_"..myvoice.."_NLOPAIN").ToInt(); + int idx = (maxpain<=1)?1:Random[DemoLines](1,maxpain); + A_StartSound(String.Format("voice/%s/lopain%d",myvoice,idx),CHAN_DEMOVOICE,CHANF_OVERLAP); + if ( loudlv > 1 ) A_StartSound(String.Format("voice/%s/lopain%d",myvoice,idx),CHAN_DEMOVOICEAUX,CHANF_OVERLAP); + if ( loudlv > 2 ) A_StartSound(String.Format("voice/%s/lopain%d",myvoice,idx),CHAN_DEMOVOICEAUX2,CHANF_OVERLAP); + if ( loudlv > 3 ) A_StartSound(String.Format("voice/%s/lopain%d",myvoice,idx),CHAN_DEMOVOICEAUX3,CHANF_OVERLAP); } } } @@ -461,10 +467,12 @@ extend Class Demolitionist A_StartSound(snd,CHAN_VOICE); if ( swwm_mutevoice < 4 ) { - A_StartSound(String.Format("voice/%s/death",myvoice),CHAN_DEMOVOICE,CHANF_OVERLAP); - if ( loudlv > 1 ) A_StartSound(String.Format("voice/%s/death",myvoice),CHAN_DEMOVOICEAUX,CHANF_OVERLAP); - if ( loudlv > 2 ) A_StartSound(String.Format("voice/%s/death",myvoice),CHAN_DEMOVOICEAUX2,CHANF_OVERLAP); - if ( loudlv > 3 ) A_StartSound(String.Format("voice/%s/death",myvoice),CHAN_DEMOVOICEAUX3,CHANF_OVERLAP); + int maxdeath = StringTable.Localize("$SWWM_"..myvoice.."_NDEATH").ToInt(); + int idx = (maxdeath<=1)?1:Random[DemoLines](1,maxdeath); + A_StartSound(String.Format("voice/%s/death%d",myvoice,idx),CHAN_DEMOVOICE,CHANF_OVERLAP); + if ( loudlv > 1 ) A_StartSound(String.Format("voice/%s/death%d",myvoice,idx),CHAN_DEMOVOICEAUX,CHANF_OVERLAP); + if ( loudlv > 2 ) A_StartSound(String.Format("voice/%s/death%d",myvoice,idx),CHAN_DEMOVOICEAUX2,CHANF_OVERLAP); + if ( loudlv > 3 ) A_StartSound(String.Format("voice/%s/death%d",myvoice,idx),CHAN_DEMOVOICEAUX3,CHANF_OVERLAP); } } diff --git a/zscript/player/swwm_player_move.zsc b/zscript/player/swwm_player_move.zsc index 54b9c157f..9e643dc12 100644 --- a/zscript/player/swwm_player_move.zsc +++ b/zscript/player/swwm_player_move.zsc @@ -540,10 +540,12 @@ extend Class Demolitionist { String myvoice = CVar.GetCVar('swwm_voicetype',player).GetString(); int loudlv = swwm_voiceamp; - A_StartSound(String.Format("voice/%s/jump",myvoice),CHAN_DEMOVOICE,CHANF_OVERLAP); - if ( loudlv > 1 ) A_StartSound(String.Format("voice/%s/jump",myvoice),CHAN_DEMOVOICEAUX,CHANF_OVERLAP); - if ( loudlv > 2 ) A_StartSound(String.Format("voice/%s/jump",myvoice),CHAN_DEMOVOICEAUX2,CHANF_OVERLAP); - if ( loudlv > 3 ) A_StartSound(String.Format("voice/%s/jump",myvoice),CHAN_DEMOVOICEAUX3,CHANF_OVERLAP); + int maxjump = StringTable.Localize("$SWWM_"..myvoice.."_NJUMP").ToInt(); + int idx = (maxjump<=1)?1:Random[DemoLines](1,maxjump); + A_StartSound(String.Format("voice/%s/jump%d",myvoice,idx),CHAN_DEMOVOICE,CHANF_OVERLAP); + if ( loudlv > 1 ) A_StartSound(String.Format("voice/%s/jump%d",myvoice,idx),CHAN_DEMOVOICEAUX,CHANF_OVERLAP); + if ( loudlv > 2 ) A_StartSound(String.Format("voice/%s/jump%d",myvoice,idx),CHAN_DEMOVOICEAUX2,CHANF_OVERLAP); + if ( loudlv > 3 ) A_StartSound(String.Format("voice/%s/jump%d",myvoice,idx),CHAN_DEMOVOICEAUX3,CHANF_OVERLAP); } SetStateLabel("Jump"); } diff --git a/zscript/player/swwm_player_think.zsc b/zscript/player/swwm_player_think.zsc index 2e32608eb..875e0af07 100644 --- a/zscript/player/swwm_player_think.zsc +++ b/zscript/player/swwm_player_think.zsc @@ -210,11 +210,13 @@ extend Class Demolitionist { String myvoice = CVar.GetCVar('swwm_voicetype',player).GetString(); int loudlv = swwm_voiceamp; - A_StartSound(String.Format("voice/%s/usegrunt",myvoice),CHAN_DEMOVOICE,CHANF_OVERLAP); - if ( loudlv > 1 ) A_StartSound(String.Format("voice/%s/usegrunt",myvoice),CHAN_DEMOVOICEAUX,CHANF_OVERLAP); - if ( loudlv > 2 ) A_StartSound(String.Format("voice/%s/usegrunt",myvoice),CHAN_DEMOVOICEAUX2,CHANF_OVERLAP); - if ( loudlv > 3 ) A_StartSound(String.Format("voice/%s/usegrunt",myvoice),CHAN_DEMOVOICEAUX3,CHANF_OVERLAP); - failcooldown = int(S_GetLength(String.Format("voice/%s/usegrunt",myvoice))*GameTicRate); + int maxusegrunt = StringTable.Localize("$SWWM_"..myvoice.."_NUSEGRUNT").ToInt(); + int idx = (maxusegrunt<=1)?1:Random[DemoLines](1,maxusegrunt); + A_StartSound(String.Format("voice/%s/usegrunt",myvoice,idx),CHAN_DEMOVOICE,CHANF_OVERLAP); + if ( loudlv > 1 ) A_StartSound(String.Format("voice/%s/usegrunt",myvoice,idx),CHAN_DEMOVOICEAUX,CHANF_OVERLAP); + if ( loudlv > 2 ) A_StartSound(String.Format("voice/%s/usegrunt",myvoice,idx),CHAN_DEMOVOICEAUX2,CHANF_OVERLAP); + if ( loudlv > 3 ) A_StartSound(String.Format("voice/%s/usegrunt",myvoice,idx),CHAN_DEMOVOICEAUX3,CHANF_OVERLAP); + failcooldown = int(S_GetLength(String.Format("voice/%s/usegrunt",myvoice,idx))*GameTicRate); failcounter = max(2,failcounter-1); } } diff --git a/zscript/player/swwm_player_tick.zsc b/zscript/player/swwm_player_tick.zsc index 9a617dc12..109c1bd01 100644 --- a/zscript/player/swwm_player_tick.zsc +++ b/zscript/player/swwm_player_tick.zsc @@ -346,10 +346,12 @@ extend Class Demolitionist { String myvoice = CVar.GetCVar('swwm_voicetype',player).GetString(); int loudlv = swwm_voiceamp; - A_StartSound(String.Format("voice/%s/grunt",myvoice),CHAN_DEMOVOICE,CHANF_OVERLAP); - if ( loudlv > 1 ) A_StartSound(String.Format("voice/%s/grunt",myvoice),CHAN_DEMOVOICEAUX,CHANF_OVERLAP); - if ( loudlv > 2 ) A_StartSound(String.Format("voice/%s/grunt",myvoice),CHAN_DEMOVOICEAUX2,CHANF_OVERLAP); - if ( loudlv > 3 ) A_StartSound(String.Format("voice/%s/grunt",myvoice),CHAN_DEMOVOICEAUX3,CHANF_OVERLAP); + int maxgrunt = StringTable.Localize("$SWWM_"..myvoice.."_NGRUNT").ToInt(); + int idx = (maxgrunt<=1)?1:Random[DemoLines](1,maxgrunt); + A_StartSound(String.Format("voice/%s/grunt%d",myvoice,idx),CHAN_DEMOVOICE,CHANF_OVERLAP); + if ( loudlv > 1 ) A_StartSound(String.Format("voice/%s/grunt%d",myvoice,idx),CHAN_DEMOVOICEAUX,CHANF_OVERLAP); + if ( loudlv > 2 ) A_StartSound(String.Format("voice/%s/grunt%d",myvoice,idx),CHAN_DEMOVOICEAUX2,CHANF_OVERLAP); + if ( loudlv > 3 ) A_StartSound(String.Format("voice/%s/grunt%d",myvoice,idx),CHAN_DEMOVOICEAUX3,CHANF_OVERLAP); } if ( lastvelz < -1 ) A_Footstep(0,1,clamp(-lastvelz*0.05,0.0,1.0),true); diff --git a/zscript/swwm_gesture.zsc b/zscript/swwm_gesture.zsc index e7bdd7d57..2e57ad8f6 100644 --- a/zscript/swwm_gesture.zsc +++ b/zscript/swwm_gesture.zsc @@ -321,13 +321,20 @@ Class SWWMGesture : SWWMWeapon action void A_Smooch() { if ( swwm_mutevoice < 4 ) - A_StartSound("demolitionist/smooch",CHAN_DEMOVOICE,CHANF_OVERLAP,.4); + { + String myvoice = CVar.GetCVar('swwm_voicetype',player).GetString(); + int loudlv = swwm_voiceamp; + int maxkiss = StringTable.Localize("$SWWM_"..myvoice.."_NKISS").ToInt(); + int idx = (maxkiss<=1)?1:Random[DemoLines](1,maxkiss); + A_StartSound(String.Format("voice/%s/kiss%d",myvoice,idx),CHAN_DEMOVOICE,CHANF_OVERLAP); + if ( loudlv > 1 ) A_StartSound(String.Format("voice/%s/kiss%d",myvoice,idx),CHAN_DEMOVOICEAUX,CHANF_OVERLAP); + if ( loudlv > 2 ) A_StartSound(String.Format("voice/%s/kiss%d",myvoice,idx),CHAN_DEMOVOICEAUX2,CHANF_OVERLAP); + if ( loudlv > 3 ) A_StartSound(String.Format("voice/%s/kiss%d",myvoice,idx),CHAN_DEMOVOICEAUX3,CHANF_OVERLAP); + } } action void A_BlowKiss() { - if ( swwm_mutevoice < 4 ) - A_StartSound("demolitionist/blowkiss",CHAN_DEMOVOICE,CHANF_OVERLAP,.4); let weap = Weapon(invoker); if ( !weap ) return; Vector3 x2, y2, z2, dir; diff --git a/zscript/swwm_gesture_fx.zsc b/zscript/swwm_gesture_fx.zsc index 9bf308778..3de1dcfee 100644 --- a/zscript/swwm_gesture_fx.zsc +++ b/zscript/swwm_gesture_fx.zsc @@ -106,7 +106,17 @@ Class LoveHeart : Actor bEXTREMEDEATH = false; bNOEXTREMEDEATH = false; SWWMStats s = null; - if ( Demolitionist(self.target) ) s = Demolitionist(self.target).mystats; + if ( Demolitionist(self.target) ) + { + s = Demolitionist(self.target).mystats; + // guaranteed on first smooch + if ( !Demolitionist(self.target).lastkiss || !Random[DemoLines](0,2) ) + { + if ( gametic > Demolitionist(self.target).lastkiss ) + SWWMHandler.AddOneliner("smooch",2,20); + Demolitionist(self.target).lastkiss = gametic+140; + } + } if ( s ) s.smooch++; let raging = RagekitPower(self.target.FindInventory("RagekitPower")); if ( (target is 'WolfensteinSS') || (target.Species == 'WolfensteinSS') ) target.bFRIENDLY = false;