mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-20 19:44:09 +01:00
Merge remote-tracking branch 'refs/remotes/ParadiseSS13/master' into toxinstechdisk
This commit is contained in:
@@ -83,6 +83,7 @@
|
||||
origin_tech = "magnets=3;combat=2"
|
||||
var/global/list/jobs[0]
|
||||
HUDType = DATA_HUD_SECURITY_ADVANCED
|
||||
var/read_only = FALSE
|
||||
species_fit = list("Vox")
|
||||
sprite_sheets = list(
|
||||
"Vox" = 'icons/mob/species/vox/eyes.dmi',
|
||||
@@ -114,6 +115,9 @@
|
||||
invis_view = SEE_INVISIBLE_MINIMUM //don't render darkness while wearing these
|
||||
prescription_upgradable = 0
|
||||
|
||||
/obj/item/clothing/glasses/hud/security/sunglasses/read_only
|
||||
read_only = TRUE
|
||||
|
||||
/obj/item/clothing/glasses/hud/security/sunglasses
|
||||
name = "HUDSunglasses"
|
||||
desc = "Sunglasses with a HUD."
|
||||
|
||||
@@ -363,8 +363,8 @@
|
||||
for(var/datum/data/record/R in data_core.security)
|
||||
if(R.fields["id"] == E.fields["id"])
|
||||
criminal = R.fields["criminal"]
|
||||
|
||||
msg += "<span class = 'deptradio'>Criminal status:</span> <a href='?src=[UID()];criminal=1'>\[[criminal]\]</a>\n"
|
||||
var/criminal_status = hasHUD(user, "read_only_security") ? "\[[criminal]\]" : "<a href='?src=[UID()];criminal=[glasses]'>\[[criminal]\]</a>"
|
||||
msg += "<span class = 'deptradio'>Criminal status:</span> [criminal_status]\n"
|
||||
msg += "<span class = 'deptradio'>Security records:</span> <a href='?src=[UID()];secrecord=`'>\[View\]</a> <a href='?src=[UID()];secrecordadd=`'>\[Add comment\]</a>\n"
|
||||
|
||||
if(hasHUD(user,"medical"))
|
||||
@@ -408,7 +408,12 @@
|
||||
var/obj/item/organ/internal/cyberimp/eyes/hud/CIH = H.get_int_organ(/obj/item/organ/internal/cyberimp/eyes/hud)
|
||||
switch(hudtype)
|
||||
if("security")
|
||||
return istype(H.glasses, /obj/item/clothing/glasses/hud/security) || istype(H.glasses, /obj/item/clothing/glasses/hud/security/sunglasses) || istype(CIH,/obj/item/organ/internal/cyberimp/eyes/hud/security)
|
||||
return istype(H.glasses, /obj/item/clothing/glasses/hud/security) || istype(CIH,/obj/item/organ/internal/cyberimp/eyes/hud/security)
|
||||
if("read_only_security")
|
||||
var/obj/item/clothing/glasses/hud/security/S
|
||||
if(istype(H.glasses, /obj/item/clothing/glasses/hud/security))
|
||||
S = H.glasses
|
||||
return !istype(CIH,/obj/item/organ/internal/cyberimp/eyes/hud/security) && S && S.read_only
|
||||
if("medical")
|
||||
return istype(H.glasses, /obj/item/clothing/glasses/hud/health) || istype(H.glasses, /obj/item/clothing/glasses/hud/health/health_advanced) || istype(CIH,/obj/item/organ/internal/cyberimp/eyes/hud/medical)
|
||||
else
|
||||
|
||||
@@ -656,7 +656,21 @@ var/list/ai_verbs_default = list(
|
||||
return
|
||||
|
||||
if(href_list["ai_take_control"]) //Mech domination
|
||||
|
||||
var/obj/mecha/M = locate(href_list["ai_take_control"])
|
||||
|
||||
if(!M)
|
||||
return
|
||||
|
||||
var/mech_has_controlbeacon = FALSE
|
||||
for(var/obj/item/mecha_parts/mecha_tracking/ai_control/A in M.trackers)
|
||||
mech_has_controlbeacon = TRUE
|
||||
break
|
||||
if(!can_dominate_mechs && !mech_has_controlbeacon)
|
||||
message_admins("Warning: possible href exploit by [key_name(usr)] - attempted control of a mecha without can_dominate_mechs or a control beacon in the mech.")
|
||||
log_debug("Warning: possible href exploit by [key_name(usr)] - attempted control of a mecha without can_dominate_mechs or a control beacon in the mech.")
|
||||
return
|
||||
|
||||
if(controlled_mech)
|
||||
to_chat(src, "<span class='warning'>You are already loaded into an onboard computer!</span>")
|
||||
return
|
||||
@@ -670,7 +684,7 @@ var/list/ai_verbs_default = list(
|
||||
to_chat(src, "<span class='warning'>You aren't in your core!</span>")
|
||||
return
|
||||
if(M)
|
||||
M.transfer_ai(AI_MECH_HACK,src, usr) //Called om the mech itself.
|
||||
M.transfer_ai(AI_MECH_HACK, src, usr) //Called om the mech itself.
|
||||
|
||||
else if(href_list["faketrack"])
|
||||
var/mob/target = locate(href_list["track"]) in GLOB.mob_list
|
||||
|
||||
@@ -23,18 +23,33 @@ var/datum/paiController/paiController // Global handler for pAI candidates
|
||||
var/askDelay = 10 * 60 * 1 // One minute [ms * sec * min]
|
||||
|
||||
/datum/paiController/Topic(href, href_list[])
|
||||
|
||||
var/datum/paiCandidate/candidate = locateUID(href_list["candidate"])
|
||||
|
||||
if(candidate)
|
||||
if(!istype(candidate))
|
||||
message_admins("Warning: possible href exploit by [key_name(usr)] (paiController/Topic, candidate is not a pAI)")
|
||||
log_debug("Warning: possible href exploit by [key_name(usr)] (paiController/Topic, candidate is not a pAI)")
|
||||
return
|
||||
|
||||
if(candidate.key && usr.key && candidate.key != usr.key)
|
||||
message_admins("Warning: possible href exploit by [key_name(usr)] (paiController/Topic, candidate and usr are different mobs)")
|
||||
log_debug("Warning: possible href exploit by [key_name(usr)] (paiController/Topic, candidate and usr are different mobs)")
|
||||
return
|
||||
|
||||
if("signup" in href_list)
|
||||
var/mob/dead/observer/O = locate(href_list["signup"])
|
||||
if(!O) return
|
||||
if(!O)
|
||||
return
|
||||
if(!(O in GLOB.respawnable_list))
|
||||
to_chat(O, "You've given up your ability to respawn!")
|
||||
return
|
||||
if(!check_recruit(O)) return
|
||||
if(!check_recruit(O))
|
||||
return
|
||||
recruitWindow(O)
|
||||
return
|
||||
|
||||
if(href_list["download"])
|
||||
var/datum/paiCandidate/candidate = locate(href_list["candidate"])
|
||||
var/obj/item/paicard/card = locate(href_list["device"])
|
||||
if(card.pai)
|
||||
return
|
||||
@@ -59,7 +74,6 @@ var/datum/paiController/paiController // Global handler for pAI candidates
|
||||
usr << browse(null, "window=findPai")
|
||||
|
||||
if(href_list["new"])
|
||||
var/datum/paiCandidate/candidate = locate(href_list["candidate"])
|
||||
var/option = href_list["option"]
|
||||
var/t = ""
|
||||
|
||||
@@ -183,28 +197,28 @@ var/datum/paiController/paiController // Global handler for pAI candidates
|
||||
|
||||
<table>
|
||||
<tr class="d0">
|
||||
<th rowspan="2"><a href='byond://?src=[UID()];option=name;new=1;candidate=\ref[candidate]'>Name</a>:</th>
|
||||
<th rowspan="2"><a href='byond://?src=[UID()];option=name;new=1;candidate=[candidate.UID()]'>Name</a>:</th>
|
||||
<td class="desc">[candidate.name] </td>
|
||||
</tr>
|
||||
<tr class="d1">
|
||||
<td>What you plan to call yourself. Suggestions: Any character name you would choose for a station character OR an AI.</td>
|
||||
</tr>
|
||||
<tr class="d0">
|
||||
<th rowspan="2"><a href='byond://?src=[UID()];option=desc;new=1;candidate=\ref[candidate]'>Description</a>:</th>
|
||||
<th rowspan="2"><a href='byond://?src=[UID()];option=desc;new=1;candidate=[candidate.UID()]'>Description</a>:</th>
|
||||
<td class="desc">[candidate.description] </td>
|
||||
</tr>
|
||||
<tr class="d1">
|
||||
<td>What sort of pAI you typically play; your mannerisms, your quirks, etc. This can be as sparse or as detailed as you like.</td>
|
||||
</tr>
|
||||
<tr class="d0">
|
||||
<th rowspan="2"><a href='byond://?src=[UID()];option=role;new=1;candidate=\ref[candidate]'>Preferred Role</a>:</th>
|
||||
<th rowspan="2"><a href='byond://?src=[UID()];option=role;new=1;candidate=[candidate.UID()]'>Preferred Role</a>:</th>
|
||||
<td class="desc">[candidate.role] </td>
|
||||
</tr>
|
||||
<tr class="d1">
|
||||
<td>Do you like to partner with sneaky social ninjas? Like to help security hunt down thugs? Enjoy watching an engineer's back while he saves the station yet again? This doesn't have to be limited to just station jobs. Pretty much any general descriptor for what you'd like to be doing works here.</td>
|
||||
</tr>
|
||||
<tr class="d0">
|
||||
<th rowspan="2"><a href='byond://?src=[UID()];option=ooc;new=1;candidate=\ref[candidate]'>OOC Comments</a>:</th>
|
||||
<th rowspan="2"><a href='byond://?src=[UID()];option=ooc;new=1;candidate=[candidate.UID()]'>OOC Comments</a>:</th>
|
||||
<td class="desc">[candidate.comments] </td>
|
||||
</tr>
|
||||
<tr class="d1">
|
||||
@@ -215,17 +229,17 @@ var/datum/paiController/paiController // Global handler for pAI candidates
|
||||
<table>
|
||||
<tr>
|
||||
<td class="button">
|
||||
<a href='byond://?src=[UID()];option=save;new=1;candidate=\ref[candidate]' class="button">Save Personality</a>
|
||||
<a href='byond://?src=[UID()];option=save;new=1;candidate=[candidate.UID()]' class="button">Save Personality</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="button">
|
||||
<a href='byond://?src=[UID()];option=load;new=1;candidate=\ref[candidate]' class="button">Load Personality</a>
|
||||
<a href='byond://?src=[UID()];option=load;new=1;candidate=[candidate.UID()]' class="button">Load Personality</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table><br>
|
||||
<table>
|
||||
<td class="button"><a href='byond://?src=[UID()];option=submit;new=1;candidate=\ref[candidate]' class="button"><b><font size="4px">Submit Personality</font></b></a></td>
|
||||
<td class="button"><a href='byond://?src=[UID()];option=submit;new=1;candidate=[candidate.UID()]' class="button"><b><font size="4px">Submit Personality</font></b></a></td>
|
||||
</table><br>
|
||||
|
||||
</body>
|
||||
@@ -336,7 +350,7 @@ var/datum/paiController/paiController // Global handler for pAI candidates
|
||||
</tr>
|
||||
</table>
|
||||
<table class="download">
|
||||
<td class="download"><a href='byond://?src=[UID()];download=1;candidate=\ref[c];device=\ref[p]' class="button"><b>Download [c.name]</b></a>
|
||||
<td class="download"><a href='byond://?src=[UID()];download=1;candidate=[c.UID()];device=\ref[p]' class="button"><b>Download [c.name]</b></a>
|
||||
</td>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
@@ -412,7 +412,7 @@
|
||||
..()
|
||||
|
||||
/mob/living/simple_animal/bot/ed209/proc/set_weapon() //used to update the projectile type and firing sound
|
||||
shoot_sound = 'sound/weapons/laser.ogg'
|
||||
shoot_sound = 'sound/weapons/Laser.ogg'
|
||||
if(emagged == 2)
|
||||
if(lasercolor)
|
||||
projectile = /obj/item/projectile/beam/disabler
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
icon_state = "pirateranged"
|
||||
icon_living = "pirateranged"
|
||||
icon_dead = "piratemelee_dead"
|
||||
projectilesound = 'sound/weapons/laser.ogg'
|
||||
projectilesound = 'sound/weapons/Laser.ogg'
|
||||
ranged = 1
|
||||
rapid = 1
|
||||
retreat_distance = 5
|
||||
|
||||
@@ -31,6 +31,11 @@
|
||||
if(..())
|
||||
return 1
|
||||
|
||||
if(usr != owner && !check_rights(R_ADMIN))
|
||||
message_admins("Warning: possible href exploit by [key_name(usr)] - failed permissions check in nano_module/law_manager/Topic")
|
||||
log_debug("Warning: possible href exploit by [key_name(usr)] - failed permissions check in nano_module/law_manager/Topic")
|
||||
return 1
|
||||
|
||||
if(href_list["set_view"])
|
||||
current_view = text2num(href_list["set_view"])
|
||||
return 1
|
||||
|
||||
@@ -140,7 +140,7 @@
|
||||
modifystate = -1
|
||||
origin_tech = "combat=1;materials=3;magnets=2;plasmatech=3;engineering=1"
|
||||
ammo_type = list(/obj/item/ammo_casing/energy/plasma)
|
||||
fire_sound = 'sound/weapons/laser.ogg'
|
||||
fire_sound = 'sound/weapons/Laser.ogg'
|
||||
usesound = 'sound/items/Welder.ogg'
|
||||
toolspeed = 1
|
||||
container_type = OPENCONTAINER
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
item_state = "honker"
|
||||
max_charges = 4
|
||||
recharge_rate = 8
|
||||
fire_sound = 'sound/items/airhorn.ogg'
|
||||
fire_sound = 'sound/items/Airhorn.ogg'
|
||||
|
||||
/obj/item/gun/magic/staff/focus
|
||||
name = "mental focus"
|
||||
|
||||
@@ -22,6 +22,8 @@
|
||||
/obj/item/gun/projectile/automatic/attackby(var/obj/item/A as obj, mob/user as mob, params)
|
||||
. = ..()
|
||||
if(.)
|
||||
if(alarmed) // Did the empty clip alarm go off already?
|
||||
alarmed = 0 // Reset the alarm once a magazine is loaded
|
||||
return
|
||||
if(istype(A, /obj/item/ammo_box/magazine))
|
||||
var/obj/item/ammo_box/magazine/AM = A
|
||||
@@ -33,6 +35,8 @@
|
||||
magazine = null
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You insert the magazine into \the [src].</span>")
|
||||
if(alarmed)
|
||||
alarmed = 0
|
||||
user.remove_from_mob(AM)
|
||||
magazine = AM
|
||||
magazine.loc = src
|
||||
|
||||
Reference in New Issue
Block a user