let ip; $.getJSON("https://api.ipify.org?format=json", function(data) { ip = data.ip; }) let goodFortunes = []; let badFortunes = []; fetch("fortune.json") .then(response => response.json()) .then(data => { goodFortunes = data.goodFortunes; badFortunes = data.badFortunes; }) const textColor = ["#e74c3c", "#e74c3c", "#e74c3c", "#70ad47", "#000000bf", "#000000bf", "#000000bf"]; const fortuneStatus = ["大吉", "中吉", "小吉", "中平", "凶", "小凶", "大凶"]; const allGood = `萬事皆宜`; const allBad = `諸事不宜`; function Appear() { let p = 0; let num = [0, 0, 0, 0]; for(let i = 0; i < 14; i++) { if(ip[i] == '.') { p++; continue; } num[p] = num[p] * 10 + parseInt(ip[i]); } let d = new Date(); let seed = (num[0] >> 3) * (num[1] >> 2) + (num[2] << 1) * (num[3] >> 3) + (d.getDate() << 3) * ((d.getMonth() + 1) << 5) + d.getFullYear(); const goodLen = goodFortunes.length; const badLen = badFortunes.length; let status = `§ ${fortuneStatus[seed % 7]} §`; $('#ip-to-fortune').html(status); let l_1_event, l_1_desc, l_2_event, l_2_desc, r_1_event, r_1_desc, r_2_event, r_2_desc; let l1, l2, r1, r2; let set = new Set(); l1 = seed % goodLen; set.add(goodFortunes[l1].event); l2 = (seed + d.getDate()) % goodLen; while(set.has(goodFortunes[l2].event)) l2 = (l2 + 1) % goodLen; set.add(goodFortunes[l2].event); r1 = (seed + d.getMonth() << 3) % badLen; while(set.has(badFortunes[r1].event)) r1 = (r1 + 2) % badLen; set.add(badFortunes[r1].event); r2 = (seed + (d.getFullYear() >> 5) * (d.getDate << 2)) % badLen; while(set.has(badFortunes[r2].event)) r2 = (r2 + 1) % badLen; l_1_event = `宜: ${goodFortunes[l1].event}`; l_1_desc = `${goodFortunes[l1].description}`; l_2_event = `宜: ${goodFortunes[l2].event}`; l_2_desc = `${goodFortunes[l2].description}`; r_1_event = `忌: ${badFortunes[r1].event}`; r_1_desc = `${badFortunes[r1].description}`; r_2_event = `忌: ${badFortunes[r2].event}`; r_2_desc = `${badFortunes[r2].description}`; if(seed % 7 == 0){ $('#right-1').html(allGood); $('#l-1-event').html(l_1_event); $('#l-1-desc').html(l_1_desc); $('#l-2-event').html(l_2_event); $('#l-2-desc').html(l_2_desc); } else if(seed % 7 == 6){ $('#l-1-event').html(allBad); $('#r-1-event').html(r_1_event); $('#r-1-desc').html(r_1_desc); $('#r-2-event').html(r_2_event); $('#r-2-desc').html(r_2_desc); } else{ $('#l-1-event').html(l_1_event); $('#l-1-desc').html(l_1_desc); $('#l-2-event').html(l_2_event); $('#l-2-desc').html(l_2_desc); $('#r-1-event').html(r_1_event); $('#r-1-desc').html(r_1_desc); $('#r-2-event').html(r_2_event); $('#r-2-desc').html(r_2_desc); } } function getLuck() { Update(); }