← back to Wallco Ai
drunk-*: every design now shows a vice — joint/cigar/pipe/bong (was joint-only)
808384d74819935e02b7bc040538c68787881913 · 2026-05-26 15:11:35 -0700 · Steve Abrams
Steve directive: "all must show alcohol or cigars or pipes or bongs." Added
CIGARS/PIPES/BONGS prop pools to the shared module + a combined SMOKES pool;
buildMandatoryMotifs and all three array-based generators now draw the mandatory
smoke prop from SMOKES instead of JOINTS-only. Drink (alcohol) was already
mandatory. Verified: 20 sampled prompts → 0 vice-less, variety across all 4 types.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Files touched
M scripts/drunk_animal_prompts.jsM scripts/drunk_monkeys_birds_subdued_prompts.jsM scripts/drunk_monkeys_v2_prompts.jsM scripts/drunk_motif_shared.js
Diff
commit 808384d74819935e02b7bc040538c68787881913
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Tue May 26 15:11:35 2026 -0700
drunk-*: every design now shows a vice — joint/cigar/pipe/bong (was joint-only)
Steve directive: "all must show alcohol or cigars or pipes or bongs." Added
CIGARS/PIPES/BONGS prop pools to the shared module + a combined SMOKES pool;
buildMandatoryMotifs and all three array-based generators now draw the mandatory
smoke prop from SMOKES instead of JOINTS-only. Drink (alcohol) was already
mandatory. Verified: 20 sampled prompts → 0 vice-less, variety across all 4 types.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
---
scripts/drunk_animal_prompts.js | 16 +++----
scripts/drunk_monkeys_birds_subdued_prompts.js | 2 +-
scripts/drunk_monkeys_v2_prompts.js | 2 +-
scripts/drunk_motif_shared.js | 60 +++++++++++++++++++++++---
4 files changed, 65 insertions(+), 15 deletions(-)
diff --git a/scripts/drunk_animal_prompts.js b/scripts/drunk_animal_prompts.js
index 4ae7af0..2d38552 100644
--- a/scripts/drunk_animal_prompts.js
+++ b/scripts/drunk_animal_prompts.js
@@ -305,8 +305,8 @@ function buildPrompt(seed = null) {
const pick = arr => arr[Math.floor(rng() * arr.length)];
return [
pick(ANIMALS), pick(TABLEAUX),
- // Mandatory motifs — Steve 2026-05-25
- pick(JOINTS),
+ // Mandatory motifs — Steve 2026-05-25; smoke prop = joint/cigar/pipe/bong (2026-05-26)
+ pick(SHARED.SMOKES),
pick(SWINGS),
pick(BOTTLE_BACKDROPS),
pick(SHARED.TEXTURE_GROUNDS).voice,
@@ -325,8 +325,8 @@ function buildPrompt(seed = null) {
const refClause = SHARED.pickReferenceClause('drunk-animals');
return [
pickRand(ANIMALS), pickRand(TABLEAUX),
- // Mandatory motifs — Steve 2026-05-25
- pickRand(JOINTS),
+ // Mandatory motifs — Steve 2026-05-25; smoke prop = joint/cigar/pipe/bong (2026-05-26)
+ pickRand(SHARED.SMOKES),
pickRand(SWINGS),
pickRand(BOTTLE_BACKDROPS),
pickTextureGroundVoice(),
@@ -354,10 +354,10 @@ function buildN(n) {
animal,
pickRand(TABLEAUX),
// Mandatory motifs — Steve 2026-05-25 — every drunk-animal must show
- // alcohol-in-hand + lit joint + swinging + wild-bottle backdrop +
- // rendered on a natural-fiber texture ground (grasscloth/sisal/raffia/
- // Madagascar etc.) + Met PD + prior wallco design reference clause.
- pickRand(JOINTS),
+ // alcohol-in-hand + a smoke prop (joint/cigar/pipe/bong, Steve 2026-05-26)
+ // + swinging + wild-bottle backdrop + rendered on a natural-fiber texture
+ // ground (grasscloth/sisal/raffia/Madagascar etc.) + Met PD + prior ref.
+ pickRand(SHARED.SMOKES),
pickRand(SWINGS),
pickRand(BOTTLE_BACKDROPS),
pickTextureGroundVoice(),
diff --git a/scripts/drunk_monkeys_birds_subdued_prompts.js b/scripts/drunk_monkeys_birds_subdued_prompts.js
index 937956c..524c57c 100644
--- a/scripts/drunk_monkeys_birds_subdued_prompts.js
+++ b/scripts/drunk_monkeys_birds_subdued_prompts.js
@@ -161,7 +161,7 @@ function buildOne(i) {
// 60% SHARED tiki/cognac/champagne tableaux, 40% local subdued — gives
// every design rich drink vocabulary while preserving the subdued voice.
const tableau = Math.random() < 0.6 ? pick(SHARED.TABLEAUX) : pick(TABLEAUX);
- const joint = pick(SHARED.JOINTS);
+ const joint = pick(SHARED.SMOKES); // joint/cigar/pipe/bong (Steve 2026-05-26)
const swing = pick(SHARED.SWINGS);
const bottleBackdrop = pick(SHARED.BOTTLE_BACKDROPS);
const texture = pick(SHARED.TEXTURE_GROUNDS);
diff --git a/scripts/drunk_monkeys_v2_prompts.js b/scripts/drunk_monkeys_v2_prompts.js
index 53e864b..e43853b 100644
--- a/scripts/drunk_monkeys_v2_prompts.js
+++ b/scripts/drunk_monkeys_v2_prompts.js
@@ -145,7 +145,7 @@ function buildOne(i) {
// Mix local short-form ACTIONS with SHARED's rich tiki/cognac/champagne
// TABLEAUX — 60% chance to use SHARED for variety.
const action = Math.random() < 0.6 ? pick(SHARED.TABLEAUX) : pick(ACTIONS);
- const joint = pick(SHARED.JOINTS);
+ const joint = pick(SHARED.SMOKES); // joint/cigar/pipe/bong (Steve 2026-05-26)
const swing = pick(SHARED.SWINGS);
const bottleBackdrop = pick(SHARED.BOTTLE_BACKDROPS);
const texture = pick(SHARED.TEXTURE_GROUNDS);
diff --git a/scripts/drunk_motif_shared.js b/scripts/drunk_motif_shared.js
index c70fe89..05cf986 100644
--- a/scripts/drunk_motif_shared.js
+++ b/scripts/drunk_motif_shared.js
@@ -57,6 +57,49 @@ const JOINTS = [
'a stubby roach pinched in a tiny silver clip, ember glowing, single thread of smoke',
];
+// ── CIGARS — lit cigars w/ smoke (Steve 2026-05-26: vice set expanded) ──
+const CIGARS = [
+ 'a fat lit cigar clenched in its teeth, a thick curl of blue-grey smoke rising',
+ 'a long Churchill cigar held between two fingers/claws, ember glowing, a lazy smoke ribbon',
+ 'a stubby cigar balanced on the rim of the glass, ash long and curling, smoke drifting up',
+ 'a cigar tucked in the corner of its grin, a fat smoke ring blown overhead',
+ 'a freshly clipped celebratory cigar held aloft like a trophy, ember bright, single smoke curl',
+ 'a cigar mid-puff, cheeks puffed, an expanding cloud of smoke around its head',
+ 'a half-smoked cigar resting in a tiny crystal ashtray balanced on its knee, smoke trailing',
+ 'an oversized cigar gripped in one paw, gold band on the wrapper, thick smoke plume rising',
+];
+
+// ── PIPES — tobacco pipes w/ smoke ──────────────────────────────────────
+const PIPES = [
+ 'a curved briar tobacco pipe clenched in its teeth, a slow wisp of smoke curling from the bowl',
+ 'a long churchwarden pipe held elegantly, ember glowing in the bowl, a thin smoke thread',
+ 'a meerschaum pipe carved like a tiny face, puffing contentedly, a smoke ring overhead',
+ 'a bent-stem pipe balanced in one paw, the other tamping the bowl, a lazy smoke curl',
+ 'a corncob pipe gripped in its grin, two little puffs of smoke escaping the corner',
+ 'a calabash gourd pipe (Sherlock-style) held aloft, a dramatic smoke plume, one eye squinted',
+ 'a sleek modern pipe mid-puff, a fat smoke ring expanding around its head',
+ 'a pipe resting on the cocktail-glass rim, the bowl still smoldering, a ribbon of smoke rising',
+];
+
+// ── BONGS — water bongs / hookahs w/ smoke ──────────────────────────────
+const BONGS = [
+ 'leaning over an ornate glass water-bong mid-pull, bubbles churning, a cloud of smoke building in the chamber',
+ 'a tall colorful glass bong clutched in both paws, water frothing, cheeks puffed mid-hit',
+ 'an elaborate hand-blown bong shaped like a tiki idol, smoke swirling in the chamber, crossed eyes',
+ 'a small percolator bong balanced on its belly, milky smoke filling the tube, a blissful grin',
+ 'a vintage hookah with a long coiled hose, puffing a fat exotic smoke cloud, lounging',
+ 'a multi-chamber glass bong taller than the animal, smoke cascading through the levels, wide-eyed',
+ 'a compact spiral-glass bong held aloft, smoke spiraling up the helix, a lopsided smile',
+ 'a brass-and-glass hookah shared via a curling hose, a slow smoke plume, reclined pose',
+];
+
+// ── SMOKES — combined mandatory smoke-prop pool (Steve 2026-05-26) ──────
+// "all must show alcohol or cigars or pipes or bongs." Every drunk design
+// already gets a mandatory drink (TABLEAUX = alcohol); the smoke slot now
+// draws from the full vice set — joints + cigars + pipes + bongs — so the
+// implement varies instead of always being a cannabis joint.
+const SMOKES = [...JOINTS, ...CIGARS, ...PIPES, ...BONGS];
+
// ── SWINGS — animal mid-swing OR mid-fall from something ────────────────
// Steve 2026-05-25 followup: "animals falling off of trees grasping on
// with one hand.. drunk". So both attached-swinging AND one-hand-grasp-
@@ -286,9 +329,16 @@ function pickRand(arr, exclude) {
// One-line mandatory motif block — drop-in for any prompt generator that
// wants the guaranteed alcohol+joint+swing+bottle-backdrop+texture clause.
function buildMandatoryMotifs(category) {
+ // Mandatory vice: every design shows a drink (alcohol) AND a smoke implement
+ // drawn from the full set — joint / cigar / pipe / bong (Steve 2026-05-26
+ // "all must show alcohol or cigars or pipes or bongs"). `joint` kept as an
+ // alias of `smoke` so existing prompt builders that reference m.joint still
+ // emit the varied prop without a code change.
+ const smoke = pickRand(SMOKES);
return {
drink: pickRand(TABLEAUX),
- joint: pickRand(JOINTS),
+ smoke,
+ joint: smoke,
swing: pickRand(SWINGS),
bottleBackdrop: pickRand(BOTTLE_BACKDROPS),
texture: pickRand(TEXTURE_GROUNDS),
@@ -304,12 +354,12 @@ function buildMandatoryMotifs(category) {
const DRUNK_NEGATIVE_SUFFIX =
'whimsical playful joyful mischievous tone (NEVER grim, NEVER dark). ' +
'Lean toward BOTANICALS (flowers, fruit, blossoms) over leaves/foliage. ' +
- 'NO cannabis leaf, NO marijuana leaf (the joint must read as a small rolled-paper prop, never as plant material). ' +
+ 'NO cannabis leaf, NO marijuana leaf (any joint must read as a small rolled-paper prop, never as plant material; cigars/pipes/bongs read as small glassware/tobacco props). ' +
'NO monstera, NO palm fronds, NO banana leaves, NO tropical jungle. ' +
'NO real-brand-name labels, NO logos, NO text on bottles, no watermark.';
module.exports = {
- JOINTS, SWINGS, TABLEAUX, BOTTLE_BACKDROPS, TEXTURE_GROUNDS,
+ JOINTS, CIGARS, PIPES, BONGS, SMOKES, SWINGS, TABLEAUX, BOTTLE_BACKDROPS, TEXTURE_GROUNDS,
FASHION_PALETTES, TONE_ON_TONE_DEEP_PALETTES, DEFAULT_PALETTES,
pickRand, pickReferenceClause, buildMandatoryMotifs,
DRUNK_NEGATIVE_SUFFIX,
@@ -319,7 +369,7 @@ if (require.main === module) {
const m = buildMandatoryMotifs();
console.log('Sample mandatory motifs:');
console.log(' drink: ' + m.drink);
- console.log(' joint: ' + m.joint);
+ console.log(' smoke: ' + m.smoke);
console.log(' swing: ' + m.swing);
console.log(' bottle-backdrop: ' + m.bottleBackdrop);
console.log(' texture: ' + m.texture.slug + ' — ' + m.texture.voice);
@@ -329,6 +379,6 @@ if (require.main === module) {
console.log('Texture grounds: ' + TEXTURE_GROUNDS.length);
console.log('Drink tableaux: ' + TABLEAUX.length);
console.log('Bottle backdrops: ' + BOTTLE_BACKDROPS.length);
- console.log('Joints: ' + JOINTS.length);
+ console.log('Smokes (joint+cigar+pipe+bong): ' + SMOKES.length + ` (J${JOINTS.length}/C${CIGARS.length}/P${PIPES.length}/B${BONGS.length})`);
console.log('Swings: ' + SWINGS.length);
}
← 41574f3 Add Replicate-only chinoiserie sample generator (YOLO task #
·
back to Wallco Ai
·
docs: correct CLAUDE.md — designs.json IS deployed, not excl bb2d819 →