/*
目录：
    屏幕亮度----------OnBrightness
    时钟-----------OpenClock
    计时器-----------Oncountchange
    今日运势-----------Choice.list
    我问你答------------QosInsert，QosSelectAll，QosDelete、QosSelect
    厄尔科斯月历-------------Onelkslnb，dellniba
*/
//**** 屏幕亮度（按键引用）----------------------------------------
OnBrightness
{
    _nun = TOINT(SAORI("saori\brightness_saori.dll","GET","1"))
    if TOINT(reference0) ; _nun += reference0
    elseif TOINT(_argv[0]) ; _nun += _argv[0]
    
    if _nun>100 ; _nun = 100
    if _nun<10 ; _nun = 10
    
    "\0\s[%(bsus)]\f[name,%(zitai)]"
    --
    if SAORI("saori\brightness_saori.dll","SET","1","%(_nun)","smooth","10","10") 
    { "\_q当前亮度："+TOSTR(SAORI("saori\brightness_saori.dll","GET","1")) }
    else { "设置失败" }
    
    UNLOADLIB("saori\brightness_saori.dll")
}



//**** 时钟（按键引用）---------------------------------------------------
//**** 显示分辨率
OnDisplayChange
{
    displaybpp    = reference0
    displaywidth  = reference1
    displayheight = reference2
}
OpenClock
{ void SAORI("saori\AnalogClock.dll","show","clock",displaywidth-0.1*displaywidth,displayheight-0.2*displayheight) }
CloseClock
{ void SAORI("saori\AnalogClock.dll","hide") }
OnClockTime
{ "\f[name,%(zitai)]现在的时间是%(wisjikan(reference0)):%(wisjikan(reference1)):%(wisjikan(reference2))" }
OnClockClose
{ "\f[name,%(zitai)]vanitas vanitatum et omnia vanitas" }



//**** 计时器（沟通框引用）-------------------------------------------------
Chkdt
{
    if CHRCODE(_argv[0])!=100 {0;return}
    _dt=SPLIT(_argv[0],"dt ")[1]
    if !_dt {0;return}
    if !ISEVALUABLE(_dt) {0;return}
    if !ISINTSTR("%(EVAL(_dt))") {0;return}
    1
}
Oncountchange
{
    if reference0 ; "\t\_q\0\s[%(bsus+2)]\q[[取消\],celcount]\n倒数%(reference0)秒钟…\_w[500]…\_w[500]\![raise,Oncountchange,%(reference0-1)]"
    else ; "\t\0\s[%(bsus+4)]\![sound,play,mp3/n66.mp3,--volume=%(palvol)]倒计时结束！\x\![sound,stop]\e"
}
Choice.celcount
{"\e"}



//**** 今日运势 ------------------------------------------------------------------
Choice.list
{
    _head = "%(year)%(wisjikan(month))%(wisjikan(day))"
    void SRAND(TOINT(_head))
    _base1 = RAND(104)
    _base2 = RAND(104)
    while _base2 == _base1 {
        _base2 = RAND(104) }
    _base3 = RAND(104)
    _base4 = RAND(104)
    while _base4 == _base3 {
        _base4 = RAND(104) }
    _shiyi = fortune_result(RAND(107)+1)
    void SRAND()

    "\*\0\s[%(bsus)]\b[0]\![set,autoscroll,disable]\f[name,%(zitai)]\_q/
    %(username)今日运势：%(_shiyi[1])%(_shiyi[0])/
    \n\_l[35,-]宜：/
    \_l[70,-]%(dosomething[_base1*3]) —— %(dosomething[_base1*3+1])/
    \n\_l[70,-]%(dosomething[_base2*3]) —— %(dosomething[_base2*3+1])/
    \n\n\_l[35,-]不宜：/
    \_l[70,-]%(dosomething[_base3*3]) —— %(dosomething[_base3*3+2])/
    \n\_l[70,-]%(dosomething[_base4*3]) —— %(dosomething[_base4*3+2])"

}

dosomething : array
{
    {'看直播', '喜欢的V开歌回啦', '喜欢的V咕了一整天'}
    {'打轴', '一次性过', '"谁说话这么难懂"'}
    {'剪辑', '灵感爆发', '一团乱麻'}
    {'校对', '变成无情的审轴机器', '被闪轴闪瞎眼'}
    {'浏览Pixiv', '发现符合xp的涩图', '找不到想要的涩图'}
    {'打SC', '享受石油佬的乐趣', '吃土中'}
    {'吃人', '你面前这位有成为神龙的潜质', '这人会用Aegisub吗？'}
    {'背单词', '这次六级肯定过', '背完50个忘了45个'}
    {'翘课', '老师不会点名', '老师准会抽到你来回答问题'}
    {'做作业', '做的每个都对', '做一个做错一个'}
    {'锻炼一下身体', '身体健康, 更加性福', '能量没消耗多少, 吃得却更多'}
    {'浏览成人网站', '重拾对生活的信心', '你会心神不宁'}
    {'修复BUG', '你今天对BUG的嗅觉大大提高', '新产生的BUG将比修复的更多'}
    {'上AB站', '还需要理由吗?', '满屏兄贵亮瞎你的眼'}
    {'打LOL', '你将有如神助', '你会被虐的很惨'}
    {'打DOTA', '天梯5000分不是梦', '你会遇到猪一样的队友'}
    {'打DOTA2', 'Godlike', '不怕神一样的对手，就怕猪一样的队友'}
    {'穿女装', '你会得到很多炙热的目光', '被父母看到'}
    {'组模型', '今天的喷漆会很完美', '精神不集中板件被剪断了'}
    {'熬夜', '夜间的效率更高', '明天有很重要的事'}
    {'抚摸猫咪', '才不是特意蹭你的呢', '死开! 愚蠢的人类'}
    {'烹饪', '黑暗料理界就由我来打败', '难道这就是……仰望星空派?'}
    {'告白', '其实我也喜欢你好久了', '对不起, 你是一个好人'}
    {'追新番', '完结之前我绝不会死', '会被剧透'}
    {'日麻', '立直一发自摸！', '碰喵吃喵杠喵荣喵！'}
    {'音游', 'FCACFRPR不过如此', '又双叒叕LOST了...'}
    {'向大佬请教', '太棒了，学到许多', '太棒了，什么都没学到'}
    {'早起', '迎接第一缕阳光', '才4点，再睡一会'}
    {'早睡', '第二天精神饱满', '失眠数羊画圈圈'}
    {'入正版游戏', '买了痛三天，不买悔三年', 'emmmm，汇率还是……'}
    {'补旧作', '意外地对胃口', '会踩雷'}
    {'晾晒老婆（抱枕套）', '天気も晴れココロも晴れ', '引发路人围观'}
    {'不按攻略打', '居然是HAPPY END', '碰到BAD END'}
    {'观赏CG包', '社保。', '还不去如看游戏剧情'}
    {'研究黄油创作理论', '增进鉴赏水平', '闲适玩家不需要这些'}
    {'暴露性癖', '会引来很多趣味相同的变态', '四斋蒸鹅心'}
    {'施法', '传统手艺精进了', '房间门关好了吗'}
    {'刷新作动态', '喜欢的画师发了新图', '发现游戏跳票'}
    {'回味玩过的作品', '重温感动', '还是先看看新作'}
    {'出门走走', '宅久了要发霉', '太陽が眩しすぎる'}
    {'思考人生', '自己的幸福呢？', '喵喵……喵？'}
    {'撸猫', '啊……好爽', '家里没有猫的洗洗睡吧'}
    {'抽卡', '单抽出货', '到井前一发出货'}
    {'拼乐高', '顺利完工', '发现少了一块零件'}
    {'跳槽', '新工作待遇大幅提升', '待遇还不如之前的'}
    {'和女神聊天', '今天天气不错', '我去洗澡了，呵呵'}
    {'写开源库', '今天北斗七星汇聚，裤子造的又快又好', '写好会发现github上已经有了更好的'}
    {'给测试妹子埋个bug', '下辈子的幸福就靠这个bug了', '妹子会认为你活和代码一样差'}
    {'写单元测试', '写单元测试将减少出错', '写单元测试会降低你的开发效率'}
    {'洗澡', '你几天没洗澡了？', '会把设计方面的灵感洗掉'}
    {'白天上线', '今天白天上线是安全的', '可能导致灾难性后果'}
    {'重构', '代码质量得到提高', '你很有可能会陷入泥潭'}
    {'招人', '你面前这位有成为牛人的潜质', '这人会写程序吗？'}
    {'面试', '面试官今天心情很好', '面试官不爽，会拿你出气'}
    {'申请加薪', '老板今天心情很好', '公司正在考虑裁员'}
    {'提交代码', '遇到冲突的几率是最低的', '会遇到的一大堆冲突'}
    {'代码复审', '发现重要问题的几率大大增加', '你什么问题都发现不了，白白浪费时间'}
    {'晚上上线', '晚上是程序员精神最好的时候', '你白天已经筋疲力尽了'}
    {'乘电梯', '正好赶上打卡截止时间', '电梯超载'}
    {'复读', '有时候，人云亦云也是一种生存方式', '你的对手是鸽子'}
    {'肝爆', '努力使人进步，肝爆让人快乐', '醒醒，限时活动没了'}
    {'氪金', '早买早享受，晚买哭着求', '第二天就 50% off'}
    {'卖弱', '楚楚动人更容易打动群友', 'Boy♂next♂door'}
    {'唱脑力', '唱一次提神醒脑，唱两次精神百倍', '会与复读机一起对群聊造成毁灭性打击'}
    {'看手元', '从手元中获得一点音游经验', '会被大佬闪瞎'}
    {'录手元', '音游届的未来新星UP主就是你', '打完歌才发现忘记开录像'}
    {'挑战魔王曲', '一上来就是一个新纪录', '有这点时间还不如干点别的'}
    {'咕咕咕', '一时咕一时爽', '会被抓起来，被群友强迫穿上女装'}
    {'与群友水聊', '扶我起来我还能打字', '一不小心就被大佬闪瞎'}
    {'迫害大佬', '迫害是大佬进步的阶梯', '亲爱的，你号没了'}
    {'算命', '算啥都准', '诸事不宜'}
    {'成为魔法少女', '勇敢的烧酒啊快去拯救世界吧！', '会掉头'}
    {'沟通克苏鲁', '奇怪的知识增加了', '&▓▓▓◆▓▓▓￥#▓@■.◆'}
    {'看新番', '你看的这部新番有成为本季度霸权的可能', '这周更新的是总集篇'}
    {'看旧番', '在宅的道路上又前进了一步', '被剧情喂屎'}
    {'看里番', '传统手艺精进了', '房间门关好了吗？'}
    {'看漫画', '正在追的作品十话连发', '刷到正在追的作品的腰斩停更通知'}
    {'看轻小说', '插画很好舔，孩子很满意', '买插画送的厕纸有啥好看的'}
    {'看本子', '被精准戳中性癖', '更新的全是你不喜欢的类型'}
    {'前往女仆咖啡厅', '感受身心上的治愈', '终究是虚假的情景，只会让你内心更加空虚'}
    {'女装Cosplay', '好评如潮', '照片传到班级群还被认出来'}
    {'修仙', '能突破到下一个境界', '会在进阶中遭受心魔侵蚀'}
    {'渡劫', '万事俱备，只待飞升', '没能扛过去，寿元终'}
    {'在妹子面前吹牛', '改善你矮穷挫的形象', '会被识破'}
    {'发超过10条的状态', '显得你很高产', '会被人直接拉黑'}
    {'在B站上传视频', '播放量爆炸', '没人看'}
    {'搬运视频', '会被硬币砸得很爽', '不会有人看的'}
    {'上微博', '今天的瓜不能错过', '被智障发言糊一脸'}
    {'作死', '节目效果一流', '吾之旧友弔似汝，如今坟头草丈五'}
    {'看老黄历', '反正你已经看了', '反正你已经看了'}
    {'学习一门新技能', '有会成为大神的资质', '可能会误入歧途'}
    {'睡懒觉', '避免内存不足', '早上很早醒来睡不着了'}
    {'睡懒觉', '你今天会更有精神', '会错过重要的事情'}
    {'上课玩手机', '会发现好玩的事情', '会被老师教训'}
    {'抄作业', '没有作业抄的学生生活是罪恶的！', '老师会认真批改，你懂的……'}
    {'学习', '你已经几天(月、年)没学习了？', '会睡着'}
    {'出门带伞', '今天下雨你信不信', '好运气都被遮住了'}
    {'走夜路', '偶尔也要一个人静一静', '有坏人'}
    {'补番', '你会后悔没早点看这部番', '你会后悔看了这部番'}
    {'修图', '原片直出毫无压力', 'Photoshop未响应'}
    {'赶稿', '完美守住deadline', '终究还是超期了'}
    {'摸鱼', '摸鱼一时爽，一直摸鱼一直爽', '被老板当场抓获'}
    {'入手新游戏', '你会玩的很开心', '这游戏明天就99%off'}
    {'出门', '今天会是个好天气', '中途突降暴雨'}
}

fortune_result
{
    case _argv[0] {
        when 1-3
            ('☆☆☆☆☆☆☆☆☆☆☆','大凶')
        when 4-8
            ('★☆☆☆☆☆☆☆☆☆☆','末凶')
        when 9-15
            ('★★☆☆☆☆☆☆☆☆☆','半凶')
        when 16-24
            ('★★★☆☆☆☆☆☆☆☆','小凶')
        when 25-35
            ('★★★★☆☆☆☆☆☆☆','凶')
        when 36-47
            ('★★★★★☆☆☆☆☆☆','末小吉')
        when 48-59
            ('★★★★★★☆☆☆☆☆','末吉')
        when 60-71
            ('★★★★★★★☆☆☆☆','半吉')
        when 72-83
            ('★★★★★★★★☆☆☆','吉')
        when 84-95
            ('★★★★★★★★★☆☆','小吉')
        when 96-101
            ('★★★★★★★★★★☆','中吉')
        others
            ('★★★★★★★★★★★','大吉')
    }
}




//**** 我问你答 ------------------------------------------------------------------

//————————我问你答——————————————————
QosSelect
{
    
    if !SAORI(sqloridllpath,"OPEN",'sqlori.db') { "打开数据库出错" ; UNLOADLIB(sqloridllpath) ; return ; }
    
    _que = _argv[0]
    _ans = ''
    
    _ere = SAORI(sqloridllpath, 'EXEC', "SELECT 我问 FROM data;")
    _queall = SPLIT(_ere, '0我问');
    if ARRAYSIZE(_queall) >= 2
    { 
        _values = SPLIT(_queall[1], '');
        _lem = ARRAYSIZE(_values)
        for _i = 0; _i < _lem; _i++ 
        { if RE_MATCH(_que,_values[_i]) ;  _que = _values[_i] }
    }
    
    _eres = SAORI(sqloridllpath, 'EXEC', "SELECT 你答 FROM data WHERE 我问 == '%(_que)';")
    _ansval = SPLIT(_eres, '0你答');
    if ARRAYSIZE(_ansval) >= 2
    {
        _values = SPLIT(_ansval[1], '');
        _lem = ARRAYSIZE(_values)
        for _i=0;_i<_lem;_i++
        { 
            if RE_MATCH(_argv[0],_que) ; _ans = RE_REPLACEEX(_argv[0],_que,_values[_i])
            else ; _ans = _values[_i]
        }
        if _ans ; _ans+="\f[name,%(zitai)]"
    }
    void SAORI(sqloridllpath,"CLOSE",'sqlori.db')
    UNLOADLIB(sqloridllpath)
    _ans
}
//————————看看我问——————————————————
QosSelectAll
{
    "\f[name,%(zitai)]"
    --
    
    if !SAORI(sqloridllpath,"OPEN",'sqlori.db') { "打开数据库出错" ; UNLOADLIB(sqloridllpath) ; return ; }
    _ans = ''
    _eres = SAORI(sqloridllpath, 'EXEC', "SELECT * FROM data;")

    _values = SPLIT(_eres, '0ID我问你答');
    _values = SPLIT(_values[1], '');
    _lem = ARRAYSIZE(_values)
    _ans += '\_q'
    for _i = 0; _i < _lem; _i++ {
        if _i%3 == 0
        {    _ans = _ans+ _values[_i] + '：'; }
        elseif _i%3 == 1
        {    _ans = _ans+ '我问：'+ _values[_i] + '，'; }
        elseif _i%3 == 2
        {    _v = ZEN2HAN(_values[_i])
            _ans = _ans+ '你答：' + "\_?%(_v)\_?" + '\n'; }
    }
    _ans += '\_q'
    
    void SAORI(sqloridllpath,"CLOSE",'sqlori.db')
    UNLOADLIB(sqloridllpath)
    _ans
}
//——————————添加——————————————
QosInsert
{
    "\f[name,%(zitai)]"
    --
    _aoi = _argv[0]
    _tmp = SPLIT(_aoi,"我问")
    _temp = SPLIT(_tmp[1],"你答")
    if _temp[0] != "" && _temp[1] != ""
    {
        
        if !SAORI(sqloridllpath,"OPEN",'sqlori.db') { "打开数据库出错" ; UNLOADLIB(sqloridllpath) ; return ; }

        _flag = 0
        _eres = SAORI(sqloridllpath, 'EXEC' , "SELECT 你答 FROM data WHERE 我问 = '%(_temp[0])';")
        _ere = SPLIT(_eres, '0你答');
        if ARRAYSIZE(_ere) <= 2
        { _flag= SAORI(sqloridllpath, 'EXEC' , "INSERT INTO data VALUES(null, '%(_temp[0])', '%(_temp[1])');"); }
        else
        { _flag= SAORI(sqloridllpath, 'EXEC' , "UPDATE data SET 你答 = '%(_temp[1])' WHERE 我问 = '%(_temp[0])';"); }
        if _flag ; "好的，我记住了" ;
        void SAORI(sqloridllpath,"CLOSE",'sqlori.db')
        UNLOADLIB(sqloridllpath)
    }
}
//——————————删除——————————————
QosDelete
{
    "\f[name,%(zitai)]"
    --
    _aoi = _argv[0]
    if !SAORI(sqloridllpath,"OPEN",'sqlori.db') { "打开数据库出错" ; UNLOADLIB(sqloridllpath) ; return ; }

    _eres = IARRAY
    _ere = IARRAY
    if RE_GREP(_aoi,'\d') ; _ere = SAORI(sqloridllpath, 'EXEC', "SELECT 你答 FROM data WHERE ID == '%(_aoi)';")
    else ; _ere = SAORI(sqloridllpath, 'EXEC', "SELECT 你答 FROM data WHERE 我问 == '%(_aoi)';")
    _eres = SPLIT(_ere, '0你答');
    if ARRAYSIZE(_eres) < 2
    { "没有「%(_aoi)」相关问题" }
    else
    {   _flag = 0
        if RE_GREP(_aoi,'\d') { void SAORI(sqloridllpath, 'EXEC', "DELETE FROM data WHERE ID == '%(_aoi)';") ; _flag=1 ; }
        else { void SAORI(sqloridllpath, 'EXEC', "DELETE FROM data WHERE 我问 == '%(_aoi[0])';") ; _flag=1 ; }
        if _flag ; "删除我问「%(_aoi)」成功"
    }
    void SAORI(sqloridllpath,"CLOSE",'sqlori.db')
    UNLOADLIB(sqloridllpath)
}



//**** 厄尔科斯月历 ------------------------------------------------------------------
//*********月历
Onelkslnb
{
    void reNului(year,month,day)
    marklnb(year,month,day)
}
marklnb
{
    if !_argv[0] ; _argv[0] = year ;
    if !_argv[1] ; _argv[1] = month ;
    if !_argv[2] ; _argv[2] = day ;
_head = "%(_argv[0])%(wisjikan(_argv[1]))%(wisjikan(_argv[2]))"
_resimg = "%(pakeilo)lniba\%(_head).png"
_txt = "\1\s[10]\b[4]\*\_b[%(_resimg),0,0,opaque]\f[name,%(zitai)]\q[%(reloi)/%(wisjikan(relni))/%(wisjikan(relui)),elkstia]"
//检查是否存在当天日期
foreach FENUM('\lniba')  ; _tmp{ 
    if SPLITPATH(_tmp)[2] == _head {
    _txt
    return
}}
_base = "%(GETSETTING(2))lniba\"
if "春天" _in_ tia ; _base += "haru.png"
elseif "夏天" _in_ tia ; _base += "natsu.png"
elseif "秋天" _in_ tia ; _base += "aki.png"
else ; _base += "fuyu.png"
_lnb = "%(GETSETTING(2))lniba\%(wislniba(relniba))00.png"
_basedib = SAORI('saori/imgctl_saori.dll','ToDIB',_base)    //载入图片
_lnbdib = SAORI('saori/imgctl_saori.dll','ToDIB',_lnb)    //载入图片
_lnbpna = SAORI('saori/imgctl_saori.dll','PNGAtoDIB',_lnb)    //载入png数据
//粘贴背景，开始x，开始y，粘贴大小，粘贴图片，截取x，截取y，方式
void SAORI('saori/imgctl_saori.dll','PasteDIB',_basedib,0,0,229,360,_lnbdib,229,360,"pngalpha",_lnbpna)
//dib结果：_basedib
//清除dib
void SAORI('saori/imgctl_saori.dll','DeleteDIB',_lnbdib)
void SAORI('saori/imgctl_saori.dll','DeleteDIB',_lnbpna)
_aja = "%(GETSETTING(2))lniba\12%(RAND(7)).png"
_ajadib = SAORI('saori/imgctl_saori.dll','ToDIB',_aja)
_ajapna = SAORI('saori/imgctl_saori.dll','PNGAtoDIB',_aja)
//********************作画算法
if ((_xline = TOINT(resazr))==7) ; _xline = TOINT(0)
_yline = TOINT(FLOOR(((relui-1)/7,(relui+1)/7,(relui+3)/7,(relui+5)/7,(relui)/7,(relui+2)/7,(relui+4)/7)[relniba-1]))
_ypng = 103 + _yline*29
_xpng = 13 + _xline*29
//粘贴背景，开始x，开始y，粘贴大小，粘贴图片，截取x，截取y，方式
void SAORI('saori/imgctl_saori.dll','PasteDIB',_basedib,_xpng,_ypng,29,29,_ajadib,29,29,"pngalpha",_ajapna)
void SAORI('saori/imgctl_saori.dll','DIBtoPNG',_resimg,_basedib,0)
//清除dib
void SAORI('saori/imgctl_saori.dll','DeleteDIB',_basedib)
void SAORI('saori/imgctl_saori.dll','DeleteDIB',_ajadib)
void SAORI('saori/imgctl_saori.dll','DeleteDIB',_ajapna)
_txt
}
//删除月历缓存文件
dellniba
{
    _head = "%(year)%(wisjikan(month))%(wisjikan(day))"
    _txt = ''
    foreach FENUM('\lniba') ; _tmp{
        if RE_GREP((_sus = SPLITPATH(_tmp)[2]),'\d{6}') && (_sus != _head)
        { void FDEL("%(GETSETTING(2))lniba\"+_tmp); }
    }
    "\f[name,%(zitai)]删除缓存文件成功"
}