// oc_shock.lsl // OpenCollar 8.4 Shock App (template based on oc_shocker) string g_sSubMenu = "Shock"; string g_sParentMenu = "Apps"; integer CMD_OWNER = 500; integer CMD_TRUSTED = 501; integer CMD_WEARER = 503; integer CMD_SAFEWORD = 510; integer NOTIFY = 1002; integer SAY = 1004; integer LM_SETTING_SAVE = 2000; integer LM_SETTING_RESPONSE = 2002; integer MENUNAME_REQUEST = 3000; integer MENUNAME_RESPONSE = 3001; integer ANIM_START = 7000; integer ANIM_STOP = 7001; integer DIALOG = -9000; integer DIALOG_RESPONSE = -9001; string UPMENU = "BACK"; string g_sStrength = "Medium"; integer g_iDuration = 3; string g_sAnimSoft = "shock_soft"; string g_sAnimMedium = "shock_medium"; string g_sAnimHard = "shock_hard"; string g_sSound = "shock_sound"; integer g_iShock; ShockStart() { string anim = g_sAnimMedium; if (g_sStrength == "Soft") anim = g_sAnimSoft; else if (g_sStrength == "Hard") anim = g_sAnimHard; llMessageLinked(LINK_THIS, ANIM_START, anim, ""); if (llGetInventoryType(g_sSound) == INVENTORY_SOUND) llLoopSound(g_sSound,1.0); g_iShock = TRUE; llSetTimerEvent((float)g_iDuration); } ShockStop() { llStopSound(); llMessageLinked(LINK_THIS, ANIM_STOP, g_sAnimSoft, ""); llMessageLinked(LINK_THIS, ANIM_STOP, g_sAnimMedium, ""); llMessageLinked(LINK_THIS, ANIM_STOP, g_sAnimHard, ""); llParticleSystem([]); g_iShock = FALSE; llSetTimerEvent(0.0); } default { state_entry() { llOwnerSay("Shock app loaded."); } timer() { ShockStop(); } link_message(integer s, integer num, string str, key id) { if (num == CMD_SAFEWORD) ShockStop(); if ((num == CMD_OWNER || num == CMD_TRUSTED) && str == "shock") ShockStart(); if ((num == CMD_OWNER || num == CMD_TRUSTED) && str == "shock stop") ShockStop(); if (num == MENUNAME_REQUEST && str == g_sParentMenu) llMessageLinked(LINK_THIS, MENUNAME_RESPONSE, g_sParentMenu + "|" + g_sSubMenu, ""); } }