zombie_health.lsl
///////////////////////////////////////////////////////////////////////////
//  Copyright (C) Wizardry and Steamworks 2012 - License: GNU GPLv3      //
//  Please see: http://www.gnu.org/licenses/gpl.html for legal details,  //
//  rights of fair usage, the disclaimer and warranty conditions.        //
///////////////////////////////////////////////////////////////////////////
 
///////////////////////////////////////////////////////////////////////////
//    Copyright (C) 2011 Wizardry and Steamworks - License: GNU GPLv3    //
///////////////////////////////////////////////////////////////////////////
string wasProgress(integer percent, integer length, list symbols) {
    percent /= (integer)((float)100.0/(length));
    string p = llList2String(symbols,0);
    integer itra = 0;
    do {
        if(itra>percent-1) p += llList2String(symbols,2);
        else p += llList2String(symbols,1);
    } while(++itra<length);
    return p + llList2String(symbols,3);
}
 
///////////////////////////////////////////////////////////////////////////
//    Copyright (C) 2013 Wizardry and Steamworks - License: GNU GPLv3    //
///////////////////////////////////////////////////////////////////////////
vector wasPercentToGradient(float percent, string rgb) {
    if(llStringLength(rgb) != 2) {
        llSay(DEBUG_CHANNEL, "Assert failed, rgb parameter must consist of a pair of either r, g, or b.");
        return ZERO_VECTOR;
    }
    string a = llGetSubString(rgb, 0, 0);
    string b = llGetSubString(rgb, 1, 1);
    list col = [ "r", "g", "b" ];
    integer ax = llListFindList(col, (list)a);
    integer bx = llListFindList(col, (list)b);
    if(ax == -1 || bx == -1) {
        llSay(DEBUG_CHANNEL, "Asset failed, rgb parameters must contain either r, g, or b letters.");
        return ZERO_VECTOR;
    }
    col = llListReplaceList(col, (list)((100-percent)/100), ax, ax);
    col = llListReplaceList(col, (list)(percent/100), bx, bx);
    return 2*<llList2Float(col, 0), llList2Float(col, 1), llList2Float(col, 2)>;
}
 
integer health = 100;
vector color = <0,1,0>;
string agent = "";
 
default
{
    state_entry() {
        llSetText("Health: " + wasProgress(health, 10, ["[", "█", "░", "]"]), wasPercentToGradient(health, "rg"), 1);
        llSetTimerEvent(1);
    }
    collision_start(integer num)
    {
        if(llDetectedType(0) == AGENT) return;
        if(llDetectedVel(0) == <0,0,0>) return;
        key detected = llDetectedKey(0);
        if(detected) agent = llKey2Name(llGetOwnerKey(detected));
        health -= 10;
        llSetText("Health: " + wasProgress(health, 10, ["[", "█", "░", "]"]), wasPercentToGradient(health, "rg"), 1);
    }
    timer() {
        if(health <= 0) {
            llSetTimerEvent(0);
            state die;
        }
        if(health < 100) ++health;
        llSetText("Health: " + wasProgress(health, 10, ["[", "█", "░", "]"]), wasPercentToGradient(health, "rg"), 1);
    }
    on_rez(integer num) {
        llResetScript();
    }
}
 
state die {
    state_entry() {
        llSetTimerEvent(1.1-llGetRegionTimeDilation());
        integer comChannel = ((integer)("0x"+llGetSubString((string)llGetOwner(),-8,-1)) & 0x3FFFFFFF) ^ 0xBFFFFFFF;
        llRegionSay(comChannel, "kzb:" + agent);
    }
    on_rez(integer num) {
        llResetScript();
    }
    timer() {
        llRezObject("Zombie", llGetPos(), ZERO_VECTOR, ZERO_ROTATION, 0);
        llDie();
    }
}

secondlife/zombies/zombie/health.txt · Last modified: 2022/04/19 09:28 (external edit)

Access website using Tor Access website using i2p Wizardry and Steamworks PGP Key


For the copyright, license, warranty and privacy terms for the usage of this website please see the license, privacy, copyright and the plagiarism pages.