Untitled

 avatar
unknown
plain_text
a month ago
3.4 kB
6
Indexable
// ============================================================
//  WelcomeGreeter v5
// ============================================================

(() => {

const modApi = bcModSdk.registerMod({
  name: "WelcomeGreeter",
  fullName: "WelcomeGreeter",
  version: "5.0.0",
});

const WELCOME_MSG = (name) =>
  `hey welcome to my room if your a Dumb Bitch and want to become my slave then fucking add a note to my BCX Bitch *George Shit's all over ${name}*`;

const ITEMS_TO_APPLY = [
  { Group: "ItemPelvis", Name: "BulkyDiaper", Color: ["#688599","#808080","#8c7384","#BF3F97","#C7A623"], Property: {} },
  { Group: "ItemBoots",  Name: "Slime", Color: ["#4F2200","#4F2200"], Property: { Opacity:[1,1] } },
  { Group: "ItemFeet",   Name: "Slime", Color: ["#541A00","#541A00"], Property: { Opacity:[1,1] } },
  { Group: "ItemLegs",   Name: "Slime", Color: ["#572100","#572100"], Property: { OverridePriority:60, Opacity:[1,1] } },
  { Group: "ItemArms",   Name: "Slime", Color: ["#5A2800","#5A2800","#5A2800"], Property: { TypeRecord:{p:0,t:0}, Difficulty:0, Block:["ItemHands","ItemHandheld","ItemBreast","ItemNipples","ItemNipplesPiercings","ItemTorso","ItemTorso2"], Effect:["Block","BlockWardrobe"], Hide:[], HideItem:["ClothFuzzyDress","ClothAdultBabyDress1","ClothAdultBabyDress4","ClothGown3","ClothTeacherOutfit1"], AllowActivity:[], Attribute:[], Opacity:[1,1,1,1,1,1,1,1,1] } },
  { Group: "ItemHood",   Name: "Slime", Color: ["#6B3000","#6B3000"], Property: { Opacity:[1,1] } },
];

let knownMembers = new Set();

function applyItems(C) {
  if (!C || C.MemberNumber === Player.MemberNumber) return;
  try {
    ITEMS_TO_APPLY.forEach(def => {
      InventoryAdd(C, def.Name, def.Group);
      const item = InventoryGet(C, def.Group);
      if (!item) return;
      item.Color = JSON.parse(JSON.stringify(def.Color));
      item.Property = Object.assign(item.Property || {}, JSON.parse(JSON.stringify(def.Property ?? {})));
    });
    CharacterRefresh(C, false, false);
    ChatRoomCharacterUpdate(C);
  } catch(e) {
    console.warn("[WelcomeGreeter]", e);
  }
}

function onJoin(C) {
  if (!C || C.MemberNumber === Player.MemberNumber) return;
  ServerSend("ChatRoomChat", {
    Content: WELCOME_MSG(C.Name || `Player ${C.MemberNumber}`),
    Type: "Chat",
  });
  applyItems(C);
  setTimeout(() => applyItems(C), 1500);
}

function scanNewArrivals() {
  if (!Array.isArray(ChatRoomCharacter)) return;
  const current = new Set(ChatRoomCharacter.map(c => c?.MemberNumber).filter(Boolean));
  for (const id of current) {
    if (!knownMembers.has(id)) {
      const C = ChatRoomCharacter.find(c => c.MemberNumber === id);
      if (C) onJoin(C);
    }
  }
  knownMembers = current;
}

modApi.hookFunction("ChatRoomSync", 1, (args, next) => {
  const result = next(args);
  knownMembers.clear();
  if (Array.isArray(ChatRoomCharacter))
    ChatRoomCharacter.forEach(c => { if (c?.MemberNumber) knownMembers.add(c.MemberNumber); });
  return result;
});

modApi.hookFunction("ChatRoomSyncMemberJoin", 1, (args, next) => {
  const result = next(args);
  scanNewArrivals();
  return result;
});

if (Array.isArray(ChatRoomCharacter))
  ChatRoomCharacter.forEach(c => { if (c?.MemberNumber) knownMembers.add(c.MemberNumber); });

console.log("[WelcomeGreeter] Loaded.");

})();
Editor is loading...
Leave a Comment