mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-23 03:57:13 +01:00
Merge remote-tracking branch 'refs/remotes/ParadiseSS13/master' into toxinstechdisk
This commit is contained in:
@@ -257,7 +257,7 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 0)
|
||||
suit = /obj/item/clothing/suit/storage/internalaffairs
|
||||
shoes = /obj/item/clothing/shoes/brown
|
||||
l_ear = /obj/item/radio/headset/headset_sec/alt
|
||||
glasses = /obj/item/clothing/glasses/hud/security/sunglasses
|
||||
glasses = /obj/item/clothing/glasses/hud/security/sunglasses/read_only
|
||||
id = /obj/item/card/id/security
|
||||
l_pocket = /obj/item/laser_pointer
|
||||
r_pocket = /obj/item/flash
|
||||
|
||||
@@ -998,7 +998,7 @@
|
||||
to_chat(user, "<span class='warning'>You flip the switch on the underside of [src].</span>")
|
||||
active = 1
|
||||
visible_message("<span class='notice'>[src] softly beeps and whirs to life!</span>")
|
||||
playsound(src.loc, 'sound/machines/defib_SaftyOn.ogg', 25, 1)
|
||||
playsound(src.loc, 'sound/machines/defib_saftyOn.ogg', 25, 1)
|
||||
atom_say("This is ship ID #[rand(1,1000)] to Orion Port Authority. We're coming in for landing, over.")
|
||||
sleep(20)
|
||||
visible_message("<span class='warning'>[src] begins to vibrate...</span>")
|
||||
|
||||
@@ -148,7 +148,7 @@
|
||||
selection = available[selected]
|
||||
updateUsrDialog()
|
||||
if("horn")
|
||||
deejay('sound/items/airhorn2.ogg')
|
||||
deejay('sound/items/Airhorn2.ogg')
|
||||
if("alert")
|
||||
deejay('sound/misc/notice1.ogg')
|
||||
if("siren")
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/obj/machinery/door
|
||||
name = "door"
|
||||
desc = "It opens and closes."
|
||||
icon = 'icons/obj/doors/Doorint.dmi'
|
||||
icon = 'icons/obj/doors/doorint.dmi'
|
||||
icon_state = "door1"
|
||||
anchored = TRUE
|
||||
opacity = 1
|
||||
|
||||
@@ -80,7 +80,7 @@
|
||||
else if(glass)
|
||||
user.visible_message("<span class='warning'>[user] bangs on \the [src].</span>",
|
||||
"<span class='warning'>You bang on \the [src].</span>")
|
||||
playsound(get_turf(src), 'sound/effects/Glassknock.ogg', 10, 1)
|
||||
playsound(get_turf(src), 'sound/effects/glassknock.ogg', 10, 1)
|
||||
|
||||
/obj/machinery/door/firedoor/attackby(obj/item/C, mob/user, params)
|
||||
add_fingerprint(user)
|
||||
|
||||
@@ -516,7 +516,7 @@
|
||||
energy_drain = 30
|
||||
origin_tech = "materials=3;plasmatech=4;engineering=3"
|
||||
projectile = /obj/item/projectile/plasma/adv/mech
|
||||
fire_sound = 'sound/weapons/laser.ogg'
|
||||
fire_sound = 'sound/weapons/Laser.ogg'
|
||||
|
||||
/obj/item/mecha_parts/mecha_equipment/weapon/energy/plasma/can_attach(obj/mecha/M as obj)
|
||||
if(istype(M, /obj/mecha/working))
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
desc = "Damn son, where'd you find this?"
|
||||
icon_state = "air_horn"
|
||||
origin_tech = "materials=4;engineering=4"
|
||||
honk_sounds = list('sound/items/airhorn2.ogg' = 1)
|
||||
honk_sounds = list('sound/items/Airhorn2.ogg' = 1)
|
||||
|
||||
/obj/item/bikehorn/golden
|
||||
name = "golden bike horn"
|
||||
|
||||
@@ -245,6 +245,7 @@
|
||||
new /obj/item/restraints/handcuffs(src)
|
||||
new /obj/item/melee/baton/loaded(src)
|
||||
new /obj/item/clothing/glasses/sunglasses(src)
|
||||
new /obj/item/clothing/glasses/hud/security/sunglasses/read_only(src)
|
||||
new /obj/item/clothing/glasses/hud/health/health_advanced
|
||||
new /obj/item/clothing/head/beret/centcom/officer(src)
|
||||
new /obj/item/clothing/head/beret/centcom/officer/navy(src)
|
||||
|
||||
@@ -174,7 +174,7 @@ var/global/wcCommon = pick(list("#379963", "#0d8395", "#58b5c3", "#49e46e", "#8f
|
||||
user.changeNext_move(CLICK_CD_MELEE)
|
||||
user.visible_message("<span class='notice'>Something knocks on [src].</span>")
|
||||
add_fingerprint(user)
|
||||
playsound(src, 'sound/effects/Glassknock.ogg', 50, 1)
|
||||
playsound(src, 'sound/effects/glassknock.ogg', 50, 1)
|
||||
|
||||
/obj/structure/window/attack_hulk(mob/living/carbon/human/user, does_attack_animation = 0)
|
||||
if(!can_be_reached(user))
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -56,6 +56,20 @@
|
||||
-->
|
||||
<div class="commit sansserif">
|
||||
|
||||
<h2 class="date">12 December 2018</h2>
|
||||
<h3 class="author">Kyep updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="bugfix">Fixed a few things that should not be possible with pAIs and AIs.</li>
|
||||
</ul>
|
||||
<h3 class="author">Tayyyyyyy updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="rscadd">Read only sec hud for IAA and blueshield</li>
|
||||
</ul>
|
||||
<h3 class="author">name here updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="bugfix">Fixed Bulldog and C20 having their ammo alarms only go off once per gun.</li>
|
||||
</ul>
|
||||
|
||||
<h2 class="date">11 December 2018</h2>
|
||||
<h3 class="author">Alonefromhell updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
|
||||
@@ -8343,3 +8343,10 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py.
|
||||
- tweak: Display case burglar alarm no longer triggered if there's no power to equipment
|
||||
gangelwaefre:
|
||||
- tweak: Aesthetic changes to Lumi's custom sprites
|
||||
2018-12-12:
|
||||
Kyep:
|
||||
- bugfix: Fixed a few things that should not be possible with pAIs and AIs.
|
||||
Tayyyyyyy:
|
||||
- rscadd: Read only sec hud for IAA and blueshield
|
||||
name here:
|
||||
- bugfix: Fixed Bulldog and C20 having their ammo alarms only go off once per gun.
|
||||
|
||||
Reference in New Issue
Block a user