mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-20 19:44:09 +01:00
Merge pull request #14367 from Kyep/tgui_firealarm
Replaces firealarm interface
This commit is contained in:
@@ -30,7 +30,6 @@ FIRE ALARM
|
||||
light_range = 7
|
||||
light_color = "#ff3232"
|
||||
|
||||
var/last_process = 0
|
||||
var/wiresexposed = 0
|
||||
var/buildstage = 2 // 2 = complete, 1 = no wires, 0 = circuit gone
|
||||
var/enabled = FALSE
|
||||
@@ -85,7 +84,8 @@ FIRE ALARM
|
||||
return attack_hand(user)
|
||||
|
||||
/obj/machinery/firealarm/attack_ghost(mob/user)
|
||||
ui_interact(user)
|
||||
if(user.can_admin_interact())
|
||||
toggle_alarm(user)
|
||||
|
||||
/obj/machinery/firealarm/emp_act(severity)
|
||||
if(prob(50/severity))
|
||||
@@ -218,21 +218,6 @@ FIRE ALARM
|
||||
else
|
||||
set_light(l_power = 0)
|
||||
|
||||
/obj/machinery/firealarm/process()//Note: this processing was mostly phased out due to other code, and only runs when needed
|
||||
if(stat & (NOPOWER|BROKEN))
|
||||
return
|
||||
|
||||
if(timing)
|
||||
if(time > 0)
|
||||
time = time - ((world.timeofday - last_process)/10)
|
||||
else
|
||||
alarm()
|
||||
time = 0
|
||||
timing = 0
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
updateDialog()
|
||||
last_process = world.timeofday
|
||||
|
||||
/obj/machinery/firealarm/power_change()
|
||||
if(powered(ENVIRON))
|
||||
stat &= ~NOPOWER
|
||||
@@ -249,56 +234,21 @@ FIRE ALARM
|
||||
if(user.incapacitated())
|
||||
return 1
|
||||
|
||||
ui_interact(user)
|
||||
toggle_alarm(user)
|
||||
|
||||
/obj/machinery/firealarm/ui_interact(mob/user, ui_key = "main", datum/nanoui/ui = null, force_open = 1, var/master_ui = null, var/datum/topic_state/state = GLOB.default_state)
|
||||
ui = SSnanoui.try_update_ui(user, src, ui_key, ui, force_open)
|
||||
if(!ui)
|
||||
ui = new(user, src, ui_key, "firealarm.tmpl", name, 400, 400, state = state)
|
||||
ui.open()
|
||||
ui.set_auto_update(1)
|
||||
|
||||
/obj/machinery/firealarm/ui_data(mob/user, ui_key = "main", datum/topic_state/state = GLOB.default_state)
|
||||
var/data[0]
|
||||
|
||||
/obj/machinery/firealarm/proc/toggle_alarm(mob/user)
|
||||
var/area/A = get_area(src)
|
||||
data["fire"] = A.fire
|
||||
data["timing"] = timing
|
||||
if(istype(A))
|
||||
add_fingerprint(user)
|
||||
if(A.fire)
|
||||
reset()
|
||||
else
|
||||
alarm()
|
||||
|
||||
data["sec_level"] = get_security_level()
|
||||
|
||||
var/second = round(time % 60)
|
||||
var/minute = round(time / 60)
|
||||
|
||||
data["time_left"] = "[minute ? "[minute]:" : ""][add_zero(num2text(second), 2)]"
|
||||
return data
|
||||
|
||||
/obj/machinery/firealarm/Topic(href, href_list)
|
||||
if(..())
|
||||
return 1
|
||||
|
||||
if(buildstage != 2)
|
||||
return 1
|
||||
|
||||
add_fingerprint(usr)
|
||||
|
||||
if(href_list["reset"])
|
||||
reset()
|
||||
else if(href_list["alarm"])
|
||||
alarm()
|
||||
else if(href_list["time"])
|
||||
var/oldTiming = timing
|
||||
timing = text2num(href_list["time"])
|
||||
last_process = world.timeofday
|
||||
if(oldTiming != timing)
|
||||
if(timing)
|
||||
START_PROCESSING(SSobj, src)
|
||||
else
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
else if(href_list["tp"])
|
||||
var/tp = text2num(href_list["tp"])
|
||||
time += tp
|
||||
time = min(max(round(time), 0), 120)
|
||||
/obj/machinery/firealarm/examine(mob/user)
|
||||
. = ..()
|
||||
. += "It shows the alert level as: <B><U>[capitalize(get_security_level())]</U></B>."
|
||||
|
||||
/obj/machinery/firealarm/proc/reset()
|
||||
if(!working || !report_fire_alarms)
|
||||
|
||||
@@ -1,309 +0,0 @@
|
||||
{{if data.printing}}
|
||||
<h5 class='average'>The computer is currently busy.</h5>
|
||||
<div class='notice'>
|
||||
<center>Printing...</center>
|
||||
</div>
|
||||
<p>
|
||||
Thank you for your patience!
|
||||
</p>
|
||||
{{else}}
|
||||
{{:helper.link('Access Modification', 'home', {'action' : 'PRG_mode', 'mode_target' : 0}, !data.mode ? 'disabled' : null)}}
|
||||
{{:helper.link('Job Management', 'gear', {'action' : 'PRG_mode', 'mode_target' : 1}, data.mode == 1 ? 'disabled' : null)}}
|
||||
{{:helper.link('Crew Manifest', 'folder-open', {'action' : 'PRG_mode', 'mode_target' : 2}, data.mode == 2 ? 'disabled' : null)}}
|
||||
{{:helper.link('Print', 'print', {'action' : 'PRG_print'}, data.printer && (data.mode == 2 || data.has_modify && !data.mode) ? null : 'disabled')}}
|
||||
{{:helper.link('Records', 'file', {'action' : 'PRG_mode', 'mode_target' : 3}, (data.mode == 3) ? 'disabled' : null)}}
|
||||
|
||||
{{if data.mode == 1}}
|
||||
<div class='item'>
|
||||
<h2>Job Management</h2>
|
||||
</div>
|
||||
<div class='item'>
|
||||
<div class='itemLabel'>
|
||||
Authorized Identity:
|
||||
</div>
|
||||
<div class='itemContent'>
|
||||
{{:helper.link(data.scan_name, 'eject', {'action' : 'PRG_scan'})}}
|
||||
</div>
|
||||
<div class='itemLabel'>
|
||||
Cooldown:
|
||||
</div>
|
||||
<div class='itemContent'>
|
||||
{{if data.cooldown_mins > 0 || data.cooldown_mins == 0 && data.cooldown_secs > 0}}
|
||||
<span class='bad'>Next change in: {{:data.cooldown_mins}}:{{:data.cooldown_secs}}</span>
|
||||
{{else}}
|
||||
<span class='good'>Ready</span>
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class='item'>
|
||||
{{for data.job_slots}}
|
||||
<div class='item'>
|
||||
<span class="average" style="font-weight: bold;">{{:value.title}}: {{:value.current_positions}}/{{:value.total_positions}}</span>
|
||||
{{:helper.link('-', null, {'action' : 'PRG_make_job_unavailable', 'job' : value.title}, value.can_close == 1 && data.authenticated ? null : 'disabled')}}
|
||||
{{:helper.link('+', null, {'action' : 'PRG_make_job_available', 'job' : value.title}, value.can_open == 1 && data.authenticated ? null : 'disabled')}}
|
||||
{{:helper.link('Pri', null, {'action' : 'PRG_prioritize_job', 'job' : value.title}, value.can_prioritize > 0 && data.authenticated ? null : 'disabled')}} {{if value.can_prioritize == 2}}<span class='warning'>Priority Job</span> {{/if}}
|
||||
</div>
|
||||
{{/for}}
|
||||
</div>
|
||||
{{else data.mode == 2}}
|
||||
<div class='item'>
|
||||
<h2>Crew Manifest</h2>
|
||||
</div>
|
||||
<div class='item'>
|
||||
{{:data.manifest}}
|
||||
</div>
|
||||
{{else data.mode == 3}}
|
||||
<div class='item'>
|
||||
<h2>Records</h2>
|
||||
</div>
|
||||
<div class='item'>
|
||||
<div class='itemLabel'>
|
||||
Authorized Identity:
|
||||
</div>
|
||||
<div class='itemContent'>
|
||||
{{:helper.link(data.scan_name, 'eject', {'action' : 'PRG_scan'})}}
|
||||
</div>
|
||||
</div>
|
||||
<div class='item'>
|
||||
{{if data.authenticated}}
|
||||
{{:data.id_change_html}}
|
||||
{{if data.centcom_access}}
|
||||
{{:helper.link('Delete Records By: ' + data.scan_owner, null, {'action' : 'PRG_wipe_my_logs'}, null, 'linkDanger')}}
|
||||
{{/if}}
|
||||
{{if !data.target_dept}}
|
||||
{{:helper.link('Delete ALL Records', null, {'action' : 'PRG_wipe_all_logs'}, null, 'linkDanger')}}
|
||||
{{/if}}
|
||||
{{else}}
|
||||
<span class='exclamation-triangle'><i>Please insert an authorized ID into the terminal to proceed.</i></span><br>
|
||||
{{/if}}
|
||||
</div>
|
||||
{{else}}
|
||||
<div class='item'>
|
||||
<h2>Access Modification</h2>
|
||||
</div>
|
||||
|
||||
{{if !data.authenticated}}
|
||||
<span class='exclamation-triangle'><i>Please insert the IDs into the terminal to proceed.</i></span><br>
|
||||
{{/if}}
|
||||
|
||||
<div class='item'>
|
||||
<div class='itemLabel'>
|
||||
Target Identity:
|
||||
</div>
|
||||
<div class='itemContent'>
|
||||
{{:helper.link(data.target_name, 'eject', {'action' : 'PRG_modify'})}}
|
||||
</div>
|
||||
</div>
|
||||
<div class='item'>
|
||||
<div class='itemLabel'>
|
||||
Authorized Identity:
|
||||
</div>
|
||||
<div class='itemContent'>
|
||||
{{:helper.link(data.scan_name, 'eject', {'action' : 'PRG_scan'})}}
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
|
||||
{{if data.authenticated}}
|
||||
<script type="text/javascript">
|
||||
function markRed(){
|
||||
var nameField = document.getElementById('namefield');
|
||||
nameField.style.backgroundColor = "#FFDDDD";
|
||||
}
|
||||
function markGreen(){
|
||||
var nameField = document.getElementById('namefield');
|
||||
nameField.style.backgroundColor = "#DDFFDD";
|
||||
}
|
||||
function markAccountGreen(){
|
||||
var nameField = document.getElementById('accountfield');
|
||||
nameField.style.backgroundColor = "#DDFFDD";
|
||||
}
|
||||
function markAccountRed(){
|
||||
var nameField = document.getElementById('accountfield');
|
||||
nameField.style.backgroundColor = "#FFDDDD";
|
||||
}
|
||||
function showAll(){
|
||||
var allJobsSlot = document.getElementById('allvalue.jobsslot');
|
||||
allJobsSlot.innerHTML = "<a href='#' onclick='hideAll()'>Hide</a><br>";
|
||||
var allJobs = document.getElementById('all-value.jobs');
|
||||
allJobs.style.display = 'block';
|
||||
}
|
||||
function hideAll(){
|
||||
var allJobsSlot = document.getElementById('allvalue.jobsslot');
|
||||
allJobsSlot.innerHTML = "<a href='#' onclick='showAll()'>{{:data.target_rank}}</a>";
|
||||
var allJobs = document.getElementById('all-value.jobs');
|
||||
allJobs.style.display = 'none';
|
||||
}
|
||||
</script>
|
||||
|
||||
{{if data.has_modify}}
|
||||
<div class='item'>
|
||||
<h2>Details</h2>
|
||||
</div>
|
||||
|
||||
<form name='cardcomp' action='?src={{:data.src}}' method='get'>
|
||||
<div class='item'>
|
||||
<div class='itemLabel'>
|
||||
<input type='hidden' name='src' value='{{:data.src}}'>
|
||||
<input type='hidden' name='action' value='PRG_reg'>
|
||||
Registered Name:
|
||||
</div>
|
||||
<div class='itemContent'>
|
||||
<input type='text' id='namefield' name='reg' value='{{:data.target_owner}}' onchange='markRed()'>
|
||||
<input type='submit' value='Rename' onclick='markGreen()'>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<form name='accountnum' action='?src={{:data.src}}' method='get'>
|
||||
<div class='item'>
|
||||
<div class='itemLabel'>
|
||||
<input type='hidden' name='src' value='{{:data.src}}'>
|
||||
<input type='hidden' name='action' value='PRG_account'>
|
||||
Account Number:
|
||||
</div>
|
||||
<div class='itemContent'>
|
||||
<input type='text' id='accountfield' name='account' value='{{:data.account_number}}' onchange='markAccountRed()'>
|
||||
<input type='submit' value='Modify' onclick='markAccountGreen()'>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<div class='item'>
|
||||
<div class='itemLabel'>
|
||||
Terminations:
|
||||
</div>
|
||||
<div class='itemContent'>
|
||||
{{if data.target_rank == "Terminated"}}
|
||||
<span class='bad'>{{:data.target_owner}} has already been terminated!</span>
|
||||
{{else}}
|
||||
{{:helper.link('Terminate ' + data.target_owner, 'gear', {'action' : 'PRG_terminate'}, data.target_rank == "Terminated" ? 'disabled' : null, data.target_rank == "Terminated" ? 'disabled' : 'linkDanger')}}
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class='item'>
|
||||
<h2>Assignment</h2>
|
||||
</div>
|
||||
|
||||
<div class='item'>
|
||||
<span id='allvalue.jobsslot'>
|
||||
<a href='#' onclick='showAll()'>{{:data.target_rank}}</a>
|
||||
</span>
|
||||
</div>
|
||||
<div class='item'>
|
||||
<div id="all-value.jobs" style='display: none;'>
|
||||
<table>
|
||||
<tr>
|
||||
<th>Special</th>
|
||||
<td>
|
||||
{{for data.top_jobs}}
|
||||
{{:helper.link(value.display_name, '', {'action' : 'PRG_assign', 'assign_target' : value.job}, value.jlinkformat == 'disabled' ? 'disabled' : null, value.jlinkformat ? value.jlinkformat : null)}}
|
||||
{{/for}}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th style="color: '#FFA500';">Engineering</th>
|
||||
<td>
|
||||
{{for data.engineering_jobs}}
|
||||
{{:helper.link(value.display_name, '', {'action' : 'PRG_assign', 'assign_target' : value.job}, value.jlinkformat == 'disabled' ? 'disabled' : null, value.jlinkformat ? value.jlinkformat : null)}}
|
||||
{{/for}}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th style="color: '#008000';">Medical</th>
|
||||
<td>
|
||||
{{for data.medical_jobs}}
|
||||
{{:helper.link(value.display_name, '', {'action' : 'PRG_assign', 'assign_target' : value.job}, value.jlinkformat == 'disabled' ? 'disabled' : null, value.jlinkformat ? value.jlinkformat : null)}}
|
||||
{{/for}}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th style="color: '#DD0000';">Security</th>
|
||||
<td>
|
||||
{{for data.security_jobs}}
|
||||
{{:helper.link(value.display_name, '', {'action' : 'PRG_assign', 'assign_target' : value.job}, value.jlinkformat == 'disabled' ? 'disabled' : null, value.jlinkformat ? value.jlinkformat : null)}}
|
||||
{{/for}}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th style="color: '#C060C0';">Science</th>
|
||||
<td>
|
||||
{{for data.science_jobs}}
|
||||
{{:helper.link(value.display_name, '', {'action' : 'PRG_assign', 'assign_target' : value.job}, value.jlinkformat == 'disabled' ? 'disabled' : null, value.jlinkformat ? value.jlinkformat : null)}}
|
||||
{{/for}}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th style="color: '#A0A0A0';">Support</th>
|
||||
<td>
|
||||
{{for data.support_jobs}}
|
||||
{{:helper.link(value.display_name, '', {'action' : 'PRG_assign', 'assign_target' : value.job}, value.jlinkformat == 'disabled' ? 'disabled' : null, value.jlinkformat ? value.jlinkformat : null)}}
|
||||
{{/for}}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th style="color: '#808080';">Civilian</th>
|
||||
<td>
|
||||
{{for data.civilian_jobs}}
|
||||
{{:helper.link(value.display_name, '', {'action' : 'PRG_assign', 'assign_target' : value.job}, value.jlinkformat == 'disabled' ? 'disabled' : null, value.jlinkformat ? value.jlinkformat : null)}}
|
||||
{{/for}}
|
||||
</td>
|
||||
</tr>
|
||||
{{if data.centcom_access}}
|
||||
<tr>
|
||||
<th style="color: '#A52A2A';">CentComm</th>
|
||||
<td>
|
||||
{{for data.centcom_jobs}}
|
||||
{{:helper.link(value.display_name, '', {'action' : 'PRG_assign', 'assign_target' : value.job}, value.jlinkformat == 'disabled' ? 'disabled' : null, value.jlinkformat ? value.jlinkformat : null)}}
|
||||
{{/for}}
|
||||
</td>
|
||||
</tr>
|
||||
{{/if}}
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{if data.centcom_access}}
|
||||
<div class='item'>
|
||||
<h2>Central Command</h2>
|
||||
</div>
|
||||
<div class='item'>
|
||||
{{for data.all_centcom_access}}
|
||||
{{:helper.link(value.desc, '', {'action' : 'PRG_access', 'access_target' : value.ref, 'allowed' : value.allowed}, null, value.allowed ? 'selected' : null)}}
|
||||
{{/for}}
|
||||
<div class="item">
|
||||
<div class='average'><b>Card Skin</b></div>
|
||||
{{for data.all_centcom_skins}}
|
||||
{{:helper.link(value.display_name, '', {'action' : 'PRG_skin', 'skin_target' : value.skin}, null,(data.current_skin == value.skin) ? 'selected' : null )}}
|
||||
{{/for}}
|
||||
</div>
|
||||
</div>
|
||||
{{else}}
|
||||
<div class='item'>
|
||||
<h2>{{:data.station_name}}</h2>
|
||||
</div>
|
||||
<div class='item'>
|
||||
{{for data.regions}}
|
||||
<div style='float: left; width: 175px; min-height: 250px'>
|
||||
<div class='average'><b>{{:value.name}}</b></div>
|
||||
{{for value.accesses :accessValue:accessKey}}
|
||||
<div class='itemContentWide'>
|
||||
{{:helper.link(accessValue.desc, '', {'action' : 'PRG_access', 'access_target' : accessValue.ref, 'allowed' : accessValue.allowed}, null, accessValue.allowed ? 'selected' : null)}}
|
||||
</div>
|
||||
{{/for}}
|
||||
</div>
|
||||
{{/for}}
|
||||
<div style='float: left;'>
|
||||
<div class='average'><b>Card Skin</b></div>
|
||||
{{for data.card_skins}}
|
||||
{{:helper.link(value.display_name, '', {'action' : 'PRG_skin', 'skin_target' : value.skin}, null,(data.current_skin == value.skin) ? 'selected' : null )}}
|
||||
{{/for}}
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
@@ -1,129 +0,0 @@
|
||||
{{if !data.authenticated}}
|
||||
<div class="notice">Please swipe your ID card. {{:helper.link('Log In', 'unlock', {'PRG_login' : 1}, null, 'fixed')}}</div>
|
||||
{{else}}
|
||||
{{if !data.is_ai}}
|
||||
<div class="notice">Please remember to {{:helper.link('Log Out', 'lock', {'PRG_logout' : 1}, null, 'fixed')}}</div>
|
||||
{{/if}}
|
||||
{{if data.lastCallLoc}}
|
||||
<div class="line">Most recent shuttle call/recall traced to: <b>{{:data.lastCallLoc}}</b></div>
|
||||
{{else}}
|
||||
<div class="line">Unable to trace most recent shuttle call/recall signal.</div>
|
||||
{{/if}}
|
||||
<div class="item">
|
||||
<h3>Emergency Shuttle:</h3>
|
||||
{{if data.shuttle.eta}}
|
||||
<div class="itemLabel">ETA:</div>
|
||||
<div class="itemContents">
|
||||
{{>data.shuttle.eta}}
|
||||
</div>
|
||||
{{/if}}<!-- SHUTTLE ETA -->
|
||||
<div class="itemLabel">Options:</div>
|
||||
<div class="itemContents">
|
||||
{{if data.shuttle.callStatus == 1 && !data.is_ai}}
|
||||
{{:helper.link('Cancel Shuttle', 'arrow-left', {'PRG_operation' : 'cancelshuttle'})}}
|
||||
{{else data.shuttle.callStatus == 2}}
|
||||
{{:helper.link('Call Shuttle', 'arrow-circle-down', {'PRG_operation' : 'callshuttle'})}}
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{if data.screen==1}}
|
||||
<!-- MAIN SCREEN -->
|
||||
<h3>Menu</h3>
|
||||
<div class="item">
|
||||
{{if data.authenticated==2}}
|
||||
<div class="line">
|
||||
{{:helper.link('Make an Announcement', 'info', {'PRG_operation' : 'announce'})}}
|
||||
</div>
|
||||
<div class="line">
|
||||
{{if data.emagged}}
|
||||
{{:helper.link('Message [UNKNOWN]', 'envelope', {'PRG_operation' : 'MessageSyndicate'})}}
|
||||
{{else}}
|
||||
{{:helper.link('Message CentComm', 'envelope', {'PRG_operation' : 'MessageCentcomm'})}}
|
||||
{{/if}}
|
||||
</div>
|
||||
<div class="line">
|
||||
{{:helper.link('Request Nuclear Authentication Codes', 'exclamation-triangle', {'PRG_operation' : 'nukerequest'})}}
|
||||
</div>
|
||||
{{/if}}
|
||||
<div class="line">
|
||||
{{:helper.link('Change Alert Level', 'signal', {'PRG_operation' : 'changeseclevel'})}}
|
||||
</div>
|
||||
<div class="line">
|
||||
{{:helper.link('Change Status Displays', 'info', {'PRG_operation' : 'status'})}}
|
||||
</div>
|
||||
<div class="line">
|
||||
{{:helper.link('Message List', 'comment', {'PRG_operation' : 'messagelist'})}}
|
||||
</div>
|
||||
<div class="line">
|
||||
{{:helper.link('Restart Nano-Mob Hunter GO! Server', 'power-off', {'PRG_operation' : 'RestartNanoMob'})}}
|
||||
</div>
|
||||
</div>
|
||||
{{else data.screen==2}}
|
||||
<!-- STATUS DISPLAYS -->
|
||||
<h2>Status Displays</h2>
|
||||
{{:helper.link('Back', 'home', {'PRG_operation' : 'main'})}}
|
||||
<h3>Presets</h3>
|
||||
{{for data.stat_display.presets}}
|
||||
<div class="line">
|
||||
<div class="statusLabel">{{:helper.link(value.label, 'info', {'PRG_operation' : 'setstat', 'statdisp' : value.name}, name == data.stat_display.type ? 'selected' : null)}}</div>
|
||||
</div>
|
||||
{{/for}}
|
||||
<h3>Alerts</h3>
|
||||
{{for data.stat_display.alerts}}
|
||||
<div class="line">
|
||||
<div class="statusLabel">{{:helper.link(value.label, 'exclamation-triangle', {'PRG_operation' : 'setstat', 'statdisp' : 'alert', 'alert' : value.alert}, value.alert == data.stat_display.type ? 'selected' : null)}}</div>
|
||||
</div>
|
||||
{{/for}}
|
||||
<h3>Messages</h3>
|
||||
<div class="item">
|
||||
{{if data.stat_display.type}}
|
||||
<div class="line">
|
||||
<div class="statusLabel">{{:helper.link('Line 1:', 'gear', {'PRG_operation':'setmsg1'})}}</div>
|
||||
<div class="statusValue">{{>data.stat_display.line_1}}</div>
|
||||
</div>
|
||||
<div class="line">
|
||||
<div class="statusLabel">{{:helper.link('Line 2:', 'gear', {'PRG_operation':'setmsg2'})}}</div>
|
||||
<div class="statusValue">{{>data.stat_display.line_2}}</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
{{else data.screen==3}}
|
||||
<!-- MESSAGES -->
|
||||
<h3>Messages</h3>
|
||||
{{if data.current_message}}
|
||||
{{:helper.link('Messages', 'home', {'PRG_operation' : 'messagelist'})}}
|
||||
<h3>{{:data.current_message_title}}</h3>
|
||||
<div class="item">
|
||||
{{:data.current_message}}
|
||||
</div>
|
||||
{{else}}
|
||||
{{:helper.link('Back', 'home', {'PRG_operation' : 'main'})}}
|
||||
{{for data.messages}}
|
||||
<div class="line">
|
||||
<b>{{:value.title}}</b><br>
|
||||
{{:helper.link('Open', 'envelope-o', {'PRG_operation' : 'messagelist', 'msgid' : value.id})}}
|
||||
{{:helper.link('Delete', 'close', {'PRG_operation' : 'delmessage', 'msgid' : value.id})}}
|
||||
</div>
|
||||
{{/for}}
|
||||
{{/if}}
|
||||
{{else data.screen==4}}
|
||||
<!-- ALERT LEVEL -->
|
||||
<h3>Security Level</h3>
|
||||
{{:helper.link('Back', 'home', {'PRG_operation' : 'main'})}}
|
||||
<div class="item">
|
||||
<div class="line">
|
||||
<div class="itemLabel">Security Level:</div>
|
||||
<div class="itemContents">{{>data.str_security_level}}</div>
|
||||
</div>
|
||||
<div class="line">
|
||||
<div class="itemLabel">Presets:</div>
|
||||
<div class="itemContents">
|
||||
{{for data.levels}}
|
||||
{{:helper.link(value.name, 'comment', {'PRG_operation' : 'newalertlevel', 'level' : value.id}, value.id == data.security_level ? 'selected' : null)}}
|
||||
{{/for}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}<!-- SCREEN -->
|
||||
{{/if}}<!-- AUTHENTICATED -->
|
||||
@@ -1,69 +0,0 @@
|
||||
<!--
|
||||
Title: FireAlarm UI.
|
||||
Used In File(s): \code\game\machinery\firealarm.dm
|
||||
-->
|
||||
<div class="item">
|
||||
<div class="itemLabel">
|
||||
Fire Alarm
|
||||
</div>
|
||||
<div class="itemContent">
|
||||
{{:helper.link('Activated', 'lightbulb-o', {'alarm' : 1}, data.fire ? 'selected' : '')}}
|
||||
{{:helper.link('Deactivated', 'lightbulb-o', {'reset' : 1}, data.fire ? '' : 'selected')}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="item">
|
||||
<div class="itemLabel">
|
||||
Security Level
|
||||
</div>
|
||||
<div class="itemContent">
|
||||
{{if data.sec_level == "green"}}
|
||||
<span class="good">Green</span>
|
||||
{{else data.sec_level == "blue"}}
|
||||
<span class="highlight">Blue</span>
|
||||
{{else data.sec_level == "red"}}
|
||||
<span class="bad">Red</span>
|
||||
{{else data.sec_level == "gamma"}}
|
||||
<span class="average">Gamma</span>
|
||||
{{else data.sec_level == "epsilon"}}
|
||||
<span class="bad"><b>Contracts terminated.</b></span>
|
||||
{{else data.sec_level == "delta"}}
|
||||
<span class="notice">Nuclear device primed.</span>
|
||||
{{else}}
|
||||
ERR: Unable to ascertain security level. Please see an authorized NT fire alarm technician.
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="item">
|
||||
<div class="itemLabel">
|
||||
Timer System
|
||||
</div>
|
||||
<div class="itemContent">
|
||||
{{:helper.link('Initiate', 'play', {'time': 1}, data.timing ? 'selected' : '')}}
|
||||
{{:helper.link('Stop', 'pause', {'time': 0}, data.timing ? '' : 'selected')}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="item">
|
||||
<div class="itemLabel">
|
||||
Time Modifiers
|
||||
</div>
|
||||
<div class="itemContent">
|
||||
{{:helper.link('30', 'minus', {'tp': -30})}}
|
||||
{{:helper.link('1', 'minus', {'tp': -1 })}}
|
||||
{{:helper.link('1', 'plus', {'tp': +1 })}}
|
||||
{{:helper.link('30', 'plus', {'tp': +30})}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{if data.timing}}
|
||||
<div class="item">
|
||||
<div class="itemLabel">
|
||||
Time Left
|
||||
</div>
|
||||
<div class="itemContent">
|
||||
{{:data.time_left}}
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
@@ -1,347 +0,0 @@
|
||||
{{if data.printing}}
|
||||
<h5 class='average'>The computer is currently busy.</h5>
|
||||
<div class='notice'>
|
||||
<center><span class='bad'>Printing...</span></center>
|
||||
</div>
|
||||
<p>
|
||||
Thank you for your patience!
|
||||
</p>
|
||||
{{else}}
|
||||
{{:helper.link('Access Modification', 'home', {'choice' : 'mode', 'mode_target' : 0}, !data.mode ? 'disabled' : null)}}
|
||||
{{if !data.target_dept}}{{:helper.link('Job Management', 'gear', {'choice' : 'mode', 'mode_target' : 1}, data.mode == 1 ? 'disabled' : null)}}{{/if}}
|
||||
{{:helper.link('Crew Manifest', 'folder-open', {'choice' : 'mode', 'mode_target' : 2}, data.mode == 2 ? 'disabled' : null)}}
|
||||
{{if !data.target_dept}}{{:helper.link('Print', 'print', {'choice' : 'print'}, (data.mode == 2 || data.has_modify && !data.mode) ? null : 'disabled')}}{{/if}}
|
||||
{{:helper.link('Records', 'file', {'choice' : 'mode', 'mode_target' : 3}, (data.mode == 3) ? 'disabled' : null)}}
|
||||
|
||||
{{if data.mode == 1 && !data.target_dept}}
|
||||
<div class='item'>
|
||||
<h2>Job Management</h2>
|
||||
</div>
|
||||
<div class='item'>
|
||||
<div class='itemLabel'>
|
||||
Authorized Identity:
|
||||
</div>
|
||||
<div class='itemContent'>
|
||||
{{:helper.link(data.scan_name, 'eject', {'choice' : 'scan'})}}
|
||||
</div>
|
||||
<div class='itemLabel'>
|
||||
Cooldown:
|
||||
</div>
|
||||
<div class='itemContent'>
|
||||
{{if data.cooldown_mins > 0 || data.cooldown_mins == 0 && data.cooldown_secs > 0}}
|
||||
<span class='bad'>Next change in: {{:data.cooldown_mins}}:{{:data.cooldown_secs}}</span>
|
||||
{{else}}
|
||||
<span class='good'>Ready</span>
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class='item'>
|
||||
{{for data.job_slots}}
|
||||
<div class='item'>
|
||||
<span class="average" style="font-weight: bold;">{{:value.title}}: {{:value.current_positions}}/{{:value.total_positions}}</span>
|
||||
{{:helper.link('-', null, {'choice' : 'make_job_unavailable', 'job' : value.title}, value.can_close == 1 && data.authenticated ? null : 'disabled')}}
|
||||
{{:helper.link('+', null, {'choice' : 'make_job_available', 'job' : value.title}, value.can_open == 1 && data.authenticated ? null : 'disabled')}}
|
||||
{{:helper.link('Pri', null, {'choice' : 'prioritize_job', 'job' : value.title}, value.can_prioritize > 0 && data.authenticated ? null : 'disabled')}} {{if value.can_prioritize == 2}}<span class='warning'>Priority Job</span> {{/if}}
|
||||
</div>
|
||||
{{/for}}
|
||||
</div>
|
||||
{{else data.mode == 2}}
|
||||
<div class='item'>
|
||||
<h2>Crew Manifest</h2>
|
||||
</div>
|
||||
<div class='item'>
|
||||
{{:data.manifest}}
|
||||
</div>
|
||||
{{else data.mode == 3}}
|
||||
<div class='item'>
|
||||
<h2>Records</h2>
|
||||
</div>
|
||||
<div class='item'>
|
||||
<div class='itemLabel'>
|
||||
Authorized Identity:
|
||||
</div>
|
||||
<div class='itemContent'>
|
||||
{{:helper.link(data.scan_name, 'eject', {'choice' : 'scan'})}}
|
||||
</div>
|
||||
</div>
|
||||
<div class='item'>
|
||||
{{if data.authenticated}}
|
||||
{{:data.id_change_html}}
|
||||
{{if data.centcom_access}}
|
||||
{{:helper.link('Delete Records By: ' + data.scan_owner, null, {'choice' : 'wipe_my_logs'}, null, 'linkDanger')}}
|
||||
{{/if}}
|
||||
{{if !data.target_dept}}
|
||||
{{:helper.link('Delete ALL Records', null, {'choice' : 'wipe_all_logs'}, null, 'linkDanger')}}
|
||||
{{/if}}
|
||||
{{else}}
|
||||
<span class='exclamation-triangle'><i>Please insert an authorized ID into the terminal to proceed.</i></span><br>
|
||||
{{/if}}
|
||||
</div>
|
||||
{{else}}
|
||||
<div class='item'>
|
||||
<h2>Access Modification</h2>
|
||||
</div>
|
||||
|
||||
{{if !data.authenticated}}
|
||||
<span class='exclamation-triangle'><i>Please insert the IDs into the terminal to proceed.</i></span><br>
|
||||
{{/if}}
|
||||
|
||||
<div class='item'>
|
||||
<div class='itemLabel'>
|
||||
Target Identity:
|
||||
</div>
|
||||
<div class='itemContent'>
|
||||
{{:helper.link(data.target_name, 'eject', {'choice' : 'modify'})}}
|
||||
</div>
|
||||
</div>
|
||||
<div class='item'>
|
||||
<div class='itemLabel'>
|
||||
Authorized Identity:
|
||||
</div>
|
||||
<div class='itemContent'>
|
||||
{{:helper.link(data.scan_name, 'eject', {'choice' : 'scan'})}}
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
|
||||
{{if data.authenticated}}
|
||||
<script type="text/javascript">
|
||||
function markRed(){
|
||||
var nameField = document.getElementById('namefield');
|
||||
nameField.style.backgroundColor = "#FFDDDD";
|
||||
}
|
||||
function markGreen(){
|
||||
var nameField = document.getElementById('namefield');
|
||||
nameField.style.backgroundColor = "#DDFFDD";
|
||||
}
|
||||
function markAccountGreen(){
|
||||
var nameField = document.getElementById('accountfield');
|
||||
nameField.style.backgroundColor = "#DDFFDD";
|
||||
}
|
||||
function markAccountRed(){
|
||||
var nameField = document.getElementById('accountfield');
|
||||
nameField.style.backgroundColor = "#FFDDDD";
|
||||
}
|
||||
function showAll(){
|
||||
var allJobsSlot = document.getElementById('allvalue.jobsslot');
|
||||
allJobsSlot.innerHTML = "<a href='#' onclick='hideAll()'>Hide</a><br>";
|
||||
var allJobs = document.getElementById('all-value.jobs');
|
||||
allJobs.style.display = 'block';
|
||||
}
|
||||
function hideAll(){
|
||||
var allJobsSlot = document.getElementById('allvalue.jobsslot');
|
||||
allJobsSlot.innerHTML = "<a href='#' onclick='showAll()'>{{:data.target_rank}}</a>";
|
||||
var allJobs = document.getElementById('all-value.jobs');
|
||||
allJobs.style.display = 'none';
|
||||
}
|
||||
</script>
|
||||
|
||||
{{if data.has_modify}}
|
||||
{{if !data.target_dept}}
|
||||
<div class='item'>
|
||||
<h2>Details</h2>
|
||||
</div>
|
||||
|
||||
<form name='cardcomp' action='?src={{:data.src}}' method='get'>
|
||||
<div class='item'>
|
||||
<div class='itemLabel'>
|
||||
<input type='hidden' name='src' value='{{:data.src}}'>
|
||||
<input type='hidden' name='choice' value='reg'>
|
||||
Registered Name:
|
||||
</div>
|
||||
<div class='itemContent'>
|
||||
<input type='text' id='namefield' name='reg' value='{{:data.target_owner}}' onchange='markRed()'>
|
||||
<input type='submit' value='Rename' onclick='markGreen()'>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<form name='accountnum' action='?src={{:data.src}}' method='get'>
|
||||
<div class='item'>
|
||||
<div class='itemLabel'>
|
||||
<input type='hidden' name='src' value='{{:data.src}}'>
|
||||
<input type='hidden' name='choice' value='account'>
|
||||
Account Number:
|
||||
</div>
|
||||
<div class='itemContent'>
|
||||
<input type='text' id='accountfield' name='account' value='{{:data.account_number}}' onchange='markAccountRed()'>
|
||||
<input type='submit' value='Modify' onclick='markAccountGreen()'>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
{{/if}}
|
||||
{{if data.target_rank != "Terminated"}}
|
||||
<div class='item'>
|
||||
<div class='itemLabel'>
|
||||
Demotions:
|
||||
</div>
|
||||
<div class='itemContent'>
|
||||
{{if data.target_rank == "Demoted"}}
|
||||
<span class='bad'>{{:data.target_owner}} has already been demoted!</span>
|
||||
{{else}}
|
||||
{{:helper.link('Demote ' + data.target_owner, 'gear', {'choice' : 'demote'}, (data.target_rank == "Civilian" || data.target_rank == "Unassigned") ? 'disabled' : null, (data.target_rank == "Civilian" || data.target_rank == "Unassigned") ? 'disabled' : 'linkDanger')}}
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{if !data.target_dept}}
|
||||
<div class='item'>
|
||||
<div class='itemLabel'>
|
||||
Terminations:
|
||||
</div>
|
||||
<div class='itemContent'>
|
||||
{{if data.target_rank == "Terminated"}}
|
||||
<span class='bad'>{{:data.target_owner}} has already been terminated!</span>
|
||||
{{else}}
|
||||
{{:helper.link('Terminate ' + data.target_owner, 'gear', {'choice' : 'terminate'}, data.target_rank == "Terminated" ? 'disabled' : null, data.target_rank == "Terminated" ? 'disabled' : 'linkDanger')}}
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class='item'>
|
||||
<h2>Assignment</h2>
|
||||
</div>
|
||||
|
||||
{{else}}
|
||||
|
||||
<div class='item'>
|
||||
<h2>Assignment for {{:data.target_owner}}</h2>
|
||||
</div>
|
||||
|
||||
{{/if}}
|
||||
|
||||
<div class='item'>
|
||||
<span id='allvalue.jobsslot'>
|
||||
<a href='#' onclick='showAll()'>{{:data.target_rank}}</a>
|
||||
</span>
|
||||
</div>
|
||||
<div class='item'>
|
||||
<div id="all-value.jobs" style='display: none;'>
|
||||
<table>
|
||||
{{if !data.target_dept}}
|
||||
<tr>
|
||||
<th>Special</th>
|
||||
<td>
|
||||
{{for data.top_jobs}}
|
||||
{{:helper.link(value.display_name, '', {'choice' : 'assign', 'assign_target' : value.job}, value.jlinkformat == 'disabled' ? 'disabled' : null, value.jlinkformat ? value.jlinkformat : null)}}
|
||||
{{/for}}
|
||||
</td>
|
||||
</tr>
|
||||
{{/if}}
|
||||
{{if !data.target_dept || data.target_dept == 5}}
|
||||
<tr>
|
||||
<th style="color: '#FFA500';">Engineering</th>
|
||||
<td>
|
||||
{{for data.engineering_jobs}}
|
||||
{{:helper.link(value.display_name, '', {'choice' : 'assign', 'assign_target' : value.job}, value.jlinkformat == 'disabled' ? 'disabled' : null, value.jlinkformat ? value.jlinkformat : null)}}
|
||||
{{/for}}
|
||||
</td>
|
||||
</tr>
|
||||
{{/if}}
|
||||
{{if !data.target_dept || data.target_dept == 3}}
|
||||
<tr>
|
||||
<th style="color: '#008000';">Medical</th>
|
||||
<td>
|
||||
{{for data.medical_jobs}}
|
||||
{{:helper.link(value.display_name, '', {'choice' : 'assign', 'assign_target' : value.job}, value.jlinkformat == 'disabled' ? 'disabled' : null, value.jlinkformat ? value.jlinkformat : null)}}
|
||||
{{/for}}
|
||||
</td>
|
||||
</tr>
|
||||
{{/if}}
|
||||
{{if !data.target_dept || data.target_dept == 2}}
|
||||
<tr>
|
||||
<th style="color: '#DD0000';">Security</th>
|
||||
<td>
|
||||
{{for data.security_jobs}}
|
||||
{{:helper.link(value.display_name, '', {'choice' : 'assign', 'assign_target' : value.job}, value.jlinkformat == 'disabled' ? 'disabled' : null, value.jlinkformat ? value.jlinkformat : null)}}
|
||||
{{/for}}
|
||||
</td>
|
||||
</tr>
|
||||
{{/if}}
|
||||
{{if !data.target_dept || data.target_dept == 4}}
|
||||
<tr>
|
||||
<th style="color: '#C060C0';">Science</th>
|
||||
<td>
|
||||
{{for data.science_jobs}}
|
||||
{{:helper.link(value.display_name, '', {'choice' : 'assign', 'assign_target' : value.job}, value.jlinkformat == 'disabled' ? 'disabled' : null, value.jlinkformat ? value.jlinkformat : null)}}
|
||||
{{/for}}
|
||||
</td>
|
||||
</tr>
|
||||
{{/if}}
|
||||
{{if !data.target_dept}}
|
||||
<tr>
|
||||
<th style="color: '#A0A0A0';">Support</th>
|
||||
<td>
|
||||
{{for data.support_jobs}}
|
||||
{{:helper.link(value.display_name, '', {'choice' : 'assign', 'assign_target' : value.job}, value.jlinkformat == 'disabled' ? 'disabled' : null, value.jlinkformat ? value.jlinkformat : null)}}
|
||||
{{/for}}
|
||||
</td>
|
||||
</tr>
|
||||
{{/if}}
|
||||
<tr>
|
||||
<th style="color: '#808080';">Civilian</th>
|
||||
<td>
|
||||
{{for data.civilian_jobs}}
|
||||
{{:helper.link(value.display_name, '', {'choice' : 'assign', 'assign_target' : value.job}, value.jlinkformat == 'disabled' ? 'disabled' : null, value.jlinkformat ? value.jlinkformat : null)}}
|
||||
{{/for}}
|
||||
</td>
|
||||
</tr>
|
||||
{{if data.centcom_access}}
|
||||
<tr>
|
||||
<th style="color: '#A52A2A';">CentComm</th>
|
||||
<td>
|
||||
{{for data.centcom_jobs}}
|
||||
{{:helper.link(value.display_name, '', {'choice' : 'assign', 'assign_target' : value.job}, value.jlinkformat == 'disabled' ? 'disabled' : null, value.jlinkformat ? value.jlinkformat : null)}}
|
||||
{{/for}}
|
||||
</td>
|
||||
</tr>
|
||||
{{/if}}
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{if data.centcom_access}}
|
||||
<div class='item'>
|
||||
<h2>Central Command</h2>
|
||||
</div>
|
||||
<div class='item'>
|
||||
{{for data.all_centcom_access}}
|
||||
{{:helper.link(value.desc, '', {'choice' : 'access', 'access_target' : value.ref, 'allowed' : value.allowed}, null, value.allowed ? 'selected' : null)}}
|
||||
{{/for}}
|
||||
<div class="item">
|
||||
<div class='average'><b>Card Skin</b></div>
|
||||
{{for data.all_centcom_skins}}
|
||||
{{:helper.link(value.display_name, '', {'choice' : 'skin', 'skin_target' : value.skin}, null,(data.current_skin == value.skin) ? 'selected' : null )}}
|
||||
{{/for}}
|
||||
</div>
|
||||
</div>
|
||||
{{else}}
|
||||
{{if !data.target_dept}}
|
||||
<div class='item'>
|
||||
<h2>{{:data.station_name}}</h2>
|
||||
</div>
|
||||
<div class='item'>
|
||||
{{for data.regions}}
|
||||
<div style='float: left; width: 175px; min-height: 250px'>
|
||||
<div class='average'><b>{{:value.name}}</b></div>
|
||||
{{for value.accesses :accessValue:accessKey}}
|
||||
<div class='itemContentWide'>
|
||||
{{:helper.link(accessValue.desc, '', {'choice' : 'access', 'access_target' : accessValue.ref, 'allowed' : accessValue.allowed}, null, accessValue.allowed ? 'selected' : null)}}
|
||||
</div>
|
||||
{{/for}}
|
||||
</div>
|
||||
{{/for}}
|
||||
<div style='float: left;'>
|
||||
<div class='average'><b>Card Skin</b></div>
|
||||
{{for data.card_skins}}
|
||||
{{:helper.link(value.display_name, '', {'choice' : 'skin', 'skin_target' : value.skin}, null,(data.current_skin == value.skin) ? 'selected' : null )}}
|
||||
{{/for}}
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
Reference in New Issue
Block a user