function set_resurrect() set_flag("aR", 1) cprint("As the Revival Token disolves in your hand you have the sudden sensation of invulnerability as if you could cheat death itself.") end function resurrect_by_token() local currentExp, lostExp, max_hp, max_mp, currentTime, lastTime, timeDiff, penalty, returnExp, returnHP, returnMP -- Set some important values lostExp = tonumber(get_flag("LXPL")) currentTime = get_os_time() penalty = 0 -- Calculate return values max_hp = get_value("max_hp") max_mp = get_value("max_mp") -- If EXP was actually lost (not a duel / PK) if lostExp > 0 then -- Check if the user has used the item before lastTime = tonumber(get_flag("LXPLT")) if lastTime ~= nil and lastTime > 0 then timeDiff = currentTime - lastTime if timeDiff < 300 then -- Less than five minutes passed penalty = .25 elseif timeDiff > 300 and timeDiff <= 600 then -- More than five minutes, less than ten minutes passed penalty = .50 end end -- Get the players current exp value currentExp = get_value("exp") -- If the value is valide if currentExp > 0 then -- Determine the penalty if penalty == 0 then returnExp = lostExp else returnExp = lostExp - (lostExp * penalty) end -- Determine the return hp/mp based on penalty returnHP = max_hp - (max_hp * penalty) returnMP = max_mp - (max_mp * penalty) -- Notify the user if penalty == .25 then cprint("You have been revived with a penalty of 25% reduction to your returned exp/hp/mp.") cprint("To avoid a 50% penalty you should wait five minutes before using the Revival Token again!") elseif penalty == .50 then cprint("You have been revived with a penalty of 50% reduction to your returned exp/hp/mp.") cprint("To avoid another 50% penalty you should wait ten minutes before using the Revival Token again!") end else cprint("Error: 2, Contact Alucard with this error immediately") end else -- Set the hp/mp to max (this was a pk) returnHp = max_hp returnMp = max_mp returnExp = 0 cprint("You have been revived with no penalty!") end -- Write the flags set_flag("LXPL", 0) set_flag("LXPLT", currentTime) set_flag("aR", 0) -- Set the values if returnExp > 0 then add_exp_jp(returnExp) end dlg_special('confirm_window','set_value("hp",'.. returnHP..')set_value("mp",'..returnMP..')',"Do you want to revive?") -- set_value("hp", returnHP) -- set_value("mp", returnMP) end