diff options
| author | LLLL Colonq <llll@colonq> | 2025-03-13 21:30:13 -0400 |
|---|---|---|
| committer | LLLL Colonq <llll@colonq> | 2025-03-13 21:30:13 -0400 |
| commit | b21ecce6645fc17c520b722de3d96e550c77c490 (patch) | |
| tree | ea43d01bd3e36c36eb7b43945ef662088aee3cb7 /src/wasp-twitch-redeems.el | |
| parent | a2d075656ca6a07c6263eee588e15cf2ee802995 (diff) | |
Update
Diffstat (limited to 'src/wasp-twitch-redeems.el')
| -rw-r--r-- | src/wasp-twitch-redeems.el | 562 |
1 files changed, 292 insertions, 270 deletions
diff --git a/src/wasp-twitch-redeems.el b/src/wasp-twitch-redeems.el index c673430b..bf7a352b 100644 --- a/src/wasp-twitch-redeems.el +++ b/src/wasp-twitch-redeems.el @@ -22,277 +22,299 @@ (defvar w/twitch-redeem-sound-last 0) (setf - w/twitch-redeems - (list - (list - "lurker check in" 1 - (lambda (user _) - (w/write-chat-event (format "%s is lurking" user)))) - (list - "mental clarity" 1 - (lambda (user _) - (w/write-chat-event (format "%s established mental clarity" user)) - (w/stop-all-audio))) - (list - "BOOST" 1 - (lambda (user _) - (unless (-contains? w/twitch-boosters user) - (add-to-list 'w/twitch-boosters user) - (soundboard//play-clip "yougotboostpower.ogg") - (w/write-chat-event (s-concat user " boosted their boost number")) - (cl-incf (alist-get :boost w/user-current 0))))) - (list - "TSOOB" 1 - (lambda (user _) - (unless (-contains? w/twitch-tsoobers user) - (add-to-list 'w/twitch-tsoobers user) - (soundboard//play-clip "rewoptsoobtoguoy.ogg" 140) - (w/write-chat-event (s-reverse (s-concat user " boosted their boost number"))) - (cl-decf (alist-get :boost w/user-current 0))))) - (list - "submit headline" 1 - (lambda (user inp) - (w/write-chat-event (format "%s submitted a headline: %s" user inp)) - (w/glossary-record inp) - (w/friend-journalism user inp))) - (list - "cycle gizmos" 1 - (lambda (user _) - (w/write-chat-event (format "%s cycled the gizmos" user)) - (w/gizmo-cycle))) - (list - "allow streamer to drink" 1 - (lambda (user _) - (w/write-chat-event (format "%s allowed the streamer to \"drink\"" user)))) - (list - "deslug" 1 - (lambda (user _) - (w/write-chat-event (format "%s inverted slug" user)))) - (list - "talk to clone" 2 - (lambda (user inp) - (push (cons user inp) w/twitch-chat-history) - (let ((w/twitch-chat-history (list (cons user inp))) - (w/last-stream-transcription "") - (ping (w/message-ping inp))) - (w/write-chat-event (s-concat user " asks clone: " inp)) - (w/fake-chatter-run - (w/pick-random - (or - (and ping (w/dna-user-clones ping)) - (w/dna-user-clones user) - w/fake-chatters)))))) - (list - "spinne" 3 - (lambda (user _) - (w/write-chat-event (s-concat user " activates the spinne cyclle")) - (w/model-toggle "spin"))) - (list - "forsen" 3 - (lambda (user _) - (let ((cur (float-time))) - (when (> (- cur w/twitch-redeem-sound-last) 2) - (w/write-chat-event (s-concat user " loudly exclaims forsenE")) - (soundboard//play-clip "cave3.ogg" 75) - (w/model-toggle "forsen") - (setq w/twitch-redeem-sound-last cur))))) - (list - "SEASICKNESS GENERATOR" 3 - (lambda (user _) - (w/write-chat-event (s-concat user " is a salty sea dog")) - (w/model-toggle "zoom_wave"))) - (list - "The Pharaoh's Curse" 3 - (lambda (user _) - (w/write-chat-event (format "%s drew the ire of the Pharaoh upon me" user)) - (w/obs-activate-toggle 'pharaohs-curse) - )) - (list - "pursue idol dream" 3 - (lambda (user _) - (w/write-chat-event (format "Helping %s pursue their idol dream~" user)) - (w/obs-activate-toggle 'chase-dreams) - (w/model-region-user-avatar "hair" user))) - (list - "INTJ stare" 3 - (lambda (user _) - (w/write-chat-event (format "%s suggested a little more sodium chloride next time" user)) - (w/obs-activate-toggle 'intj-stare))) - (list - "Live LCOLONQ Reaction" 3 - (lambda (user _) - (w/write-chat-event (format "%s demanded extremely \"hype\" reactions, &c." user)) - (w/obs-activate-toggle 'live-reaction))) - (list - "Live friend Reaction" 3 - (lambda (user _) - (w/write-chat-event (format "%s demanded extremely \"hype\" reactions, &c. but from \"friend\"!?" user)) - (w/obs-activate-toggle 'live-friend-reaction))) - (list - "bells of bezelea" 4 - (lambda (user msg) - (w/get-song - msg - (lambda (song) - (if song + w/twitch-redeems + (list + (list + "throw shade" 1 + (lambda (user shader) + (w/write-chat-event (format "%s threw shade" user)) + (w/db-set "shader" shader) + (w/model-record-change) + (w/pub '(avatar overlay shader) (list (w/encode-string user) (w/encode-string shader))))) + (list + "lurker check in" 1 + (lambda (user _) + (w/write-chat-event (format "%s is lurking" user)))) + (list + "mental clarity" 1 + (lambda (user _) + (w/write-chat-event (format "%s established mental clarity" user)) + (w/stop-all-audio) + (w/model-reset))) + (list + "BOOST" 1 + (lambda (user _) + (unless (-contains? w/twitch-boosters user) + (add-to-list 'w/twitch-boosters user) + (soundboard//play-clip "yougotboostpower.ogg") + (w/write-chat-event (s-concat user " boosted their boost number")) + (cl-incf (alist-get :boost w/user-current 0))))) + (list + "TSOOB" 1 + (lambda (user _) + (unless (-contains? w/twitch-tsoobers user) + (add-to-list 'w/twitch-tsoobers user) + (soundboard//play-clip "rewoptsoobtoguoy.ogg" 140) + (w/write-chat-event (s-reverse (s-concat user " boosted their boost number"))) + (cl-decf (alist-get :boost w/user-current 0))))) + (list + "submit headline" 1 + (lambda (user inp) + (w/write-chat-event (format "%s submitted a headline: %s" user inp)) + (w/glossary-record inp) + (w/friend-journalism user inp))) + (list + "cycle gizmos" 1 + (lambda (user _) + (w/write-chat-event (format "%s cycled the gizmos" user)) + (w/gizmo-cycle))) + (list + "allow streamer to drink" 1 + (lambda (user _) + (w/write-chat-event (format "%s allowed the streamer to \"drink\"" user)))) + (list + "deslug" 1 + (lambda (user _) + (w/write-chat-event (format "%s inverted slug" user)))) + (list + "talk to clone" 2 + (lambda (user inp) + (push (cons user inp) w/twitch-chat-history) + (let ((w/twitch-chat-history (list (cons user inp))) + (w/last-stream-transcription "") + (ping (w/message-ping inp))) + (w/write-chat-event (s-concat user " asks clone: " inp)) + (w/fake-chatter-run + (w/pick-random + (or + (and ping (w/dna-user-clones ping)) + (w/dna-user-clones user) + w/fake-chatters)))))) + (list + "spinne" 3 + (lambda (user _) + (w/write-chat-event (s-concat user " activates the spinne cyclle")) + (w/model-toggle "spin"))) + (list + "forsen" 3 + (lambda (user _) + (let ((cur (float-time))) + (when (> (- cur w/twitch-redeem-sound-last) 2) + (w/write-chat-event (s-concat user " loudly exclaims forsenE")) + (soundboard//play-clip "cave3.ogg" 75) + (w/model-toggle "forsen") + (setq w/twitch-redeem-sound-last cur))))) + (list + "SEASICKNESS GENERATOR" 3 + (lambda (user _) + (w/write-chat-event (s-concat user " is a salty sea dog")) + (w/model-toggle "zoom_wave"))) + (list + "The Pharaoh's Curse" 3 + (lambda (user _) + (w/write-chat-event (format "%s drew the ire of the Pharaoh upon me" user)) + (w/obs-activate-toggle 'pharaohs-curse) + )) + (list + "pursue idol dream" 3 + (lambda (user _) + (w/write-chat-event (format "Helping %s pursue their idol dream~" user)) + (w/obs-activate-toggle 'chase-dreams) + (w/model-region-user-avatar "hair" user))) + (list + "INTJ stare" 3 + (lambda (user _) + (w/write-chat-event (format "%s suggested a little more sodium chloride next time" user)) + (w/obs-activate-toggle 'intj-stare))) + (list + "Live LCOLONQ Reaction" 3 + (lambda (user _) + (w/write-chat-event (format "%s demanded extremely \"hype\" reactions, &c." user)) + (w/obs-activate-toggle 'live-reaction))) + (list + "Live friend Reaction" 3 + (lambda (user _) + (w/write-chat-event (format "%s demanded extremely \"hype\" reactions, &c. but from \"friend\"!?" user)) + (w/obs-activate-toggle 'live-friend-reaction))) + (list + "bells of bezelea" 4 + (lambda (user msg) + (w/get-song + msg + (lambda (song) + (if song + (progn + (w/write-chat-event (format "%s played a song: %s (sponsored by Bezelea)" user msg)) + (w/audio-muzak-enqueue user song)) + (w/write-chat-event (format "%s played the bells (sponsored by Bezelea)" user)) + (w/audio-muzak-enqueue user msg)))))) + (list + "activate spell card" 4 + (lambda (user msg) + (w/write-chat-event + (format + "%s Sign: \"%s\"" + (s-titleize user) + (s-titleized-words (alist-get user w/twitch-chat-history (w/pick-random w/overlay-spellcard-names) nil #'cl-equalp)))) + (w/overlay-decode-shorthand-bml + msg + (lambda (data) + (w/overlay-start-barrage data))))) + (list "palette swap (hair)" 5 (w/handle-redeem-region-swap "hair")) + (list "palette swap (highlight)" 5 (w/handle-redeem-region-swap "highlight")) + (list "palette swap (eyes)" 5 (w/handle-redeem-region-swap "eyes")) + ;; (list "palette swap (hat)" 5 (w/handle-redeem-region-swap "hat")) + (list "palette swap (hands)" 5 (w/handle-redeem-region-swap "hands")) + (list + "run program" 6 + (lambda (user inp) + (if (w/user-authorized) + (progn + (w/write-chat-event (s-concat user " runs program: " inp)) + (w/bless inp 50)) + (w/write-chat-event (format "%s is not authorized to run code" user))))) + (list + "feed friend" 10 + (lambda (user inp) + (let ((cur (float-time))) + (when (> (- cur w/twitch-redeem-sound-last) 2) + (w/write-chat-event (s-concat user " feeds \"friend\" " inp)) + (w/friend-feed user inp) + (setq w/twitch-redeem-sound-last cur))))) + (list + "talk to friend" 10 + (lambda (user inp) + (let ((cur (float-time))) + (when (> (- cur w/twitch-redeem-sound-last) 2) + (w/write-chat-event (s-concat user " talks to \"friend\": " inp)) + (w/friend-chat user inp) + (setq w/twitch-redeem-sound-last cur))))) + (list + "friend composes song" 10 + (lambda (user inp) + (let ((cur (float-time))) + (when (> (- cur w/twitch-redeem-sound-last) 2) + (w/write-chat-event (s-concat user " asks \"friend\" to compose a song about: " inp)) + (w/friend-compose-song inp) + (setq w/twitch-redeem-sound-last cur))))) + (list + "show friend wikipedia page" 10 + (lambda (user inp) + (let ((cur (float-time))) + (when (> (- cur w/twitch-redeem-sound-last) 2) + (w/write-chat-event (s-concat user " shows \"friend\" a Wikipedia page: " inp)) + (w/friend-react-wikipedia user inp) + (setq w/twitch-redeem-sound-last cur))))) + (list + "theme: maris-dark" 50 + (lambda (user _) + (w/write-chat-event (format "%s changed the theme: maris-dark" user)) + (w/change-theme 'ef-maris-dark))) + (list + "theme: autumn" 50 + (lambda (user _) + (w/write-chat-event (format "%s changed the theme: autumn" user)) + (w/change-theme 'ef-autumn))) + (list + "theme: tritanopia-dark" 50 + (lambda (user _) + (w/write-chat-event (format "%s changed the theme: tritanopia-dark" user)) + (w/change-theme 'ef-tritanopia-dark))) + (list + "theme: duo-dark" 50 + (lambda (user _) + (w/write-chat-event (format "%s changed the theme: duo-dark" user)) + (w/change-theme 'ef-duo-dark))) + (list + "theme: bio" 50 + (lambda (user _) + (w/write-chat-event (format "%s changed the theme: bio" user)) + (w/change-theme 'ef-bio))) + (list + "theme: rosa" 50 + (lambda (user _) + (w/write-chat-event (format "%s changed the theme: rosa" user)) + (w/change-theme 'ef-rosa))) + (list + "gamer" 500 + (lambda (user _) + (let ((cur (float-time))) + (when (> (- cur w/twitch-redeem-sound-last) 2) + (w/write-chat-event (s-concat user "'s Gamer Sacrifice summoned an entity")) + (soundboard//play-clip "videogame.ogg") + (w/obs-activate-toggle 'thug-life) + (setq w/twitch-redeem-sound-last cur))))) + (list + "arrow" 500 + (lambda (user msg) + (w/write-chat-event (format "%s points and says %S" user msg)) + (w/obs-activate-toggle 'clickbait msg))) + (list + "antipiracy" 500 + (lambda (user _) + (w/write-chat-event (format "%s does not condone any form of copyright infringement whatsoever." user)) + (w/obs-activate-toggle 'activate-nixos))) + (list + "super idol" 500 + (lambda (_ _) + (let ((cur (float-time))) + (when (> (- cur w/twitch-redeem-sound-last) 2) + (w/write-chat-event "SuperIdoldexiaorongdoumeinidetianbayuezhengwudeyangguangdoumeiniyaoyanreai105Cdenididiqingchundezhen") + (soundboard//play-clip "superidololdshortstyle.ogg") + (setq w/twitch-redeem-sound-last cur))))) + (list + "enable ad block" 500 + (lambda (user _) + (w/write-chat-event (format "%s turned on UltraBlock HYPER: Community Edition" user)) + (w/banner-ad-block))) + (list + "hex" 500 + (lambda (user inp) + (let* ((sp (s-split " " inp)) + (spell (car sp)) + (target (cadr sp))) + (if (and spell target (stringp spell) (stringp target)) (progn - (w/write-chat-event (format "%s played a song: %s (sponsored by Bezelea)" user msg)) - (muzak/play-tracks song)) - (w/write-chat-event (format "%s played the bells (sponsored by Bezelea)" user)) - (muzak/play-tracks msg)))))) - (list - "activate spell card" 4 - (lambda (user msg) - (w/write-chat-event - (format - "%s Sign: \"%s\"" - (s-titleize user) - (s-titleized-words (alist-get user w/twitch-chat-history (w/pick-random w/overlay-spellcard-names) nil #'cl-equalp)))) - (w/overlay-decode-shorthand-bml - msg - (lambda (data) - (w/overlay-start-barrage data))))) - (list "palette swap (hair)" 5 (w/handle-redeem-region-swap "hair")) - (list "palette swap (highlight)" 5 (w/handle-redeem-region-swap "highlight")) - (list "palette swap (eyes)" 5 (w/handle-redeem-region-swap "eyes")) - ;; (list "palette swap (hat)" 5 (w/handle-redeem-region-swap "hat")) - (list "palette swap (hands)" 5 (w/handle-redeem-region-swap "hands")) - (list - "run program" 6 - (lambda (user inp) - (if (w/user-authorized) - (progn - (w/write-chat-event (s-concat user " runs program: " inp)) - (w/bless inp 50)) - (w/write-chat-event (format "%s is not authorized to run code" user))))) - (list - "feed friend" 10 - (lambda (user inp) - (let ((cur (float-time))) - (when (> (- cur w/twitch-redeem-sound-last) 2) - (w/write-chat-event (s-concat user " feeds \"friend\" " inp)) - (w/friend-feed user inp) - (setq w/twitch-redeem-sound-last cur))))) - (list - "talk to friend" 10 - (lambda (user inp) - (let ((cur (float-time))) - (when (> (- cur w/twitch-redeem-sound-last) 2) - (w/write-chat-event (s-concat user " talks to \"friend\": " inp)) - (w/friend-chat user inp) - (setq w/twitch-redeem-sound-last cur))))) - (list - "friend composes song" 10 - (lambda (user inp) - (let ((cur (float-time))) - (when (> (- cur w/twitch-redeem-sound-last) 2) - (w/write-chat-event (s-concat user " asks \"friend\" to compose a song about: " inp)) - (w/friend-compose-song inp) - (setq w/twitch-redeem-sound-last cur))))) - (list - "show friend wikipedia page" 10 - (lambda (user inp) - (let ((cur (float-time))) - (when (> (- cur w/twitch-redeem-sound-last) 2) - (w/write-chat-event (s-concat user " shows \"friend\" a Wikipedia page: " inp)) - (w/friend-react-wikipedia user inp) - (setq w/twitch-redeem-sound-last cur))))) - (list - "theme: maris-dark" 50 - (lambda (user _) - (w/write-chat-event (format "%s changed the theme: maris-dark" user)) - (w/change-theme 'ef-maris-dark))) - (list - "theme: autumn" 50 - (lambda (user _) - (w/write-chat-event (format "%s changed the theme: autumn" user)) - (w/change-theme 'ef-autumn))) - (list - "theme: tritanopia-dark" 50 - (lambda (user _) - (w/write-chat-event (format "%s changed the theme: tritanopia-dark" user)) - (w/change-theme 'ef-tritanopia-dark))) - (list - "theme: duo-dark" 50 - (lambda (user _) - (w/write-chat-event (format "%s changed the theme: duo-dark" user)) - (w/change-theme 'ef-duo-dark))) - (list - "theme: bio" 50 - (lambda (user _) - (w/write-chat-event (format "%s changed the theme: bio" user)) - (w/change-theme 'ef-bio))) - (list - "theme: rosa" 50 - (lambda (user _) - (w/write-chat-event (format "%s changed the theme: rosa" user)) - (w/change-theme 'ef-rosa))) - (list - "gamer" 500 - (lambda (user _) - (let ((cur (float-time))) - (when (> (- cur w/twitch-redeem-sound-last) 2) - (w/write-chat-event (s-concat user "'s Gamer Sacrifice summoned an entity")) - (soundboard//play-clip "videogame.ogg") - (w/obs-activate-toggle 'thug-life) - (setq w/twitch-redeem-sound-last cur))))) - (list - "arrow" 500 - (lambda (user msg) - (w/write-chat-event (format "%s points and says %S" user msg)) - (w/obs-activate-toggle 'clickbait msg))) - (list - "antipiracy" 500 - (lambda (user _) - (w/write-chat-event (format "%s does not condone any form of copyright infringement whatsoever." user)) - (w/obs-activate-toggle 'activate-nixos))) - (list - "super idol" 500 - (lambda (_ _) - (let ((cur (float-time))) - (when (> (- cur w/twitch-redeem-sound-last) 2) - (w/write-chat-event "SuperIdoldexiaorongdoumeinidetianbayuezhengwudeyangguangdoumeiniyaoyanreai105Cdenididiqingchundezhen") - (soundboard//play-clip "superidololdshortstyle.ogg") - (setq w/twitch-redeem-sound-last cur))))) - (list - "hex" 500 - (lambda (user inp) - (let* ((sp (s-split " " inp)) - (spell (car sp)) - (target (cadr sp))) - (if (and spell target (stringp spell) (stringp target)) - (progn - (w/write-chat-event (s-concat user " hexed " target " with: " spell)) - (when-let ((type (alist-get spell w/hex-types nil nil #'s-equals?))) - (w/hex target user type))) - (w/write-chat-event (s-concat user "'s hex fizzled out with a puff of smoke!")))))) - (list - "VIPPER" 1000 - (lambda (user inp) - (soundboard//play-clip "aeiou.ogg") - (w/write-chat-event (s-concat user " gave VIP to " inp)) - (w/twitch-add-vip (s-chop-prefix "@" inp)))) - (list - "deVIPPER" 1000 - (lambda (user inp) - (soundboard//play-clip "uoiea.ogg") - (w/write-chat-event (s-concat user " removed VIP from " inp)) - (w/twitch-remove-vip (s-chop-prefix "@" inp)))) - (list - "total clarity" 5000 - (lambda (user _) - (w/stop-all-audio) - (run-with-timer - 1 nil - (lambda () (soundboard//play-clip "gong.ogg"))) - (w/write-chat-event (s-concat user " established total clarity")) - (w/obs-activate-toggle 'total-clarity))) - (list - "canonize me" 20000 - (lambda (user _) - (w/write-chat-event (s-concat user " was canonized!")) - (w/bible-canonize user))) - )) + (w/write-chat-event (s-concat user " hexed " target " with: " spell)) + (when-let ((type (alist-get spell w/hex-types nil nil #'s-equals?))) + (w/hex target user type))) + (w/write-chat-event (s-concat user "'s hex fizzled out with a puff of smoke!")))))) + (list + "VIPPER" 1000 + (lambda (user inp) + (soundboard//play-clip "aeiou.ogg") + (w/write-chat-event (s-concat user " gave VIP to " inp)) + (w/twitch-add-vip (s-chop-prefix "@" inp)))) + (list + "deVIPPER" 1000 + (lambda (user inp) + (soundboard//play-clip "uoiea.ogg") + (w/write-chat-event (s-concat user " removed VIP from " inp)) + (w/twitch-remove-vip (s-chop-prefix "@" inp)))) + (list + "spatiotemporal clarity" 2000 + (lambda (user _) + (w/stop-all-audio) + (run-with-timer + 1 nil + (lambda () (soundboard//play-clip "chinesebiblemozartfade.ogg"))) + (w/write-chat-event (s-concat user " established spatiotemporal clarity")) + (w/obs-activate-toggle 'spatiotemporal-clarity))) + (list + "total clarity" 5000 + (lambda (user _) + (w/stop-all-audio) + (run-with-timer + 1 nil + (lambda () (soundboard//play-clip "gong.ogg"))) + (w/write-chat-event (s-concat user " established total clarity")) + (w/obs-activate-toggle 'total-clarity))) + (list + "canonize me" 20000 + (lambda (user _) + (w/write-chat-event (s-concat user " was canonized!")) + (w/bible-canonize user))) + )) (provide 'wasp-twitch-redeems) ;;; wasp-twitch-redeems.el ends here |
