Tg patch branch to master (#192)
* code nitpicking * Midnight oil More like 6am oil. Still having issues with actually eating anyone. * Subsystem 12/21 Most Recent TG subsystem folder * globalvars 12/21 Tossed out the flavor_misc and parallax files * Onclick 12/21 as well as .dme updates * _defines 12/21 ommited old _MC.dm * _HELPERS 12/21 Preserved snowflake placement of furry sprites * _defeines/genetics reapplied narkism holdover for snowflake races. * Oops forgot mutant colors * modules porting 12/21 + Sounds/icons Admin, Client and most of mob life files ommitted * enviroment file * Admin optimizations ahelp log system kept * Mob ports 12/21 Flavor text preserved * datums ported 12/21 * Game ported 12/21 * batch of duplicate fixes/dogborg work Dogborgs need to be modernized to refractored borg standards. * moar fixes * Maps and futher compile fixes * missed commit * Noms * specific release doesn't work * Tg modernization patch (#115) * sync (#3) * shuttle auto call * Merge /vore into /master (#39) * progress * Compile errors fixed No idea if it's test worthy tho as conflicts with race overhaul and narky removal. * Update admins.txt * efforts continue Fuck grab code, seriously * grab code is cancer * Execute the Narkism Do not hesitate. Show no mercy. * holy shit grab code is awful * have I bitched about grab code My bitching, let me show you it * código de agarre es una mierda No really it is * yeah I don't even know anymore. * Lolnope. Fuck grab code * I'm not even sure what to fix anymore * Self eating is not an acceptable fate * Taste the void, son. * My code doesn't pass it's own sanity check. Maybe it's a sign of things to come. * uncommented and notes * It Works and I Don't Know Why (#38) * shuttle auto call * it works and I don't know why * Subsystem 12/21 Most Recent TG subsystem folder * globalvars 12/21 Tossed out the flavor_misc and parallax files * Onclick 12/21 as well as .dme updates * _defines 12/21 ommited old _MC.dm * _HELPERS 12/21 Preserved snowflake placement of furry sprites * _defeines/genetics reapplied narkism holdover for snowflake races. * Oops forgot mutant colors * modules porting 12/21 + Sounds/icons Admin, Client and most of mob life files ommitted * enviroment file * Admin optimizations ahelp log system kept * Mob ports 12/21 Flavor text preserved * datums ported 12/21 * Game ported 12/21 * batch of duplicate fixes/dogborg work Dogborgs need to be modernized to refractored borg standards. * moar fixes * Maps and futher compile fixes * port from cactus did * fix format error * Update preferences.dm unfuck * Revert "port from cactus did" * unfuck * more sprite work * vore * disabled roundstart xenos for now * admin QOL needs callback porting, TBD * Mentor system initial port I'm sure I've missed a fuckton of shit * test merge * Jesus tits did this finally fix compile issues? * Tg modern (#149) * sync (#3) * shuttle auto call * Merge /vore into /master (#39) * progress * Compile errors fixed No idea if it's test worthy tho as conflicts with race overhaul and narky removal. * Update admins.txt * efforts continue Fuck grab code, seriously * grab code is cancer * Execute the Narkism Do not hesitate. Show no mercy. * holy shit grab code is awful * have I bitched about grab code My bitching, let me show you it * código de agarre es una mierda No really it is * yeah I don't even know anymore. * Lolnope. Fuck grab code * I'm not even sure what to fix anymore * Self eating is not an acceptable fate * Taste the void, son. * My code doesn't pass it's own sanity check. Maybe it's a sign of things to come. * uncommented and notes * It Works and I Don't Know Why (#38) * shuttle auto call * it works and I don't know why * Subsystem 12/21 Most Recent TG subsystem folder * globalvars 12/21 Tossed out the flavor_misc and parallax files * Onclick 12/21 as well as .dme updates * _defines 12/21 ommited old _MC.dm * _HELPERS 12/21 Preserved snowflake placement of furry sprites * _defeines/genetics reapplied narkism holdover for snowflake races. * Oops forgot mutant colors * modules porting 12/21 + Sounds/icons Admin, Client and most of mob life files ommitted * enviroment file * Admin optimizations ahelp log system kept * Mob ports 12/21 Flavor text preserved * datums ported 12/21 * Game ported 12/21 * batch of duplicate fixes/dogborg work Dogborgs need to be modernized to refractored borg standards. * moar fixes * Maps and futher compile fixes * Tg modernization patch (#115) * sync (#3) * shuttle auto call * Merge /vore into /master (#39) * progress * Compile errors fixed No idea if it's test worthy tho as conflicts with race overhaul and narky removal. * Update admins.txt * efforts continue Fuck grab code, seriously * grab code is cancer * Execute the Narkism Do not hesitate. Show no mercy. * holy shit grab code is awful * have I bitched about grab code My bitching, let me show you it * código de agarre es una mierda No really it is * yeah I don't even know anymore. * Lolnope. Fuck grab code * I'm not even sure what to fix anymore * Self eating is not an acceptable fate * Taste the void, son. * My code doesn't pass it's own sanity check. Maybe it's a sign of things to come. * uncommented and notes * It Works and I Don't Know Why (#38) * shuttle auto call * it works and I don't know why * Subsystem 12/21 Most Recent TG subsystem folder * globalvars 12/21 Tossed out the flavor_misc and parallax files * Onclick 12/21 as well as .dme updates * _defines 12/21 ommited old _MC.dm * _HELPERS 12/21 Preserved snowflake placement of furry sprites * _defeines/genetics reapplied narkism holdover for snowflake races. * Oops forgot mutant colors * modules porting 12/21 + Sounds/icons Admin, Client and most of mob life files ommitted * enviroment file * Admin optimizations ahelp log system kept * Mob ports 12/21 Flavor text preserved * datums ported 12/21 * Game ported 12/21 * batch of duplicate fixes/dogborg work Dogborgs need to be modernized to refractored borg standards. * moar fixes * Maps and futher compile fixes * port from cactus did * fix format error * Update preferences.dm unfuck * Revert "port from cactus did" * unfuck * more sprite work * vore * disabled roundstart xenos for now * test merge * Jesus tits did this finally fix compile issues? * Initial test compiles. hooray. * Admin ticket fixes * I'll give you a bad argument you piece of shit dream maker I fucking swear on my mum * who list wip also ahelps are broken again. fuck if I know why * discord bot basics * maybe tickets work now & bot framework done * ahelp callback readd * Mentor system, Tickets, and discord (#151) * sync (#3) * shuttle auto call * Merge /vore into /master (#39) * progress * Compile errors fixed No idea if it's test worthy tho as conflicts with race overhaul and narky removal. * Update admins.txt * efforts continue Fuck grab code, seriously * grab code is cancer * Execute the Narkism Do not hesitate. Show no mercy. * holy shit grab code is awful * have I bitched about grab code My bitching, let me show you it * código de agarre es una mierda No really it is * yeah I don't even know anymore. * Lolnope. Fuck grab code * I'm not even sure what to fix anymore * Self eating is not an acceptable fate * Taste the void, son. * My code doesn't pass it's own sanity check. Maybe it's a sign of things to come. * uncommented and notes * It Works and I Don't Know Why (#38) * shuttle auto call * it works and I don't know why * Subsystem 12/21 Most Recent TG subsystem folder * globalvars 12/21 Tossed out the flavor_misc and parallax files * Onclick 12/21 as well as .dme updates * _defines 12/21 ommited old _MC.dm * _HELPERS 12/21 Preserved snowflake placement of furry sprites * _defeines/genetics reapplied narkism holdover for snowflake races. * Oops forgot mutant colors * modules porting 12/21 + Sounds/icons Admin, Client and most of mob life files ommitted * enviroment file * Admin optimizations ahelp log system kept * Mob ports 12/21 Flavor text preserved * datums ported 12/21 * Game ported 12/21 * batch of duplicate fixes/dogborg work Dogborgs need to be modernized to refractored borg standards. * moar fixes * Maps and futher compile fixes * Tg modernization patch (#115) * sync (#3) * shuttle auto call * Merge /vore into /master (#39) * progress * Compile errors fixed No idea if it's test worthy tho as conflicts with race overhaul and narky removal. * Update admins.txt * efforts continue Fuck grab code, seriously * grab code is cancer * Execute the Narkism Do not hesitate. Show no mercy. * holy shit grab code is awful * have I bitched about grab code My bitching, let me show you it * código de agarre es una mierda No really it is * yeah I don't even know anymore. * Lolnope. Fuck grab code * I'm not even sure what to fix anymore * Self eating is not an acceptable fate * Taste the void, son. * My code doesn't pass it's own sanity check. Maybe it's a sign of things to come. * uncommented and notes * It Works and I Don't Know Why (#38) * shuttle auto call * it works and I don't know why * Subsystem 12/21 Most Recent TG subsystem folder * globalvars 12/21 Tossed out the flavor_misc and parallax files * Onclick 12/21 as well as .dme updates * _defines 12/21 ommited old _MC.dm * _HELPERS 12/21 Preserved snowflake placement of furry sprites * _defeines/genetics reapplied narkism holdover for snowflake races. * Oops forgot mutant colors * modules porting 12/21 + Sounds/icons Admin, Client and most of mob life files ommitted * enviroment file * Admin optimizations ahelp log system kept * Mob ports 12/21 Flavor text preserved * datums ported 12/21 * Game ported 12/21 * batch of duplicate fixes/dogborg work Dogborgs need to be modernized to refractored borg standards. * moar fixes * Maps and futher compile fixes * port from cactus did * fix format error * Update preferences.dm unfuck * Revert "port from cactus did" * unfuck * more sprite work * vore * disabled roundstart xenos for now * admin QOL needs callback porting, TBD * Mentor system initial port I'm sure I've missed a fuckton of shit * test merge * Jesus tits did this finally fix compile issues? * Initial test compiles. hooray. * Admin ticket fixes * I'll give you a bad argument you piece of shit dream maker I fucking swear on my mum * who list wip also ahelps are broken again. fuck if I know why * discord bot basics * maybe tickets work now & bot framework done * ahelp callback readd * vore tweaks * progress * dirtier fix than a korean hooker in the 60s * The release your hooker will always fake * you could save that hookers number but wouldn't you rather just vore the hooker instead * Save system is literal black magic * great googly moogly it's all gone to shit * We May 2015 save code now * fiddling with digestion code now * fuck if I know anymore. I'm going to bed * OWN UP YOUR OWN DIGESTION * UNREGULATED GUTS ARE NON COMPLIANT AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA * BELLIES MUST COMPLY WITH USER OWNERSHIP * Removed debug messages * Unneeded verb additions * file change tweaks * WATCH YOUR SPACING, DRIVER * Changelog and devourment for some mobs. Because I knew people were gunna ask. NO YOU CANNOT EAT THE FUCKING LEGION * Vore code sync (#157) * sync (#3) * shuttle auto call * Merge /vore into /master (#39) * progress * Compile errors fixed No idea if it's test worthy tho as conflicts with race overhaul and narky removal. * Update admins.txt * efforts continue Fuck grab code, seriously * grab code is cancer * Execute the Narkism Do not hesitate. Show no mercy. * holy shit grab code is awful * have I bitched about grab code My bitching, let me show you it * código de agarre es una mierda No really it is * yeah I don't even know anymore. * Lolnope. Fuck grab code * I'm not even sure what to fix anymore * Self eating is not an acceptable fate * Taste the void, son. * My code doesn't pass it's own sanity check. Maybe it's a sign of things to come. * uncommented and notes * It Works and I Don't Know Why (#38) * shuttle auto call * it works and I don't know why * Escape and Devourable For the normies who play here yet complain about it. * Things that should be committed * unneeded files * Sizeray works now * tweaks and bed time going * IT WORKS mostly Need to get multiple guts and saving working tho * save tweaks * item hotfix * gut examine message * damifino * save system works also ensured some mobs have vore controls, so silicons can't even remotely do vore things. * code nitpicking * Midnight oil More like 6am oil. Still having issues with actually eating anyone. * Subsystem 12/21 Most Recent TG subsystem folder * globalvars 12/21 Tossed out the flavor_misc and parallax files * Onclick 12/21 as well as .dme updates * _defines 12/21 ommited old _MC.dm * _HELPERS 12/21 Preserved snowflake placement of furry sprites * _defeines/genetics reapplied narkism holdover for snowflake races. * Oops forgot mutant colors * modules porting 12/21 + Sounds/icons Admin, Client and most of mob life files ommitted * enviroment file * Admin optimizations ahelp log system kept * Mob ports 12/21 Flavor text preserved * datums ported 12/21 * Game ported 12/21 * batch of duplicate fixes/dogborg work Dogborgs need to be modernized to refractored borg standards. * moar fixes * Maps and futher compile fixes * missed commit * Noms * specific release doesn't work * Tg modernization patch (#115) * sync (#3) * shuttle auto call * Merge /vore into /master (#39) * progress * Compile errors fixed No idea if it's test worthy tho as conflicts with race overhaul and narky removal. * Update admins.txt * efforts continue Fuck grab code, seriously * grab code is cancer * Execute the Narkism Do not hesitate. Show no mercy. * holy shit grab code is awful * have I bitched about grab code My bitching, let me show you it * código de agarre es una mierda No really it is * yeah I don't even know anymore. * Lolnope. Fuck grab code * I'm not even sure what to fix anymore * Self eating is not an acceptable fate * Taste the void, son. * My code doesn't pass it's own sanity check. Maybe it's a sign of things to come. * uncommented and notes * It Works and I Don't Know Why (#38) * shuttle auto call * it works and I don't know why * Subsystem 12/21 Most Recent TG subsystem folder * globalvars 12/21 Tossed out the flavor_misc and parallax files * Onclick 12/21 as well as .dme updates * _defines 12/21 ommited old _MC.dm * _HELPERS 12/21 Preserved snowflake placement of furry sprites * _defeines/genetics reapplied narkism holdover for snowflake races. * Oops forgot mutant colors * modules porting 12/21 + Sounds/icons Admin, Client and most of mob life files ommitted * enviroment file * Admin optimizations ahelp log system kept * Mob ports 12/21 Flavor text preserved * datums ported 12/21 * Game ported 12/21 * batch of duplicate fixes/dogborg work Dogborgs need to be modernized to refractored borg standards. * moar fixes * Maps and futher compile fixes * port from cactus did * fix format error * Update preferences.dm unfuck * Revert "port from cactus did" * unfuck * more sprite work * vore * disabled roundstart xenos for now * admin QOL needs callback porting, TBD * Mentor system initial port I'm sure I've missed a fuckton of shit * test merge * Jesus tits did this finally fix compile issues? * Initial test compiles. hooray. * Admin ticket fixes * I'll give you a bad argument you piece of shit dream maker I fucking swear on my mum * who list wip also ahelps are broken again. fuck if I know why * discord bot basics * maybe tickets work now & bot framework done * ahelp callback readd * vore tweaks * progress * dirtier fix than a korean hooker in the 60s * The release your hooker will always fake * you could save that hookers number but wouldn't you rather just vore the hooker instead * Save system is literal black magic * great googly moogly it's all gone to shit * We May 2015 save code now * fiddling with digestion code now * fuck if I know anymore. I'm going to bed * OWN UP YOUR OWN DIGESTION * UNREGULATED GUTS ARE NON COMPLIANT AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA * BELLIES MUST COMPLY WITH USER OWNERSHIP * Removed debug messages * Unneeded verb additions * file change tweaks * WATCH YOUR SPACING, DRIVER * Changelog and devourment for some mobs. Because I knew people were gunna ask. NO YOU CANNOT EAT THE FUCKING LEGION * title screen change from Crow's PR. * More of Crow's title screen stuff * mode tweaks.... again * gamemode voting in lobby via TalkingCactus disabled ashwalkers as roundstart Verk's species tweak paralax starts disabled by default * LOOC * index sync problem (#158) * digifix * things * furry races.dm * actually deletes species_types * maps * tgui and stuff * Sounds * icon updates * Defines and helpers * global vars and on click * controllers * datums * game folder * fixes invisible flan mobs * some modules * dropbomb verb enhanced * moar * moar * moar * even more again * and finally these for modules * Some compile tweaks * silly dme get updated you scrub * compiles cleanly now * various open PR fixes from TG as of 0800 Texas Standard Time * also fancy cryopods before I forget again * headslug gold core fix * edgy code of the modernization (#164) * sync (#3) * shuttle auto call * Merge /vore into /master (#39) * progress * Compile errors fixed No idea if it's test worthy tho as conflicts with race overhaul and narky removal. * Update admins.txt * efforts continue Fuck grab code, seriously * grab code is cancer * Execute the Narkism Do not hesitate. Show no mercy. * holy shit grab code is awful * have I bitched about grab code My bitching, let me show you it * código de agarre es una mierda No really it is * yeah I don't even know anymore. * Lolnope. Fuck grab code * I'm not even sure what to fix anymore * Self eating is not an acceptable fate * Taste the void, son. * My code doesn't pass it's own sanity check. Maybe it's a sign of things to come. * uncommented and notes * It Works and I Don't Know Why (#38) * shuttle auto call * it works and I don't know why * Escape and Devourable For the normies who play here yet complain about it. * Things that should be committed * unneeded files * Sizeray works now * tweaks and bed time going * IT WORKS mostly Need to get multiple guts and saving working tho * save tweaks * item hotfix * gut examine message * damifino * save system works also ensured some mobs have vore controls, so silicons can't even remotely do vore things. * code nitpicking * Midnight oil More like 6am oil. Still having issues with actually eating anyone. * Subsystem 12/21 Most Recent TG subsystem folder * globalvars 12/21 Tossed out the flavor_misc and parallax files * Onclick 12/21 as well as .dme updates * _defines 12/21 ommited old _MC.dm * _HELPERS 12/21 Preserved snowflake placement of furry sprites * _defeines/genetics reapplied narkism holdover for snowflake races. * Oops forgot mutant colors * modules porting 12/21 + Sounds/icons Admin, Client and most of mob life files ommitted * enviroment file * Admin optimizations ahelp log system kept * Mob ports 12/21 Flavor text preserved * datums ported 12/21 * Game ported 12/21 * batch of duplicate fixes/dogborg work Dogborgs need to be modernized to refractored borg standards. * moar fixes * Maps and futher compile fixes * missed commit * Noms * specific release doesn't work * Tg modernization patch (#115) * sync (#3) * shuttle auto call * Merge /vore into /master (#39) * progress * Compile errors fixed No idea if it's test worthy tho as conflicts with race overhaul and narky removal. * Update admins.txt * efforts continue Fuck grab code, seriously * grab code is cancer * Execute the Narkism Do not hesitate. Show no mercy. * holy shit grab code is awful * have I bitched about grab code My bitching, let me show you it * código de agarre es una mierda No really it is * yeah I don't even know anymore. * Lolnope. Fuck grab code * I'm not even sure what to fix anymore * Self eating is not an acceptable fate * Taste the void, son. * My code doesn't pass it's own sanity check. Maybe it's a sign of things to come. * uncommented and notes * It Works and I Don't Know Why (#38) * shuttle auto call * it works and I don't know why * Subsystem 12/21 Most Recent TG subsystem folder * globalvars 12/21 Tossed out the flavor_misc and parallax files * Onclick 12/21 as well as .dme updates * _defines 12/21 ommited old _MC.dm * _HELPERS 12/21 Preserved snowflake placement of furry sprites * _defeines/genetics reapplied narkism holdover for snowflake races. * Oops forgot mutant colors * modules porting 12/21 + Sounds/icons Admin, Client and most of mob life files ommitted * enviroment file * Admin optimizations ahelp log system kept * Mob ports 12/21 Flavor text preserved * datums ported 12/21 * Game ported 12/21 * batch of duplicate fixes/dogborg work Dogborgs need to be modernized to refractored borg standards. * moar fixes * Maps and futher compile fixes * port from cactus did * fix format error * Update preferences.dm unfuck * Revert "port from cactus did" * unfuck * more sprite work * vore * disabled roundstart xenos for now * admin QOL needs callback porting, TBD * Mentor system initial port I'm sure I've missed a fuckton of shit * test merge * Jesus tits did this finally fix compile issues? * Initial test compiles. hooray. * Admin ticket fixes * I'll give you a bad argument you piece of shit dream maker I fucking swear on my mum * who list wip also ahelps are broken again. fuck if I know why * discord bot basics * maybe tickets work now & bot framework done * ahelp callback readd * vore tweaks * progress * Small fixes for dogborgs and sprite accessories: -Ported the hidden snippets of the dogborg code. -Reset module now resets pixel offset and icon directory again. (broke shit when reseting from dogborg) -Medihound belly fixed. -Husky body marking tweaked to not overlap arms in side view. -Added husky ears that are basically wolf ears that use secondary color instead. * dirtier fix than a korean hooker in the 60s * The release your hooker will always fake * you could save that hookers number but wouldn't you rather just vore the hooker instead * Save system is literal black magic * great googly moogly it's all gone to shit * We May 2015 save code now * fiddling with digestion code now * fuck if I know anymore. I'm going to bed * OWN UP YOUR OWN DIGESTION * UNREGULATED GUTS ARE NON COMPLIANT AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA * BELLIES MUST COMPLY WITH USER OWNERSHIP * Removed debug messages * Unneeded verb additions * file change tweaks * WATCH YOUR SPACING, DRIVER * Changelog and devourment for some mobs. Because I knew people were gunna ask. NO YOU CANNOT EAT THE FUCKING LEGION * title screen change from Crow's PR. * More of Crow's title screen stuff * mode tweaks.... again * gamemode voting in lobby via TalkingCactus disabled ashwalkers as roundstart Verk's species tweak paralax starts disabled by default * LOOC * index sync problem (#158) * digifix * things * furry races.dm * actually deletes species_types * maps * tgui and stuff * Sounds * icon updates * Defines and helpers * global vars and on click * controllers * datums * game folder * fixes invisible flan mobs * some modules * dropbomb verb enhanced * moar * moar * moar * even more again * and finally these for modules * Some compile tweaks * silly dme get updated you scrub * compiles cleanly now * various open PR fixes from TG as of 0800 Texas Standard Time * also fancy cryopods before I forget again * headslug gold core fix * some species and DNA tweaks * Digest already damn you * suddenly sound and resist works. wtf * Minor tweaks, cryopod noise change * Vore tested working, species working * Merge test onto bleeding edgy (#165) * sync (#3) * shuttle auto call * Merge /vore into /master (#39) * progress * Compile errors fixed No idea if it's test worthy tho as conflicts with race overhaul and narky removal. * Update admins.txt * efforts continue Fuck grab code, seriously * grab code is cancer * Execute the Narkism Do not hesitate. Show no mercy. * holy shit grab code is awful * have I bitched about grab code My bitching, let me show you it * código de agarre es una mierda No really it is * yeah I don't even know anymore. * Lolnope. Fuck grab code * I'm not even sure what to fix anymore * Self eating is not an acceptable fate * Taste the void, son. * My code doesn't pass it's own sanity check. Maybe it's a sign of things to come. * uncommented and notes * It Works and I Don't Know Why (#38) * shuttle auto call * it works and I don't know why * Escape and Devourable For the normies who play here yet complain about it. * Things that should be committed * unneeded files * Sizeray works now * tweaks and bed time going * IT WORKS mostly Need to get multiple guts and saving working tho * save tweaks * item hotfix * gut examine message * damifino * save system works also ensured some mobs have vore controls, so silicons can't even remotely do vore things. * code nitpicking * Midnight oil More like 6am oil. Still having issues with actually eating anyone. * Subsystem 12/21 Most Recent TG subsystem folder * globalvars 12/21 Tossed out the flavor_misc and parallax files * Onclick 12/21 as well as .dme updates * _defines 12/21 ommited old _MC.dm * _HELPERS 12/21 Preserved snowflake placement of furry sprites * _defeines/genetics reapplied narkism holdover for snowflake races. * Oops forgot mutant colors * modules porting 12/21 + Sounds/icons Admin, Client and most of mob life files ommitted * enviroment file * Admin optimizations ahelp log system kept * Mob ports 12/21 Flavor text preserved * datums ported 12/21 * Game ported 12/21 * batch of duplicate fixes/dogborg work Dogborgs need to be modernized to refractored borg standards. * moar fixes * Maps and futher compile fixes * missed commit * Noms * specific release doesn't work * Tg modernization patch (#115) * sync (#3) * shuttle auto call * Merge /vore into /master (#39) * progress * Compile errors fixed No idea if it's test worthy tho as conflicts with race overhaul and narky removal. * Update admins.txt * efforts continue Fuck grab code, seriously * grab code is cancer * Execute the Narkism Do not hesitate. Show no mercy. * holy shit grab code is awful * have I bitched about grab code My bitching, let me show you it * código de agarre es una mierda No really it is * yeah I don't even know anymore. * Lolnope. Fuck grab code * I'm not even sure what to fix anymore * Self eating is not an acceptable fate * Taste the void, son. * My code doesn't pass it's own sanity check. Maybe it's a sign of things to come. * uncommented and notes * It Works and I Don't Know Why (#38) * shuttle auto call * it works and I don't know why * Subsystem 12/21 Most Recent TG subsystem folder * globalvars 12/21 Tossed out the flavor_misc and parallax files * Onclick 12/21 as well as .dme updates * _defines 12/21 ommited old _MC.dm * _HELPERS 12/21 Preserved snowflake placement of furry sprites * _defeines/genetics reapplied narkism holdover for snowflake races. * Oops forgot mutant colors * modules porting 12/21 + Sounds/icons Admin, Client and most of mob life files ommitted * enviroment file * Admin optimizations ahelp log system kept * Mob ports 12/21 Flavor text preserved * datums ported 12/21 * Game ported 12/21 * batch of duplicate fixes/dogborg work Dogborgs need to be modernized to refractored borg standards. * moar fixes * Maps and futher compile fixes * port from cactus did * fix format error * Update preferences.dm unfuck * Revert "port from cactus did" * unfuck * more sprite work * vore * disabled roundstart xenos for now * admin QOL needs callback porting, TBD * Mentor system initial port I'm sure I've missed a fuckton of shit * test merge * Jesus tits did this finally fix compile issues? * Initial test compiles. hooray. * Admin ticket fixes * I'll give you a bad argument you piece of shit dream maker I fucking swear on my mum * who list wip also ahelps are broken again. fuck if I know why * discord bot basics * maybe tickets work now & bot framework done * ahelp callback readd * vore tweaks * progress * Small fixes for dogborgs and sprite accessories: -Ported the hidden snippets of the dogborg code. -Reset module now resets pixel offset and icon directory again. (broke shit when reseting from dogborg) -Medihound belly fixed. -Husky body marking tweaked to not overlap arms in side view. -Added husky ears that are basically wolf ears that use secondary color instead. * dirtier fix than a korean hooker in the 60s * The release your hooker will always fake * you could save that hookers number but wouldn't you rather just vore the hooker instead * Save system is literal black magic * great googly moogly it's all gone to shit * We May 2015 save code now * fiddling with digestion code now * fuck if I know anymore. I'm going to bed * OWN UP YOUR OWN DIGESTION * UNREGULATED GUTS ARE NON COMPLIANT AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA * BELLIES MUST COMPLY WITH USER OWNERSHIP * Removed debug messages * Unneeded verb additions * file change tweaks * WATCH YOUR SPACING, DRIVER * Changelog and devourment for some mobs. Because I knew people were gunna ask. NO YOU CANNOT EAT THE FUCKING LEGION * title screen change from Crow's PR. * More of Crow's title screen stuff * mode tweaks.... again * gamemode voting in lobby via TalkingCactus disabled ashwalkers as roundstart Verk's species tweak paralax starts disabled by default * LOOC * index sync problem (#158) * digifix * things * furry races.dm * actually deletes species_types * maps * tgui and stuff * Sounds * icon updates * Defines and helpers * global vars and on click * controllers * datums * game folder * fixes invisible flan mobs * some modules * dropbomb verb enhanced * moar * moar * moar * even more again * and finally these for modules * Some compile tweaks * silly dme get updated you scrub * compiles cleanly now * various open PR fixes from TG as of 0800 Texas Standard Time * also fancy cryopods before I forget again * headslug gold core fix * some species and DNA tweaks * Digest already damn you * suddenly sound and resist works. wtf * Minor tweaks, cryopod noise change * Vore tested working, species working * travis map updates * updates * pool's closed due to lag * datum pools are closed too * Initializing new pool's closed * Pool's closed and initializing shit is done * sprite updates * chattering is okay to do now. * bleeblin edgy 1/23 (#166) * sync (#3) * shuttle auto call * Merge /vore into /master (#39) * progress * Compile errors fixed No idea if it's test worthy tho as conflicts with race overhaul and narky removal. * Update admins.txt * efforts continue Fuck grab code, seriously * grab code is cancer * Execute the Narkism Do not hesitate. Show no mercy. * holy shit grab code is awful * have I bitched about grab code My bitching, let me show you it * código de agarre es una mierda No really it is * yeah I don't even know anymore. * Lolnope. Fuck grab code * I'm not even sure what to fix anymore * Self eating is not an acceptable fate * Taste the void, son. * My code doesn't pass it's own sanity check. Maybe it's a sign of things to come. * uncommented and notes * It Works and I Don't Know Why (#38) * shuttle auto call * it works and I don't know why * Escape and Devourable For the normies who play here yet complain about it. * Things that should be committed * unneeded files * Sizeray works now * tweaks and bed time going * IT WORKS mostly Need to get multiple guts and saving working tho * save tweaks * item hotfix * gut examine message * damifino * save system works also ensured some mobs have vore controls, so silicons can't even remotely do vore things. * code nitpicking * Midnight oil More like 6am oil. Still having issues with actually eating anyone. * Subsystem 12/21 Most Recent TG subsystem folder * globalvars 12/21 Tossed out the flavor_misc and parallax files * Onclick 12/21 as well as .dme updates * _defines 12/21 ommited old _MC.dm * _HELPERS 12/21 Preserved snowflake placement of furry sprites * _defeines/genetics reapplied narkism holdover for snowflake races. * Oops forgot mutant colors * modules porting 12/21 + Sounds/icons Admin, Client and most of mob life files ommitted * enviroment file * Admin optimizations ahelp log system kept * Mob ports 12/21 Flavor text preserved * datums ported 12/21 * Game ported 12/21 * batch of duplicate fixes/dogborg work Dogborgs need to be modernized to refractored borg standards. * moar fixes * Maps and futher compile fixes * missed commit * Noms * specific release doesn't work * Tg modernization patch (#115) * sync (#3) * shuttle auto call * Merge /vore into /master (#39) * progress * Compile errors fixed No idea if it's test worthy tho as conflicts with race overhaul and narky removal. * Update admins.txt * efforts continue Fuck grab code, seriously * grab code is cancer * Execute the Narkism Do not hesitate. Show no mercy. * holy shit grab code is awful * have I bitched about grab code My bitching, let me show you it * código de agarre es una mierda No really it is * yeah I don't even know anymore. * Lolnope. Fuck grab code * I'm not even sure what to fix anymore * Self eating is not an acceptable fate * Taste the void, son. * My code doesn't pass it's own sanity check. Maybe it's a sign of things to come. * uncommented and notes * It Works and I Don't Know Why (#38) * shuttle auto call * it works and I don't know why * Subsystem 12/21 Most Recent TG subsystem folder * globalvars 12/21 Tossed out the flavor_misc and parallax files * Onclick 12/21 as well as .dme updates * _defines 12/21 ommited old _MC.dm * _HELPERS 12/21 Preserved snowflake placement of furry sprites * _defeines/genetics reapplied narkism holdover for snowflake races. * Oops forgot mutant colors * modules porting 12/21 + Sounds/icons Admin, Client and most of mob life files ommitted * enviroment file * Admin optimizations ahelp log system kept * Mob ports 12/21 Flavor text preserved * datums ported 12/21 * Game ported 12/21 * batch of duplicate fixes/dogborg work Dogborgs need to be modernized to refractored borg standards. * moar fixes * Maps and futher compile fixes * port from cactus did * fix format error * Update preferences.dm unfuck * Revert "port from cactus did" * unfuck * more sprite work * vore * disabled roundstart xenos for now * admin QOL needs callback porting, TBD * Mentor system initial port I'm sure I've missed a fuckton of shit * test merge * Jesus tits did this finally fix compile issues? * Initial test compiles. hooray. * Admin ticket fixes * I'll give you a bad argument you piece of shit dream maker I fucking swear on my mum * who list wip also ahelps are broken again. fuck if I know why * discord bot basics * maybe tickets work now & bot framework done * ahelp callback readd * vore tweaks * progress * Small fixes for dogborgs and sprite accessories: -Ported the hidden snippets of the dogborg code. -Reset module now resets pixel offset and icon directory again. (broke shit when reseting from dogborg) -Medihound belly fixed. -Husky body marking tweaked to not overlap arms in side view. -Added husky ears that are basically wolf ears that use secondary color instead. * dirtier fix than a korean hooker in the 60s * The release your hooker will always fake * you could save that hookers number but wouldn't you rather just vore the hooker instead * Save system is literal black magic * great googly moogly it's all gone to shit * We May 2015 save code now * fiddling with digestion code now * fuck if I know anymore. I'm going to bed * OWN UP YOUR OWN DIGESTION * UNREGULATED GUTS ARE NON COMPLIANT AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA * BELLIES MUST COMPLY WITH USER OWNERSHIP * Removed debug messages * Unneeded verb additions * file change tweaks * WATCH YOUR SPACING, DRIVER * Changelog and devourment for some mobs. Because I knew people were gunna ask. NO YOU CANNOT EAT THE FUCKING LEGION * title screen change from Crow's PR. * More of Crow's title screen stuff * mode tweaks.... again * gamemode voting in lobby via TalkingCactus disabled ashwalkers as roundstart Verk's species tweak paralax starts disabled by default * LOOC * index sync problem (#158) * digifix * things * furry races.dm * actually deletes species_types * maps * tgui and stuff * Sounds * icon updates * Defines and helpers * global vars and on click * controllers * datums * game folder * fixes invisible flan mobs * some modules * dropbomb verb enhanced * moar * moar * moar * even more again * and finally these for modules * Some compile tweaks * silly dme get updated you scrub * compiles cleanly now * various open PR fixes from TG as of 0800 Texas Standard Time * also fancy cryopods before I forget again * headslug gold core fix * some species and DNA tweaks * Digest already damn you * suddenly sound and resist works. wtf * Minor tweaks, cryopod noise change * Vore tested working, species working * travis map updates * updates * pool's closed due to lag * datum pools are closed too * Initializing new pool's closed * Pool's closed and initializing shit is done * sprite updates * chattering is okay to do now. * Update .travis.yml * Update .travis.yml * Update .travis.yml * Revert "Modern modern" * Revert "Revert "Modern modern"" * fix it fix it fix it fix it * fixes title screen - thanks crow * Riding code reverted * possible tgui fix? * who the fuck even knows if this is the problem * adds moths and sharks (no colors yet, not greyscaled) adds LOOC back * "fixes" missing items in some machinery. * slight tweaks to abductor spawns borer event enabled (max 1) * Update .travis.yml * fixes shuttle purchase from comms * fixes and QoL * Polymorphing all is dangerous too * re-fixes ahelp ticket system again * metagaming check proving to be spamlicious * Fixes not being able to see devoured mob poses * fix for vehicle buckling * ahelp timer runtime fix (#178) * controller and game updates 1/29 * Defines, helpers, datums 1/29 * world.dm updates * modules/admin tweaks * everything in modules not a mob * modules/mob fixes and such No more PAIs ventcrawling * icons, maps, tools, etc. * compiler fixes * round type vote fixed * hardsuit cargo pack * reduce ion and electric storm chance * perms access for travis * fix helmet to the suit removes CE from crate * changelog * fuck * perms for travis... again * Update tgstation.dme * Update tgstation.dme * Donation race * redpanda * red panda * size play work * Size chemical basics Needs testing/refining * some fixing ports before I just fucking ported it anyway * It's been a fucking week. * commiting moar changes because github * admins.txt lol * icons * defines and such * globalvars and onclick * Controllers * datums * game folder * oh look, HoG is back * modules pt 1 * client things * more modules * everything not mob code * some mob stuff * more mob things * silicon mobs * ayylims and monkeys * human updates * huh * housekeeping is fired. * last minute fixes * more last minute things * human parts double check'd * more paper * Icons are fixed * double check of thermal protection code. (#191)
This commit is contained in:
@@ -0,0 +1,112 @@
|
||||
|
||||
<script>
|
||||
component.exports = {
|
||||
computed: {
|
||||
healthState () {
|
||||
const health = this.get('data.health')
|
||||
if (health > 70) return 'good'
|
||||
else if (health > 50) return 'average'
|
||||
else return 'bad'
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<div style="float: left">
|
||||
<div class='item'>
|
||||
<table><tr>
|
||||
{{#if data.PC_batteryicon && data.PC_showbatteryicon}}
|
||||
<td><img src='{{data.PC_batteryicon}}'>
|
||||
{{/if}}
|
||||
{{#if data.PC_batterypercent && data.PC_showbatteryicon}}
|
||||
<td><b>{{data.PC_batterypercent}}</b>
|
||||
{{/if}}
|
||||
{{#if data.PC_ntneticon}}
|
||||
<td><img src='{{data.PC_ntneticon}}'>
|
||||
{{/if}}
|
||||
{{#if data.PC_apclinkicon}}
|
||||
<td><img src='{{data.PC_apclinkicon}}'>
|
||||
{{/if}}
|
||||
{{#if data.PC_stationtime}}
|
||||
<td><b>{{data.PC_stationtime}}<b>
|
||||
{{/if}}
|
||||
{{#each data.PC_programheaders}}
|
||||
<td><img src='{{icon}}'>
|
||||
{{/each}}
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div style="float: right">
|
||||
<table><tr>
|
||||
<td><ui-button action='PC_shutdown'>Shutdown</ui-button>
|
||||
{{#if data.PC_showexitprogram}}
|
||||
<td><ui-button action='PC_exit'>EXIT PROGRAM</ui-button>
|
||||
<td><ui-button action='PC_minimize'>Minimize Program</ui-button>
|
||||
{{/if}}
|
||||
</table>
|
||||
</div>
|
||||
<div style="clear: both">
|
||||
|
||||
|
||||
{{#if data.restoring}}
|
||||
<ui-notice>
|
||||
<span>Reconstruction in progress!</span>
|
||||
</ui-notice>
|
||||
{{/if}}
|
||||
|
||||
|
||||
<ui-display>
|
||||
|
||||
<div class='item'>
|
||||
<div class='itemLabel'>
|
||||
Inserted AI:
|
||||
</div>
|
||||
<div class='itemContent'>
|
||||
<ui-button icon='eject' action='PRG_eject' state='{{data.nocard ? "disabled" : null}}'>{{data.name ? data.name : "---"}}</ui-button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{#if data.error}}
|
||||
<b>ERROR: {{data.error}}</b>
|
||||
{{else}}
|
||||
<h2>System Status</h2>
|
||||
<div class="item">
|
||||
<div class="itemLabel">
|
||||
Current AI:
|
||||
</div>
|
||||
<div class="itemContent">
|
||||
{{data.name}}
|
||||
</div>
|
||||
<div class="itemLabel">
|
||||
Status:
|
||||
</div>
|
||||
<div class="itemContent">
|
||||
{{#if data.isDead}}
|
||||
Nonfunctional
|
||||
{{else}}
|
||||
Functional
|
||||
{{/if}}
|
||||
</div>
|
||||
<div class="itemLabel">
|
||||
System Integrity:
|
||||
</div>
|
||||
<div class="itemContent">
|
||||
<ui-bar min='0' max='100' value='{{data.health}}'
|
||||
state='{{healthState}}'>{{Math.round(adata.health)}}%</ui-bar>
|
||||
</div>
|
||||
<div class="itemLabel">
|
||||
Active Laws:
|
||||
</div>
|
||||
<div class="itemContent">
|
||||
<table>
|
||||
{{#each data.ai_laws}}
|
||||
<tr><td><span class='highlight'>{{.}}</span>
|
||||
{{/each}}
|
||||
</table>
|
||||
</div>
|
||||
<ui-section label='Operations'>
|
||||
<ui-button icon='plus' style='{{data.restoring ? "disabled" : null}}' action='PRG_beginReconstruction'>Begin Reconstruction</ui-button>
|
||||
</ui-section>
|
||||
{{/if}}
|
||||
|
||||
</ui-display>
|
||||
@@ -27,6 +27,10 @@
|
||||
action='tox_scrub' params='{"id_tag": "{{id_tag}}", "val": {{+!filter_toxins}}}'>Plasma</ui-button>
|
||||
<ui-button icon='{{filter_bz ? "check-square-o" : "square-o"}}' style='{{filter_bz ? "selected" : null}}'
|
||||
action='bz_scrub' params='{"id_tag": "{{id_tag}}", "val": {{+!filter_bz}}}'>BZ</ui-button>
|
||||
<ui-button icon='{{filter_freon ? "check-square-o" : "square-o"}}' style='{{filter_freon ? "selected" : null}}'
|
||||
action='freon_scrub' params='{"id_tag": "{{id_tag}}", "val": {{+!filter_freon}}}'>Freon</ui-button>
|
||||
<ui-button icon='{{filter_water_vapor ? "check-square-o" : "square-o"}}' style='{{filter_water_vapor ? "selected" : null}}'
|
||||
action='water_vapor_scrub' params='{"id_tag": "{{id_tag}}", "val": {{+!filter_water_vapor}}}'>Water Vapor</ui-button>
|
||||
</ui-section>
|
||||
</ui-subdisplay>
|
||||
{{else}}
|
||||
|
||||
@@ -42,84 +42,92 @@
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<ui-notice>
|
||||
{{#if data.siliconUser}}
|
||||
<ui-section label='Interface Lock'>
|
||||
<ui-button icon='{{data.locked ? "lock" : "unlock"}}' action='lock'>{{data.locked ? "Engaged" : "Disengaged"}}</ui-button>
|
||||
</ui-section>
|
||||
{{else}}
|
||||
<span>Swipe an ID card to {{data.locked ? "unlock" : "lock"}} this interface.</span>
|
||||
{{/if}}
|
||||
</ui-notice>
|
||||
<ui-display title='Power Status'>
|
||||
<ui-section label='Main Breaker'>
|
||||
{{#if data.locked && !data.siliconUser}}
|
||||
<span class='{{data.isOperating ? "good" : "bad"}}'>{{data.isOperating ? "On" : "Off"}}</span>
|
||||
{{else}}
|
||||
<ui-button icon='{{data.isOperating ? "power-off" : "close"}}' style='{{data.isOperating ? "selected" : null}}'
|
||||
action='breaker'>{{data.isOperating ? "On" : "Off"}}</ui-button>
|
||||
{{/if}}
|
||||
</ui-section>
|
||||
<ui-section label='External Power'>
|
||||
<span class='{{powerState(data.externalPower)}}'>{{data.externalPower == 2 ? "Good" : data.externalPower == 1 ? "Low" : "None"}}</span>
|
||||
</ui-section>
|
||||
<ui-section label='Power Cell'>
|
||||
{{#if data.powerCellStatus != null}}
|
||||
<ui-bar min='0' max='100' value='{{data.powerCellStatus}}' state='{{powerCellStatusState}}'>{{Math.fixed(adata.powerCellStatus)}}%</ui-bar>
|
||||
{{else}}
|
||||
<span class='bad'>Removed</span>
|
||||
{{/if}}
|
||||
</ui-section>
|
||||
{{#if data.powerCellStatus != null}}
|
||||
<ui-section label='Charge Mode'>
|
||||
{{#if data.locked && !data.siliconUser}}
|
||||
<span class='{{data.chargeMode ? "good" : "bad"}}'>{{data.chargeMode ? "Auto" : "Off"}}</span>
|
||||
{{else}}
|
||||
<ui-button icon='{{data.chargeMode ? "refresh" : "close"}}' style='{{data.chargeMode ? "selected" : null}}'
|
||||
action='charge'>{{data.chargeMode ? "Auto" : "Off"}}</ui-button>
|
||||
{{/if}}
|
||||
|
||||
[<span class='{{powerState(data.chargingStatus)}}'>{{data.chargingStatus == 2 ? "Fully Charged" : data.chargingStatus == 1 ? "Charging" : "Not Charging"}}</span>]
|
||||
</ui-section>
|
||||
{{/if}}
|
||||
</ui-display>
|
||||
<ui-display title='Power Channels'>
|
||||
{{#each data.powerChannels}}
|
||||
<ui-section label='{{title}}' nowrap>
|
||||
<div class='content'>{{Math.round(adata.powerChannels[@index].powerLoad)}} W</div>
|
||||
<div class='content'><span class='{{status >= 2 ? "good" : "bad"}}'>{{status >= 2 ? "On" : "Off"}}</span></div>
|
||||
<div class='content'>[<span>{{status == 1 || status == 3 ? "Auto" : "Manual"}}</span>]</div>
|
||||
<div class='content' style='float:right'>
|
||||
{{#if !data.locked || data.siliconUser}}
|
||||
<ui-button icon='refresh' state='{{status == 1 || status == 3 ? "selected" : null}}'
|
||||
action='channel' params='{{topicParams.auto}}'>Auto</ui-button>
|
||||
<ui-button icon='power-off' state='{{status == 2 ? "selected" : null}}' action='channel'
|
||||
params='{{topicParams.on}}'>On</ui-button>
|
||||
<ui-button icon='close' state='{{status == 0 ? "selected" : null}}' action='channel'
|
||||
params='{{topicParams.off}}'>Off</ui-button>
|
||||
{{/if}}
|
||||
</div>
|
||||
</ui-section>
|
||||
{{/each}}
|
||||
<ui-section label='Total Load'>
|
||||
<span class='bold'>{{Math.round(adata.totalLoad)}} W</span>
|
||||
</ui-section>
|
||||
</ui-display>
|
||||
{{#if data.siliconUser}}
|
||||
<ui-display title='System Overrides'>
|
||||
<ui-button icon='lightbulb-o' action='overload'>Overload</ui-button>
|
||||
{{#if data.malfStatus}}
|
||||
<ui-button icon='{{malfIcon}}' state='{{data.malfStatus == 4 ? "disabled" : null}}' action='{{malfAction}}'>{{malfButton}}</ui-button>
|
||||
{{/if}}
|
||||
</ui-display>
|
||||
{{/if}}
|
||||
<ui-notice>
|
||||
<ui-section label='Cover Lock'>
|
||||
{{#if data.locked && !data.siliconUser}}
|
||||
<span>{{data.coverLocked ? "Engaged" : "Disengaged"}}</span>
|
||||
{{else}}
|
||||
<ui-button icon='{{data.coverLocked ? "lock" : "unlock"}}' action='cover'>{{data.coverLocked ? "Engaged" : "Disengaged"}}</ui-button>
|
||||
{{/if}}
|
||||
</ui-section>
|
||||
</ui-notice>
|
||||
{{#if data.failTime}}
|
||||
<ui-notice>
|
||||
<b><h3>SYSTEM FAILURE</h3></b>
|
||||
<i>I/O regulators malfunction detected! Waiting for system reboot...</i><br>
|
||||
Automatic reboot in {{data.failTime}} seconds...
|
||||
<ui-button icon='refresh' action='reboot'>Reboot Now</ui-button><br><br><br>
|
||||
</ui-notice>
|
||||
{{else}}
|
||||
<ui-notice>
|
||||
{{#if data.siliconUser}}
|
||||
<ui-section label='Interface Lock'>
|
||||
<ui-button icon='{{data.locked ? "lock" : "unlock"}}' action='lock'>{{data.locked ? "Engaged" : "Disengaged"}}</ui-button>
|
||||
</ui-section>
|
||||
{{else}}
|
||||
<span>Swipe an ID card to {{data.locked ? "unlock" : "lock"}} this interface.</span>
|
||||
{{/if}}
|
||||
</ui-notice>
|
||||
<ui-display title='Power Status'>
|
||||
<ui-section label='Main Breaker'>
|
||||
{{#if data.locked && !data.siliconUser}}
|
||||
<span class='{{data.isOperating ? "good" : "bad"}}'>{{data.isOperating ? "On" : "Off"}}</span>
|
||||
{{else}}
|
||||
<ui-button icon='{{data.isOperating ? "power-off" : "close"}}' style='{{data.isOperating ? "selected" : null}}'
|
||||
action='breaker'>{{data.isOperating ? "On" : "Off"}}</ui-button>
|
||||
{{/if}}
|
||||
</ui-section>
|
||||
<ui-section label='External Power'>
|
||||
<span class='{{powerState(data.externalPower)}}'>{{data.externalPower == 2 ? "Good" : data.externalPower == 1 ? "Low" : "None"}}</span>
|
||||
</ui-section>
|
||||
<ui-section label='Power Cell'>
|
||||
{{#if data.powerCellStatus != null}}
|
||||
<ui-bar min='0' max='100' value='{{data.powerCellStatus}}' state='{{powerCellStatusState}}'>{{Math.fixed(adata.powerCellStatus)}}%</ui-bar>
|
||||
{{else}}
|
||||
<span class='bad'>Removed</span>
|
||||
{{/if}}
|
||||
</ui-section>
|
||||
{{#if data.powerCellStatus != null}}
|
||||
<ui-section label='Charge Mode'>
|
||||
{{#if data.locked && !data.siliconUser}}
|
||||
<span class='{{data.chargeMode ? "good" : "bad"}}'>{{data.chargeMode ? "Auto" : "Off"}}</span>
|
||||
{{else}}
|
||||
<ui-button icon='{{data.chargeMode ? "refresh" : "close"}}' style='{{data.chargeMode ? "selected" : null}}'
|
||||
action='charge'>{{data.chargeMode ? "Auto" : "Off"}}</ui-button>
|
||||
{{/if}}
|
||||
|
||||
[<span class='{{powerState(data.chargingStatus)}}'>{{data.chargingStatus == 2 ? "Fully Charged" : data.chargingStatus == 1 ? "Charging" : "Not Charging"}}</span>]
|
||||
</ui-section>
|
||||
{{/if}}
|
||||
</ui-display>
|
||||
<ui-display title='Power Channels'>
|
||||
{{#each data.powerChannels}}
|
||||
<ui-section label='{{title}}' nowrap>
|
||||
<div class='content'>{{Math.round(adata.powerChannels[@index].powerLoad)}} W</div>
|
||||
<div class='content'><span class='{{status >= 2 ? "good" : "bad"}}'>{{status >= 2 ? "On" : "Off"}}</span></div>
|
||||
<div class='content'>[<span>{{status == 1 || status == 3 ? "Auto" : "Manual"}}</span>]</div>
|
||||
<div class='content' style='float:right'>
|
||||
{{#if !data.locked || data.siliconUser}}
|
||||
<ui-button icon='refresh' state='{{status == 1 || status == 3 ? "selected" : null}}'
|
||||
action='channel' params='{{topicParams.auto}}'>Auto</ui-button>
|
||||
<ui-button icon='power-off' state='{{status == 2 ? "selected" : null}}' action='channel'
|
||||
params='{{topicParams.on}}'>On</ui-button>
|
||||
<ui-button icon='close' state='{{status == 0 ? "selected" : null}}' action='channel'
|
||||
params='{{topicParams.off}}'>Off</ui-button>
|
||||
{{/if}}
|
||||
</div>
|
||||
</ui-section>
|
||||
{{/each}}
|
||||
<ui-section label='Total Load'>
|
||||
<span class='bold'>{{Math.round(adata.totalLoad)}} W</span>
|
||||
</ui-section>
|
||||
</ui-display>
|
||||
{{#if data.siliconUser}}
|
||||
<ui-display title='System Overrides'>
|
||||
<ui-button icon='lightbulb-o' action='overload'>Overload</ui-button>
|
||||
{{#if data.malfStatus}}
|
||||
<ui-button icon='{{malfIcon}}' state='{{data.malfStatus == 4 ? "disabled" : null}}' action='{{malfAction}}'>{{malfButton}}</ui-button>
|
||||
{{/if}}
|
||||
</ui-display>
|
||||
{{/if}}
|
||||
<ui-notice>
|
||||
<ui-section label='Cover Lock'>
|
||||
{{#if data.locked && !data.siliconUser}}
|
||||
<span>{{data.coverLocked ? "Engaged" : "Disengaged"}}</span>
|
||||
{{else}}
|
||||
<ui-button icon='{{data.coverLocked ? "lock" : "unlock"}}' action='cover'>{{data.coverLocked ? "Engaged" : "Disengaged"}}</ui-button>
|
||||
{{/if}}
|
||||
</ui-section>
|
||||
</ui-notice>
|
||||
{{/if}}
|
||||
@@ -23,5 +23,9 @@
|
||||
action='filter' params='{"mode": "n2o"}'>N2O</ui-button>
|
||||
<ui-button state='{{data.filter_type == "bz" ? "selected" : null}}'
|
||||
action='filter' params='{"mode": "bz"}'>BZ</ui-button>
|
||||
<ui-button state='{{data.filter_type == "freon" ? "selected" : null}}'
|
||||
action='filter' params='{"mode": "freon"}'>Freon</ui-button>
|
||||
<ui-button state='{{data.filter_type == "water_vapor" ? "selected" : null}}'
|
||||
action='filter' params='{"mode": "water_vapor"}'>Water Vapor</ui-button>
|
||||
</ui-section>
|
||||
</ui-display>
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
{{#if data.notice}}
|
||||
<ui-notice>
|
||||
{{data.notice}}
|
||||
</ui-notice>
|
||||
{{/if}}
|
||||
<ui-display title='Bluespace Artillery Control' button>
|
||||
{{#if data.connected}}
|
||||
<ui-section label='Target'>
|
||||
<ui-button icon='crosshairs' action='recalibrate'>{{data.target}}</ui-button>
|
||||
</ui-section>
|
||||
<ui-section label='Controls'>
|
||||
<ui-button icon='warning' state='{{data.ready ? null : "disabled"}}' action='fire'>FIRE!</ui-button>
|
||||
</ui-section>
|
||||
{{/if}}
|
||||
{{#if !data.connected}}
|
||||
<ui-section label='Maintenance'>
|
||||
<ui-button icon='wrench' action='build'>Complete Deployment.</ui-button>
|
||||
</ui-section>
|
||||
{{/if}}
|
||||
</ui-display>
|
||||
@@ -25,7 +25,9 @@
|
||||
{{#if data.loan && !data.requestonly}}
|
||||
<ui-section label='Loan'>
|
||||
{{#if !data.loan_dispatched}}
|
||||
<ui-button action='loan'>Loan Shuttle</ui-button>
|
||||
<ui-button
|
||||
state='{{data.away && data.docked ? null : "disabled"}}'
|
||||
action='loan'>Loan Shuttle</ui-button>
|
||||
{{else}}
|
||||
<span class='bad'>Loaned to Centcom</span>
|
||||
{{/if}}
|
||||
|
||||
@@ -11,11 +11,6 @@
|
||||
<span>{{desc}}</span>
|
||||
<span>{{helptext}}</span>
|
||||
<span>Cost: {{dna_cost}}</span>
|
||||
|
||||
{{#if required_absorbtions}}
|
||||
<span>Required Absorbtions: {{required_absorbtions}}
|
||||
{{/if}}
|
||||
|
||||
<ui-button
|
||||
state='{{owned ? "selected" : can_purchase ? null : "disabled"}}'
|
||||
action='evolve'
|
||||
|
||||
@@ -64,12 +64,15 @@
|
||||
<ui-button action='createPill' params='{"many": 1}' state='{{data.bufferContents ? null : "disabled"}}' >Create Multiple Pills</ui-button>
|
||||
<br/>
|
||||
<br/>
|
||||
<ui-button action='createPatch' params='{"many": 0}' state='{{data.bufferContents ? null : "disabled"}}' >Create Patch (max 50µ)</ui-button>
|
||||
<ui-button action='createPatch' params='{"many": 0}' state='{{data.bufferContents ? null : "disabled"}}' >Create Patch (max 40µ)</ui-button>
|
||||
<br/>
|
||||
<ui-button action='createPatch' params='{"many": 1}' state='{{data.bufferContents ? null : "disabled"}}' >Create Multiple Patches</ui-button>
|
||||
<br/>
|
||||
<br/>
|
||||
<ui-button action='createBottle' state='{{data.bufferContents ? null : "disabled"}}' >Create Bottle (max 30µ)</ui-button>
|
||||
<ui-button action='createBottle' params='{"many": 0}' state='{{data.bufferContents ? null : "disabled"}}' >Create Bottle (max 30µ)</ui-button>
|
||||
<br/>
|
||||
<ui-button action='createBottle' params='{"many": 1}' state='{{data.bufferContents ? null : "disabled"}}' >Dispense Buffer to Bottles</ui-button>
|
||||
|
||||
</ui-display>
|
||||
|
||||
{{else}}
|
||||
@@ -77,7 +80,7 @@
|
||||
<ui-button action='createPill' params='{"many": 0}' state='{{data.bufferContents ? null : "disabled"}}' >Create Pack (max 10µ)</ui-button>
|
||||
<br/>
|
||||
<br/>
|
||||
<ui-button action='createBottle' state='{{data.bufferContents ? null : "disabled"}}' >Create Bottle (max 50µ)</ui-button>
|
||||
<ui-button action='createBottle' params='{"many": 0}' state='{{data.bufferContents ? null : "disabled"}}' >Create Bottle (max 50µ)</ui-button>
|
||||
</ui-display>
|
||||
{{/if}}
|
||||
{{elseif data.screen == "analyze"}}
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
<ui-display>
|
||||
<ui-button action='toggle'>{{data.recollection ? "Recital":"Recollection"}}</ui-button>
|
||||
<ui-button action='component'>Target Component: {{{data.target_comp}}}</ui-button>
|
||||
</ui-display>
|
||||
{{#if data.recollection}}
|
||||
<ui-display>
|
||||
{{{data.rec_text}}}
|
||||
</ui-display>
|
||||
{{else}}
|
||||
<ui-display title='Components (with Global Cache)' button>
|
||||
<ui-section>
|
||||
{{{data.components}}}
|
||||
</ui-section>
|
||||
</ui-display>
|
||||
<ui-display>
|
||||
<ui-section>
|
||||
<ui-button state='{{data.selected == "Driver" ? "selected" : null}}' action='select' params='{"category": "Driver"}'>Driver</ui-button>
|
||||
<ui-button state='{{data.selected == "Script" ? "selected" : null}}' action='select' params='{"category": "Script"}'>Scripts</ui-button>
|
||||
<ui-button state='{{data.selected == "Application" ? "selected" : null}}' action='select' params='{"category": "Application"}'>Applications</ui-button>
|
||||
<ui-button state='{{data.selected == "Revenant" ? "selected" : null}}' action='select' params='{"category": "Revenant"}'>Revenant</ui-button>
|
||||
<ui-button state='{{data.selected == "Judgement" ? "selected" : null}}' action='select' params='{"category": "Judgement"}'>Judgement</ui-button>
|
||||
<br>{{{data.tier_info}}}
|
||||
</ui-section><hr>
|
||||
<ui-section>
|
||||
{{#each data.scripture}}
|
||||
<div><ui-button tooltip='{{{tip}}}' tooltip-side='right' action='recite' params='{"category": "{{type}}"}'>Recite{{{required}}}</ui-button>
|
||||
{{#if quickbind}}
|
||||
{{#if bound}}
|
||||
<ui-button action='bind' params='{"category": "{{type}}"}'>Unbind {{{bound}}}</ui-button>
|
||||
{{else}}
|
||||
<ui-button action='bind' params='{"category": "{{type}}"}'>Quickbind</ui-button>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
{{{name}}} {{{descname}}} {{{invokers}}}</div>
|
||||
{{/each}}
|
||||
</ui-section>
|
||||
</ui-display>
|
||||
{{/if}}
|
||||
@@ -0,0 +1,89 @@
|
||||
|
||||
<ui-button icon='circle' action='clean_order'>Clear Order</ui-button><br><br>
|
||||
<i>Your new computer device you always dreamed of is just four steps away...</i><hr>
|
||||
{{#if data.state == 0}} <!-- Device type selection -->
|
||||
<div class='item'>
|
||||
<h2>Step 1: Select your device type</h2>
|
||||
<ui-button icon='calc' action='pick_device' params='{"pick" : "1"}'>Laptop</ui-button>
|
||||
<ui-button icon='calc' action='pick_device' params='{"pick" : "2"}'>LTablet</ui-button>
|
||||
</div>
|
||||
{{elseif data.state == 1}}
|
||||
<div class='item'>
|
||||
<h2>Step 2: Personalise your device</h2>
|
||||
<table>
|
||||
<tr>
|
||||
<td><b>Current Price:</b>
|
||||
<td>{{data.totalprice}}C
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>Battery:</b>
|
||||
<td><ui-button action='hw_battery' params='{"battery" : "1"}' state='{{data.hw_battery == 1 ? "selected" : null}}'>Standard</ui-button>
|
||||
<td><ui-button action='hw_battery' params='{"battery" : "2"}' state='{{data.hw_battery == 2 ? "selected" : null}}'>Upgraded</ui-button>
|
||||
<td><ui-button action='hw_battery' params='{"battery" : "3"}' state='{{data.hw_battery == 3 ? "selected" : null}}'>Advanced</ui-button>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>Hard Drive:</b>
|
||||
<td><ui-button action='hw_disk' params='{"disk" : "1"}' state='{{data.hw_disk == 1 ? "selected" : null}}'>Standard</ui-button>
|
||||
<td><ui-button action='hw_disk' params='{"disk" : "2"}' state='{{data.hw_disk == 2 ? "selected" : null}}'>Upgraded</ui-button>
|
||||
<td><ui-button action='hw_disk' params='{"disk" : "3"}' state='{{data.hw_disk == 3 ? "selected" : null}}'>Advanced</ui-button>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>Network Card:</b>
|
||||
<td><ui-button action='hw_netcard' params='{"netcard" : "0"}' state='{{data.hw_netcard == 0 ? "selected" : null}}'>None</ui-button>
|
||||
<td><ui-button action='hw_netcard' params='{"netcard" : "1"}' state='{{data.hw_netcard == 1 ? "selected" : null}}'>Standard</ui-button>
|
||||
<td><ui-button action='hw_netcard' params='{"netcard" : "2"}' state='{{data.hw_netcard == 2 ? "selected" : null}}'>Advanced</ui-button>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>Nano Printer:</b>
|
||||
<td><ui-button action='hw_nanoprint' params='{"print" : "0"}' state='{{data.hw_nanoprint == 0 ? "selected" : null}}'>None</ui-button>
|
||||
<td><ui-button action='hw_nanoprint' params='{"print" : "1"}' state='{{data.hw_nanoprint == 1 ? "selected" : null}}'>Standard</ui-button>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>Card Reader:</b>
|
||||
<td><ui-button action='hw_card' params='{"card" : "0"}' state='{{data.hw_card == 0 ? "selected" : null}}'>None</ui-button>
|
||||
<td><ui-button action='hw_card' params='{"card" : "1"}' state='{{data.hw_card == 1 ? "selected" : null}}'>Standard</ui-button>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
{{#if data.devtype != 2}} {{! No tablets}}
|
||||
<table>
|
||||
<tr>
|
||||
<td><b>Processor Unit:</b>
|
||||
<td><ui-button action='hw_cpu' params='{"cpu" : "1"}' state='{{data.hw_cpu == 1 ? "selected" : null}}'>Standard</ui-button>
|
||||
<td><ui-button action='hw_cpu' params='{"cpu" : "2"}' state='{{data.hw_cpu == 2 ? "selected" : null}}'>Advanced</ui-button>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><b>Tesla Relay:</b>
|
||||
<td><ui-button action='hw_tesla' params='{"tesla" : "0"}' state='{{data.hw_tesla == 0 ? "selected" : null}}'>None</ui-button>
|
||||
<td><ui-button action='hw_tesla' params='{"tesla" : "1"}' state='{{data.hw_tesla == 1 ? "selected" : null}}'>Standard</ui-button>
|
||||
</tr>
|
||||
</table>
|
||||
{{/if}}
|
||||
<table>
|
||||
<tr>
|
||||
<td><b>Confirm Order:</b>
|
||||
<td><ui-button action='confirm_order'>CONFIRM</ui-button>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<hr>
|
||||
<b>Battery</b> allows your device to operate without external utility power source. Advanced batteries increase battery life.<br>
|
||||
<b>Hard Drive</b> stores file on your device. Advanced drives can store more files, but use more power, shortening battery life.<br>
|
||||
<b>Network Card</b> allows your device to wirelessly connect to stationwide NTNet network. Basic cards are limited to on-station use, while advanced cards can operate anywhere near the station, which includes the asteroid outposts.<br>
|
||||
<b>Processor Unit</b> is critical for your device's functionality. It allows you to run programs from your hard drive. Advanced CPUs use more power, but allow you to run more programs on background at once.<br>
|
||||
<b>Tesla Relay</b> is an advanced wireless power relay that allows your device to connect to nearby area power controller to provide alternative power source. This component is currently unavailable on tablet computers due to size restrictions.<br>
|
||||
<b>Nano Printer</b> is device that allows for various paperwork manipulations, such as, scanning of documents or printing new ones. This device was certified EcoFriendlyPlus and is capable of recycling existing paper for printing purposes.<br>
|
||||
<b>Card Reader</b> adds a slot that allows you to manipulate RFID cards. Please note that this is not necessary to allow the device to read your identification, it is just necessary to manipulate other cards.
|
||||
</div>
|
||||
{{elseif data.state == 2}}
|
||||
<h2>Step 3: Payment</h2>
|
||||
<b>Your device is now ready for fabrication..</b><br>
|
||||
<i>Please ensure the required amount of credits are in the machine, then press purchase.</i><br>
|
||||
<i>Current credits: <b>{{data.credits}}C</b></i><br>
|
||||
<i>Total price: <b>{{data.totalprice}}C</b></i><br><br>
|
||||
<ui-button action='purchase' state='{{data.credits >= data.totalprice ? null : "disabled"}}'>PURCHASE</ui-button>
|
||||
|
||||
{{elseif data.state == 3}}
|
||||
<h2>Step 4: Thank you for your purchase</h2><br>
|
||||
<b>Should you experience any issues with your new device, contact your local network admin for assistance.</b>
|
||||
{{/if}}
|
||||
@@ -0,0 +1,47 @@
|
||||
|
||||
<div style="float: left">
|
||||
<div class='item'>
|
||||
<table><tr>
|
||||
{{#if data.PC_batteryicon && data.PC_showbatteryicon}}
|
||||
<td><img src='{{data.PC_batteryicon}}'>
|
||||
{{/if}}
|
||||
{{#if data.PC_batterypercent && data.PC_showbatteryicon}}
|
||||
<td><b>{{data.PC_batterypercent}}</b>
|
||||
{{/if}}
|
||||
{{#if data.PC_ntneticon}}
|
||||
<td><img src='{{data.PC_ntneticon}}'>
|
||||
{{/if}}
|
||||
{{#if data.PC_apclinkicon}}
|
||||
<td><img src='{{data.PC_apclinkicon}}'>
|
||||
{{/if}}
|
||||
{{#if data.PC_stationtime}}
|
||||
<td><b>{{data.PC_stationtime}}<b>
|
||||
{{/if}}
|
||||
{{#each data.PC_programheaders}}
|
||||
<td><img src='{{icon}}'>
|
||||
{{/each}}
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div style="float: right">
|
||||
<table><tr>
|
||||
<td><ui-button action='PC_shutdown'>Shutdown</ui-button>
|
||||
{{#if data.PC_showexitprogram}}
|
||||
<td><ui-button action='PC_exit'>EXIT PROGRAM</ui-button>
|
||||
<td><ui-button action='PC_minimize'>Minimize Program</ui-button>
|
||||
{{/if}}
|
||||
</table>
|
||||
</div>
|
||||
<div style="clear: both">
|
||||
|
||||
<ui-display>
|
||||
<i>No program loaded. Please select program from list below.</i>
|
||||
<table>
|
||||
{{#each data.programs}}
|
||||
<tr><td><ui-button action='PC_runprogram' params='{"name": "{{name}}"}'>
|
||||
{{desc}}
|
||||
</ui-button>
|
||||
<td><ui-button state='{{running ? null : "disabled"}}' icon='close' action='PC_killprogram' params='{"name": "{{name}}"}'></ui-button>
|
||||
{{/each}}
|
||||
</table>
|
||||
</ui-display>
|
||||
@@ -0,0 +1,34 @@
|
||||
<ui-display>
|
||||
<ui-section label='State'>
|
||||
{{#if data.mode == 0}}
|
||||
<span class='bad'>Off</span>
|
||||
{{else}}
|
||||
{{#if data.mode == -1}}
|
||||
<span class='bad'>Power Disabled</span>
|
||||
|
||||
{{else}}
|
||||
{{#if data.mode == 1}}
|
||||
<span class='average'>Pressurizing</span>
|
||||
{{else}}
|
||||
<span class='good'>Ready</span>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
</ui-section>
|
||||
<ui-section label='Pressure'>
|
||||
<ui-bar min='0' max='100' value='{{data.per}}' state='good'>{{data.per}}%</ui-bar>
|
||||
</ui-section>
|
||||
<ui-section label='Handle'>
|
||||
<ui-button
|
||||
icon='{{data.flush ? "toggle-on" : "toggle-off" }}'
|
||||
state='{{data.isai || data.mode == -1 ? 'disabled' : null}}'
|
||||
action='{{data.flush ? "handle-0" : "handle-1" }}'>
|
||||
{{data.flush ? "Disengage" : "Engage" }}</ui-button>
|
||||
</ui-section>
|
||||
<ui-section label='Eject'>
|
||||
<ui-button icon='sign-out' state='{{data.isai ? 'disabled' : null}}' action='eject'>Eject Contents</ui-button><br/>
|
||||
</ui-section>
|
||||
<ui-section label='Power'>
|
||||
<ui-button icon='power-off' state='{{data.mode == -1 ? 'disabled' : null}}' action='{{data.mode ? "pump-0" : "pump-1" }}' style='{{data.mode ? "selected" : null }}'></ui-button><br/>
|
||||
</ui-section>
|
||||
</ui-display>
|
||||
@@ -0,0 +1,22 @@
|
||||
<ui-display title='DNA Vault Database'>
|
||||
<ui-section label='Human DNA'>
|
||||
<ui-bar min='0' max='{{data.dna_max}}' value='{{data.dna}}'>{{data.dna}}/{{data.dna_max}} Samples</ui-bar>
|
||||
</ui-section>
|
||||
<ui-section label='Plant Data'>
|
||||
<ui-bar min='0' max='{{data.plants_max}}' value='{{data.plants}}'>{{data.plants}}/{{data.plants_max}} Samples</ui-bar>
|
||||
</ui-section>
|
||||
<ui-section label='Animal Data'>
|
||||
<ui-bar min='0' max='{{data.animals_max}}' value='{{data.animals}}'>{{data.animals}}/{{data.animals_max}} Samples</ui-bar>
|
||||
</ui-section>
|
||||
</ui-display>
|
||||
{{#if data.completed && !data.used}}
|
||||
<ui-display title ='Personal Gene Therapy'>
|
||||
<ui-section>
|
||||
<span>Applicable gene therapy treatments:</span>
|
||||
</ui-section>
|
||||
<ui-section>
|
||||
<ui-button action='gene' params='{"choice": "{{data.choiceA}}"}'>{{data.choiceA}}</ui-button>
|
||||
<ui-button action='gene' params='{"choice": "{{data.choiceB}}"}'>{{data.choiceB}}</ui-button>
|
||||
</ui-section>
|
||||
</ui-display>
|
||||
{{/if}}
|
||||
@@ -1,56 +0,0 @@
|
||||
<script>
|
||||
component.exports = {
|
||||
computed: {
|
||||
occupantStatState () {
|
||||
switch (this.get('data.occupant.stat')) {
|
||||
case 0: return 'good'
|
||||
case 1: return 'average'
|
||||
default: return 'bad'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<ui-display title='Occupant'>
|
||||
<ui-section label='Occupant'>
|
||||
<span>{{data.occupant.name ? data.occupant.name : "No Occupant"}}</span>
|
||||
</ui-section>
|
||||
{{#if data.occupied}}
|
||||
<ui-section label='State'>
|
||||
<span class='{{occupantStatState}}'>{{data.occupant.stat == 0 ? "Conscious" : data.occupant.stat == 1 ? "Unconcious" : "Dead"}}</span>
|
||||
</ui-section>
|
||||
<ui-section label='Health'>
|
||||
<ui-bar min='{{data.occupant.minHealth}}' max='{{data.occupant.maxHealth}}' value='{{data.occupant.health}}'
|
||||
state='{{data.occupant.health >= 0 ? "good" : "average"}}'>{{Math.round(adata.occupant.health)}}</ui-bar>
|
||||
</ui-section>
|
||||
{{#each [{label: "Brute", type: "bruteLoss"}, {label: "Respiratory", type: "oxyLoss"}, {label: "Toxin", type: "toxLoss"}, {label: "Burn", type: "fireLoss"}]}}
|
||||
<ui-section label='{{label}}'>
|
||||
<ui-bar min='0' max='{{data.occupant.maxHealth}}' value='{{data.occupant[type]}}' state='bad'>{{Math.round(adata.occupant[type])}}</ui-bar>
|
||||
</ui-section>
|
||||
{{/each}}
|
||||
<ui-section label='Cells'>
|
||||
<span class='{{data.occupant.cloneLoss ? "bad" : "good"}}'>{{data.occupant.cloneLoss ? "Damaged" : "Healthy"}}</span>
|
||||
</ui-section>
|
||||
<ui-section label='Brain'>
|
||||
<span class='{{data.occupant.brainLoss ? "bad" : "good"}}'>{{data.occupant.brainLoss ? "Abnormal" : "Healthy"}}</span>
|
||||
</ui-section>
|
||||
<ui-section label='Bloodstream'>
|
||||
{{#each adata.occupant.reagents}}
|
||||
<span class='highlight' intro-outro='fade'>{{Math.fixed(volume, 1)}} units of {{name}}</span><br/>
|
||||
{{else}}
|
||||
<span class='good'>Pure</span>
|
||||
{{/each}}
|
||||
</ui-section>
|
||||
{{/if}}
|
||||
</ui-display>
|
||||
<ui-display title='Controls'>
|
||||
<ui-section label='Eject?'>
|
||||
<ui-button icon='eject' state='{{data.occupied}}' action='eject'>Eject</ui-button>
|
||||
</ui-section>
|
||||
<ui-section label='Inject'>
|
||||
{{#each data.chems}}
|
||||
<ui-button icon='flask' state='{{data.occupied && allowed ? null : "disabled"}}' action='inject' params='{"chem": "{{id}}"}'>{{name}}</ui-button><br/>
|
||||
{{/each}}
|
||||
</ui-section>
|
||||
</ui-display>
|
||||
@@ -0,0 +1,98 @@
|
||||
|
||||
<ui-display>
|
||||
|
||||
<div style="float: left">
|
||||
<div class='item'>
|
||||
<table><tr>
|
||||
{{#if data.PC_batteryicon && data.PC_showbatteryicon}}
|
||||
<td><img src='{{data.PC_batteryicon}}'>
|
||||
{{/if}}
|
||||
{{#if data.PC_batterypercent && data.PC_showbatteryicon}}
|
||||
<td><b>{{data.PC_batterypercent}}</b>
|
||||
{{/if}}
|
||||
{{#if data.PC_ntneticon}}
|
||||
<td><img src='{{data.PC_ntneticon}}'>
|
||||
{{/if}}
|
||||
{{#if data.PC_apclinkicon}}
|
||||
<td><img src='{{data.PC_apclinkicon}}'>
|
||||
{{/if}}
|
||||
{{#if data.PC_stationtime}}
|
||||
<td><b>{{data.PC_stationtime}}<b>
|
||||
{{/if}}
|
||||
{{#each data.PC_programheaders}}
|
||||
<td><img src='{{icon}}'>
|
||||
{{/each}}
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div style="float: right">
|
||||
<table><tr>
|
||||
<td><ui-button action='PC_shutdown'>Shutdown</ui-button>
|
||||
{{#if data.PC_showexitprogram}}
|
||||
<td><ui-button action='PC_exit'>EXIT PROGRAM</ui-button>
|
||||
<td><ui-button action='PC_minimize'>Minimize Program</ui-button>
|
||||
{{/if}}
|
||||
</table>
|
||||
</div>
|
||||
<div style="clear: both">
|
||||
|
||||
{{#if data.error}}
|
||||
<h2>An error has occurred and this program can not continue.</h2>
|
||||
Additional information: {{data.error}}<br>
|
||||
<i>Please try again. If the problem persists contact your system administrator for assistance.</i>
|
||||
<ui-button action='PRG_closefile'>Restart program</ui-button>
|
||||
{{else}}
|
||||
{{#if data.filename}}
|
||||
<h2>Viewing file {{data.filename}}</h2>
|
||||
<div class='item'>
|
||||
<ui-button action='PRG_closefile'>CLOSE</ui-button>
|
||||
<ui-button action='PRG_edit'>EDIT</ui-button>
|
||||
<ui-button action='PRG_printfile'>PRINT</ui-button>
|
||||
</div><hr>
|
||||
{{data.filedata}}
|
||||
{{else}}
|
||||
<h2>Available files (local):</h2>
|
||||
<table>
|
||||
<tr><th>File name
|
||||
<th>File type
|
||||
<th>File size (GQ)
|
||||
<th>Operations
|
||||
{{#each data.files}}
|
||||
<tr><td>{{name}}
|
||||
<td>.{{type}}
|
||||
<td>{{size}}GQ
|
||||
<td>
|
||||
<ui-button action='PRG_openfile' params='{"name": "{{name}}"}'>VIEW</ui-button>
|
||||
<ui-button state='{{undeletable ? "disabled" : null}}' action='PRG_deletefile' params='{"name": "{{name}}"}'>DELETE</ui-button>
|
||||
<ui-button state='{{undeletable ? "disabled" : null}}' action='PRG_rename' params='{"name": "{{name}}"}'>RENAME</ui-button>
|
||||
<ui-button state='{{undeletable ? "disabled" : null}}' action='PRG_clone' params='{"name": "{{name}}"}'>CLONE</ui-button>
|
||||
{{#if data.usbconnected}}
|
||||
<ui-button state='{{undeletable ? "disabled" : null}}' action='PRG_copytousb' params='{"name": "{{name}}"}'>EXPORT</ui-button>
|
||||
{{/if}}
|
||||
{{/each}}
|
||||
</table>
|
||||
{{#if data.usbconnected}}
|
||||
<h2>Available files (portable device):</h2>
|
||||
<table>
|
||||
<tr><th>File name
|
||||
<th>File type
|
||||
<th>File size (GQ)
|
||||
<th>Operations
|
||||
{{#each data.usbfiles}}
|
||||
<tr><td>{{name}}
|
||||
<td>.{{type}}
|
||||
<td>{{size}}GQ
|
||||
<td>
|
||||
<ui-button state='{{undeletable ? "disabled" : null}}' action='PRG_usbdeletefile' params='{"name": "{{name}}"}'>DELETE</ui-button>
|
||||
{{#if data.usbconnected}}
|
||||
<ui-button state='{{undeletable ? "disabled" : null}}' action='PRG_copyfromusb' params='{"name": "{{name}}"}'>IMPORT</ui-button>
|
||||
{{/if}}
|
||||
{{/each}}
|
||||
</table>
|
||||
{{/if}}
|
||||
<ui-button action='PRG_newtextfile'>NEW DATA FILE</ui-button>
|
||||
{{/if}}
|
||||
|
||||
{{/if}}
|
||||
|
||||
</ui-display>
|
||||
@@ -1,5 +1,5 @@
|
||||
<ui-display>
|
||||
<center><ui-button action="handle_id">{{data.id ? data.id.name : "-------------"}}</ui-button></center>
|
||||
<center><ui-button action="handle_id">{{data.id ? data.id_name : "-------------"}}</ui-button></center>
|
||||
</ui-display>
|
||||
<ui-display title='Stored Items'>
|
||||
{{#each data.mobs}}
|
||||
|
||||
@@ -0,0 +1,259 @@
|
||||
<div style="float: left">
|
||||
<div class='item'>
|
||||
<table><tr>
|
||||
{{#if data.PC_batteryicon && data.PC_showbatteryicon}}
|
||||
<td><img src='{{data.PC_batteryicon}}'>
|
||||
{{/if}}
|
||||
{{#if data.PC_batterypercent && data.PC_showbatteryicon}}
|
||||
<td><b>{{data.PC_batterypercent}}</b>
|
||||
{{/if}}
|
||||
{{#if data.PC_ntneticon}}
|
||||
<td><img src='{{data.PC_ntneticon}}'>
|
||||
{{/if}}
|
||||
{{#if data.PC_apclinkicon}}
|
||||
<td><img src='{{data.PC_apclinkicon}}'>
|
||||
{{/if}}
|
||||
{{#if data.PC_stationtime}}
|
||||
<td><b>{{data.PC_stationtime}}<b>
|
||||
{{/if}}
|
||||
{{#each data.PC_programheaders}}
|
||||
<td><img src='{{icon}}'>
|
||||
{{/each}}
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div style="float: right">
|
||||
<table><tr>
|
||||
<td><ui-button action='PC_shutdown'>Shutdown</ui-button>
|
||||
{{#if data.PC_showexitprogram}}
|
||||
<td><ui-button action='PC_exit'>EXIT PROGRAM</ui-button>
|
||||
<td><ui-button action='PC_minimize'>Minimize Program</ui-button>
|
||||
{{/if}}
|
||||
</table>
|
||||
</div>
|
||||
<div style="clear: both">
|
||||
|
||||
{{#if data.have_id_slot}}
|
||||
<ui-button action='PRG_switchm' icon='home' params='{"target" : "mod"}' state='{{data.mmode == 1 ? "disabled" : null}}'>Access Modification</ui-button>
|
||||
{{/if}}
|
||||
<ui-button action='PRG_switchm' icon='folder-open' params='{"target" : "manage"}' state='{{data.mmode == 2 ? "disabled" : null}}'>Job Management</ui-button>
|
||||
<ui-button action='PRG_switchm' icon='folder-open' params='{"target" : "manifest"}' state='{{!data.mmode ? "disabled" : null}}'>Crew Manifest</ui-button>
|
||||
{{#if data.have_printer}}
|
||||
<ui-button action='PRG_print' icon='print' state='{{!data.mmode || data.has_id && data.mmode == 1 ? null : "disabled"}}'>Print</ui-button>
|
||||
{{/if}}
|
||||
|
||||
{{#if !data.mmode}}
|
||||
<div class='item'>
|
||||
<h2>Crew Manifest</h2>
|
||||
<br>Please use security record computer to modify entries.<br><br>
|
||||
</div>
|
||||
{{#each data.manifest}}
|
||||
<div class='item'>
|
||||
{{name}} - {{rank}}
|
||||
</div>
|
||||
{{/each}}
|
||||
|
||||
{{elseif data.mmode == 2}}
|
||||
<div class='item'>
|
||||
<h2>Job Management</h2>
|
||||
</div>
|
||||
<table>
|
||||
<tr><td style='width:25%'><b>Job</b></td><td style='width:25%'><b>Slots</b></td><td style='width:25%'><b>Open job</b></td><td style='width:25%'><b>Close job</b></td></tr>
|
||||
{{#each data.slots}}
|
||||
|
||||
<tr><td>{{title}}</td><td>{{current}}/{{total}}</td><td><ui-button action='PRG_open_job' params='{"target" : "{{title}}"}' state='{{status_open ? null : "disabled"}}'>{{desc_open}}</ui-button><br></td><td><ui-button action='PRG_close_job' params='{"target" : "{{title}}"}' state='{{status_close ? null : "disabled"}}'>{{desc_close}}</ui-button>
|
||||
</td></tr>
|
||||
|
||||
{{/each}}
|
||||
</table>
|
||||
|
||||
|
||||
{{else}}
|
||||
<div class='item'>
|
||||
<h2>Access Modification</h2>
|
||||
</div>
|
||||
|
||||
{{#if !data.has_id}}
|
||||
<span class='alert'><i>Please insert the ID into the terminal to proceed.</i></span><br>
|
||||
{{/if}}
|
||||
|
||||
<div class='item'>
|
||||
<div class='itemLabel'>
|
||||
Target Identity:
|
||||
</div>
|
||||
<div class='itemContent'>
|
||||
<ui-button icon='eject' action='PRG_eject' params='{"target" : "id"}'>{{data.id_name}}</ui-button>
|
||||
</div>
|
||||
</div>
|
||||
<div class='item'>
|
||||
<div class='itemLabel'>
|
||||
Auth Identity:
|
||||
</div>
|
||||
<div class='itemContent'>
|
||||
<ui-button icon='eject' action='PRG_eject' params='{"target" : "auth"}'>{{data.auth_name}}</ui-button>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
|
||||
{{#if data.authenticated}}
|
||||
{{#if data.has_id}}
|
||||
<div class='item'>
|
||||
<h2>Details</h2>
|
||||
</div>
|
||||
|
||||
{{#if data.minor}}
|
||||
<div class='item'>
|
||||
<div class='itemLabel'>
|
||||
Registered Name:
|
||||
</div>
|
||||
<div class='itemContent'>
|
||||
{{data.id_owner}}
|
||||
</div>
|
||||
</div>
|
||||
<div class='item'>
|
||||
<div class='itemLabel'>
|
||||
Rank:
|
||||
</div>
|
||||
<div class='itemContent'>
|
||||
{{data.id_rank}}
|
||||
</div>
|
||||
</div>
|
||||
<div class='item'>
|
||||
<div class='itemLabel'>
|
||||
Demote:
|
||||
</div>
|
||||
<div class='itemContent'>
|
||||
<ui-button action='PRG_terminate' icon='gear' state='{{data.id_rank == "Unassigned" ? "disabled" : null}}'>Demote {{data.id_owner}}</ui-button>
|
||||
</div>
|
||||
</div>
|
||||
{{else}}
|
||||
|
||||
<div class='item'>
|
||||
<div class='itemLabel'>
|
||||
Registered Name:
|
||||
</div>
|
||||
<div class='itemContent'>
|
||||
<ui-button action='PRG_edit' icon='pencil' params='{"name" : "1"}'>{{data.id_owner}}</ui-button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class='item'>
|
||||
<h2>Assignment</h2>
|
||||
</div>
|
||||
<ui-button action='PRG_togglea' icon='gear'>{{data.assignments ? "Hide assignments" : "Show assignments"}}</ui-button>
|
||||
<div class='item'>
|
||||
<span id='allvalue.jobsslot'>
|
||||
|
||||
</span>
|
||||
</div>
|
||||
<div class='item'>
|
||||
{{#if data.assignments}}
|
||||
<div id="all-value.jobs">
|
||||
<table>
|
||||
<tr>
|
||||
<th></th><th>Command</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Special</th>
|
||||
<td>
|
||||
<ui-button action='PRG_assign' params='{"assign_target" : "Captain"}' state='{{data.id_rank == "Captain" ? "selected" : null}}'>Captain</ui-button>
|
||||
<ui-button action='PRG_assign' params='{"assign_target" : "Custom"}'>Custom</ui-button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th style="color: '#FFA500';">Engineering</th>
|
||||
<td>
|
||||
{{#each data.engineering_jobs}}
|
||||
<ui-button action='PRG_assign' params='{"assign_target" : "{{job}}"}' state='{{data.id_rank == job ? "selected" : null}}'>{{display_name}}</ui-button>
|
||||
{{/each}}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th style="color: '#008000';">Medical</th>
|
||||
<td>
|
||||
{{#each data.medical_jobs}}
|
||||
<ui-button action='PRG_assign' params='{"assign_target" : "{{job}}"}' state='{{data.id_rank == job ? "selected" : null}}'>{{display_name}}</ui-button>
|
||||
{{/each}}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th style="color: '#800080';">Science</th>
|
||||
<td>
|
||||
{{#each data.science_jobs}}
|
||||
<ui-button action='PRG_assign' params='{"assign_target" : "{{job}}"}' state='{{data.id_rank == job ? "selected" : null}}'>{{display_name}}</ui-button>
|
||||
{{/each}}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th style="color: '#DD0000';">Security</th>
|
||||
<td>
|
||||
{{#each data.security_jobs}}
|
||||
<ui-button action='PRG_assign' params='{"assign_target" : "{{job}}"}' state='{{data.id_rank == job ? "selected" : null}}'>{{display_name}}</ui-button>
|
||||
{{/each}}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th style="color: '#cc6600';">Cargo</th>
|
||||
<td>
|
||||
{{#each data.cargo_jobs}}
|
||||
<ui-button action='PRG_assign' params='{"assign_target" : "{{job}}"}' state='{{data.id_rank == job ? "selected" : null}}'>{{display_name}}</ui-button>
|
||||
{{/each}}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th style="color: '#808080';">Civilian</th>
|
||||
<td>
|
||||
{{#each data.civilian_jobs}}
|
||||
<ui-button action='PRG_assign' params='{"assign_target" : "{{job}}"}' state='{{data.id_rank == job ? "selected" : null}}'>{{display_name}}</ui-button>
|
||||
{{/each}}
|
||||
</td>
|
||||
</tr>
|
||||
{{#if data.centcom_access}}
|
||||
<tr>
|
||||
<th style="color: '#A52A2A';">CentCom</th>
|
||||
<td>
|
||||
{{#each data.centcom_jobs}}
|
||||
|
||||
<ui-button action='PRG_assign' params='{"assign_target" : "{{job}}"}' state='{{data.id_rank == job ? "selected" : null}}'>{{display_name}}</ui-button>
|
||||
{{/each}}
|
||||
</td>
|
||||
</tr>
|
||||
{{/if}}
|
||||
</table>
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
{{#if data.centcom_access}}
|
||||
<div class='item'>
|
||||
<h2>Central Command</h2>
|
||||
</div>
|
||||
<div class='item' style='width: 100%'>
|
||||
{{#each data.all_centcom_access}}
|
||||
<div class='itemContentWide'>
|
||||
<ui-button action='PRG_access' params='{"access_target" : "{{ref}}", "allowed" : "{{allowed}}"}' state='{{allowed ? "toggle" : null}}'>{{desc}}</ui-button>
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
{{else}}
|
||||
<div class='item'>
|
||||
<h2>{{data.station_name}}</h2>
|
||||
</div>
|
||||
<div class='item' style='width: 100%'>
|
||||
{{#each data.regions}}
|
||||
<div style='float: left; width: 175px; min-height: 250px'>
|
||||
<div class='average'><ui-button action='PRG_regsel' state='{{selected ? "toggle" : null}}' params='{"region" : "{{regid}}"}'><b>{{name}}</b></ui-button></div>
|
||||
<br>
|
||||
{{#each accesses}}
|
||||
<div class='itemContentWide'>
|
||||
<ui-button action='PRG_access' params='{"access_target" : "{{ref}}", "allowed" : "{{allowed}}"}' state='{{allowed ? "toggle" : null}}'>{{desc}}</ui-button>
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
@@ -0,0 +1,40 @@
|
||||
<script>
|
||||
component.exports = {
|
||||
computed: {
|
||||
occupantStatState () {
|
||||
switch (this.get('data.occupant.stat')) {
|
||||
case 0: return 'good'
|
||||
case 1: return 'average'
|
||||
default: return 'bad'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<ui-display title='Occupant'>
|
||||
<ui-section label='Occupant'>
|
||||
<span>{{data.occupant.name ? data.occupant.name : "No Occupant"}}</span>
|
||||
</ui-section>
|
||||
{{#if data.occupied}}
|
||||
<ui-section label='State'>
|
||||
<span class='{{occupantStatState}}'>{{data.occupant.stat == 0 ? "Conscious" : data.occupant.stat == 1 ? "Unconcious" : "Dead"}}</span>
|
||||
</ui-section>
|
||||
{{/if}}
|
||||
</ui-display>
|
||||
<ui-display title='Controls'>
|
||||
<ui-section label='Door'>
|
||||
<ui-button icon='{{data.open ? "unlock" : "lock"}}' action='door'>{{data.open ? "Open" : "Closed"}}</ui-button>
|
||||
</ui-section>
|
||||
<ui-section label='Uses'>
|
||||
{{ data.ready_implants }}
|
||||
{{#if data.replenishing}}
|
||||
<span class='fa fa-cog fa-spin'/>
|
||||
{{/if}}
|
||||
</ui-section>
|
||||
<ui-section label='Activate'>
|
||||
<ui-button state='{{data.occupied && data.ready_implants > 0 && data.ready ? null : "disabled"}}' action='implant'>
|
||||
{{ data.ready ? (data.special_name ? data.special_name : "Implant") : "Recharging"}}
|
||||
</ui-button><br/>
|
||||
</ui-section>
|
||||
</ui-display>
|
||||
@@ -19,7 +19,7 @@
|
||||
<ui-display title={{data.name || "Empty Card"}} button>
|
||||
{{#partial button}}
|
||||
{{#if data.name}}
|
||||
<ui-button icon='trash' state='{{data.wiping || data.isDead ? "disabled" : null}}' action='wipe'>Wipe AI</ui-button>
|
||||
<ui-button icon='trash' state='{{data.isDead ? "disabled" : null}}' action='wipe'>{{data.wiping ? "Stop Wiping" : "Wipe"}} AI</ui-button>
|
||||
{{/if}}
|
||||
{{/partial}}
|
||||
{{#if data.name}}
|
||||
|
||||
@@ -0,0 +1,104 @@
|
||||
|
||||
<script>
|
||||
component.exports = {
|
||||
data: {
|
||||
chargeState(charge) {
|
||||
let max = this.get('data.battery.max')
|
||||
if(charge > (max/2)) return 'good'
|
||||
else if(charge > (max/4)) return 'average'
|
||||
else return 'bad'
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<div style="float: left">
|
||||
<div class='item'>
|
||||
<table><tr>
|
||||
{{#if data.PC_batteryicon && data.PC_showbatteryicon}}
|
||||
<td><img src='{{data.PC_batteryicon}}'>
|
||||
{{/if}}
|
||||
{{#if data.PC_batterypercent && data.PC_showbatteryicon}}
|
||||
<td><b>{{data.PC_batterypercent}}</b>
|
||||
{{/if}}
|
||||
{{#if data.PC_ntneticon}}
|
||||
<td><img src='{{data.PC_ntneticon}}'>
|
||||
{{/if}}
|
||||
{{#if data.PC_apclinkicon}}
|
||||
<td><img src='{{data.PC_apclinkicon}}'>
|
||||
{{/if}}
|
||||
{{#if data.PC_stationtime}}
|
||||
<td><b>{{data.PC_stationtime}}<b>
|
||||
{{/if}}
|
||||
{{#each data.PC_programheaders}}
|
||||
<td><img src='{{icon}}'>
|
||||
{{/each}}
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div style="float: right">
|
||||
<table><tr>
|
||||
<td><ui-button action='PC_shutdown'>Shutdown</ui-button>
|
||||
{{#if data.PC_showexitprogram}}
|
||||
<td><ui-button action='PC_exit'>EXIT PROGRAM</ui-button>
|
||||
<td><ui-button action='PC_minimize'>Minimize Program</ui-button>
|
||||
{{/if}}
|
||||
</table>
|
||||
</div>
|
||||
<div style="clear: both">
|
||||
<ui-display>
|
||||
<i>Welcome to computer configuration utility. Please consult your system administrator if you have any questions about your device.</i><hr>
|
||||
<ui-display title='Power Supply'>
|
||||
{{#if data.battery}}
|
||||
<ui-section label='Battery Status'>
|
||||
Active
|
||||
</ui-section>
|
||||
<ui-section label='Battery Rating'>
|
||||
{{data.battery.max}}
|
||||
</ui-section>
|
||||
<ui-section label='Battery Charge'>
|
||||
<ui-bar min='0' max='{{adata.battery.max}}' value='{{adata.battery.charge}}' state='{{chargeState(adata.battery.charge)}}'>{{Math.round(adata.battery.charge)}}/{{adata.battery.max}}</ui-bar>
|
||||
</ui-section>
|
||||
{{else}}
|
||||
<ui-section label='Battery Status'>
|
||||
Not Available
|
||||
</ui-section>
|
||||
{{/if}}
|
||||
|
||||
<ui-section label='Power Usage'>
|
||||
{{data.power_usage}}W
|
||||
</ui-section>
|
||||
</ui-display>
|
||||
|
||||
<ui-display title='File System'>
|
||||
<ui-section label='Used Capacity'>
|
||||
<ui-bar min='0' max='{{adata.disk_size}}' value='{{adata.disk_used}}' state='good'>{{Math.round(adata.disk_used)}}GQ/{{adata.disk_size}}GQ</ui-bar>
|
||||
</ui-section>
|
||||
</ui-display>
|
||||
|
||||
<ui-display title='Computer Components'>
|
||||
|
||||
{{#each data.hardware}}
|
||||
<ui-subdisplay title='{{name}}'>
|
||||
|
||||
<i>{{desc}}</i><br>
|
||||
<ui-section label='State'>
|
||||
|
||||
|
||||
{{enabled ? "Enabled" : "Disabled"}}
|
||||
</ui-section>
|
||||
|
||||
<ui-section Label='Power Usage'>
|
||||
{{powerusage}}W
|
||||
</ui-section>
|
||||
{{#if !critical}}
|
||||
<ui-section label='Toggle Component'>
|
||||
<ui-button icon='{{enabled ? "power-off" : "close"}}' action='PC_toggle_component' params='{"name": "{{name}}"}'>
|
||||
{{enabled ? "On" : "Off"}}
|
||||
</ui-button>
|
||||
</ui-section>
|
||||
{{/if}}
|
||||
<br><br>
|
||||
{{/each}}
|
||||
</ui-display>
|
||||
</ui-display>
|
||||
@@ -0,0 +1,103 @@
|
||||
|
||||
<div style="float: left">
|
||||
<div class='item'>
|
||||
<table><tr>
|
||||
{{#if data.PC_batteryicon && data.PC_showbatteryicon}}
|
||||
<td><img src='{{data.PC_batteryicon}}'>
|
||||
{{/if}}
|
||||
{{#if data.PC_batterypercent && data.PC_showbatteryicon}}
|
||||
<td><b>{{data.PC_batterypercent}}</b>
|
||||
{{/if}}
|
||||
{{#if data.PC_ntneticon}}
|
||||
<td><img src='{{data.PC_ntneticon}}'>
|
||||
{{/if}}
|
||||
{{#if data.PC_apclinkicon}}
|
||||
<td><img src='{{data.PC_apclinkicon}}'>
|
||||
{{/if}}
|
||||
{{#if data.PC_stationtime}}
|
||||
<td><b>{{data.PC_stationtime}}<b>
|
||||
{{/if}}
|
||||
{{#each data.PC_programheaders}}
|
||||
<td><img src='{{icon}}'>
|
||||
{{/each}}
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div style="float: right">
|
||||
<table><tr>
|
||||
<td><ui-button action='PC_shutdown'>Shutdown</ui-button>
|
||||
{{#if data.PC_showexitprogram}}
|
||||
<td><ui-button action='PC_exit'>EXIT PROGRAM</ui-button>
|
||||
<td><ui-button action='PC_minimize'>Minimize Program</ui-button>
|
||||
{{/if}}
|
||||
</table>
|
||||
</div>
|
||||
<div style="clear: both">
|
||||
<ui-display>
|
||||
{{#if data.adminmode}}
|
||||
<h1>ADMINISTRATIVE MODE</h1>
|
||||
{{/if}}
|
||||
|
||||
{{#if data.title}}
|
||||
<div class="itemLabel">
|
||||
Current channel:
|
||||
</div>
|
||||
<div class="itemContent">
|
||||
{{data.title}}
|
||||
</div>
|
||||
<div class="itemLabel">
|
||||
Operator access:
|
||||
</div>
|
||||
<div class="itemContent">
|
||||
{{#if data.is_operator}}
|
||||
<b>Enabled</b>
|
||||
{{else}}
|
||||
<b>Disabled</b>
|
||||
{{/if}}
|
||||
</div>
|
||||
<div class="itemLabel">
|
||||
Controls:
|
||||
</div>
|
||||
<div class="itemContent">
|
||||
<table>
|
||||
<tr><td><ui-button action='PRG_speak'>Send message</ui-button>
|
||||
<tr><td><ui-button action='PRG_changename'>Change nickname</ui-button>
|
||||
<tr><td><ui-button action='PRG_toggleadmin'>Toggle administration mode</ui-button>
|
||||
<tr><td><ui-button action='PRG_leavechannel'>Leave channel</ui-button>
|
||||
<tr><td><ui-button action='PRG_savelog'>Save log to local drive</ui-button>
|
||||
{{#if data.is_operator}}
|
||||
<tr><td><ui-button action='PRG_renamechannel'>Rename channel</ui-button>
|
||||
<tr><td><ui-button action='PRG_setpassword'>Set password</ui-button>
|
||||
<tr><td><ui-button action='PRG_deletechannel'>Delete channel</ui-button>
|
||||
{{/if}}
|
||||
</table>
|
||||
</div>
|
||||
<b>Chat Window</b>
|
||||
<div class="statusDisplay" style="overflow: auto;">
|
||||
<div class="item">
|
||||
<div class="itemContent" style="width: 100%;">
|
||||
{{#each data.messages}}
|
||||
{{msg}}<br>
|
||||
{{/each}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<b>Connected Users</b><br>
|
||||
{{#each data.clients}}
|
||||
{{name}}<br>
|
||||
{{/each}}
|
||||
{{else}}
|
||||
<b>Controls:</b>
|
||||
<table>
|
||||
<tr><td><ui-button action='PRG_changename'>Change nickname</ui-button>
|
||||
<tr><td><ui-button action='PRG_newchannel'>New Channel</ui-button>
|
||||
<tr><td><ui-button action='PRG_toggleadmin'>Toggle administration mode</ui-button>
|
||||
</table>
|
||||
<b>Available channels:</b>
|
||||
<table>
|
||||
{{#each data.all_channels}}
|
||||
<tr><td><ui-button action='PRG_joinchannel' params='{"id": "{{id}}"}'>{{chan}}</ui-button><br>
|
||||
{{/each}}
|
||||
</table>
|
||||
{{/if}}
|
||||
</ui-display>
|
||||
@@ -0,0 +1,58 @@
|
||||
|
||||
<div style="float: left">
|
||||
<div class='item'>
|
||||
<table><tr>
|
||||
{{#if data.PC_batteryicon && data.PC_showbatteryicon}}
|
||||
<td><img src='{{data.PC_batteryicon}}'>
|
||||
{{/if}}
|
||||
{{#if data.PC_batterypercent && data.PC_showbatteryicon}}
|
||||
<td><b>{{data.PC_batterypercent}}</b>
|
||||
{{/if}}
|
||||
{{#if data.PC_ntneticon}}
|
||||
<td><img src='{{data.PC_ntneticon}}'>
|
||||
{{/if}}
|
||||
{{#if data.PC_apclinkicon}}
|
||||
<td><img src='{{data.PC_apclinkicon}}'>
|
||||
{{/if}}
|
||||
{{#if data.PC_stationtime}}
|
||||
<td><b>{{data.PC_stationtime}}<b>
|
||||
{{/if}}
|
||||
{{#each data.PC_programheaders}}
|
||||
<td><img src='{{icon}}'>
|
||||
{{/each}}
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div style="float: right">
|
||||
<table><tr>
|
||||
<td><ui-button action='PC_shutdown'>Shutdown</ui-button>
|
||||
{{#if data.PC_showexitprogram}}
|
||||
<td><ui-button action='PC_exit'>EXIT PROGRAM</ui-button>
|
||||
<td><ui-button action='PC_minimize'>Minimize Program</ui-button>
|
||||
{{/if}}
|
||||
</table>
|
||||
</div>
|
||||
<div style="clear: both">
|
||||
<ui-display>
|
||||
{{#if data.error}}
|
||||
##SYSTEM ERROR: {{data.error}}<ui-button action='PRG_reset'>RESET</ui-button>
|
||||
{{elseif data.target}}
|
||||
##DoS traffic generator active. Tx: {{data.speed}}GQ/s<br>
|
||||
{{#each data.dos_strings}}
|
||||
{{nums}}<br>
|
||||
{{/each}}
|
||||
<ui-button action='PRG_reset'>ABORT</ui-button>
|
||||
{{else}}
|
||||
##DoS traffic generator ready. Select target device.<br>
|
||||
{{#if data.focus}}
|
||||
Targeted device ID: {{data.focus}}
|
||||
{{else}}
|
||||
Targeted device ID: None
|
||||
{{/if}}
|
||||
<ui-button action='PRG_execute'>EXECUTE</ui-button><div style="clear:both"></div>
|
||||
Detected devices on network:<br>
|
||||
{{#each data.relays}}
|
||||
<ui-button action='PRG_target_relay' params='{"targid": "{{id}}"}'>{{id}}</ui-button>
|
||||
{{/each}}
|
||||
{{/if}}
|
||||
</ui-display>
|
||||
@@ -0,0 +1,122 @@
|
||||
|
||||
<div style="float: left">
|
||||
<div class='item'>
|
||||
<table><tr>
|
||||
{{#if data.PC_batteryicon && data.PC_showbatteryicon}}
|
||||
<td><img src='{{data.PC_batteryicon}}'>
|
||||
{{/if}}
|
||||
{{#if data.PC_batterypercent && data.PC_showbatteryicon}}
|
||||
<td><b>{{data.PC_batterypercent}}</b>
|
||||
{{/if}}
|
||||
{{#if data.PC_ntneticon}}
|
||||
<td><img src='{{data.PC_ntneticon}}'>
|
||||
{{/if}}
|
||||
{{#if data.PC_apclinkicon}}
|
||||
<td><img src='{{data.PC_apclinkicon}}'>
|
||||
{{/if}}
|
||||
{{#if data.PC_stationtime}}
|
||||
<td><b>{{data.PC_stationtime}}<b>
|
||||
{{/if}}
|
||||
{{#each data.PC_programheaders}}
|
||||
<td><img src='{{icon}}'>
|
||||
{{/each}}
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div style="float: right">
|
||||
<table><tr>
|
||||
<td><ui-button action='PC_shutdown'>Shutdown</ui-button>
|
||||
{{#if data.PC_showexitprogram}}
|
||||
<td><ui-button action='PC_exit'>EXIT PROGRAM</ui-button>
|
||||
<td><ui-button action='PC_minimize'>Minimize Program</ui-button>
|
||||
{{/if}}
|
||||
</table>
|
||||
</div>
|
||||
<div style="clear: both">
|
||||
|
||||
<ui-display>
|
||||
<i>Welcome to software download utility. Please select which software you wish to download.</i><hr>
|
||||
{{#if data.error}}
|
||||
<ui-display title='Download Error'>
|
||||
<ui-section label='Information'>
|
||||
{{data.error}}
|
||||
</ui-section>
|
||||
<ui-section label='Reset Program'>
|
||||
<ui-button icon='times' action='PRG_reseterror'>
|
||||
RESET
|
||||
</ui-button>
|
||||
</ui-section>
|
||||
</ui-display>
|
||||
{{else}}
|
||||
{{#if data.downloadname}}
|
||||
<ui-display title='Download Running'>
|
||||
<i>Please wait...</i>
|
||||
<ui-section label='File name'>
|
||||
{{data.downloadname}}
|
||||
</ui-section>
|
||||
<ui-section label='File description'>
|
||||
{{data.downloaddesc}}
|
||||
</ui-section>
|
||||
<ui-section label='File size'>
|
||||
{{data.downloadcompletion}}GQ / {{data.downloadsize}}GQ
|
||||
</ui-section>
|
||||
<ui-section label='Transfer Rate'>
|
||||
{{data.downloadspeed}} GQ/s
|
||||
</ui-section>
|
||||
<ui-section label='Download progress'>
|
||||
<ui-bar min='0' max='{{adata.downloadsize}}' value='{{adata.downloadcompletion}}' state='good'>{{Math.round(adata.downloadcompletion)}}/{{adata.downloadsize}}</ui-bar>
|
||||
</ui-section>
|
||||
</ui-display>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
{{#if !data.downloadname}}
|
||||
{{#if !data.error}}
|
||||
<ui-display title='Primary software repository'>
|
||||
<ui-section label='Hard drive'>
|
||||
<ui-bar min='0' max='{{adata.disk_size}}' value='{{adata.disk_used}}' state='good'>{{Math.round(adata.disk_used)}}GQ/{{adata.disk_size}}GQ</ui-bar>
|
||||
</ui-section>
|
||||
{{#each data.downloadable_programs}}
|
||||
<ui-section label='File name'>
|
||||
{{filename}} ({{size}} GQ)
|
||||
</ui-section>
|
||||
<ui-section label='Program name'>
|
||||
{{filedesc}}
|
||||
</ui-section>
|
||||
<ui-section label='Description'>
|
||||
{{fileinfo}}
|
||||
</ui-section>
|
||||
<ui-section label='Compatibility'>
|
||||
{{compatibility}}
|
||||
</ui-section>
|
||||
<ui-section label='File controls'>
|
||||
<ui-button icon='signal' action='PRG_downloadfile' params='{"filename": "{{filename}}"}'>
|
||||
DOWNLOAD
|
||||
</ui-button>
|
||||
</ui-section>
|
||||
{{/each}}
|
||||
</ui-display>
|
||||
{{#if data.hackedavailable}}
|
||||
<ui-display title='UNKNOWN software repository'>
|
||||
<i>Please note that NanoTrasen does not recommend download of software from non-official servers.</i>
|
||||
{{#each data.hacked_programs}}
|
||||
<ui-section label='File name'>
|
||||
{{filename}} ({{size}} GQ)
|
||||
</ui-section>
|
||||
<ui-section label='Program name'>
|
||||
{{filedesc}}
|
||||
</ui-section>
|
||||
<ui-section label='Description'>
|
||||
{{fileinfo}}
|
||||
</ui-section>
|
||||
<ui-section label='File controls'>
|
||||
<ui-button icon='signal' action='PRG_downloadfile' params='{"filename": "{{filename}}"}'>
|
||||
DOWNLOAD
|
||||
</ui-button>
|
||||
</ui-section>
|
||||
{{/each}}
|
||||
</ui-display>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
<br><br><hr><i>NTOS v2.0.4b Copyright NanoTrasen 2557 - 2559</i>
|
||||
</ui-display>
|
||||
@@ -0,0 +1,126 @@
|
||||
|
||||
|
||||
<ui-display>
|
||||
<div style="float: left">
|
||||
<div class='item'>
|
||||
<table><tr>
|
||||
{{#if data.PC_batteryicon && data.PC_showbatteryicon}}
|
||||
<td><img src='{{data.PC_batteryicon}}'>
|
||||
{{/if}}
|
||||
{{#if data.PC_batterypercent && data.PC_showbatteryicon}}
|
||||
<td><b>{{data.PC_batterypercent}}</b>
|
||||
{{/if}}
|
||||
{{#if data.PC_ntneticon}}
|
||||
<td><img src='{{data.PC_ntneticon}}'>
|
||||
{{/if}}
|
||||
{{#if data.PC_apclinkicon}}
|
||||
<td><img src='{{data.PC_apclinkicon}}'>
|
||||
{{/if}}
|
||||
{{#if data.PC_stationtime}}
|
||||
<td><b>{{data.PC_stationtime}}<b>
|
||||
{{/if}}
|
||||
{{#each data.PC_programheaders}}
|
||||
<td><img src='{{icon}}'>
|
||||
{{/each}}
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div style="float: right">
|
||||
<table><tr>
|
||||
<td><ui-button action='PC_shutdown'>Shutdown</ui-button>
|
||||
{{#if data.PC_showexitprogram}}
|
||||
<td><ui-button action='PC_exit'>EXIT PROGRAM</ui-button>
|
||||
<td><ui-button action='PC_minimize'>Minimize Program</ui-button>
|
||||
{{/if}}
|
||||
</table>
|
||||
</div>
|
||||
<div style="clear: both">
|
||||
|
||||
<ui-display title='WIRELESS CONNECTIVITY'>
|
||||
|
||||
<ui-section label='Active NTNetRelays'>
|
||||
<b>{{data.ntnetrelays}}</b>
|
||||
</ui-section>
|
||||
{{#if data.ntnetrelays}}
|
||||
<ui-section label='System status'>
|
||||
<b>{{data.ntnetstatus ? "ENABLED" : "DISABLED"}}</b>
|
||||
</ui-section>
|
||||
<ui-section label='Control'>
|
||||
|
||||
<ui-button icon='plus' action='toggleWireless'>
|
||||
TOGGLE
|
||||
</ui-button>
|
||||
</ui-section>
|
||||
<br><br>
|
||||
<i>Caution - Disabling wireless transmitters when using wireless device may prevent you from re-enabling them again!</i>
|
||||
{{else}}
|
||||
<br><p>Wireless coverage unavailable, no relays are connected.</p>
|
||||
{{/if}}
|
||||
</ui-display>
|
||||
|
||||
|
||||
<ui-display title='FIREWALL CONFIGURATION'>
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<th>PROTOCOL
|
||||
<th>STATUS
|
||||
<th>CONTROL
|
||||
<tr>
|
||||
<td>Software Downloads
|
||||
<td>{{data.config_softwaredownload ? 'ENABLED' : 'DISABLED'}}
|
||||
<td> <ui-button action='toggle_function' params='{"id": "1"}'>TOGGLE</ui-button>
|
||||
<tr>
|
||||
<td>Peer to Peer Traffic
|
||||
<td>{{data.config_peertopeer ? 'ENABLED' : 'DISABLED'}}
|
||||
<td><ui-button action='toggle_function' params='{"id": "2"}'>TOGGLE</ui-button>
|
||||
<tr>
|
||||
<td>Communication Systems
|
||||
<td>{{data.config_communication ? 'ENABLED' : 'DISABLED'}}
|
||||
<td><ui-button action='toggle_function' params='{"id": "3"}'>TOGGLE</ui-button>
|
||||
<tr>
|
||||
<td>Remote System Control
|
||||
<td>{{data.config_systemcontrol ? 'ENABLED' : 'DISABLED'}}
|
||||
<td><ui-button action='toggle_function' params='{"id": "4"}'>TOGGLE</ui-button>
|
||||
</table>
|
||||
</ui-display>
|
||||
|
||||
<ui-display title='SECURITY SYSTEMS'>
|
||||
|
||||
{{#if data.idsalarm}}
|
||||
<ui-notice>
|
||||
<h1>NETWORK INCURSION DETECTED</h1>
|
||||
</ui-notice>
|
||||
<i>An abnormal activity has been detected in the network. Please verify system logs for more information</i>
|
||||
|
||||
{{/if}}
|
||||
<ui-section label='Intrusion Detection System'>
|
||||
<b>{{data.idsstatus ? 'ENABLED' : 'DISABLED'}}</b>
|
||||
</ui-section>
|
||||
|
||||
<ui-section label='Maximal Log Count'>
|
||||
<b>{{data.ntnetmaxlogs}}</b>
|
||||
</ui-section>
|
||||
|
||||
<ui-section label='Controls'>
|
||||
</ui-section>
|
||||
<table>
|
||||
<tr><td><ui-button action='resetIDS'>RESET IDS</ui-button>
|
||||
<tr><td><ui-button action='toggleIDS'>TOGGLE IDS</ui-button>
|
||||
<tr><td><ui-button action='updatemaxlogs'>SET LOG LIMIT</ui-button>
|
||||
<tr><td><ui-button action='purgelogs'>PURGE LOGS</ui-button>
|
||||
</table>
|
||||
|
||||
<ui-subdisplay title='System Logs'>
|
||||
<div class="statusDisplay" style="overflow: auto;">
|
||||
<div class="item">
|
||||
<div class="itemContent" style="width: 100%;">
|
||||
{{#each data.ntnetlogs}}
|
||||
{{entry}}<br>
|
||||
{{/each}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</ui-display>
|
||||
|
||||
</ui-display>
|
||||
@@ -0,0 +1,22 @@
|
||||
<ui-display title='Relay'>
|
||||
{{#if data.dos_crashed}}
|
||||
<h2>NETWORK BUFFERS OVERLOADED</h2>
|
||||
<h3>Overload Recovery Mode</h3>
|
||||
<i>This system is suffering temporary outage due to overflow of traffic buffers. Until buffered traffic is processed, all further requests will be dropped. Frequent occurences of this error may indicate insufficient hardware capacity of your network. Please contact your network planning department for instructions on how to resolve this issue.</i>
|
||||
<h3>ADMINISTRATIVE OVERRIDE</h3>
|
||||
<b> CAUTION - Data loss may occur </b>
|
||||
<ui-button icon='signal' action='restart'>
|
||||
Purge buffered traffic
|
||||
</ui-button>
|
||||
{{else}}
|
||||
<ui-section label='Relay status'>
|
||||
<ui-button icon='power-off' action='toggle'>
|
||||
{{data.enabled ? "ENABLED" : "DISABLED"}}
|
||||
</ui-button>
|
||||
</ui-section>
|
||||
|
||||
<ui-section label='Network buffer status'>
|
||||
{{data.dos_overload}} / {{data.dos_capacity}} GQ
|
||||
</ui-section>
|
||||
{{/if}}
|
||||
</ui-display>
|
||||
@@ -0,0 +1,136 @@
|
||||
|
||||
<ui-display>
|
||||
|
||||
<div style="float: left">
|
||||
<div class='item'>
|
||||
<table><tr>
|
||||
{{#if data.PC_batteryicon && data.PC_showbatteryicon}}
|
||||
<td><img src='{{data.PC_batteryicon}}'>
|
||||
{{/if}}
|
||||
{{#if data.PC_batterypercent && data.PC_showbatteryicon}}
|
||||
<td><b>{{data.PC_batterypercent}}</b>
|
||||
{{/if}}
|
||||
{{#if data.PC_ntneticon}}
|
||||
<td><img src='{{data.PC_ntneticon}}'>
|
||||
{{/if}}
|
||||
{{#if data.PC_apclinkicon}}
|
||||
<td><img src='{{data.PC_apclinkicon}}'>
|
||||
{{/if}}
|
||||
{{#if data.PC_stationtime}}
|
||||
<td><b>{{data.PC_stationtime}}<b>
|
||||
{{/if}}
|
||||
{{#each data.PC_programheaders}}
|
||||
<td><img src='{{icon}}'>
|
||||
{{/each}}
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div style="float: right">
|
||||
<table><tr>
|
||||
<td><ui-button action='PC_shutdown'>Shutdown</ui-button>
|
||||
{{#if data.PC_showexitprogram}}
|
||||
<td><ui-button action='PC_exit'>EXIT PROGRAM</ui-button>
|
||||
<td><ui-button action='PC_minimize'>Minimize Program</ui-button>
|
||||
{{/if}}
|
||||
</table>
|
||||
</div>
|
||||
<div style="clear: both">
|
||||
|
||||
{{#if data.error}}
|
||||
<div class='item'>
|
||||
<h2>An error has occurred during operation...</h2>
|
||||
<b>Additional information: </b>{{data.error}}<br>
|
||||
<ui-button action='PRG_reset'>Clear</ui-button>
|
||||
</div>
|
||||
{{elseif data.downloading}}
|
||||
<h2>Download in progress...</h2>
|
||||
<div class="itemLabel">
|
||||
Downloaded file:
|
||||
</div>
|
||||
<div class="itemContent">
|
||||
{{data.download_name}}
|
||||
</div>
|
||||
<div class="itemLabel">
|
||||
Download progress:
|
||||
</div>
|
||||
<div class="itemContent">
|
||||
{{data.download_progress}} / {{data.download_size}} GQ
|
||||
</div>
|
||||
<div class="itemLabel">
|
||||
Transfer speed:
|
||||
</div>
|
||||
<div class="itemContent">
|
||||
{{data.download_netspeed}}GQ/s
|
||||
</div>
|
||||
<div class="itemLabel">
|
||||
Controls:
|
||||
</div>
|
||||
<div class="itemContent">
|
||||
<ui-button action='PRG_reset'>Abort download</ui-button>
|
||||
</div>
|
||||
{{elseif data.uploading}}
|
||||
<h2>Server enabled</h2>
|
||||
<div class="itemLabel">
|
||||
Connected clients:
|
||||
</div>
|
||||
<div class="itemContent">
|
||||
{{data.upload_clients}}
|
||||
</div>
|
||||
<div class="itemLabel">
|
||||
Provided file:
|
||||
</div>
|
||||
<div class="itemContent">
|
||||
{{data.upload_filename}}
|
||||
</div>
|
||||
<div class="itemLabel">
|
||||
Server password:
|
||||
</div>
|
||||
<div class="itemContent">
|
||||
{{#if data.upload_haspassword}}
|
||||
ENABLED
|
||||
{{else}}
|
||||
DISABLED
|
||||
{{/if}}
|
||||
</div>
|
||||
<div class="itemLabel">
|
||||
Commands:
|
||||
</div>
|
||||
<div class="itemContent">
|
||||
<ui-button action='PRG_setpassword'>Set password</ui-button>
|
||||
<ui-button action='PRG_reset'>Exit server</ui-button>
|
||||
</div>
|
||||
{{elseif data.upload_filelist}}
|
||||
<h2>File transfer server ready. Select file to upload: </h2>
|
||||
<table>
|
||||
<tr><th>File name<th>File size<th>Controls
|
||||
{{#each data.upload_filelist}}
|
||||
<tr><td>{{filename}}
|
||||
<td>{{size}}GQ
|
||||
<td><ui-button action='PRG_uploadfile' params='{"id": "{{uid}}"}'>Select</ui-button>
|
||||
{{/each}}
|
||||
</table>
|
||||
<hr>
|
||||
<ui-button action='PRG_setpassword'>Set password</ui-button>
|
||||
<ui-button action='PRG_reset'>Return</ui-button>
|
||||
{{else}}
|
||||
<h2>Available files:</h2>
|
||||
<table border="1" style="border-collapse: collapse"><tr><th>Server UID<th>File Name<th>File Size<th>Password Protection<th>Operations
|
||||
{{#each data.servers}}
|
||||
<tr><td>{{uid}}
|
||||
<td>{{filename}}
|
||||
<td>{{size}}GQ
|
||||
{{#if haspassword}}
|
||||
<td>Enabled
|
||||
{{/if}}
|
||||
{{#if !haspassword}}
|
||||
<td>Disabled
|
||||
{{/if}}
|
||||
|
||||
<td><ui-button action='PRG_downloadfile' params='{"id": "{{uid}}"}'>Download</ui-button>
|
||||
{{/each}}
|
||||
</table>
|
||||
<hr>
|
||||
<ui-button action='PRG_uploadmenu'>Send file</ui-button>
|
||||
{{/if}}
|
||||
|
||||
</ui-display>
|
||||
@@ -0,0 +1,68 @@
|
||||
<ui-display title="Auth. Disk:">
|
||||
{{#if data.disk_present}}
|
||||
<ui-button icon='eject' style='selected' action='eject_disk'>++++++++++</ui-button>
|
||||
{{else}}
|
||||
<ui-button icon='plus' action='insert_disk'>----------</ui-button>
|
||||
{{/if}}
|
||||
</ui-display>
|
||||
<ui-display title='Status'>
|
||||
<span>{{data.status1}}-{{data.status2}}</span>
|
||||
</ui-display>
|
||||
<ui-display title='Timer'>
|
||||
<ui-section label='Time to Detonation'>
|
||||
<span>{{data.timing ? data.time_left : data.timer_set}}</span>
|
||||
</ui-section>
|
||||
{{^data.timing}}
|
||||
<ui-section label='Adjust Timer'>
|
||||
<ui-button icon='refresh' state='{{data.disk_present && data.code_approved && data.timer_is_not_default ? null : "disabled"}}'
|
||||
action='timer' params='{"change": "reset"}'>Reset</ui-button>
|
||||
<ui-button icon='minus' state='{{data.disk_present && data.code_approved && data.timer_is_not_min ? null : "disabled"}}'
|
||||
action='timer' params='{"change": "decrease"}'>Decrease</ui-button>
|
||||
<ui-button icon='pencil' state='{{data.disk_present && data.code_approved ? null : "disabled"}}' action='timer' params='{"change": "input"}'>Set</ui-button>
|
||||
<ui-button icon='plus' state='{{data.disk_present && data.code_approved && data.timer_is_not_max ? null : "disabled"}}'
|
||||
action='timer' params='{"change": "increase"}'>Increase</ui-button>
|
||||
</ui-section>
|
||||
{{/data.timing}}
|
||||
<ui-section label='Timer'>
|
||||
<ui-button icon='clock-o' style='{{data.timing ? "danger" : "caution"}}'
|
||||
action='toggle_timer'
|
||||
state='{{data.disk_present && data.code_approved && !data.safety ? null : "disabled"}}'>
|
||||
{{data.timing ? "On" : "Off"}}
|
||||
</ui-button>
|
||||
</ui-section>
|
||||
</ui-display>
|
||||
<ui-display title='Anchoring'>
|
||||
<ui-button
|
||||
state='{{data.disk_present && data.code_approved ? null : "disabled"}}'
|
||||
icon='{{data.anchored ? "lock" : "unlock"}}'
|
||||
style='{{data.anchored ? null : "caution"}}'
|
||||
action='anchor'>{{data.anchored ? "Engaged" : "Off"}}</ui-button>
|
||||
</ui-display>
|
||||
<ui-display title='Safety'>
|
||||
<ui-button
|
||||
state='{{data.disk_present && data.code_approved ? null : "disabled"}}'
|
||||
icon='{{data.safety ? "lock" : "unlock"}}' action='safety'
|
||||
style='{{data.safety ? "caution" : "danger"}}'>
|
||||
<span>{{data.safety ? "On" : "Off"}}</span>
|
||||
</ui-button>
|
||||
</ui-display>
|
||||
<ui-display title='Code'>
|
||||
<ui-section label='Message'>{{data.message}}</ui-section>
|
||||
<ui-section label='Keypad'>
|
||||
<ui-button action='keypad' state='{{data.disk_present ? null : "disabled"}}' params='{"digit":"1"}'>1</ui-button>
|
||||
<ui-button action='keypad' state='{{data.disk_present ? null : "disabled"}}' params='{"digit":"2"}'>2</ui-button>
|
||||
<ui-button action='keypad' state='{{data.disk_present ? null : "disabled"}}' params='{"digit":"3"}'>3</ui-button>
|
||||
<br>
|
||||
<ui-button action='keypad' state='{{data.disk_present ? null : "disabled"}}' params='{"digit":"4"}'>4</ui-button>
|
||||
<ui-button action='keypad' state='{{data.disk_present ? null : "disabled"}}' params='{"digit":"5"}'>5</ui-button>
|
||||
<ui-button action='keypad' state='{{data.disk_present ? null : "disabled"}}' params='{"digit":"6"}'>6</ui-button>
|
||||
<br>
|
||||
<ui-button action='keypad' state='{{data.disk_present ? null : "disabled"}}' params='{"digit":"7"}'>7</ui-button>
|
||||
<ui-button action='keypad' state='{{data.disk_present ? null : "disabled"}}' params='{"digit":"8"}'>8</ui-button>
|
||||
<ui-button action='keypad' state='{{data.disk_present ? null : "disabled"}}' params='{"digit":"9"}'>9</ui-button>
|
||||
<br>
|
||||
<ui-button action='keypad' state='{{data.disk_present ? null : "disabled"}}' params='{"digit":"R"}'>R</ui-button>
|
||||
<ui-button action='keypad' state='{{data.disk_present ? null : "disabled"}}' params='{"digit":"0"}'>0</ui-button>
|
||||
<ui-button action='keypad' state='{{data.disk_present ? null : "disabled"}}' params='{"digit":"E"}'>E</ui-button>
|
||||
</ui-section>
|
||||
</ui-display>
|
||||
@@ -2,87 +2,145 @@
|
||||
import { filterMulti } from 'util/filter'
|
||||
component.exports = {
|
||||
data: {
|
||||
filter: ''
|
||||
filter: '',
|
||||
tooltiptext(req_text, catalyst_text, tool_text){
|
||||
//This function is to get around the issue where you can't embed moustache variables within moustache statements
|
||||
//It's also less cramped than the tooltip attribute of the button tag :P
|
||||
let text = ""
|
||||
if(req_text){
|
||||
text += "REQUIREMENTS: " + req_text + " "
|
||||
}
|
||||
if(catalyst_text){
|
||||
text += "CATALYSTS: " + catalyst_text + " "
|
||||
}
|
||||
if(tool_text){
|
||||
text += "TOOLS: " + tool_text
|
||||
}
|
||||
return text
|
||||
}
|
||||
},
|
||||
oninit () {
|
||||
this.on({
|
||||
hover (event) {
|
||||
this.set('hovered', event.context.params)
|
||||
},
|
||||
unhover (event) {
|
||||
this.set('hovered')
|
||||
}
|
||||
})
|
||||
this.observe('filter', (newkey, oldkey, keypath) => {
|
||||
const categories = this.findAll('.display:not(:first-child)')
|
||||
let categories = null
|
||||
if(this.get('data.display_compact')){
|
||||
//This doesn't work, but it's necessary to not cause a script error with compact mode
|
||||
//Also hidden in compact mode
|
||||
categories = this.findAll('.section')
|
||||
} else {
|
||||
categories = this.findAll('.display:not(:first-child)')
|
||||
}
|
||||
filterMulti(categories, this.get('filter').toLowerCase())
|
||||
}, { init: false })
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
<ui-display title='{{data.category}}'>
|
||||
{{#if data.busy}}
|
||||
<ui-section>
|
||||
Crafting... <i class='fa-spin fa fa-spinner'></i>
|
||||
</ui-section>
|
||||
{{else}}
|
||||
<ui-section>
|
||||
<ui-button icon='arrow-left' action ='backwardCat'>
|
||||
{{data.prev_cat}}
|
||||
</ui-button>
|
||||
<ui-button icon='arrow-right' action='forwardCat'>
|
||||
{{data.next_cat}}
|
||||
</ui-button>
|
||||
{{#if data.display_craftable_only}}
|
||||
<ui-button icon='lock' action='toggle_recipes'>
|
||||
Showing Craftable Recipes
|
||||
</ui-button>
|
||||
{{else}}
|
||||
<ui-button icon='unlock' action='toggle_recipes'>
|
||||
Showing All Recipes
|
||||
</ui-button>
|
||||
{{/if}}
|
||||
{{#if config.fancy}}
|
||||
<ui-input value='{{filter}}' placeholder='Filter..'/>
|
||||
{{/if}}
|
||||
</ui-section>
|
||||
{{#each data.can_craft}}
|
||||
<ui-display title='{{name}}'>
|
||||
{{#if req_text}}
|
||||
<ui-section label='Requirements'>
|
||||
{{req_text}}
|
||||
</ui-section>
|
||||
{{/if}}
|
||||
{{#if catalyst_text}}
|
||||
<ui-section label='Catalysts'>
|
||||
{{catalyst_text}}
|
||||
</ui-section>
|
||||
{{/if}}
|
||||
{{#if tool_text}}
|
||||
<ui-section label='Tools'>
|
||||
{{tool_text}}
|
||||
</ui-section>
|
||||
{{/if}}
|
||||
<ui-section>
|
||||
<ui-button icon='gears' action='make' params='{"recipe": "{{ref}}"}'>
|
||||
Craft
|
||||
</ui-button>
|
||||
</ui-section>
|
||||
</ui-display>
|
||||
{{/each}}
|
||||
{{^data.display_craftable_only}}
|
||||
{{#each data.cant_craft}}
|
||||
<ui-display title='{{name}}'>
|
||||
{{#if req_text}}
|
||||
<ui-section label='Requirements'>
|
||||
{{req_text}}
|
||||
</ui-section>
|
||||
{{/if}}
|
||||
{{#if catalyst_text}}
|
||||
<ui-section label='Catalysts'>
|
||||
{{catalyst_text}}
|
||||
</ui-section>
|
||||
{{/if}}
|
||||
{{#if tool_text}}
|
||||
<ui-section label='Tools'>
|
||||
{{tool_text}}
|
||||
</ui-section>
|
||||
{{/if}}
|
||||
</ui-display>
|
||||
{{/each}}
|
||||
{{/data.display_craftable_only}}
|
||||
{{/if}}
|
||||
{{#if data.busy}}
|
||||
<ui-section>
|
||||
Crafting... <i class='fa-spin fa fa-spinner'></i>
|
||||
</ui-section>
|
||||
{{else}}
|
||||
<ui-section>
|
||||
<ui-button icon='arrow-left' action='backwardCat'>
|
||||
{{data.prev_cat}}
|
||||
</ui-button>
|
||||
<ui-button icon='arrow-right' action='forwardCat'>
|
||||
{{data.next_cat}}
|
||||
</ui-button>
|
||||
{{#if data.display_craftable_only}}
|
||||
<ui-button icon='lock' action='toggle_recipes'>
|
||||
Showing Craftable Recipes
|
||||
</ui-button>
|
||||
{{else}}
|
||||
<ui-button icon='unlock' action='toggle_recipes'>
|
||||
Showing All Recipes
|
||||
</ui-button>
|
||||
{{/if}}
|
||||
<ui-button icon='{{data.display_compact ? "check-square-o" : "square-o"}}' action='toggle_compact'>
|
||||
Compact
|
||||
</ui-button>
|
||||
{{#if config.fancy}}
|
||||
{{^data.display_compact}} {{! This doesn't work in compact mode, so let's hide it}}
|
||||
<ui-input value='{{filter}}' placeholder='Filter..'/>
|
||||
{{/data.display_compact}}
|
||||
{{/if}}
|
||||
</ui-section>
|
||||
{{#if data.display_compact}}
|
||||
<ui-display>
|
||||
{{#each data.can_craft}}
|
||||
<ui-section label='{{name}}'>
|
||||
<ui-button tooltip='{{tooltiptext(req_text, catalyst_text, tool_text)}}' tooltip-side='right' action='make' params='{"recipe": "{{ref}}"}' on-hover='hover' on-unhover='unhover' icon='gears'>
|
||||
Craft
|
||||
</ui-button>
|
||||
</ui-section>
|
||||
{{/each}}
|
||||
{{^data.display_craftable_only}}
|
||||
{{#each data.cant_craft}}
|
||||
<ui-section label='{{name}}'>
|
||||
<ui-button tooltip='{{tooltiptext(req_text, catalyst_text, tool_text)}}' tooltip-side='right' state='disabled' on-hover='hover' on-unhover='unhover' icon='gears'>
|
||||
Craft
|
||||
</ui-button>
|
||||
</ui-section>
|
||||
{{/each}}
|
||||
{{/data.display_craftable_only}}
|
||||
</ui-display>
|
||||
{{else}}
|
||||
{{#each data.can_craft}}
|
||||
<ui-display title='{{name}}'>
|
||||
{{#if req_text}}
|
||||
<ui-section label='Requirements'>
|
||||
{{req_text}}
|
||||
</ui-section>
|
||||
{{/if}}
|
||||
{{#if catalyst_text}}
|
||||
<ui-section label='Catalysts'>
|
||||
{{catalyst_text}}
|
||||
</ui-section>
|
||||
{{/if}}
|
||||
{{#if tool_text}}
|
||||
<ui-section label='Tools'>
|
||||
{{tool_text}}
|
||||
</ui-section>
|
||||
{{/if}}
|
||||
<ui-section>
|
||||
<ui-button icon='gears' action='make' params='{"recipe": "{{ref}}"}'>
|
||||
Craft
|
||||
</ui-button>
|
||||
</ui-section>
|
||||
</ui-display>
|
||||
{{/each}}
|
||||
{{^data.display_craftable_only}}
|
||||
{{#each data.cant_craft}}
|
||||
<ui-display title='{{name}}'>
|
||||
{{#if req_text}}
|
||||
<ui-section label='Requirements'>
|
||||
{{req_text}}
|
||||
</ui-section>
|
||||
{{/if}}
|
||||
{{#if catalyst_text}}
|
||||
<ui-section label='Catalysts'>
|
||||
{{catalyst_text}}
|
||||
</ui-section>
|
||||
{{/if}}
|
||||
{{#if tool_text}}
|
||||
<ui-section label='Tools'>
|
||||
{{tool_text}}
|
||||
</ui-section>
|
||||
{{/if}}
|
||||
</ui-display>
|
||||
{{/each}}
|
||||
{{/data.display_craftable_only}}
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
</ui-display>
|
||||
|
||||
@@ -0,0 +1,112 @@
|
||||
<script>
|
||||
component.exports = {
|
||||
data: {
|
||||
chargingState (status) {
|
||||
switch (status) {
|
||||
case 2: return 'good'
|
||||
case 1: return 'average'
|
||||
default: return 'bad'
|
||||
}
|
||||
},
|
||||
chargingMode (status) {
|
||||
if (status == 2) return 'Full'
|
||||
else if (status == 1) return 'Charging'
|
||||
else return 'Draining'
|
||||
},
|
||||
channelState (status) {
|
||||
if (status >= 2) return 'good'
|
||||
else return 'bad'
|
||||
},
|
||||
channelPower (status) {
|
||||
if (status >= 2) return 'On'
|
||||
else return 'Off'
|
||||
},
|
||||
channelMode (status) {
|
||||
if (status == 1 || status == 3) return 'Auto'
|
||||
else return 'Manual'
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
graphData () {
|
||||
const history = this.get('data.history')
|
||||
return Object.keys(history).map(key => {
|
||||
return history[key].map((point, index) => {
|
||||
return { x: index, y: point }
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<div style="float: left">
|
||||
<div class='item'>
|
||||
<table><tr>
|
||||
{{#if data.PC_batteryicon && data.PC_showbatteryicon}}
|
||||
<td><img src='{{data.PC_batteryicon}}'>
|
||||
{{/if}}
|
||||
{{#if data.PC_batterypercent && data.PC_showbatteryicon}}
|
||||
<td><b>{{data.PC_batterypercent}}</b>
|
||||
{{/if}}
|
||||
{{#if data.PC_ntneticon}}
|
||||
<td><img src='{{data.PC_ntneticon}}'>
|
||||
{{/if}}
|
||||
{{#if data.PC_apclinkicon}}
|
||||
<td><img src='{{data.PC_apclinkicon}}'>
|
||||
{{/if}}
|
||||
{{#if data.PC_stationtime}}
|
||||
<td><b>{{data.PC_stationtime}}<b>
|
||||
{{/if}}
|
||||
{{#each data.PC_programheaders}}
|
||||
<td><img src='{{icon}}'>
|
||||
{{/each}}
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div style="float: right">
|
||||
<table><tr>
|
||||
<td><ui-button action='PC_shutdown'>Shutdown</ui-button>
|
||||
{{#if data.PC_showexitprogram}}
|
||||
<td><ui-button action='PC_exit'>EXIT PROGRAM</ui-button>
|
||||
<td><ui-button action='PC_minimize'>Minimize Program</ui-button>
|
||||
{{/if}}
|
||||
</table>
|
||||
</div>
|
||||
<div style="clear: both">
|
||||
|
||||
<ui-display title='Network'>
|
||||
{{#if config.fancy}}
|
||||
<ui-linegraph points='{{graphData}}' height='500'
|
||||
legend='["Available", "Load"]' colors='["rgb(0, 102, 0)", "rgb(153, 0, 0)"]'
|
||||
xunit='seconds ago' xfactor='{{data.interval}}' yunit='W' yfactor='1'
|
||||
xinc='{{data.stored / 10}}' yinc='9'/>
|
||||
{{else}}
|
||||
<ui-section label='Available'>
|
||||
<span>{{data.supply}} W</span>
|
||||
</ui-section>
|
||||
<ui-section label='Load'>
|
||||
<span>{{data.demand}} W</span>
|
||||
</ui-section>
|
||||
{{/if}}
|
||||
</ui-display>
|
||||
<ui-display title='Areas'>
|
||||
<ui-section nowrap>
|
||||
<div class='content'>Area</div>
|
||||
<div class='content'>Charge</div>
|
||||
<div class='content'>Load</div>
|
||||
<div class='content'>Status</div>
|
||||
<div class='content'>Equipment</div>
|
||||
<div class='content'>Lighting</div>
|
||||
<div class='content'>Environment</div>
|
||||
</ui-section>
|
||||
{{#each data.areas}}
|
||||
<ui-section label='{{name}}' nowrap>
|
||||
<div class='content'>{{Math.round(adata.areas[@index].charge)}} %</div>
|
||||
<div class='content'>{{Math.round(adata.areas[@index].load)}} W</div>
|
||||
<div class='content'><span class='{{chargingState(charging)}}'>{{chargingMode(charging)}}</span></div>
|
||||
<div class='content'><span class='{{channelState(eqp)}}'>{{channelPower(eqp)}} [<span>{{channelMode(eqp)}}</span>]</span></div>
|
||||
<div class='content'><span class='{{channelState(lgt)}}'>{{channelPower(lgt)}} [<span>{{channelMode(lgt)}}</span>]</span></div>
|
||||
<div class='content'><span class='{{channelState(env)}}'>{{channelPower(env)}} [<span>{{channelMode(env)}}</span>]</span></div>
|
||||
</ui-section>
|
||||
{{/each}}
|
||||
</ui-display>
|
||||
@@ -0,0 +1,60 @@
|
||||
|
||||
<div style="float: left">
|
||||
<div class='item'>
|
||||
<table><tr>
|
||||
{{#if data.PC_batteryicon && data.PC_showbatteryicon}}
|
||||
<td><img src='{{data.PC_batteryicon}}'>
|
||||
{{/if}}
|
||||
{{#if data.PC_batterypercent && data.PC_showbatteryicon}}
|
||||
<td><b>{{data.PC_batterypercent}}</b>
|
||||
{{/if}}
|
||||
{{#if data.PC_ntneticon}}
|
||||
<td><img src='{{data.PC_ntneticon}}'>
|
||||
{{/if}}
|
||||
{{#if data.PC_apclinkicon}}
|
||||
<td><img src='{{data.PC_apclinkicon}}'>
|
||||
{{/if}}
|
||||
{{#if data.PC_stationtime}}
|
||||
<td><b>{{data.PC_stationtime}}<b>
|
||||
{{/if}}
|
||||
{{#each data.PC_programheaders}}
|
||||
<td><img src='{{icon}}'>
|
||||
{{/each}}
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div style="float: right">
|
||||
<table><tr>
|
||||
<td><ui-button action='PC_shutdown'>Shutdown</ui-button>
|
||||
{{#if data.PC_showexitprogram}}
|
||||
<td><ui-button action='PC_exit'>EXIT PROGRAM</ui-button>
|
||||
<td><ui-button action='PC_minimize'>Minimize Program</ui-button>
|
||||
{{/if}}
|
||||
</table>
|
||||
</div>
|
||||
<div style="clear: both">
|
||||
|
||||
<ui-display>
|
||||
<div class='item'>
|
||||
<div class='itemLabel'>
|
||||
Payload status:
|
||||
</div>
|
||||
<div class='itemContent'>
|
||||
{{#if data.armed}}
|
||||
ARMED
|
||||
{{else}}
|
||||
DISARMED
|
||||
{{/if}}
|
||||
</div>
|
||||
<div class='itemLabel'>
|
||||
Controls:
|
||||
</div>
|
||||
<div class='itemContent'>
|
||||
<table>
|
||||
<tr><td><ui-button action='PRG_obfuscate'>OBFUSCATE PROGRAM NAME</ui-button>
|
||||
<tr><td><ui-button action='PRG_arm' state='{{data.armed ? "danger" : null}}'>{{data.armed ? "DISARM" : "ARM"}}</ui-button>
|
||||
<ui-button icon='radiation' state='{{data.armed ? null : "disabled"}}' action='PRG_activate'>ACTIVATE</ui-button>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</ui-display>
|
||||
@@ -0,0 +1,21 @@
|
||||
{{#if data.notice}}
|
||||
<ui-notice>
|
||||
{{data.notice}}
|
||||
</ui-notice>
|
||||
{{/if}}
|
||||
<ui-display title='Satellite Network Control' button>
|
||||
{{#each data.satellites}}
|
||||
<ui-section candystripe nowrap>
|
||||
<div class='content'>#{{id}}</div>
|
||||
<div class='content'>{{mode}}</div>
|
||||
<div class='content'>
|
||||
<ui-button action='toggle' params='{"id": "{{id}}"}'>{{active ? "Deactivate" : "Activate"}}</ui-button>
|
||||
</div>
|
||||
</ui-section>
|
||||
{{/each}}
|
||||
</ui-display>
|
||||
{{#if data.meteor_shield}}
|
||||
<ui-display title='Station Shield Coverage'>
|
||||
<ui-bar min='0' max='{{data.meteor_shield_coverage_max}}' value='{{data.meteor_shield_coverage}}'>{{100 * data.meteor_shield_coverage / data.meteor_shield_coverage_max}} %</ui-bar>
|
||||
<ui-display>
|
||||
{{/if}}
|
||||
@@ -0,0 +1,47 @@
|
||||
|
||||
<div style="float: left">
|
||||
<div class='item'>
|
||||
<table><tr>
|
||||
{{#if data.PC_batteryicon && data.PC_showbatteryicon}}
|
||||
<td><img src='{{data.PC_batteryicon}}'>
|
||||
{{/if}}
|
||||
{{#if data.PC_batterypercent && data.PC_showbatteryicon}}
|
||||
<td><b>{{data.PC_batterypercent}}</b>
|
||||
{{/if}}
|
||||
{{#if data.PC_ntneticon}}
|
||||
<td><img src='{{data.PC_ntneticon}}'>
|
||||
{{/if}}
|
||||
{{#if data.PC_apclinkicon}}
|
||||
<td><img src='{{data.PC_apclinkicon}}'>
|
||||
{{/if}}
|
||||
{{#if data.PC_stationtime}}
|
||||
<td><b>{{data.PC_stationtime}}<b>
|
||||
{{/if}}
|
||||
{{#each data.PC_programheaders}}
|
||||
<td><img src='{{icon}}'>
|
||||
{{/each}}
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div style="float: right">
|
||||
<table><tr>
|
||||
<td><ui-button action='PC_shutdown'>Shutdown</ui-button>
|
||||
{{#if data.PC_showexitprogram}}
|
||||
<td><ui-button action='PC_exit'>EXIT PROGRAM</ui-button>
|
||||
<td><ui-button action='PC_minimize'>Minimize Program</ui-button>
|
||||
{{/if}}
|
||||
</table>
|
||||
</div>
|
||||
<div style="clear: both">
|
||||
|
||||
{{#each data.alarms:class}}
|
||||
<ui-display title='{{class}} Alarms'>
|
||||
<ul>
|
||||
{{#each .}}
|
||||
<li>{{.}}</li>
|
||||
{{else}}
|
||||
<li>System Nominal</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</ui-display>
|
||||
{{/each}}
|
||||
@@ -1,8 +1,6 @@
|
||||
<script>
|
||||
import { filterMulti } from 'util/filter'
|
||||
component.exports = {
|
||||
data: {
|
||||
filter: ''
|
||||
},
|
||||
oninit () {
|
||||
this.on({
|
||||
@@ -15,19 +13,12 @@
|
||||
this.set('hovered')
|
||||
}
|
||||
})
|
||||
this.observe('filter', (newkey, oldkey, keypath) => {
|
||||
const categories = this.findAll('.display:not(:first-child)')
|
||||
filterMulti(categories, this.get('filter').toLowerCase())
|
||||
}, { init: false })
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<ui-display title='Uplink' button>
|
||||
{{#partial button}}
|
||||
{{#if config.fancy}}
|
||||
<ui-input value='{{filter}}' placeholder='Filter...'/>
|
||||
{{/if}}
|
||||
{{#if data.lockable}}
|
||||
<ui-button icon='lock' action='lock'>Lock</ui-button>
|
||||
{{/if}}
|
||||
@@ -37,14 +28,16 @@
|
||||
</ui-section>
|
||||
</ui-display>
|
||||
{{#each data.categories}}
|
||||
<ui-display title='{{name}}'>
|
||||
{{#each items}}
|
||||
<ui-section label='{{name}}' candystripe right>
|
||||
<ui-button tooltip='{{name}}: {{desc}}' tooltip-side='left'
|
||||
state='{{data.telecrystals < cost || (data.telecrystals - hovered.cost < cost && hovered.item != name) ? "disabled" : null}}'
|
||||
action='buy' params='{"category": "{{category}}", "item": {{name}}, "cost": {{cost}}}'
|
||||
on-hover='hover' on-unhover='unhover'>{{cost}} TC</ui-button>
|
||||
</ui-section>
|
||||
{{/each}}
|
||||
<ui-display>
|
||||
<ui-button action='select' params='{"category": "{{name}}"}'>{{name}}</ui-button>
|
||||
{{#each items}}
|
||||
<ui-section label='{{name}}' candystripe right>
|
||||
<ui-button tooltip='{{name}}: {{desc}}' tooltip-side='left'
|
||||
state='{{data.telecrystals < cost || (data.telecrystals - hovered.cost < cost && hovered.item != name) ? "disabled" : null}}'
|
||||
action='buy' params='{"category": "{{category}}", "item": {{name}}, "cost": {{cost}}}'
|
||||
on-hover='hover' on-unhover='unhover'>{{cost}} TC</ui-button>
|
||||
</ui-section>
|
||||
{{/each}}
|
||||
</ui-display>
|
||||
{{/each}}
|
||||
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
<script>
|
||||
component.exports = {
|
||||
data: {
|
||||
healthState(health) {
|
||||
let maxhealth = this.get('data.vr_avatar.maxhealth')
|
||||
if(health > (maxhealth/1.5)) return 'good'
|
||||
else if(health > (maxhealth/3)) return 'average'
|
||||
else return 'bad'
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<ui-display>
|
||||
{{#if data.vr_avatar}}
|
||||
<ui-display title='Virtual Avatar'>
|
||||
<ui-section label='Name'>
|
||||
{{data.vr_avatar.name}}
|
||||
</ui-section>
|
||||
<ui-section label='Status'>
|
||||
{{data.vr_avatar.status}}
|
||||
</ui-section>
|
||||
<ui-section label='Health'>
|
||||
<ui-bar min='0' max='{{adata.vr_avatar.maxhealth}}' value='{{adata.vr_avatar.health}}' state='{{healthState(adata.vr_avatar.health)}}'>{{Math.round(adata.vr_avatar.health)}}/{{adata.vr_avatar.maxhealth}}</ui-bar>
|
||||
</ui-section>
|
||||
</ui-display>
|
||||
{{else}}
|
||||
<ui-display title='Virtual Avatar'>
|
||||
No Virtual Avatar detected
|
||||
</ui-display>
|
||||
{{/if}}
|
||||
<ui-display title='VR Commands'>
|
||||
<ui-button icon='{{data.toggle_open ? "times" : "plus"}}' action='toggle_open'>
|
||||
{{data.toggle_open ? "Close" : "Open"}} the VR Sleeper
|
||||
</ui-button>
|
||||
{{#if data.isoccupant}}
|
||||
<ui-button icon='signal' action='vr_connect'>
|
||||
Connect to VR
|
||||
</ui-button>
|
||||
{{/if}}
|
||||
{{#if data.vr_avatar}}
|
||||
<ui-button icon='ban' action='delete_avatar'>
|
||||
Delete Virtual Avatar
|
||||
</ui-button>
|
||||
{{/if}}
|
||||
</ui-display>
|
||||
</ui-display>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user