From 33b69df33062b2bd4d0fe5ef1b71e58c998d148e Mon Sep 17 00:00:00 2001 From: DZD Date: Wed, 11 Feb 2015 19:03:46 -0500 Subject: [PATCH 01/39] Objective bugfixes. - Should fix the assigning of the identity theft objectives - Fixes changelings greentexting identity theft when they shouldn't. - Possibly fixes AI name issue with destroy objective. --- code/datums/mind.dm | 16 ++++++++++++++-- code/game/gamemodes/changeling/changeling.dm | 4 ++-- code/game/gamemodes/objective.dm | 4 +++- 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 35733590f64..2cea7838cbf 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -580,10 +580,22 @@ datum/mind new_objective.target_amount = target_number if("identity theft") + var/list/possible_targets = list("Free objective") + for(var/datum/mind/possible_target in ticker.minds) + if ((possible_target != src) && istype(possible_target.current, /mob/living/carbon/human)) + possible_targets += possible_target.current + + var/new_target = input("Select target:", "Objective target") as null|anything in possible_targets + if (!new_target) + return + var/datum/mind/targ = new_target + if(!istype(targ)) + log_debug("Invalid target for identity theft objective, cancelling") + return new_objective = new /datum/objective/escape/escape_with_identity new_objective.owner = src - new_objective.find_target() - + new_objective.target = new_target + new_objective.explanation_text = "Escape on the shuttle or an escape pod with the identity of [targ.current.real_name], the [targ.assigned_role] while wearing their identification card." if ("custom") var/expl = copytext(sanitize(input("Custom objective:", "Objective", objective ? objective.explanation_text : "") as text|null),1,MAX_MESSAGE_LEN) if (!expl) return diff --git a/code/game/gamemodes/changeling/changeling.dm b/code/game/gamemodes/changeling/changeling.dm index 76d198d796f..914185a1b8b 100644 --- a/code/game/gamemodes/changeling/changeling.dm +++ b/code/game/gamemodes/changeling/changeling.dm @@ -120,9 +120,9 @@ var/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","Epsilon" var/datum/objective/escape/escape_with_identity/identity_theft = new identity_theft.owner = changeling identity_theft.target = kill_objective.target + identity_theft.target_real_name = kill_objective.target.current.real_name //Whoops, forgot this. if(identity_theft.target && identity_theft.target.current) - var/target_real_name = identity_theft.target.current.real_name - identity_theft.explanation_text = "Escape on the shuttle or an escape pod with the identity of [target_real_name], the [identity_theft.target.assigned_role] while wearing their identification card." + identity_theft.explanation_text = "Escape on the shuttle or an escape pod with the identity of [identity_theft.target_real_name], the [identity_theft.target.assigned_role] while wearing their identification card." else identity_theft.explanation_text = "Free objective" changeling.objectives += identity_theft diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm index e5157e50bd9..33d902b5ddf 100644 --- a/code/game/gamemodes/objective.dm +++ b/code/game/gamemodes/objective.dm @@ -745,12 +745,14 @@ datum/objective/absorb return 0 datum/objective/destroy + var/target_real_name find_target() var/list/possible_targets = active_ais(1) var/mob/living/silicon/ai/target_ai = pick(possible_targets) target = target_ai.mind if(target && target.current) - explanation_text = "Destroy [target.current.real_name], the experimental AI." + target_real_name = target.current.real_name + explanation_text = "Destroy [target_real_name], the AI." else explanation_text = "Free Objective" return target From f1bca4a471b3ab72ebb779903534bc1d24fcde28 Mon Sep 17 00:00:00 2001 From: DZD Date: Thu, 12 Feb 2015 19:54:46 -0500 Subject: [PATCH 02/39] Changeling Status Tab Update - Removes genetic damage time from Changeling status tab, as it no longer reflects genetic damage accurately (EG: some powers are capped at only below 20 genetic damage, others less). - Changeling status tabs shows the amount of genomes absorbed. --- code/modules/mob/living/carbon/human/human.dm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index ded2a3c949e..5f3fa3f4ac5 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -217,8 +217,8 @@ stat("Distribution Pressure", internal.distribute_pressure) if(mind) if(mind.changeling) - stat("Chemical Storage", mind.changeling.chem_charges) - stat("Genetic Damage Time", mind.changeling.geneticdamage) + stat("Chemical Storage", "[mind.changeling.chem_charges]/[mind.changeling.chem_storage]") + stat("Absorbed DNA", mind.changeling.absorbedcount) if (istype(wear_suit, /obj/item/clothing/suit/space/space_ninja)&&wear_suit:s_initialized) stat("Energy Charge", (wear_suit:cell:charge)) @@ -1161,14 +1161,14 @@ var/datum/organ/internal/lungs/L = internal_organs_by_name["lungs"] if(!L) return 0 - + return L.is_bruised() /mob/living/carbon/human/proc/rupture_lung() var/datum/organ/internal/lungs/L = internal_organs_by_name["lungs"] if(!L) return 0 - + if(!L.is_bruised()) src.custom_pain("You feel a stabbing pain in your chest!", 1) L.damage = L.min_bruised_damage From d23d8af7782d75f611bb3178ab9ea8e9c2939869 Mon Sep 17 00:00:00 2001 From: Tigercat2000 Date: Tue, 17 Feb 2015 18:04:31 +0100 Subject: [PATCH 03/39] Port of freeze mob verb from NSS Pheonix --- code/game/objects/effects/overlays.dm | 8 ++- code/modules/admin/admin_verbs.dm | 4 +- code/modules/admin/verbs/freeze.dm | 97 ++++++++++++++++++++++++++ icons/effects/effects.dmi | Bin 267473 -> 268857 bytes paradise.dme | 1 + 5 files changed, 108 insertions(+), 2 deletions(-) create mode 100644 code/modules/admin/verbs/freeze.dm diff --git a/code/game/objects/effects/overlays.dm b/code/game/objects/effects/overlays.dm index 1963e2fb29a..a040e460b2c 100644 --- a/code/game/objects/effects/overlays.dm +++ b/code/game/objects/effects/overlays.dm @@ -32,4 +32,10 @@ /obj/effect/overlay/coconut name = "Coconuts" icon = 'icons/misc/beach.dmi' - icon_state = "coconuts" \ No newline at end of file + icon_state = "coconuts" + +/obj/effect/overlay/adminoverlay + name = "adminoverlay" + icon = 'icons/effects/effects.dmi' + icon_state = "admin" + layer = 4.1 diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 01aae828579..84141e681c6 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -66,7 +66,9 @@ var/list/admin_verbs_admin = list( /client/proc/delbook, /client/proc/event_manager_panel, /client/proc/empty_ai_core_toggle_latejoin, - /client/proc/fax_panel + /client/proc/fax_panel, + /client/proc/freeze, + /client/proc/freezemecha ) var/list/admin_verbs_ban = list( /client/proc/unban_panel, diff --git a/code/modules/admin/verbs/freeze.dm b/code/modules/admin/verbs/freeze.dm new file mode 100644 index 00000000000..2e699fc1a83 --- /dev/null +++ b/code/modules/admin/verbs/freeze.dm @@ -0,0 +1,97 @@ +//////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////// +//////Freeze Mob/Mech Verb -- Ported from NSS Pheonix (Unbound Travels)///////// +//////////////////////////////////////////////////////////////////////////////// +//////Allows admin's to right click on any mob/mech and freeze them in place./// +//////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////// +/client/proc/freeze(mob/living/M as mob in mob_list) + set category = "Special Verbs" + set name = "Freeze" + if(!holder) + src << "Only administrators may use this command." + return + if(!mob) + return + if(!istype(M)) + alert("Cannot freeze a ghost") + return + if(usr) + if (usr.client) + if(usr.client.holder) + if (istype(M, /mob/living/carbon/slime)) + if(!M.paralysis) + M.adjustToxLoss(2147483647) + M.AdjustParalysis(2147483647) + var/adminomaly = new/obj/effect/overlay/adminoverlay + spawn(50) + M.overlays += adminomaly + M << "You have been frozen by [key]" + message_admins("\blue [key_name_admin(usr)] froze [key_name(M)]") + log_admin("[key_name(usr)] froze [key_name(M)]") + else if (M.paralysis) + M.AdjustParalysis(-2147483647) + M.blinded = 0 + M.lying = 0 + M.stat = 0 + M << " You have been unfrozen by [key]" + message_admins("\blue [key_name_admin(usr)] unfroze [key_name(M)]") + log_admin("[key_name(usr)] unfroze [key_name(M)]") + M.revive() + else + if(!M.paralysis) + M.AdjustParalysis(2147483647) + var/adminomaly = new/obj/effect/overlay/adminoverlay + spawn(50) + M.overlays += adminomaly + M << "You have been frozen by [key]" + message_admins("\blue [key_name_admin(usr)] froze [key_name(M)]") + log_admin("[key_name(usr)] froze [key_name(M)]") + else if (M.paralysis) + M.AdjustParalysis(-2147483647) + M.blinded = 0 + M.lying = 0 + M.stat = 0 + + M << " You have been unfrozen by [key]" + message_admins("\blue [key_name_admin(usr)] unfroze [key_name(M)]") + log_admin("[key_name(usr)] unfroze [key_name(M)]") + + +/client/proc/freezemecha(obj/mecha/O as obj in world) + set category = "Special Verbs" + set name = "Freeze Mech" + if(!holder) + src << "Only administrators may use this command." + return + var/obj/mecha/M = O + if(!istype(M,/obj/mecha)) + src << "\red This can only be used on Mechs!" + return + else + if(usr) + if (usr.client) + if(usr.client.holder) + var/adminomaly = new/obj/effect/overlay/adminoverlay + if(M.can_move == 1) + M.can_move = 0 + M.overlays += adminomaly + if(M.occupant) + M.removeVerb(/obj/mecha/verb/eject) + M.occupant << "You have been frozen by [key]" + message_admins("\blue [key_name_admin(usr)] froze [key_name(M.occupant)] in a [M.name]") + log_admin("[key_name(usr)] froze [key_name(M.occupant)] in a [M.name]") + else + message_admins("\blue [key_name_admin(usr)] froze an empty [M.name]") + log_admin("[key_name(usr)] froze an empty [M.name]") + else if(M.can_move == 0) + M.can_move = 1 + M.overlays -= adminomaly + if(M.occupant) + M.addVerb(/obj/mecha/verb/eject) + M.occupant << "You have been unfrozen by [key]" + message_admins("\blue [key_name_admin(usr)] unfroze [key_name(M.occupant)] in a [M.name]") + log_admin("[key_name(usr)] unfroze [M.occupant.name]/[M.occupant.ckey] in a [M.name]") + else + message_admins("\blue [key_name_admin(usr)] unfroze an empty [M.name]") + log_admin("[key_name(usr)] unfroze an empty [M.name]") diff --git a/icons/effects/effects.dmi b/icons/effects/effects.dmi index 17667aab4e9ed5aa84b9701a6105ee56b0e15ab3..5cfba55a6c9ce33450d649a3843bec877205d78a 100644 GIT binary patch delta 9217 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 B0v-SW delta 7822 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 Date: Tue, 17 Feb 2015 18:17:10 +0100 Subject: [PATCH 04/39] In accordance with MarkvA's recommendation, switches 'world' to 'mechas_list'. --- code/modules/admin/verbs/freeze.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/admin/verbs/freeze.dm b/code/modules/admin/verbs/freeze.dm index 2e699fc1a83..db8b9939252 100644 --- a/code/modules/admin/verbs/freeze.dm +++ b/code/modules/admin/verbs/freeze.dm @@ -58,7 +58,7 @@ log_admin("[key_name(usr)] unfroze [key_name(M)]") -/client/proc/freezemecha(obj/mecha/O as obj in world) +/client/proc/freezemecha(obj/mecha/O as obj in mechas_list) set category = "Special Verbs" set name = "Freeze Mech" if(!holder) From beae1bbe0fb164dd982272f6295ce89a14e4cb81 Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Wed, 18 Feb 2015 23:14:28 -0500 Subject: [PATCH 05/39] Mai Immershun The hills are filled with the sounds of mining --- code/modules/mining/mine_turfs.dm | 7 ++++--- sound/effects/break_stone.ogg | Bin 0 -> 35871 bytes sound/effects/shovel_dig.ogg | Bin 0 -> 13835 bytes 3 files changed, 4 insertions(+), 3 deletions(-) create mode 100644 sound/effects/break_stone.ogg create mode 100644 sound/effects/shovel_dig.ogg diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm index b315ae31e5b..a5673af8517 100644 --- a/code/modules/mining/mine_turfs.dm +++ b/code/modules/mining/mine_turfs.dm @@ -279,6 +279,7 @@ M.apply_effect(25, IRRADIATE) var/turf/simulated/floor/plating/airless/asteroid/N = ChangeTurf(/turf/simulated/floor/plating/airless/asteroid) + playsound(src, 'sound/effects/break_stone.ogg', 50, 1) //beautiful destruction N.fullUpdateMineralOverlays() if(rand(1,750) == 1) @@ -434,7 +435,7 @@ return user << "\red You start digging." - playsound(loc, 'sound/effects/rustle1.ogg', 50, 1) //russle sounds sounded better + playsound(src, 'sound/effects/shovel_dig.ogg', 50, 1) //FUCK YO RUSTLE I GOT'S THE DIGS SOUND HERE sleep(40) if ((user.loc == T && user.get_active_hand() == W)) @@ -451,7 +452,7 @@ return user << "\red You start digging." - playsound(loc, 'sound/effects/rustle1.ogg', 50, 1) //russle sounds sounded better + playsound(src, 'sound/effects/shovel_dig.ogg', 50, 1) //FUCK YO RUSTLE I GOT'S THE DIGS SOUND HERE sleep(30) if ((user.loc == T && user.get_active_hand() == W)) @@ -468,7 +469,7 @@ return user << "\red You start digging." - playsound(loc, 'sound/effects/rustle1.ogg', 50, 1) //russle sounds sounded better + playsound(src, 'sound/effects/shovel_dig.ogg', 50, 1) //FUCK YO RUSTLE I GOT'S THE DIGS SOUND HERE sleep(0) if ((user.loc == T && user.get_active_hand() == W)) diff --git a/sound/effects/break_stone.ogg b/sound/effects/break_stone.ogg new file mode 100644 index 0000000000000000000000000000000000000000..711fd50d482cb6d493396ede7776635e03a5c797 GIT binary patch literal 35871 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%0AGq0*XTUW6+!AZa-u zpna!&4$8m{0Tv9O^#3O`z@z`i75Y6E;n3=np>o{u+!g^CYh!B(3_TGb{1f}hX8ULbfY3#Ik zokC#76}|uvqnqXzx_7~u>&l(OH?O)@HY*1u?I#P(lHShA5l>2X!{kXVJCHUse<5&P zd$R=t(=L_1bKlwtX48M{B{2T!VsXG7<2I@{MzKvoSxF;xwdnhMPnT-g(xmEdG2CKK z#-M_EYlR>?SEKNs{VQc(i`OTb5ctZWZqYUyQ9);H``W+c{TY-seVh3|GFpp?CsLkW z{+Vzn3aIAdnI_QT_i17PHH7DZu*kWFcWg_rGl#BFfUSlC4>Tz{*6m2;Zij|6gpfKaNjzD@OfG1eH9h)k#``%S0+z!9%z@kGqTC1w zGC?AzUK_mrqNVM4+Iixj9b=XsuEwV-VY=zT2Ex9ZGMHohsLd?)E8z9wAh=kFaJoi$ zdz3O~*GCLC{_2I)KS>XFj7SixQ)R+E|JDqO>KcDESHk%uW~$JwWYnH3X0A3*159m$#9-Vq?=l(XVAbz4}*_-3i&VB}hsAD)7pl6@xiH=YzW1#-j zmZAz?4-Mv35$&@H&fl%NI&{Tv{Wh00_G^;zyOdv=WyY;0uN!;rNx1|P%`{f?xL%)O z0S`_UcQO+{#NS7r^`4pgyc85#WG6(i-$nJP{G@~oodMwDi*M%CGgoE#x4eVprrnO4 zCv=+2Q_WZRJJ{mehIatippj8UplB~^7-BQ^M2d4_$x@og!|tG!86P0S!Tp2JwjvM{ ztZSE#s;K*fXIYV*I?~CU5?A>VDKBV;U+oO^b;v+3-1J1T2?^7t!kHq7Z2jy58uxKP;vF%(%hN_cEG>-p^2Vn z__sNu1&{{cq9&>R&0wDSV1!Emo_Y5**Ya`~x;GsS7g7$|9qFSn?O)pluWI-1LeJc! zI*fdjvQ++_jQXw}7+-2^ffJ*_m2AivI4>NXm6>-Tp}v<|4?m0u9{$icRQa_@3cdOt zQ+WETM{y$h<-5GjJi^Yf(t; z-@m-C<&z;*P{)n`dq5Y&{%NV50*2Jc6R`%P2L&JH>v?#+7NQ`6-cveHYgK=tL7Vd0 zkhyLU>LarR2EMsQD+9RI*(n=8aGrhdt*(ak@Sf_&36yOk&E>g7noKY(Kn~WZ$k_Wsk`Z!`W}6!8 zAwN`n$^A@2e2V3jb`JEBJ%Sn?6M~GWYEVJK1vzW@XfBSaAa$q{EV}c+3)?ODy4$cy z?!irz&^oKn2Be&E7_f+O4lz={X0RP0A($cmGIu|eAoIN(hbKj^K^J>W?>v@$>vJtZ z{RT%#6st6DmX}P(^*5SICK^3f*CzzqP}# zxV4IXd}Q5jKn+LVotlTU&&5B?ih6`48sL}RHby)YoCBf>rlz;{I-wV<+xltvgbsFV zWA(;Wwb#-7C-tmzx<$tZb_wXiN7HRT{@x=lwZRIDsh0v0eZ zFpFgN@(l~i{%(WtRC#hfKh%N>M>cQi;9y@Hi3iQo%TEMAoabcq$_+l5S(hfJt>>wm z6BALUA*O22&D;OIY-GVcQ)-XUQnh$VQ#n%|-^hzTdy{(nM*<~i{N+#0(U$PE#uk&MW{y1%s1CocdX(ZYa&NIXC6bma{{O0saxnpCdiEmAf+QI$fcbeZBD2$l)+K6{0j|n4N zt+4W19##6@hyV6tqWHA3K`sZ<-clbhlI+kSoKqmLM*4o=`><%O_e!W{Dkk~!7=0Xa zr{#H*;w&3wTF-&ii&S4Z=_7&zGYs55548=9EWIiUQ9LatKD$QQ%`VL5zX`nAySN*R z5(4M1O1$0QG0hq?+~p|DCB&U9#S@+ngXWqDXjr?`c%4)UOmy;McUnI1JoAz?Z69YW z@#bNam1H5P%5uiLt?9$Q@*sN4lm@lLVA2ka#ACq6Z4Zndm4I2py}$3IAxO1I@H?=T?_F-W^0jXkX4|?(Y`1oFm>^ zZ*~Ubg+W&sl(9`3hU`%W=l{WP)kPycA;Mx!+%4|w;#^Pd@zm}TzSv(73gLv=&$SbD zr@WVaK$@r9`ep3r&BDSJrvO5cv$yN?CShtxiS3m4ykXnLBcG^_$d0wB&gEJX#W*u^ z7G()x8LA4Od}^FiT_4>)H`PcBarR!QI^F>Bo^GTjbCUx23+R8TM3ZCB;t#u~yzR-x zQt-L4()26<3j>^@Z5>O?6;|iwi`lW3%0Kzr_zOF|l&5NQe*5gm0R&(?Vyy7nhR8h; zP8#vd!y|BqFk0#&9nG%&_~QLL=x*qT=0>=NQBuMNM%CB6@?QGUJM05|L=fyz7Y124 zoz{m5Ud6b$ZrXg#PKkIk^>5oq$yKu5NFI}65jc8MgM&9VfQ~W4MmZW#0pdM3mv_u9 zyf!1c4NFw)6^UfawMt`j$|Q<~;xxnVfO!RkI%4~rn^P~Sjpr)#ky%O)rw)RFYy@*a zcWgl1kfo6GH0*~)(++Y6#Pl3h zy)<6iFM`FlwVzFS(yN?)S%LLC^KaNZw$C{mJRyrM0dpm5(jCe50@A0T*oF~Vx?p1w zzQ0c%@YXF%P?*H6K&^!$Mu#4#umFT~Otu#OUNmCaH%U7uV1%1lvvr%B*Sz(5n8>Rh z@n631ZSalQMqscSQ`kHsld;C4gPAw-c#&i%!&Vj*rXIRkrcr6=q63!;r9fhcUrq5Y zdjmY{;{W*r;J}f8`O;G2b(d8VJQV3PQz^K=hF;5ZPCGV*fus+m&<%msW< zN3xA`b0m<gC9@s2<7LreexUxqLtmkYcq1aa zjL+n&yTB>UTM?hoj&Q$&&8HS6elU^ik~6?R$I5+m#`%WvWEOH0&4R)6HDBKz>=XHP z7c0mVr#^fVuN7=1=N1>A0sn_M=lfcs`4atmwHs2sXh#ADiOIW^m#2S6Q>P^yT1Y8n z%u^sk1rrl>9+pWX5i07KYR!jcOJRxN-=e{A(OUFfROn!tw4qNEDfYVFe)X;Sk3s*(KnLQDR68!K2OFbHmQs)Awp?`EFHx z8x$;4Q;xI5xt1{)+2rcfjQ#Meq0fRxOoK4yL+HuFTIBvs%n4bwCM`4myQvWcPt^mj z<3*lWWbGxb1SCbBYO6LD1x4XO6*~V4ct3Y`9i73s`F+|&{+CPI@2*xxE#`%z%TsLi zana}ePhm}VPMJgDyhL1vV;>{-R?l#$0fPaw2`Y%aL#>@9?E#J(iO;->ezM^>^Hbxn zB_FD`zmCMX!czri8iA@ouiLo-W2w&`Fq!S_DEJ#cyN=8|G0CKuD@t=m);B6fOt0IgGIij7Ni8;mesvu?wd)wOyQ z2!_zOx{qlQFF)i3UU4+M8<+okHLbUi+Qw3Hv81TquF(d z={bg6n7$OLOM$)f%=A#lLILOWGm}Ddmo;=!EaX9MKM&?R2e3aPK zeS_w#aqY0c>xWdhd=8`U=Hx%m#B^8j3`R#SuCZkqW-W-Jr(^DX5a_7=HD_w$(IalL zN%VBYF6y9rY|IUH*=rV~}T>(<^=2jD~wVC8SKUiS)j?d~t{v$FQ(tIS**!jz(33 z9R98=K|?eHj7n!USyv09LI)<~(WHKEn0XHrS&>APa}H;x%5TeH9t(k*LI+<5+ESC4 zc!#cr1(&{EgICPIu6QO+lizJnHLcX(e?9K6p-y^F8V|n$C3o>%#|Jk6u&VY+)})IHCu>u72pY^?LHPpaX#DctzH86#u9 z(AY2VQv1R^&2qW43 zo({b0eCz7nfP90vVyApmc4z|!j)x$h=elK|o9q+idYiLJLDMqRX8~;@`}ibnP)&uh^Zv=||hj$OIKMhNk}JzJDPy*o&XKGTHsu5I1od;uy-g=J6z1pz>iU zWQH|pVbfDa#NN$~SYVHxMZ~Yw2bFNe@!#XGSvC_t(he*Hj$VJ24pp4_iJpli-lnU; z)!tD4G~3RmbwJ<7Gg;CvF?mW*X;%;sH{K&JZ+*#oV5+jYk1;XNLi&v$ufT z(EE;d^nAGoyThyd#fgaPN~*&z3pG^EW~2A%)BwPZ^bKeKcO-wkIE+nL1ru6dFbO}8 zXZR0Pfm-p|6K&;P(NfIl`V|XwPe)wQ6!d`YdL52QSi$;jGnNy#zpue+28HskwC~0+ z&6t80GN}9@0|0m2o>5l5S#jjRz%U6|NPFQ{2*WK{PC|Q3v5Umr<=X~H{8)Wlj5lJ z;{h7Jq34VjW;u`KtE*Bwi|6r6b0l`1XR|)_;6l5rQ1E<}XE@mKCphKhW#R`9uH! z#2L{G@U2bwcHe%KLmf;WIy9BoTj>03JO%pH9bJz|ObS46EikS!{+|8@0>l;dhX--7 z4~j*#iVJ|$@$%bXNW#V>{5mDne$4eD-&StQ{C$*E2o-bV%s+_G0UBmR-1cqLVL6%; z7Wya8ui>h%x;vs)3m|)}=(9798NjkLHEh%r)Y>aQrBVI4_0t2#4?S=*^PtssCe_R% z*Sy&+h3z)a^X$BMtf$$N!C!F!a7RtcWr)1wUWrw6`6V?`!>o*orIe!W4LO8n4?I&7 z6!q@Cv95sf?>q;*fENhROpEyz)CvBG^Y1quO0>;Yolg(vbfteC!Zd`>+O8F5%PhT= z>Z{?aTWfg$Us;5M<2)SP9A1-R=Xq@4R=Ut^mj`oNw0x$Rp;eo zC71#9pWCkI`}kGb2NQc=e|qrY~aCW&x5vdyUK1oZ*|BDC7Q*W*&fd}-%QwH!C@13^pZLmci`uS zR!yo4q1~2#5Xy|05)C#rXJyf7!L^A~j3`PZgL5Y_58Uet=~VVcq$D2xWo)=d%E=7} zq~}+=$ zuK#CTcTYu(>yMooLxv$~wr89#z~DA9+GxB*-ga2dxh|dO{Giw@p;Xz2I6%QHJhpuq zQD+05WxU6JUjzVfY~y&hkq+opC9#ZltN<|i()Re#Uv@8Y+rLP&9xojuwXR&b2m`D3^<}y?gl?&I%TG%vvcWAb@;&@8Hsqsvm9}yXF zSG^`p2{GZZIc79H?#6mbX&vJdc@A`DX(MuPTd||Hd8fwi*^S~82B{BkB&`LHeD*@d zxMYPZg)l!G1p3khwYL_$^e0UX0*n{unyXQMST?hj_i0h^4Em#PoZY zc3gEw(Q3%PuBk_Xo-)!w3`*NjrVTPbj?)+Ud|Nz=#BQ~3 zA}!EQ!RiftiMY&fOMcoq<8gY?epk#EB~{(Ot5^D1Nq8X+G9!AK%XC~IQ!i=m9;01{ z`g|4$9#Ovg+ukv5z4@=tuL{9+ZW-e>haDg*GAii1;)ngDCU)&YWnQEyz&^^#kks-- z5Pp+X7i`1<=2iSIOp+}D-evsvEMJ-eHUK6BngSpI003^M+x`HM@8s7246n&6pSQ?s Lc;pP=H_#^l)@fHG literal 0 HcmV?d00001 diff --git a/sound/effects/shovel_dig.ogg b/sound/effects/shovel_dig.ogg new file mode 100644 index 0000000000000000000000000000000000000000..c0b459066a0a9e1ec5bc82cd3859e640006ede39 GIT binary patch literal 13835 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 h?7oyWeIUrXAD?m9ckRlij`~ Date: Thu, 19 Feb 2015 06:44:20 -0500 Subject: [PATCH 06/39] Fire Hot! Adds new color coded fires, determined by the temperature of the air. This will allow you to roughly approximate the temperature of fires even from the other side of walls based on their glow. In order from coolest to hottest (all temperatures are in Kelvin): - "Black fire": Below 75K - Red fire: Between 75K and 1100K - Orange fire: Between 1100K and 1300K - Yellow fire: Between 1300K and 1500K - White fire: Between 1500K and 1800K - Cyan fire: Between 1800K and 5300K - Blue fire: Between 5300K and 7150K - Dark Blue / Purple fire: Between 7150K and 9000K - "Rainbow Fire": Over 9000K Due to some issues with sprite editing, I temporarily disabled the use of 2/3 of the fire tile sprites until I can properly update them while maintaining their transparent portions. Until this is done,, all fires will use the highest firelevel sprite set. --- code/ZAS/Fire.dm | 40 +++++++++++++++++++++++++++++++++++++--- icons/effects/fire.dmi | Bin 279579 -> 274789 bytes 2 files changed, 37 insertions(+), 3 deletions(-) diff --git a/code/ZAS/Fire.dm b/code/ZAS/Fire.dm index 6ab559732b4..dfc78987eb3 100644 --- a/code/ZAS/Fire.dm +++ b/code/ZAS/Fire.dm @@ -66,11 +66,42 @@ turf/simulated/hotspot_expose(exposed_temperature, exposed_volume, soh) icon = 'icons/effects/fire.dmi' icon_state = "1" - l_color = "#ED9200" + l_color = "#010000" layer = TURF_LAYER var/firelevel = 10000 //Calculated by gas_mixture.calculate_firelevel() +/obj/fire/proc/GenColor(var/datum/gas_mixture/ac) + var/temperature = ac.temperature + //All temperatures are in Kelvin for the color assignment + if(temperature > 9000) + //rainbow, wtf? + l_color = pick("#0092ED", "#EDEDED", "#ED9200", "#ED00ED", "#0000ED", "#010000", "#00EDED", "#EDED00", "#ED0000") + else if(temperature >= 7150) + //dark blue + l_color = "#0000ED" + else if(temperature >= 5300) + //blue + l_color = "#0092ED" + else if(temperature >= 1800) + //cyan + l_color = "#00EDED" + else if(temperature >= 1500) + //white + l_color = "#EDEDED" + else if(temperature >= 1300) + //yellow + l_color = "#EDED00" + else if(temperature >= 1100) + //orange + l_color = "#ED9200" + else if(temperature >= 75) + //red + l_color = "#ED0000" + else + //black fire, go atmos! + l_color = "#010000" + /obj/fire/process() . = 1 @@ -114,10 +145,10 @@ turf/simulated/hotspot_expose(exposed_temperature, exposed_volume, soh) icon_state = "3" SetLuminosity(7) else if(firelevel > 2.5) - icon_state = "2" + icon_state = "3" SetLuminosity(5) else - icon_state = "1" + icon_state = "3" SetLuminosity(3) //im not sure how to implement a version that works for every creature so for now monkeys are firesafe @@ -130,6 +161,9 @@ turf/simulated/hotspot_expose(exposed_temperature, exposed_volume, soh) // Burn the turf, too. S.fire_act(air_contents, air_contents.temperature, air_contents.return_volume()) + //Update color of the fire + src.GenColor(air_contents) + //spread for(var/direction in cardinal) var/turf/simulated/enemy_tile = get_step(S, direction) diff --git a/icons/effects/fire.dmi b/icons/effects/fire.dmi index 9e5c0d2db8346ef360fd3404e4b940cd2ea081ba..da0f4c6271aad549bf4c5eb0acaca9e13cb3e4ff 100644 GIT binary patch literal 274789 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 z�BymBM_f4S$aZTcweW#HKfGVA56=Dyq!^@Ix`Ky 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 ZSB$~WQG`7(yWrlag73td`A$lzyTT7 z$Wu|8jtK-Y^BKsBU_rYyDR4ks9S%sVV}V9UFsRq8NnA;;lcQ_C_Y zJV=+nWuHrkw<+)uF5q$Vu^7}Ng2j_)uw?xz}2P5-lZcF_E5wE^t$gm&~JV3ngxwN6;=G>!9big?uO!g>LbE-;rgPC(I&zHt z5reG36^3Y0Wi+DOK5)00j(`>i(O~-)A9O>%0DK>8H~RMmr~z;5DPWUzay&^ElsAI2 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

C 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

-hAV~1X{B)QE1lg!Xhlzu!q zQpBSWJ&1EGGsX~a=#i#1qw)e==s<09q$x5?f+#urfr=DW(MQbT7_#%u)4NBU(_UwX zGHvQ?7!eFU7SWOh0&wHlH^FSZyC)Kp$NR>eh=Jd z8Ptk8_7)x5GS1LulYmu@@d`2i2P*up9MH!xqMA1Eg%84)IS=|;Xath@sPcGd@SFOu z__>Kskq4=1gu4vsw{#c!mqSN|!O>im;6+05OJX@$;+!JCqrvWppHlD>vwugF6<$DGH~Uo+1UQ}vxC^s-GK)3k{&MVH&Gkak%P&38d{&Fcxo z@T{Ug5UL2<<-SV#2*tZ1( z$a)yrKLHd2Xb`7j-dGA>uUe7c^L}8L5l-1SgZ3A6^)fB~h#t-<=5Eu}h7vBKC}VQ$ zkmSB{JZ`HVj$;*gQ!PECGF$d6T~J%!V?y7d#vv_E3mp!^9Xb}(VCJm00 zC+Z+ZUTa4a6iN^arpR}Pd8zx54l7JC%tZsl+Xvy9Pq0ac1FDqmiUL*XFvaWSL%d*(2t^X~k>DL4c{3}B6444NmDp8{ z8jDQw7(T08#0QG^!tW`Ewx9#NMZh*Gj*;MM$SV4zh1^1l5u-#*5ge;3sGrw#OS|+j zNLk{53?1dk5GBG5TjDeBt`2RAC3cl(j2TQZT5Ph4@fcD3x&ILaXMc&aq(Z}d$aMmG zRWUTBuQSCwdEij5@DV=AiY+NnjDQDpxJf4*A!<>#cl8am`6@Gf*4E@@B{zWx7g^(X zc*qOH@$H%!Jm#qIpqab|=WV~eoCNY*XHUPyl6}-(*J(AFr9_gEaKrY2X*|3H(4l2l z-L?YW!SU}H)g*6IVVFxa`4%G#s7*h^crAn75PrA-4G0jy1 z<~YWeXzMh2{Ce-<3$F!(>lj7t5aT*4#2F`v@u7OxIDWvbB9T{vL zXp$rruC4efmN~_{s`9q`u8v!Yh`yo6?M3>9Wep?eY|v4WceSE_WMljT9nxTzCS`WDY7eZYswS0FN+HdH`N;c7sNh$&Am5e(Q+oeoJ#L6mx^zgxnK$(TY)X?K(vPAlfhBn>X|D#P4mn!m#vKo?_% zO-h_6#VL-3vkx2Qi|WD$U(W;YhMD%ZAWfT`tJ5Y%(|lWCG&D+=@mb*Gf}-c?DSh;d@H-EnpGdCqmFXfi}X8R|Btie1$W1}rMLE>s|6#c&cfpslk05f%Oc-?lM^ zoR7MHh^J%80eN;=qfL=~hy>)RX^*60?3?s~67-P5z&0ppx)Y;-F~J~X9MVrOQxvIU zoaY)1;)-@3BTkeuUFzg48Q!_ec#Yo_p4Pr!UQDG5bP2e`0ry$eA`u+#G0YUlnW930 zS&FfBr7c5L%UZG_mdRt>WRI9uNNJy#5_X?Wp5zj7hA1%L4t0m? zEOF+DaL^?53LzczJ>UdbpMF>O`2rv_heT*2l57~P(qdL^1}N|{Jy^J32cbiqc6GK$P?V!?-nmypr+&}8o

x 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

&HLMb2uQ)AsHR2&I)~Y^scgY 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

em|_BUOQ!WW$!y8H(D?jIt^KEumh+ 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 KMNUMnLSTZ)M3RL7 From 1c5eec92279d36479baa4ec44929985a434c6d83 Mon Sep 17 00:00:00 2001 From: Artorp Date: Thu, 19 Feb 2015 14:46:39 +0100 Subject: [PATCH 07/39] Added repair functionality to spacepods - One welder use consumes 3 fuel and repairs 10 hull damage - Fully repairing a sec spacepod requires around 40-42 activations, welder must be refueled every 6 uses --- code/game/vehicles/spacepods/spacepod.dm | 31 ++++++++++++++++++++---- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/code/game/vehicles/spacepods/spacepod.dm b/code/game/vehicles/spacepods/spacepod.dm index ca3b4e50c6e..cd9cbc606d1 100644 --- a/code/game/vehicles/spacepods/spacepod.dm +++ b/code/game/vehicles/spacepods/spacepod.dm @@ -61,15 +61,13 @@ pod_overlays = new/list(2) pod_overlays[DAMAGE] = image(icon, icon_state="pod_damage") pod_overlays[FIRE] = image(icon, icon_state="pod_fire") - + + overlays.Cut() + if(health <= round(initial(health)/2)) overlays += pod_overlays[DAMAGE] if(health <= round(initial(health)/4)) overlays += pod_overlays[FIRE] - else - overlays -= pod_overlays[FIRE] - else - overlays -= pod_overlays[DAMAGE] /obj/spacepod/bullet_act(var/obj/item/projectile/P) if(P.damage && !P.nodamage) @@ -133,6 +131,12 @@ update_icons() +/obj/spacepod/proc/repair_damage(var/repair_amount) + if(health) + health = min(initial(health), health + repair_amount) + update_icons() + + /obj/spacepod/ex_act(severity) switch(severity) if(1) @@ -185,6 +189,23 @@ equipment_system.weapon_system = W equipment_system.weapon_system.my_atom = src return + if(istype(W, /obj/item/weapon/weldingtool)) + if(!hatch_open) + user << "\red You must open the maintenance hatch before attempting repairs." + return + var/obj/item/weapon/weldingtool/WT = W + if(!WT.isOn()) + user << "\red The welder must be on for this task." + return + if (health < initial(health)) + user << "\blue You start welding the spacepod..." + playsound(loc, 'sound/items/Welder.ogg', 50, 1) + if(do_after(user, 20)) + if(!src || !WT.remove_fuel(3, user)) return + repair_damage(10) + user << "\blue You mend some [pick("dents","bumps","damage")] with \the [WT]" + else + user << "\blue \The [src] is fully repaired!" /obj/spacepod/attack_paw(mob/user as mob) return src.attack_hand(user) From 9c926342d0eb1a41c9c2d5f39e651ee052ddeab8 Mon Sep 17 00:00:00 2001 From: Artorp Date: Thu, 19 Feb 2015 15:11:00 +0100 Subject: [PATCH 08/39] Spacepod: Added more feedback when interacting --- code/game/vehicles/spacepods/spacepod.dm | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/code/game/vehicles/spacepods/spacepod.dm b/code/game/vehicles/spacepods/spacepod.dm index cd9cbc606d1..81a34290398 100644 --- a/code/game/vehicles/spacepods/spacepod.dm +++ b/code/game/vehicles/spacepods/spacepod.dm @@ -161,10 +161,12 @@ /obj/spacepod/attackby(obj/item/W as obj, mob/user as mob) if(iscrowbar(W)) hatch_open = !hatch_open + playsound(loc, 'sound/items/Crowbar.ogg', 50, 1) user << "You [hatch_open ? "open" : "close"] the maintenance hatch." if(istype(W, /obj/item/weapon/stock_parts/cell)) if(!hatch_open) - return ..() + user << "\red The maintenance hatch is closed!" + return if(battery) user << "The pod already has a battery." return @@ -174,7 +176,8 @@ return if(istype(W, /obj/item/device/spacepod_equipment)) if(!hatch_open) - return ..() + user << "\red The maintenance hatch is closed!" + return if(!equipment_system) user << "The pod has no equipment datum, yell at pomf" return From 8182592811c30d9749b12c5879b022c52e940ba3 Mon Sep 17 00:00:00 2001 From: Artorp Date: Thu, 19 Feb 2015 15:20:28 +0100 Subject: [PATCH 09/39] Fixed MouseDrop_T runtime error runtime error: undefined variable /obj/spacepod/sec/var/stat --- code/game/vehicles/spacepods/spacepod.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/game/vehicles/spacepods/spacepod.dm b/code/game/vehicles/spacepods/spacepod.dm index 81a34290398..55a748b26c3 100644 --- a/code/game/vehicles/spacepods/spacepod.dm +++ b/code/game/vehicles/spacepods/spacepod.dm @@ -432,6 +432,7 @@ /obj/spacepod/MouseDrop_T(mob/M as mob, mob/user as mob) + if(!isliving(M)) return if(M != user) if(M.stat != 0) if(allow2enter) From 70a231f2dc89d1abcb0e63169938e84fa9bd1add Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Thu, 19 Feb 2015 19:41:39 -0500 Subject: [PATCH 10/39] Tail Wagging System --- code/modules/mob/living/carbon/human/emote.dm | 17 +++++++++++++ .../mob/living/carbon/human/update_icons.dm | 24 ++++++++++++++++++ code/modules/mob/living/carbon/species.dm | 2 +- code/setup.dm | 5 ++-- icons/effects/species.dmi | Bin 22523 -> 21053 bytes 5 files changed, 45 insertions(+), 3 deletions(-) diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm index 28afe49ab45..76f2e554bc4 100644 --- a/code/modules/mob/living/carbon/human/emote.dm +++ b/code/modules/mob/living/carbon/human/emote.dm @@ -82,6 +82,23 @@ if (!species.name == "Machine") return + if("wag") + if(species.bodyflags & TAIL_WAGGING) + if(!wear_suit || !(wear_suit.flags_inv & HIDETAIL) && !istype(wear_suit, /obj/item/clothing/suit/space)) + message = "[src] starts wagging \his tail." + src.start_tail_wagging(1) + else + return + else + return + + if("swag") + if(species.bodyflags & TAIL_WAGGING) + message = "[src] stops wagging \his tail." + src.stop_tail_wagging(1) + else + return + if ("airguitar") if (!src.restrained()) message = "[src] is strumming the air and headbanging like a safari chimp." diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 5745751e219..f5a9b74cb4b 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -999,6 +999,30 @@ proc/get_damage_icon_part(damage_state, body_part) update_icons() +/mob/living/carbon/human/proc/start_tail_wagging(var/update_icons=1) + overlays_standing[TAIL_LAYER] = null + + if(species.tail && species.bodyflags & HAS_TAIL) + var/icon/tailw_s = new/icon("icon" = 'icons/effects/species.dmi', "icon_state" = "[species.tail]w_s") + tailw_s.Blend(rgb(r_skin, g_skin, b_skin), ICON_ADD) + + overlays_standing[TAIL_LAYER] = image(tailw_s) + + if(update_icons) + update_icons() + +/mob/living/carbon/human/proc/stop_tail_wagging(var/update_icons=1) + overlays_standing[TAIL_LAYER] = null + + if(species.tail && species.bodyflags & HAS_TAIL) + var/icon/tail_s = new/icon("icon" = 'icons/effects/species.dmi', "icon_state" = "[species.tail]_s") + tail_s.Blend(rgb(r_skin, g_skin, b_skin), ICON_ADD) + + overlays_standing[TAIL_LAYER] = image(tail_s) + + if(update_icons) + update_icons() + //Adds a collar overlay above the helmet layer if the suit has one // Suit needs an identically named sprite in icons/mob/collar.dmi /mob/living/carbon/human/proc/update_collar(var/update_icons=1) diff --git a/code/modules/mob/living/carbon/species.dm b/code/modules/mob/living/carbon/species.dm index 6512ee05247..b52db6e8f43 100644 --- a/code/modules/mob/living/carbon/species.dm +++ b/code/modules/mob/living/carbon/species.dm @@ -321,7 +321,7 @@ primitive = /mob/living/carbon/monkey/tajara flags = HAS_LIPS | HAS_UNDERWEAR | CAN_BE_FAT - bodyflags = FEET_PADDED | HAS_TAIL | HAS_SKIN_COLOR + bodyflags = FEET_PADDED | HAS_TAIL | HAS_SKIN_COLOR | TAIL_WAGGING flesh_color = "#AFA59E" base_color = "#333333" diff --git a/code/setup.dm b/code/setup.dm index 4906f0e6bdf..932cd86e1bb 100644 --- a/code/setup.dm +++ b/code/setup.dm @@ -735,7 +735,7 @@ var/list/TAGGERLOCATIONS = list("Disposals", #define BE_CULTIST 256 #define BE_NINJA 512 #define BE_RAIDER 1024 -#define BE_VAMPIRE 2048 +#define BE_VAMPIRE 2048 #define BE_MUTINEER 4096 #define BE_BLOB 8192 @@ -807,7 +807,7 @@ var/list/restricted_camera_networks = list( //Those networks can only be accesse "NukeOps", "Thunderdome", "UO45", - "UO45R", + "UO45R", "Xeno" ) @@ -840,6 +840,7 @@ var/list/restricted_camera_networks = list( //Those networks can only be accesse #define HAS_TAIL 8 #define HAS_SKIN_TONE 16 #define HAS_SKIN_COLOR 32 +#define TAIL_WAGGING 64 //Language flags. diff --git a/icons/effects/species.dmi b/icons/effects/species.dmi index d5405066ab9ba5575f27236d6c526ace00231f9d..a4562fd8d75c8ba7554c4bba96384e447caf23c9 100644 GIT binary patch literal 21053 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 From bbb49001973de989967f7a8d2d69d6645d6a8645 Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Thu, 19 Feb 2015 21:49:45 -0500 Subject: [PATCH 11/39] Death Wagging --- code/modules/mob/living/carbon/species.dm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/code/modules/mob/living/carbon/species.dm b/code/modules/mob/living/carbon/species.dm index b52db6e8f43..71d4bf42d81 100644 --- a/code/modules/mob/living/carbon/species.dm +++ b/code/modules/mob/living/carbon/species.dm @@ -326,6 +326,10 @@ flesh_color = "#AFA59E" base_color = "#333333" +/datum/species/tajaran/handle_death(var/mob/living/carbon/human/H) + + H.stop_tail_wagging(1) + /datum/species/skrell name = "Skrell" icobase = 'icons/mob/human_races/r_skrell.dmi' From 826ccaed70b8ae761b0b357f4e2a70d4b3f12d4a Mon Sep 17 00:00:00 2001 From: Tigercat2000 Date: Fri, 20 Feb 2015 05:16:03 +0100 Subject: [PATCH 12/39] Extra Freeze features- Prevent direct touching and pulling --- code/modules/admin/admin_verbs.dm | 4 +-- code/modules/admin/verbs/freeze.dm | 28 +++++++++++++++++++ .../living/carbon/human/human_attackhand.dm | 4 +++ .../mob/living/carbon/human/human_defines.dm | 2 ++ .../mob/living/carbon/human/inventory.dm | 9 ++++++ 5 files changed, 45 insertions(+), 2 deletions(-) diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 29e69eac22d..ce3ca49fd22 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -59,11 +59,11 @@ var/list/admin_verbs_admin = list( /client/proc/toggledrones, /client/proc/man_up, /client/proc/global_man_up, - /client/proc/delbook, + /client/proc/delbook, /client/proc/empty_ai_core_toggle_latejoin, /client/proc/freeze, /client/proc/freezemecha - + ) var/list/admin_verbs_ban = list( /client/proc/unban_panel, diff --git a/code/modules/admin/verbs/freeze.dm b/code/modules/admin/verbs/freeze.dm index db8b9939252..502060933ee 100644 --- a/code/modules/admin/verbs/freeze.dm +++ b/code/modules/admin/verbs/freeze.dm @@ -38,8 +38,35 @@ message_admins("\blue [key_name_admin(usr)] unfroze [key_name(M)]") log_admin("[key_name(usr)] unfroze [key_name(M)]") M.revive() + else if (istype(M, /mob/living/carbon/human)) + var/mob/living/carbon/human/FM = M + + if(!FM.paralysis) + FM.anchored = 1 + FM.frozen = 1 + FM.AdjustParalysis(2147483647) + var/adminomaly = new/obj/effect/overlay/adminoverlay + spawn(50) + FM.overlays += adminomaly + FM << "You have been frozen by [key]" + message_admins("\blue [key_name_admin(usr)] froze [key_name(FM)]") + log_admin("[key_name(usr)] froze [key_name(FM)]") + else if (M.paralysis) + FM.anchored = 0 + FM.frozen = 0 + FM.AdjustParalysis(-2147483647) + FM.blinded = 0 + FM.lying = 0 + FM.stat = 0 + + FM << " You have been unfrozen by [key]" + message_admins("\blue [key_name_admin(usr)] unfroze [key_name(FM)]") + log_admin("[key_name(usr)] unfroze [key_name(FM)]") + else + if(!M.paralysis) + M.anchored = 1 M.AdjustParalysis(2147483647) var/adminomaly = new/obj/effect/overlay/adminoverlay spawn(50) @@ -48,6 +75,7 @@ message_admins("\blue [key_name_admin(usr)] froze [key_name(M)]") log_admin("[key_name(usr)] froze [key_name(M)]") else if (M.paralysis) + M.anchored = 0 M.AdjustParalysis(-2147483647) M.blinded = 0 M.lying = 0 diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm index d88d19fe99e..2fdf3c42498 100644 --- a/code/modules/mob/living/carbon/human/human_attackhand.dm +++ b/code/modules/mob/living/carbon/human/human_attackhand.dm @@ -3,6 +3,10 @@ M << "No attacking people at spawn, you jackass." return + if(frozen) + M << "\red Do not touch Admin-Frozen people." + return + var/datum/organ/external/temp = M:organs_by_name["r_hand"] if (M.hand) temp = M:organs_by_name["l_hand"] diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index 6f99995aba4..b98ea2c790f 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -71,5 +71,7 @@ var/lastFart = 0 // Toxic fart cooldown. + var/frozen = 0 //used for preventing attacks on admin-frozen people + fire_dmi = 'icons/mob/OnFire.dmi' fire_sprite = "Standing" diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm index b4f71ada72d..30e3f9dc5f5 100644 --- a/code/modules/mob/living/carbon/human/inventory.dm +++ b/code/modules/mob/living/carbon/human/inventory.dm @@ -395,6 +395,11 @@ del(src) var/message=null + if(target.frozen) + source << "\red Do not attempt to strip frozen people." + return + + switch(place) if("syringe") message = "\red [source] is trying to inject [target]!" @@ -598,6 +603,10 @@ It can still be worn/put on as normal. if (LinkBlockedUnclimbable(t_loc, s_loc)) return if(item && source.get_active_hand() != item) return //Swapped hands / removed item from the active one if ((source.restrained() || source.stat)) return //Source restrained or unconscious / dead + if(target.frozen) + source << "\red Do not attempt to strip frozen people." + return + var/slot_to_process var/strip_item //this will tell us which item we will be stripping - if any. From 5d7d2298615b1320a49f3dbf5e20506423734d6f Mon Sep 17 00:00:00 2001 From: Artorp Date: Fri, 20 Feb 2015 16:23:43 +0100 Subject: [PATCH 13/39] Overhaul of canister variables - Moves reference lists to their own datum - Changes to nanoUI data gathering, large variables are no longer stored on the atom --- code/game/machinery/atmoalter/canister.dm | 255 ++++++++++++---------- 1 file changed, 134 insertions(+), 121 deletions(-) diff --git a/code/game/machinery/atmoalter/canister.dm b/code/game/machinery/atmoalter/canister.dm index 78760cd3010..17492a83ba4 100644 --- a/code/game/machinery/atmoalter/canister.dm +++ b/code/game/machinery/atmoalter/canister.dm @@ -1,52 +1,5 @@ -/obj/machinery/portable_atmospherics/canister - name = "canister" - icon = 'icons/obj/atmos.dmi' - icon_state = "yellow" - density = 1 - var/health = 100.0 - flags = CONDUCT - - var/menu = 0 - //used by nanoui: 0 = main menu, 1 = relabel - var/valve_open = 0 - var/release_pressure = ONE_ATMOSPHERE - - var/list/_color //variable that stores colours - var/list/decals // list that stores the decals - var/list/possibledecals - var/list/oldcolor//lists for check_change() - var/list/olddecals - var/list/possiblemaincolor //these lists contain the possible colors of a canister - var/list/possibleseccolor - var/list/possibletertcolor - var/list/possiblequartcolor - var/list/colorcontainer //passed to the ui to render the color lists - - var/can_label = 1 - var/filled = 0.5 - pressure_resistance = 7*ONE_ATMOSPHERE - var/temperature_resistance = 1000 + T0C - volume = 1000 - use_power = 0 - var/release_log = "" - var/busy = 0 - var/update_flag = 0 - - New() - ..() - _color = list( - "prim" = "yellow", - "sec" = null, - "ter" = null, - "quart" = null) - oldcolor = list() - decals = list() - olddecals = list() - possibledecals = list( //var that stores all possible decals, used by ui - list("name" = "Low temperature canister", "icon" = "cold", "active" = 0), - list("name" = "High temperature canister", "icon" = "hot", "active" = 0), - list("name" = "Plasma containing canister", "icon" = "plasma", "active" = 0) - ) +/datum/canister_icons + var possiblemaincolor = list( //these lists contain the possible colors of a canister list("name" = "\[N2O\]", "icon" = "redws"), list("name" = "\[N2\]", "icon" = "red"), @@ -81,29 +34,103 @@ list("name" = "\[Air\]", "icon" = "grey-c-2"), list("name" = "\[CAUTION\]", "icon" = "yellow-c-2") ) - colorcontainer = list(//passed to the ui to render the color lists - "prim" = list( - "options" = possiblemaincolor, - "name" = "Primary color", - "anycolor" = -1,//0: no color applied. 1: color selected. Not used for primary color. - ), - "sec" = list( - "options" = possibleseccolor, - "name" = "Secondary color", - "anycolor" = 0, - ), - "ter" = list( - "options" = possibletertcolor, - "name" = "Tertiary color", - "anycolor" = 0, - ), - "quart" = list( - "options" = possiblequartcolor, - "name" = "Quaternary color", - "anycolor" = 0, - ) + + possibledecals = list( //var that stores all possible decals, used by ui + list("name" = "Low temperature canister", "icon" = "cold"), + list("name" = "High temperature canister", "icon" = "hot"), + list("name" = "Plasma containing canister", "icon" = "plasma") ) + +var/datum/canister_icons/canister_icon_container = new() + +/obj/machinery/portable_atmospherics/canister + name = "canister" + icon = 'icons/obj/atmos.dmi' + icon_state = "yellow" + density = 1 + var/health = 100.0 + flags = CONDUCT + + var/menu = 0 + //used by nanoui: 0 = main menu, 1 = relabel + + var/valve_open = 0 + var/release_pressure = ONE_ATMOSPHERE + + var/list/_color //variable that stores colours + var/list/decals //list that stores the decals + + //lists for check_change() + var/list/oldcolor + var/list/olddecals + + //passed to the ui to render the color lists + var/list/colorcontainer + var/list/possibledecals + + var/can_label = 1 + var/filled = 0.5 + pressure_resistance = 7*ONE_ATMOSPHERE + var/temperature_resistance = 1000 + T0C + volume = 1000 + use_power = 0 + var/release_log = "" + var/busy = 0 + var/update_flag = 0 + + New() + ..() + _color = list( + "prim" = "yellow", + "sec" = "none", + "ter" = "none", + "quart" = "none") + oldcolor = new /list() + decals = list("cold" = 0, "hot" = 0, "plasma" = 0) + colorcontainer = new /list(4) + possibledecals = new /list(3) update_icon() + +/obj/machinery/portable_atmospherics/canister/proc/init_data_vars() + //passed to the ui to render the color lists + colorcontainer = list( + "prim" = list( + "options" = canister_icon_container.possiblemaincolor, + "name" = "Primary color", + ), + "sec" = list( + "options" = canister_icon_container.possibleseccolor, + "name" = "Secondary color", + ), + "ter" = list( + "options" = canister_icon_container.possibletertcolor, + "name" = "Tertiary color", + ), + "quart" = list( + "options" = canister_icon_container.possiblequartcolor, + "name" = "Quaternary color", + ) + ) + + //var/anycolor used by the nanoUI, 0: no color applied. 1: color applied + for(var/C in colorcontainer) + if(C == "prim") continue + var/list/L = colorcontainer[C] + if(!(_color[C]) || (_color[C] == "none")) + L.Add(list("anycolor" = 0)) + else + L.Add(list("anycolor" = 1)) + colorcontainer[C] = L + + possibledecals = new /list(3) + + var/i + var/list/L = canister_icon_container.possibledecals + for(i=1;i<=L.len;i++) + var/list/LL = L[i] + LL = LL.Copy() //make sure we don't edit the datum list + LL.Add(list("active" = decals[LL["icon"]])) //"active" used by nanoUI + possibledecals[i] = LL /obj/machinery/portable_atmospherics/canister/proc/check_change() var/old_flag = update_flag @@ -126,11 +153,11 @@ if(list2params(oldcolor) != list2params(_color)) update_flag |= 64 oldcolor = _color.Copy() - + if(list2params(olddecals) != list2params(decals)) update_flag |= 128 olddecals = decals.Copy() - + if(update_flag == old_flag) return 1 else @@ -160,19 +187,16 @@ update_flag if(check_change()) //Returns 1 if no change needed to icons. return - src.overlays = 0 - - if (_color["sec"])//COLORS! - overlays.Add(_color["sec"]) - - if (_color["ter"]) - overlays.Add(_color["ter"]) - - if (_color["quart"]) - overlays.Add(_color["quart"]) - + overlays.Cut() + + for(var/C in _color) + if(C == "prim") continue + if(_color[C] == "none") continue + overlays.Add(_color[C]) + for(var/D in decals) - overlays.Add("decal-" + D) + if(decals[D]) + overlays.Add("decal-" + D) if(update_flag & 1) overlays += "can-open" @@ -186,32 +210,32 @@ update_flag overlays += "can-o2" else if(update_flag & 32) overlays += "can-o3" - + update_flag &= ~196 //the flags 128 and 64 represent change, not states. As such, we have to reset them to be able to detect a change on the next go. return //template modification exploit prevention, used in Topic() -/obj/machinery/portable_atmospherics/canister/proc/is_a_color(var/inputVar, var/checkColor = "all") +/obj/machinery/portable_atmospherics/canister/proc/is_a_color(var/inputVar, var/checkColor = "all") if (checkColor == "prim" || checkColor == "all") - for(var/list/L in possiblemaincolor) + for(var/list/L in canister_icon_container.possiblemaincolor) if (L["icon"] == inputVar) return 1 if (checkColor == "sec" || checkColor == "all") - for(var/list/L in possibleseccolor) + for(var/list/L in canister_icon_container.possibleseccolor) if (L["icon"] == inputVar) return 1 if (checkColor == "ter" || checkColor == "all") - for(var/list/L in possibletertcolor) + for(var/list/L in canister_icon_container.possibletertcolor) if (L["icon"] == inputVar) return 1 if (checkColor == "quart" || checkColor == "all") - for(var/list/L in possiblequartcolor) + for(var/list/L in canister_icon_container.possiblequartcolor) if (L["icon"] == inputVar) return 1 return 0 /obj/machinery/portable_atmospherics/canister/proc/is_a_decal(var/inputVar) - for(var/list/L in possibledecals) + for(var/list/L in canister_icon_container.possibledecals) if (L["icon"] == inputVar) return 1 return 0 @@ -364,6 +388,8 @@ update_flag if (src.destroyed) return + init_data_vars() //set up var/colorcontainer and var/possibledecals + // this is the data which will be sent to the ui var/data[0] data["name"] = name @@ -395,6 +421,10 @@ update_flag ui.open() // auto update every Master Controller tick ui.set_auto_update(1) + + //Disregard these, avoid cluttering up the VV window + colorcontainer = new /list(4) + possibledecals = new /list(3) /obj/machinery/portable_atmospherics/canister/Topic(href, href_list) @@ -406,7 +436,7 @@ update_flag usr << browse(null, "window=canister") onclose(usr, "canister") return - + if (href_list["choice"] == "menu") menu = text2num(href_list["mode_target"]) @@ -437,7 +467,7 @@ update_flag release_pressure = min(10*ONE_ATMOSPHERE, release_pressure+diff) else release_pressure = max(ONE_ATMOSPHERE/10, release_pressure+diff) - + if (href_list["rename"]) if (can_label) var/T = copytext(sanitize(input("Choose canister label", "Name", name) as text|null),1,MAX_NAME_LEN) @@ -454,40 +484,24 @@ update_flag _color["prim"] = href_list["icon"] if (href_list["choice"] == "Secondary color") if (href_list["icon"] == "none") - _color["sec"] = "" - colorcontainer["sec"]["anycolor"] = 0 + _color["sec"] = "none" else if (is_a_color(href_list["icon"],"sec")) _color["sec"] = href_list["icon"] - colorcontainer["sec"]["anycolor"] = 1 if (href_list["choice"] == "Tertiary color") if (href_list["icon"] == "none") - _color["ter"] = "" - colorcontainer["ter"]["anycolor"] = 0 + _color["ter"] = "none" else if (is_a_color(href_list["icon"],"ter")) _color["ter"] = href_list["icon"] - colorcontainer["ter"]["anycolor"] = 1 if (href_list["choice"] == "Quaternary color") if (href_list["icon"] == "none") - _color["quart"] = "" - colorcontainer["quart"]["anycolor"] = 0 + _color["quart"] = "none" else if (is_a_color(href_list["icon"],"quart")) _color["quart"] = href_list["icon"] - colorcontainer["quart"]["anycolor"] = 1 - + if (href_list["choice"] == "decals") if (is_a_decal(href_list["icon"])) - for (var/list/L in possibledecals) - if (L["icon"] == href_list["icon"]) - L["active"] = (L["active"] == 0) - break - - decals = list() - - for (var/list/L in possibledecals) - if (L["active"]) - if (!(L["icon"] in decals)) - decals.Add(L["icon"]) - + decals[href_list["icon"]] = (decals[href_list["icon"]] == 0) + src.add_fingerprint(usr) update_icon() @@ -526,10 +540,9 @@ update_flag /obj/machinery/portable_atmospherics/canister/toxins/New() ..() - + _color["prim"] = "orange" - decals = list("plasma") - possibledecals[3]["active"] = 1 + decals["plasma"] = 1 src.air_contents.toxins = (src.maximum_pressure*filled)*air_contents.volume/(R_IDEAL_GAS_EQUATION*air_contents.temperature) air_contents.update_values() @@ -547,7 +560,7 @@ update_flag /obj/machinery/portable_atmospherics/canister/sleeping_agent/New() ..() - + _color["prim"] = "redws" var/datum/gas/sleeping_agent/trace_gas = new air_contents.trace_gases += trace_gas @@ -585,7 +598,7 @@ update_flag /obj/machinery/portable_atmospherics/canister/carbon_dioxide/New() ..() - + _color["prim"] = "black" src.air_contents.carbon_dioxide = (src.maximum_pressure*filled)*air_contents.volume/(R_IDEAL_GAS_EQUATION*air_contents.temperature) air_contents.update_values() @@ -596,7 +609,7 @@ update_flag /obj/machinery/portable_atmospherics/canister/air/New() ..() - + _color["prim"] = "grey" src.air_contents.oxygen = (O2STANDARD*src.maximum_pressure*filled)*air_contents.volume/(R_IDEAL_GAS_EQUATION*air_contents.temperature) src.air_contents.nitrogen = (N2STANDARD*src.maximum_pressure*filled)*air_contents.volume/(R_IDEAL_GAS_EQUATION*air_contents.temperature) From 02bd38525be49af890a05f5eff891d25dbe9a8c1 Mon Sep 17 00:00:00 2001 From: ZomgPonies Date: Fri, 20 Feb 2015 11:17:03 -0500 Subject: [PATCH 14/39] Fix PDA bug --- code/modules/mob/living/carbon/human/inventory.dm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm index 30e3f9dc5f5..23327fd3211 100644 --- a/code/modules/mob/living/carbon/human/inventory.dm +++ b/code/modules/mob/living/carbon/human/inventory.dm @@ -163,6 +163,9 @@ else if(I == wear_id) wear_id = null update_inv_wear_id(0) + else if(I == wear_pda) + wear_pda = null + update_inv_wear_pda(0) else if(I == r_store) r_store = null update_inv_pockets(0) From 8c1e95307d7237d9dc212f7b4788c2cc44f706b1 Mon Sep 17 00:00:00 2001 From: ZomgPonies Date: Fri, 20 Feb 2015 11:24:56 -0500 Subject: [PATCH 15/39] Fixes clicking not turning you --- code/_onclick/click.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index a0da39a2976..fb2f17d46a9 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -65,6 +65,8 @@ if(stat || paralysis || stunned || weakened) return + face_atom(A) + if(next_move > world.time) // in the year 2000... return From 626049570be7ccb9d8653c189afb498605069ac4 Mon Sep 17 00:00:00 2001 From: ZomgPonies Date: Fri, 20 Feb 2015 11:37:05 -0500 Subject: [PATCH 16/39] Fixed handcuffs, legcuffs and others --- .../modules/mob/living/carbon/human/inventory.dm | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm index 23327fd3211..007281ec5cf 100644 --- a/code/modules/mob/living/carbon/human/inventory.dm +++ b/code/modules/mob/living/carbon/human/inventory.dm @@ -175,6 +175,22 @@ else if(I == s_store) s_store = null update_inv_s_store(0) + else if(I == back) + back = null + update_inv_back(0) + else if(I == handcuffed) + handcuffed = null + update_inv_handcuffed(0) + else if(I == legcuffed) + legcuffed = null + update_inv_legcuffed(0) + else if(I == r_hand) + r_hand = null + update_inv_r_hand(0) + else if(I == l_hand) + l_hand = null + update_inv_l_hand(0) + update_action_buttons() From d8d1670b68b76a602c3df8ea2731656b5f35b2ac Mon Sep 17 00:00:00 2001 From: Markolie Date: Fri, 20 Feb 2015 17:46:35 +0100 Subject: [PATCH 17/39] Revert "Revert "Saycode/language/species port from Bay"" This reverts commit d54579850c71f193da9f87b727c5b3e9c27c6c53. Conflicts: code/game/gamemodes/nuclear/nuclearbomb.dm code/game/objects/items/devices/radio/intercom.dm code/modules/mob/living/silicon/pai/pai.dm --- code/__HELPERS/game.dm | 55 +- code/__HELPERS/global_lists.dm | 8 + code/__HELPERS/mobs.dm | 20 +- code/__HELPERS/text.dm | 3 +- code/_onclick/observer.dm | 9 +- code/controllers/communications.dm | 83 ++- code/controllers/configuration.dm | 2 +- code/datums/wires/radio.dm | 21 +- code/defines/procs/radio.dm | 81 +++ code/game/area/Space Station 13 areas.dm | 1 + code/game/dna/dna2_domutcheck.dm | 9 + code/game/dna/genes/goon_disabilities.dm | 2 +- code/game/dna/genes/goon_powers.dm | 6 +- code/game/gamemodes/changeling/changeling.dm | 11 +- .../gamemodes/changeling/evolution_menu.dm | 16 +- .../gamemodes/changeling/powers/absorb.dm | 2 +- .../gamemodes/changeling/powers/humanform.dm | 2 +- .../gamemodes/changeling/powers/lesserform.dm | 2 +- .../gamemodes/changeling/powers/transform.dm | 2 + code/game/gamemodes/events/ninja_equipment.dm | 16 +- code/game/gamemodes/nuclear/nuclear.dm | 32 + code/game/gamemodes/nuclear/nuclearbomb.dm | 31 +- code/game/gamemodes/objective.dm | 6 +- code/game/gamemodes/setupgame.dm | 16 - code/game/machinery/bots/bots.dm | 9 +- code/game/machinery/bots/cleanbot.dm | 1 - code/game/machinery/bots/ed209bot.dm | 3 +- code/game/machinery/bots/floorbot.dm | 3 +- code/game/machinery/bots/medbot.dm | 3 +- code/game/machinery/bots/mulebot.dm | 12 +- code/game/machinery/bots/secbot.dm | 4 +- code/game/machinery/camera/tracking.dm | 2 +- code/game/machinery/hologram.dm | 15 +- code/game/machinery/telecomms/broadcaster.dm | 291 ++------ code/game/objects/items/devices/paicard.dm | 17 +- .../objects/items/devices/radio/headset.dm | 2 +- .../game/objects/items/devices/radio/radio.dm | 619 +++++++----------- .../objects/items/devices/transfer_valve.dm | 4 + .../objects/items/robot/robot_upgrades.dm | 4 +- code/game/objects/structures/girders.dm | 429 ++++++------ code/game/vehicles/vehicle.dm | 4 +- code/modules/admin/admin_verbs.dm | 2 +- code/modules/awaymissions/corpse.dm | 1 - .../awaymissions/mission_code/academy.dm | 1 + .../mission_code/blackmarketpackers.dm | 2 +- .../awaymissions/mission_code/centcomAway.dm | 3 +- .../awaymissions/mission_code/challenge.dm | 5 + .../awaymissions/mission_code/clownplanet.dm | 1 + .../awaymissions/mission_code/spacebattle.dm | 1 + .../mission_code/stationCollision.dm | 3 + code/modules/client/preferences_toggles.dm | 10 + code/modules/clothing/masks/gasmask.dm | 38 -- code/modules/clothing/masks/voice.dm | 59 ++ code/modules/karma/karma.dm | 4 +- code/modules/mining/laborcamp/laborstacker.dm | 24 +- code/modules/mob/dead/observer/observer.dm | 17 + code/modules/mob/hear_say.dm | 215 ++++++ code/modules/mob/language.dm | 399 +++++++++-- .../living/carbon/alien/humanoid/humanoid.dm | 2 + .../mob/living/carbon/alien/larva/larva.dm | 2 + code/modules/mob/living/carbon/alien/say.dm | 79 +-- code/modules/mob/living/carbon/brain/brain.dm | 5 +- code/modules/mob/living/carbon/brain/say.dm | 28 +- code/modules/mob/living/carbon/human/human.dm | 130 ++-- .../mob/living/carbon/human/human_damage.dm | 7 +- .../mob/living/carbon/human/human_defines.dm | 4 + code/modules/mob/living/carbon/human/life.dm | 54 +- code/modules/mob/living/carbon/human/say.dm | 331 +++++++--- .../mob/living/carbon/human/update_icons.dm | 9 +- .../mob/living/carbon/human/whisper.dm | 182 ++--- code/modules/mob/living/carbon/metroid/say.dm | 13 + code/modules/mob/living/carbon/species.dm | 122 +++- code/modules/mob/living/say.dm | 528 +++------------ code/modules/mob/living/silicon/ai/ai.dm | 15 + .../mob/living/silicon/ai/freelook/eye.dm | 4 +- code/modules/mob/living/silicon/ai/say.dm | 30 +- code/modules/mob/living/silicon/pai/pai.dm | 14 +- .../mob/living/silicon/pai/software.dm | 36 +- .../mob/living/silicon/robot/component.dm | 5 + .../mob/living/silicon/robot/drone/drone.dm | 80 +-- .../modules/mob/living/silicon/robot/robot.dm | 43 +- .../mob/living/silicon/robot/robot_modules.dm | 33 + code/modules/mob/living/silicon/say.dm | 284 ++++---- code/modules/mob/living/silicon/silicon.dm | 36 + .../modules/mob/living/simple_animal/borer.dm | 41 +- .../mob/living/simple_animal/parrot.dm | 127 ++-- .../mob/living/simple_animal/simple_animal.dm | 22 + code/modules/mob/mob.dm | 1 + code/modules/mob/mob_helpers.dm | 46 ++ code/modules/mob/new_player/new_player.dm | 40 +- code/modules/mob/say.dm | 164 +++-- code/modules/mob/typing_indicator.dm | 85 +++ code/modules/paperwork/faxmachine.dm | 6 +- .../research/designs/machine_designs.dm | 2 +- code/modules/surgery/headreattach.dm | 2 +- code/setup.dm | 16 +- code/stylesheet.dm | 9 + config/example/config.txt | 2 +- icons/mob/human_races/r_golem.dmi | Bin 0 -> 11595 bytes icons/mob/human_races/r_shadow.dmi | Bin 0 -> 1760 bytes icons/mob/human_races/r_slime.dmi | Bin 0 -> 4614 bytes icons/mob/talk.dmi | Bin 2190 -> 2403 bytes icons/obj/robot_storage.dmi | Bin 5159 -> 5078 bytes interface/interface.dm | 2 +- interface/skin.dmf | 14 +- maps/cyberiad.dmm | 2 +- nano/images/uiBackground-Syndicate.png | Bin 37520 -> 213007 bytes nano/images/uiTitleFluff-Syndicate.png | Bin 38450 -> 1429 bytes paradise.dme | 4 + 109 files changed, 2955 insertions(+), 2349 deletions(-) create mode 100644 code/defines/procs/radio.dm create mode 100644 code/modules/clothing/masks/voice.dm create mode 100644 code/modules/mob/hear_say.dm create mode 100644 code/modules/mob/typing_indicator.dm create mode 100644 icons/mob/human_races/r_golem.dmi create mode 100644 icons/mob/human_races/r_shadow.dmi create mode 100644 icons/mob/human_races/r_slime.dmi diff --git a/code/__HELPERS/game.dm b/code/__HELPERS/game.dm index a692639d802..a47f261f9c1 100644 --- a/code/__HELPERS/game.dm +++ b/code/__HELPERS/game.dm @@ -167,8 +167,6 @@ // The old system would loop through lists for a total of 5000 per function call, in an empty server. // This new system will loop at around 1000 in an empty server. -// SCREW THAT SHIT, we're not recursing. - /proc/get_mobs_in_view(var/R, var/atom/source) // Returns a list of mobs in range of R from source. Used in radio and say code. @@ -180,48 +178,40 @@ var/list/range = hear(R, T) - for(var/mob/M in range) - hear += M + for(var/atom/A in range) + if(ismob(A)) + var/mob/M = A + if(M.client) + hear += M + //world.log << "Start = [M] - [get_turf(M)] - ([M.x], [M.y], [M.z])" + else if(istype(A, /obj/item/device/radio)) + hear += A - var/list/objects = list() + if(isobj(A) || ismob(A)) + hear |= recursive_mob_check(A, hear, 3, 1, 0, 1) - for(var/obj/O in range) //Get a list of objects in hearing range. We'll check to see if any clients have their "eye" set to the object - objects += O - - for(var/client/C in clients) - if(!istype(C) || !C.eye || istype(C.eye, /mob/aiEye)) - continue //I have no idea when this client check would be needed, but if this runtimes people won't hear anything - //So kinda paranoid about runtime avoidance. - if(istype(C.eye, /obj/machinery/camera)) - continue //No microphones in cameras. - - if(C.mob in hear) - continue - - var/list/hear_and_objects = (hear|objects) //Combined these lists here instead of doing the combine 3 more times. - - if(C.eye in hear_and_objects) - hear += C.mob - - else if(C.mob && C.mob.loc in hear_and_objects) - hear += C.mob - else if(C.mob && C.mob.loc.loc in hear_and_objects) - hear += C.mob - else if(C.mob && C.mob.loc.loc.loc in hear_and_objects) - hear += C.mob return hear /proc/get_mobs_in_radio_ranges(var/list/obj/item/device/radio/radios) - //set background = 1 + set background = 1 . = list() // Returns a list of mobs who can hear any of the radios given in @radios var/list/speaker_coverage = list() - for(var/i = 1; i <= radios.len; i++) - var/obj/item/device/radio/R = radios[i] + for(var/obj/item/device/radio/R in radios) if(R) + //Cyborg checks. Receiving message uses a bit of cyborg's charge. + var/obj/item/device/radio/borg/BR = R + if(istype(BR) && BR.myborg) + var/mob/living/silicon/robot/borg = BR.myborg + var/datum/robot_component/CO = borg.get_component("radio") + if(!CO) + continue //No radio component (Shouldn't happen) + if(!borg.is_component_functioning("radio") || !borg.use_power(CO.energy_consumption)) + continue //No power. + var/turf/speaker = get_turf(R) if(speaker) for(var/turf/T in hear(R.canhear_range,speaker)) @@ -239,6 +229,7 @@ . |= M // Since we're already looping through mobs, why bother using |= ? This only slows things down. return . + #define SIGN(X) ((X<0)?-1:1) proc diff --git a/code/__HELPERS/global_lists.dm b/code/__HELPERS/global_lists.dm index 515f1788f66..441e48139c8 100644 --- a/code/__HELPERS/global_lists.dm +++ b/code/__HELPERS/global_lists.dm @@ -28,6 +28,7 @@ var/global/list/airlocks = list() //list of all airlocks //Languages/species/whitelist. var/global/list/all_species[0] var/global/list/all_languages[0] +var/global/list/language_keys[0] // Table of say codes for all languages var/global/list/all_nations[0] var/global/list/whitelisted_species = list() @@ -114,6 +115,13 @@ var/global/list/backbaglist = list("Nothing", "Backpack", "Satchel", "Satchel Al var/datum/language/L = new T all_languages[L.name] = L + for (var/language_name in all_languages) + var/datum/language/L = all_languages[language_name] + if(!(L.flags & NONGLOBAL)) + language_keys[":[lowertext(L.key)]"] = L + language_keys[".[lowertext(L.key)]"] = L + language_keys["#[lowertext(L.key)]"] = L + var/rkey = 0 paths = typesof(/datum/species)-/datum/species for(var/T in paths) diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index a790124c152..320e2ecd8d7 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -49,15 +49,19 @@ proc/random_facial_hair_style(gender, species = "Human") return f_style -proc/random_name(gender, speciesName = "Human") - var/datum/species/S = all_species[speciesName] - if(S) - return S.makeName(gender) - else - if(gender==FEMALE) +proc/random_name(gender, species = "Human") + + var/datum/species/current_species + if(species) + current_species = all_species[species] + + if(!current_species || current_species.name == "Human") + if(gender==FEMALE) return capitalize(pick(first_names_female)) + " " + capitalize(pick(last_names)) - else - return capitalize(pick(first_names_male)) + " " + capitalize(pick(last_names)) + else + return capitalize(pick(first_names_male)) + " " + capitalize(pick(last_names)) + else + return current_species.get_random_name(gender) proc/random_skin_tone() switch(pick(60;"caucasian", 15;"afroamerican", 10;"african", 10;"latino", 5;"albino")) diff --git a/code/__HELPERS/text.dm b/code/__HELPERS/text.dm index cb2fad75ddb..108246c5ad5 100644 --- a/code/__HELPERS/text.dm +++ b/code/__HELPERS/text.dm @@ -341,4 +341,5 @@ proc/checkhtml(var/t) return sanitize(input) /proc/trim_strip_html_properly(var/input, var/max_length = MAX_MESSAGE_LEN) - return trim(strip_html_properly(input, max_length)) + return trim(strip_html_properly(input, max_length)) + \ No newline at end of file diff --git a/code/_onclick/observer.dm b/code/_onclick/observer.dm index d8b5617d2a1..210140bdf9f 100644 --- a/code/_onclick/observer.dm +++ b/code/_onclick/observer.dm @@ -64,10 +64,11 @@ // Now you can click through portals, wormholes, gateways, and teleporters while observing. -Sayu /obj/machinery/teleport/hub/attack_ghost(mob/user as mob) - var/atom/l = loc - var/obj/machinery/computer/teleporter/com = locate(/obj/machinery/computer/teleporter, locate(l.x - 2, l.y, l.z)) - if(com && com.locked) - user.loc = get_turf(com.locked) + var/obj/machinery/teleport/station/S = power_station + if(S) + var/obj/machinery/computer/teleporter/com = S.teleporter_console + if(com && com.target) + user.loc = get_turf(com.target) /obj/effect/portal/attack_ghost(mob/user as mob) if(target) diff --git a/code/controllers/communications.dm b/code/controllers/communications.dm index b3a5a9f58d1..523cc7055b9 100644 --- a/code/controllers/communications.dm +++ b/code/controllers/communications.dm @@ -124,30 +124,14 @@ On the map: 1455 for AI access */ -var/list/radiochannels = list( - "Common" = 1459, - "Science" = 1351, - "Command" = 1353, - "Medical" = 1355, - "Engineering" = 1357, - "Security" = 1359, - "Response Team" = 1443, - "Deathsquad" = 1441, - "Syndicate" = 1213, - "Supply" = 1347, - "Service" = 1349, - "AI Private" = 1447 -) -//depenging helpers -var/list/DEPT_FREQS = list(1351, 1355, 1357, 1359, 1213, 1443, 1441, 1347, 1349) - -// central command channels, i.e deathsquid & response teams -var/list/CENT_FREQS = list(1441, 1443) - -var/const/COMM_FREQ = 1353 //command, colored gold in chat window +var/const/COMM_FREQ = 1353 var/const/SYND_FREQ = 1213 +var/const/ERT_FREQ = 1345 +var/const/DTH_FREQ = 1341 +var/const/AI_FREQ = 1447 // department channels +var/const/PUB_FREQ = 1459 var/const/SEC_FREQ = 1359 var/const/ENG_FREQ = 1357 var/const/SCI_FREQ = 1351 @@ -155,12 +139,65 @@ var/const/MED_FREQ = 1355 var/const/SUP_FREQ = 1347 var/const/SRV_FREQ = 1349 -// other channels -var/const/AIPRIV_FREQ = 1447 +var/list/radiochannels = list( + "Common" = PUB_FREQ, + "Science" = SCI_FREQ, + "Command" = COMM_FREQ, + "Medical" = MED_FREQ, + "Engineering" = ENG_FREQ, + "Security" = SEC_FREQ, + "Response Team" = ERT_FREQ, + "Special Ops" = DTH_FREQ, + "Syndicate" = SYND_FREQ, + "Supply" = SUP_FREQ, + "Service" = SRV_FREQ, + "AI Private" = AI_FREQ +) + +// central command channels, i.e deathsquid & response teams +var/list/CENT_FREQS = list(ERT_FREQ, DTH_FREQ) + +// Antag channels, i.e. Syndicate +var/list/ANTAG_FREQS = list(SYND_FREQ) + +//depending helpers +var/list/DEPT_FREQS = list(SCI_FREQ, MED_FREQ, ENG_FREQ, SEC_FREQ, SUP_FREQ, SRV_FREQ, ERT_FREQ, SYND_FREQ, DTH_FREQ) #define TRANSMISSION_WIRE 0 #define TRANSMISSION_RADIO 1 +/proc/frequency_span_class(var/frequency) + // Antags! + if (frequency in ANTAG_FREQS) + return "syndradio" + // centcomm channels (deathsquid and ert) + else if(frequency in CENT_FREQS) + return "centradio" + // command channel + else if(frequency == COMM_FREQ) + return "comradio" + // AI private channel + else if(frequency == AI_FREQ) + return "airadio" + // department radio formatting (poorly optimized, ugh) + else if(frequency == SEC_FREQ) + return "secradio" + else if (frequency == ENG_FREQ) + return "engradio" + else if(frequency == SCI_FREQ) + return "sciradio" + else if(frequency == MED_FREQ) + return "medradio" + else if(frequency == SUP_FREQ) // cargo + return "supradio" + else if(frequency == SRV_FREQ) // service + return "srvradio" + // If all else fails and it's a dept_freq, color me purple! + else if(frequency in DEPT_FREQS) + return "deptradio" + + return "radio" + /* filters */ var/const/RADIO_TO_AIRALARM = "1" var/const/RADIO_FROM_AIRALARM = "2" diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm index 160137a2e5b..062a650c9ba 100644 --- a/code/controllers/configuration.dm +++ b/code/controllers/configuration.dm @@ -138,7 +138,7 @@ var/list/station_levels = list(1) // Defines which Z-levels the station exists on. var/list/admin_levels= list(2) // Defines which Z-levels which are for admin functionality, for example including such areas as Central Command and the Syndicate Shuttle var/list/contact_levels = list(1, 5) // Defines which Z-levels which, for example, a Code Red announcement may affect - var/list/player_levels = list(1, 3, 4, 5, 6) // Defines all Z-levels a character can typically reach + var/list/player_levels = list(1, 3, 4, 5, 6, 7) // Defines all Z-levels a character can typically reach var/const/minutes_to_ticks = 60 * 10 // Event settings diff --git a/code/datums/wires/radio.dm b/code/datums/wires/radio.dm index a8171270008..9da8890ac32 100644 --- a/code/datums/wires/radio.dm +++ b/code/datums/wires/radio.dm @@ -21,11 +21,24 @@ var/const/WIRE_TRANSMIT = 4 var/obj/item/device/radio/R = holder switch(index) if(WIRE_SIGNAL) - R.listening = !R.listening - R.broadcasting = R.listening + R.listening = !R.listening && !IsIndexCut(WIRE_RECEIVE) + R.broadcasting = R.listening && !IsIndexCut(WIRE_TRANSMIT) if(WIRE_RECEIVE) - R.listening = !R.listening + R.listening = !R.listening && !IsIndexCut(WIRE_SIGNAL) if(WIRE_TRANSMIT) - R.broadcasting = !R.broadcasting \ No newline at end of file + R.broadcasting = !R.broadcasting && !IsIndexCut(WIRE_SIGNAL) + +/datum/wires/radio/UpdateCut(var/index, var/mended) + var/obj/item/device/radio/R = holder + switch(index) + if(WIRE_SIGNAL) + R.listening = mended && !IsIndexCut(WIRE_RECEIVE) + R.broadcasting = mended && !IsIndexCut(WIRE_TRANSMIT) + + if(WIRE_RECEIVE) + R.listening = mended && !IsIndexCut(WIRE_SIGNAL) + + if(WIRE_TRANSMIT) + R.broadcasting = mended && !IsIndexCut(WIRE_SIGNAL) diff --git a/code/defines/procs/radio.dm b/code/defines/procs/radio.dm new file mode 100644 index 00000000000..1e0e045928b --- /dev/null +++ b/code/defines/procs/radio.dm @@ -0,0 +1,81 @@ +#define TELECOMMS_RECEPTION_NONE 0 +#define TELECOMMS_RECEPTION_SENDER 1 +#define TELECOMMS_RECEPTION_RECEIVER 2 +#define TELECOMMS_RECEPTION_BOTH 3 + +/proc/get_frequency_name(var/display_freq) + var/freq_text + + // the name of the channel + if(display_freq in ANTAG_FREQS) + freq_text = "#unkn" + else + for(var/channel in radiochannels) + if(radiochannels[channel] == display_freq) + freq_text = channel + break + + // --- If the frequency has not been assigned a name, just use the frequency as the name --- + if(!freq_text) + freq_text = format_frequency(display_freq) + + return freq_text + +/datum/reception + var/obj/machinery/message_server/message_server = null + var/telecomms_reception = TELECOMMS_RECEPTION_NONE + var/message = "" + +/datum/receptions + var/obj/machinery/message_server/message_server = null + var/sender_reception = TELECOMMS_RECEPTION_NONE + var/list/receiver_reception = new + +/proc/get_message_server() + if(message_servers) + for (var/obj/machinery/message_server/MS in message_servers) + if(MS.active) + return MS + return null + +/proc/check_signal(var/datum/signal/signal) + return signal && signal.data["done"] + +/proc/get_sender_reception(var/atom/sender, var/datum/signal/signal) + return check_signal(signal) ? TELECOMMS_RECEPTION_SENDER : TELECOMMS_RECEPTION_NONE + +/proc/get_receiver_reception(var/receiver, var/datum/signal/signal) + if(receiver && check_signal(signal)) + var/turf/pos = get_turf(receiver) + if(pos && (pos.z in signal.data["level"])) + return TELECOMMS_RECEPTION_RECEIVER + return TELECOMMS_RECEPTION_NONE + +/proc/get_reception(var/atom/sender, var/receiver, var/message = "", var/do_sleep = 1) + var/datum/reception/reception = new + + // check if telecomms I/O route 1459 is stable + reception.message_server = get_message_server() + + var/datum/signal/signal = sender.telecomms_process(do_sleep) // Be aware that this proc calls sleep, to simulate transmition delays + reception.telecomms_reception |= get_sender_reception(sender, signal) + reception.telecomms_reception |= get_receiver_reception(receiver, signal) + reception.message = signal && signal.data["compression"] > 0 ? Gibberish(message, signal.data["compression"] + 50) : message + + return reception + +/proc/get_receptions(var/atom/sender, var/list/atom/receivers, var/do_sleep = 1) + var/datum/receptions/receptions = new + receptions.message_server = get_message_server() + + var/datum/signal/signal + if(sender) + signal = sender.telecomms_process(do_sleep) + receptions.sender_reception = get_sender_reception(sender, signal) + + for(var/atom/receiver in receivers) + if(!signal) + signal = receiver.telecomms_process() + receptions.receiver_reception[receiver] = get_receiver_reception(receiver, signal) + + return receptions diff --git a/code/game/area/Space Station 13 areas.dm b/code/game/area/Space Station 13 areas.dm index 43c52ec018c..7d5547f3c45 100644 --- a/code/game/area/Space Station 13 areas.dm +++ b/code/game/area/Space Station 13 areas.dm @@ -2268,6 +2268,7 @@ area/security/podbay /area/awaycontent name = "space" + report_alerts = 0 /area/awaycontent/a1 icon_state = "awaycontent1" diff --git a/code/game/dna/dna2_domutcheck.dm b/code/game/dna/dna2_domutcheck.dm index 6f0e3412f19..545e65b691d 100644 --- a/code/game/dna/dna2_domutcheck.dm +++ b/code/game/dna/dna2_domutcheck.dm @@ -5,6 +5,7 @@ // flags: See below, bitfield. #define MUTCHK_FORCED 1 /proc/domutcheck(var/mob/living/M, var/connected=null, var/flags=0) + for(var/datum/dna/gene/gene in dna_genes) if(!M || !M.dna) return @@ -75,6 +76,14 @@ var/gene_active = (gene.flags & GENE_ALWAYS_ACTIVATE) if(!gene_active) gene_active = M.dna.GetSEState(gene.block) + + var/defaultgenes // Do not mutate inherent species abilities + if(ishuman(M)) + var/mob/living/carbon/human/H = M + defaultgenes = H.species.default_genes + + if((gene in defaultgenes) && gene_active) + return // Prior state var/gene_prior_status = (gene.type in M.active_genes) diff --git a/code/game/dna/genes/goon_disabilities.dm b/code/game/dna/genes/goon_disabilities.dm index 5de6a0c35c3..1214919a441 100644 --- a/code/game/dna/genes/goon_disabilities.dm +++ b/code/game/dna/genes/goon_disabilities.dm @@ -335,7 +335,7 @@ if(L) usr.attack_log += text("\[[time_stamp()]\] [usr.real_name] ([usr.ckey]) cast the spell [name] on [L.real_name] ([L.ckey]).") - msg_admin_attack("[usr.real_name] ([usr.ckey]) has cast the spell [name] on [L.real_name] ([L.ckey]) (JMP)") + msg_admin_attack("[usr.real_name] ([usr.ckey]) has cast the spell [name] on [L.real_name] ([L.ckey]) (JMP)") L.adjust_fire_stacks(0.5) L.visible_message("\red [L.name] suddenly bursts into flames!") diff --git a/code/game/dna/genes/goon_powers.dm b/code/game/dna/genes/goon_powers.dm index 5ded91894bf..00a7879906f 100644 --- a/code/game/dna/genes/goon_powers.dm +++ b/code/game/dna/genes/goon_powers.dm @@ -162,12 +162,12 @@ H.visible_message("\red [usr] sprays a cloud of fine ice crystals, engulfing [H]!", "[usr] sprays a cloud of fine ice crystals over your [H.head]'s visor.") log_admin("[ckey(usr.key)] has used cryokinesis on [ckey(C.key)], internals yes, suit yes") - msg_admin_attack("[usr.real_name] ([usr.ckey]) has cast cryokinesis on [C.real_name] ([C.ckey]), (JMP)") + msg_admin_attack("[usr.real_name] ([usr.ckey]) has cast cryokinesis on [C.real_name] ([C.ckey]), (JMP)") else H.visible_message("\red [usr] sprays a cloud of fine ice crystals engulfing, [H]!", "[usr] sprays a cloud of fine ice crystals cover your [H.head]'s visor and make it into your air vents!.") log_admin("[usr.real_name] ([ckey(usr.key)]) has used cryokinesis on [C.real_name] ([ckey(C.key)]), ()") - msg_admin_attack("[usr.real_name] ([usr.ckey]) has cast cryokinesis on [C.real_name] ([C.ckey]), (JMP)") + msg_admin_attack("[usr.real_name] ([usr.ckey]) has cast cryokinesis on [C.real_name] ([C.ckey]), (JMP)") H.bodytemperature = max(0, H.bodytemperature - 50) H.adjustFireLoss(5) if(!handle_suit) @@ -177,7 +177,7 @@ C.visible_message("\red [usr] sprays a cloud of fine ice crystals, engulfing [C]!") log_admin("[ckey(usr.key)] has used cryokinesis on [ckey(C.key)], internals no, suit no") - msg_admin_attack("[usr.real_name] ([usr.ckey]) has cast cryokinesis on [C.real_name] ([C.ckey]), (JMP)") + msg_admin_attack("[usr.real_name] ([usr.ckey]) has cast cryokinesis on [C.real_name] ([C.ckey]), (JMP)") //playsound(usr.loc, 'bamf.ogg', 50, 0) diff --git a/code/game/gamemodes/changeling/changeling.dm b/code/game/gamemodes/changeling/changeling.dm index 76d198d796f..d981da20efe 100644 --- a/code/game/gamemodes/changeling/changeling.dm +++ b/code/game/gamemodes/changeling/changeling.dm @@ -310,13 +310,4 @@ var/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","Epsilon" user << "We already have this DNA in storage!" return 1 - -//More snowflake stuff, but for languages. -/datum/changeling/proc/changeling_update_languages(var/updated_languages, var/mob/living/carbon/user) - if(!istype(user) || !user) - return - user.languages = list() - for(var/language in updated_languages) - user.languages += language - - return \ No newline at end of file + \ No newline at end of file diff --git a/code/game/gamemodes/changeling/evolution_menu.dm b/code/game/gamemodes/changeling/evolution_menu.dm index 370a65d42a0..32ab8473d66 100644 --- a/code/game/gamemodes/changeling/evolution_menu.dm +++ b/code/game/gamemodes/changeling/evolution_menu.dm @@ -360,10 +360,11 @@ var/list/sting_paths sting_paths = init_subtypes(/obj/effect/proc_holder/changeling) if(mind.changeling.purchasedpowers) remove_changeling_powers(1) + + add_language("Changeling") for(var/language in languages) - if(!(language in mind.changeling.absorbed_languages)) - mind.changeling.absorbed_languages += language + mind.changeling.absorbed_languages |= language // purchase free powers. for(var/obj/effect/proc_holder/changeling/path in sting_paths) @@ -376,6 +377,17 @@ var/list/sting_paths var/mob/living/carbon/C = src //only carbons have dna now, so we have to typecaste mind.changeling.absorbed_dna |= C.dna return 1 + +//Used to dump the languages from the changeling datum into the actual mob. +/mob/proc/changeling_update_languages(var/updated_languages) + + for(var/datum/language/L in updated_languages) + add_language("L.name") + + //This isn't strictly necessary but just to be safe... + add_language("Changeling") + + return /datum/changeling/proc/reset() chosen_sting = null diff --git a/code/game/gamemodes/changeling/powers/absorb.dm b/code/game/gamemodes/changeling/powers/absorb.dm index 6acb6e5a66d..bb9785286dc 100644 --- a/code/game/gamemodes/changeling/powers/absorb.dm +++ b/code/game/gamemodes/changeling/powers/absorb.dm @@ -94,7 +94,7 @@ for(var/language in T.languages) if(!(language in absorbed_languages)) absorbed_languages += language - changeling_update_languages(absorbed_languages, user) + T.changeling_update_languages(absorbed_languages) absorbedcount++ store_dna(new_dna, user) diff --git a/code/game/gamemodes/changeling/powers/humanform.dm b/code/game/gamemodes/changeling/powers/humanform.dm index 81828120875..42e0bb3dad1 100644 --- a/code/game/gamemodes/changeling/powers/humanform.dm +++ b/code/game/gamemodes/changeling/powers/humanform.dm @@ -65,7 +65,7 @@ I.implanted = O user.mind.transfer_to(O) - O.mind.changeling.changeling_update_languages(changeling.absorbed_languages) + O.changeling_update_languages(changeling.absorbed_languages) O.mind.changeling.purchasedpowers -= src //O.mind.changeling.purchasedpowers += new /obj/effect/proc_holder/changeling/lesserform(null) feedback_add_details("changeling_powers","LFT") diff --git a/code/game/gamemodes/changeling/powers/lesserform.dm b/code/game/gamemodes/changeling/powers/lesserform.dm index f8ebed5798e..a769ee47bd0 100644 --- a/code/game/gamemodes/changeling/powers/lesserform.dm +++ b/code/game/gamemodes/changeling/powers/lesserform.dm @@ -60,7 +60,7 @@ C.mind.transfer_to(O) O.mind.changeling.purchasedpowers += new /obj/effect/proc_holder/changeling/humanform(null) - O.mind.changeling.changeling_update_languages(changeling.absorbed_languages) + O.changeling_update_languages(changeling.absorbed_languages) feedback_add_details("changeling_powers","LF") qdel(C) diff --git a/code/game/gamemodes/changeling/powers/transform.dm b/code/game/gamemodes/changeling/powers/transform.dm index b6a9cf0af30..f1ff51a42a2 100644 --- a/code/game/gamemodes/changeling/powers/transform.dm +++ b/code/game/gamemodes/changeling/powers/transform.dm @@ -21,6 +21,8 @@ user.set_species() user.UpdateAppearance() domutcheck(user, null) + + user.changeling_update_languages(changeling.absorbed_languages) feedback_add_details("changeling_powers","TR") return 1 diff --git a/code/game/gamemodes/events/ninja_equipment.dm b/code/game/gamemodes/events/ninja_equipment.dm index 9ed459ef8ce..95b3243ae84 100644 --- a/code/game/gamemodes/events/ninja_equipment.dm +++ b/code/game/gamemodes/events/ninja_equipment.dm @@ -1351,21 +1351,21 @@ ________________________________________________________________________________ var/chance = rand(1,100) switch(chance) if(1 to 70)//High chance of a regular name. - voice = "[rand(0,1)==1?pick(first_names_female):pick(first_names_male)] [pick(last_names)]" + changer.voice = "[rand(0,1)==1?pick(first_names_female):pick(first_names_male)] [pick(last_names)]" if(71 to 80)//Smaller chance of a clown name. - voice = "[pick(clown_names)]" + changer.voice = "[pick(clown_names)]" if(81 to 90)//Small chance of a wizard name. - voice = "[pick(wizard_first)] [pick(wizard_second)]" + changer.voice = "[pick(wizard_first)] [pick(wizard_second)]" if(91 to 100)//Small chance of an existing crew name. var/names[] = new() for(var/mob/living/carbon/human/M in player_list) if(M==U||!M.client||!M.real_name) continue names.Add(M.real_name) - voice = !names.len ? "Cuban Pete" : pick(names) - U << "You are now mimicking [voice]." + changer.voice = !names.len ? "Cuban Pete" : pick(names) + U << "You are now mimicking [changer.voice]." else - U << "The voice synthesizer is [voice!="Unknown"?"now":"already"] deactivated." - voice = "Unknown" + U << "The voice synthesizer is [changer.voice!="Unknown"?"now":"already"] deactivated." + changer.voice = "Unknown" return /obj/item/clothing/mask/gas/voice/space_ninja/proc/switchm() @@ -1408,7 +1408,7 @@ ________________________________________________________________________________ if(3) mode = "Meson Scanner" usr << "[mode] is active."//Leaving usr here since it may be on the floor or on a person. - usr << "Voice mimicking algorithm is set [!vchange?"inactive":"active"]." + usr << "Voice mimicking algorithm is set [!changer.active?"inactive":"active"]." /* diff --git a/code/game/gamemodes/nuclear/nuclear.dm b/code/game/gamemodes/nuclear/nuclear.dm index de7bc051054..6deb483f0fa 100644 --- a/code/game/gamemodes/nuclear/nuclear.dm +++ b/code/game/gamemodes/nuclear/nuclear.dm @@ -132,6 +132,7 @@ proc/issyndicate(mob/living/M as mob) synd_mind.current.loc = synd_spawn[spawnpos] forge_syndicate_objectives(synd_mind) + create_syndicate(synd_mind) greet_syndicate(synd_mind) equip_syndicate(synd_mind.current) @@ -162,7 +163,38 @@ proc/issyndicate(mob/living/M as mob) spawn (rand(waittime_l, waittime_h)) send_intercept() return ..() + +/datum/game_mode/proc/create_syndicate(var/datum/mind/synd_mind) // So we don't have inferior species as ops - randomize a human + var/mob/living/carbon/human/M = synd_mind.current + M.set_species("Human",1) + M.dna.ready_dna(M) // Quadriplegic Nuke Ops won't be participating in the paralympics + var/hair_c = pick("#8B4513","#000000","#FF4500","#FFD700") // Brown, black, red, blonde + var/eye_c = pick("#000000","#8B4513","1E90FF") // Black, brown, blue + var/skin_tone = pick(35, 60, 75, 90, 105, 120, 135, 150) // Caucasian - black + var/hair_style = "Bald" + var/facial_hair_style = "Shaved" + if(M.gender == MALE) + hair_style = pick(hair_styles_male_list) + facial_hair_style = pick(facial_hair_styles_list) + else + hair_style = pick(hair_styles_female_list) + if(prob(5)) + facial_hair_style = pick(facial_hair_styles_list) + + M.r_facial = hex2num(copytext(hair_c, 2, 4)) + M.g_facial = hex2num(copytext(hair_c, 4, 6)) + M.b_facial = hex2num(copytext(hair_c, 6, 8)) + M.r_hair = hex2num(copytext(hair_c, 2, 4)) + M.g_hair = hex2num(copytext(hair_c, 4, 6)) + M.b_hair = hex2num(copytext(hair_c, 6, 8)) + M.r_eyes = hex2num(copytext(eye_c, 2, 4)) + M.g_eyes = hex2num(copytext(eye_c, 4, 6)) + M.b_eyes = hex2num(copytext(eye_c, 6, 8)) + M.s_tone = skin_tone + 35 + M.s_tone = -M.s_tone + 35 + M.h_style = hair_style + M.f_style = facial_hair_style /datum/game_mode/proc/prepare_syndicate_leader(var/datum/mind/synd_mind, var/nuke_code) var/leader_title = pick("Czar", "Boss", "Commander", "Chief", "Kingpin", "Director", "Overlord") diff --git a/code/game/gamemodes/nuclear/nuclearbomb.dm b/code/game/gamemodes/nuclear/nuclearbomb.dm index 330949c3caf..fe3062a194c 100644 --- a/code/game/gamemodes/nuclear/nuclearbomb.dm +++ b/code/game/gamemodes/nuclear/nuclearbomb.dm @@ -23,10 +23,7 @@ var/bomb_set var/timing_wire var/removal_stage = 0 // 0 is no removal, 1 is covers removed, 2 is covers open, 3 is sealant open, 4 is unwrenched, 5 is removed from bolts. var/lastentered - var/data[0] - var/uiwidth - var/uiheight - var/uititle + flags = FPRINT use_power = 0 unacidable = 1 @@ -84,7 +81,7 @@ var/bomb_set if (istype(O, /obj/item/device/multitool) || istype(O, /obj/item/weapon/wirecutters)) ui_interact(user) - + if (src.extended) if (istype(O, /obj/item/weapon/disk/nuclear)) usr.drop_item() @@ -186,8 +183,12 @@ var/bomb_set obj/machinery/nuclearbomb/proc/nukehack_win(mob/user as mob) ui_interact(user) - + /obj/machinery/nuclearbomb/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) + var/data[0] + var/uiwidth + var/uiheight + var/uititle if(!src.opened) data["hacking"] = 0 data["auth"] = src.auth @@ -197,12 +198,12 @@ obj/machinery/nuclearbomb/proc/nukehack_win(mob/user as mob) else data["authstatus"] = "Auth. S2" else - if (src.timing) + if (src.timing) data["authstatus"] = "Set" else data["authstatus"] = "Auth. S1" - data["safe"] = src.safety ? "Safe" : "Engaged" - data["time"] = src.timeleft + data["safe"] = src.safety ? "Safe" : "Engaged" + data["time"] = src.timeleft data["timer"] = src.timing data["safety"] = src.safety data["anchored"] = src.anchored @@ -217,7 +218,7 @@ obj/machinery/nuclearbomb/proc/nukehack_win(mob/user as mob) uititle = "Nuke Control Panel" else data["hacking"] = 1 - var/list/tempwires[0] + var/list/tempwires[0] for(var/wire in src.wires) tempwires.Add(list(list("name" = wire, "cut" = src.wires[wire]))) data["wires"] = tempwires @@ -227,10 +228,10 @@ obj/machinery/nuclearbomb/proc/nukehack_win(mob/user as mob) uiwidth = 420 uiheight = 440 uititle = "Nuclear Bomb Defusion" - ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) + ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) if (!ui) ui = new(user, src, ui_key, "nuclear_bomb.tmpl", uititle, uiwidth, uiheight) - ui.set_initial_data(data) + ui.set_initial_data(data) ui.open() /obj/machinery/nuclearbomb/verb/make_deployable() @@ -337,8 +338,8 @@ obj/machinery/nuclearbomb/proc/nukehack_win(mob/user as mob) if (src.timing == -1.0) return if (src.safety) - usr << "\red The safety is still on." - nanomanager.update_uis(src) + usr << "\red The safety is still on." + nanomanager.update_uis(src) return src.timing = !( src.timing ) if (src.timing) @@ -426,7 +427,7 @@ obj/machinery/nuclearbomb/proc/nukehack_win(mob/user as mob) if(ticker.mode.name == "nuclear emergency") ticker.mode:nukes_left -- else if(off_station == 1) - world << "A nuclear device was set off, but the explosion was out of reach of the station!" + world << "A nuclear device was set off, but the explosion was out of reach of the station!" else if(off_station == 2) world << "A nuclear device was set off, but the device was not on the station!" else diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm index be2ac536afb..af9cfac6fbe 100644 --- a/code/game/gamemodes/objective.dm +++ b/code/game/gamemodes/objective.dm @@ -727,10 +727,14 @@ datum/objective/absorb var/n_p = 1 //autowin if (ticker.current_state == GAME_STATE_SETTING_UP) for(var/mob/new_player/P in player_list) - if(P.client && P.ready && P.mind!=owner) + if(P.client && P.ready && P.mind != owner) + if(P.client.prefs && (P.client.prefs.species == "Vox" || P.client.prefs.species == "Slime People" || P.client.prefs.species == "Machine")) // Special check for species that can't be absorbed. No better solution. + continue n_p ++ else if (ticker.current_state == GAME_STATE_PLAYING) for(var/mob/living/carbon/human/P in player_list) + if((P.species.flags & IS_SYNTHETIC) || (P.species.flags & NO_SCAN)) + continue if(P.client && !(P.mind in ticker.mode.changelings) && P.mind!=owner) n_p ++ target_amount = min(target_amount, n_p) diff --git a/code/game/gamemodes/setupgame.dm b/code/game/gamemodes/setupgame.dm index 96b1a3d7920..f32258c13db 100644 --- a/code/game/gamemodes/setupgame.dm +++ b/code/game/gamemodes/setupgame.dm @@ -134,22 +134,6 @@ //testing("DNA2: [numsToAssign.len] blocks are unused: [english_list(numsToAssign)]") -// Run AFTER genetics setup and AFTER species setup. -/proc/setup_species() - // SPECIES GENETICS FUN - for(var/name in all_species) - // I hate BYOND. Can't just call while it's in the list. - var/datum/species/species = all_species[name] - if(species.default_block_names.len>0) - testing("Setting up genetics for [species.name] (needs [english_list(species.default_block_names)])") - species.default_blocks.Cut() - for(var/block=1;block= 5) //Cannot reach target. Give up and announce the issue. - speak("Summon command failed, destination unreachable.", radio_frequency, radio_name) + speak("Summon command failed, destination unreachable.", radio_name) bot_reset() /obj/machinery/bot/proc/summon_step() diff --git a/code/game/machinery/bots/cleanbot.dm b/code/game/machinery/bots/cleanbot.dm index e30bfa45283..a77235dad26 100644 --- a/code/game/machinery/bots/cleanbot.dm +++ b/code/game/machinery/bots/cleanbot.dm @@ -38,7 +38,6 @@ var/failed_steps var/next_dest var/next_dest_loc - radio_frequency = SRV_FREQ //Service radio_name = "Service" bot_type = CLEAN_BOT bot_type_name = "Cleanbot" diff --git a/code/game/machinery/bots/ed209bot.dm b/code/game/machinery/bots/ed209bot.dm index 703b0b7dd82..bffd8a07032 100644 --- a/code/game/machinery/bots/ed209bot.dm +++ b/code/game/machinery/bots/ed209bot.dm @@ -33,7 +33,6 @@ var/arrest_type = 0 //If true, don't handcuff var/projectile = /obj/item/projectile/energy/electrode //Holder for projectile type var/shoot_sound = 'sound/weapons/Taser.ogg' - radio_frequency = SEC_FREQ radio_name = "Security" bot_type = SEC_BOT bot_type_name = "ED-209" @@ -269,7 +268,7 @@ Auto Patrol[]"}, if(declare_arrests) var/area/location = get_area(src) - speak("[arrest_type ? "Detaining" : "Arresting"] level [threatlevel] scumbag [target] in [location].",radio_frequency, radio_name) + speak("[arrest_type ? "Detaining" : "Arresting"] level [threatlevel] scumbag [target] in [location].", radio_name) target.visible_message("[target] has been stunned by [src]!",\ "[target] has been stunned by [src]!") diff --git a/code/game/machinery/bots/floorbot.dm b/code/game/machinery/bots/floorbot.dm index 3752796f90f..e9a8c67093f 100644 --- a/code/game/machinery/bots/floorbot.dm +++ b/code/game/machinery/bots/floorbot.dm @@ -49,7 +49,6 @@ var/oldloc = null req_one_access = list(access_construction, access_robotics) var/targetdirection - radio_frequency = ENG_FREQ //Engineering channel radio_name = "Engineering" bot_type = FLOOR_BOT bot_type_name = "Floorbot" @@ -318,7 +317,7 @@ /obj/machinery/bot/floorbot/proc/nag() //Annoy everyone on the channel to refill us! if(!nagged) var/area/location = get_area(src) - speak("Requesting refill at [location]!", radio_frequency, radio_name) + speak("Requesting refill at [location]!", radio_name) nagged = 1 /obj/machinery/bot/floorbot/proc/is_hull_breach(var/turf/t) //Ignore space tiles not considered part of a structure, also ignores shuttle docking areas. diff --git a/code/game/machinery/bots/medbot.dm b/code/game/machinery/bots/medbot.dm index 084514ecd85..aa0dd6c94ab 100644 --- a/code/game/machinery/bots/medbot.dm +++ b/code/game/machinery/bots/medbot.dm @@ -30,7 +30,6 @@ var/declare_crit = 1 //If active, the bot will transmit a critical patient alert to MedHUD users. var/declare_cooldown = 0 //Prevents spam of critical patient alerts. var/stationary_mode = 0 //If enabled, the Medibot will not move automatically. - radio_frequency = MED_FREQ //Medical frequency radio_name = "Medical" //Setting which reagents to use to treat what by default. By id. var/treatment_brute = "tricordrazine" @@ -533,7 +532,7 @@ if((skin == "bezerk")) return var/area/location = get_area(src) - speak("Medical emergency! [crit_patient ? "[crit_patient]" : "A patient"] is in critical condition at [location]!",radio_frequency, radio_name) + speak("Medical emergency! [crit_patient ? "[crit_patient]" : "A patient"] is in critical condition at [location]!", radio_name) declare_cooldown = 1 spawn(200) //Twenty seconds declare_cooldown = 0 diff --git a/code/game/machinery/bots/mulebot.dm b/code/game/machinery/bots/mulebot.dm index 19ef2058f43..ac28b903947 100644 --- a/code/game/machinery/bots/mulebot.dm +++ b/code/game/machinery/bots/mulebot.dm @@ -71,7 +71,7 @@ var/global/mulebot_count = 0 cell.charge = 2000 cell.maxcharge = 2000 - spawn(5) // must wait for map loading to finish + spawn(50) // must wait for map loading to finish add_to_beacons(bot_filter) mulebot_count += 1 @@ -238,7 +238,7 @@ var/global/mulebot_count = 0 //user << browse("M.U.L.E. Mk. III [suffix ? "([suffix])" : ""][dat]", "window=mulebot;size=350x500") //onclose(user, "mulebot") - var/datum/browser/popup = new(user, "mulebot", "M.U.L.E. Mk. V [suffix ? "([suffix])" : ""]", 350, 535) + var/datum/browser/popup = new(user, "mulebot", "M.U.L.E. Mk. V [suffix ? "([suffix])" : ""]", 350, 620) popup.set_content(dat) popup.set_title_image(user.browse_rsc_icon(icon, icon_state)) popup.open() @@ -313,6 +313,8 @@ var/global/mulebot_count = 0 updateDialog() if("destination") + if(!delivery_beacons.len) + post_signal(beacon_freq, "findbeacon", "delivery") refresh=0 var/new_dest = input("Select M.U.L.E. Destination", "Mulebot [suffix ? "([suffix])" : ""]", destination) as null|anything in delivery_beacons refresh=1 @@ -683,7 +685,6 @@ var/global/mulebot_count = 0 // called when bot reaches current target /obj/machinery/bot/mulebot/proc/at_target() if(!reached_target) - radio_frequency = SUP_FREQ //Supply channel radio_name = "Supply" Radio.config(list("[radio_name]" = 0)) visible_message("[src] makes a chiming sound!", "You hear a chime.") @@ -696,12 +697,11 @@ var/global/mulebot_count = 0 calling_ai << "\icon[src] [src] wirelessly plays a chiming sound!" playsound(calling_ai, 'sound/machines/chime.ogg',40, 0) calling_ai = null - radio_frequency = AIPRIV_FREQ //Report on AI Private instead if the AI is controlling us. radio_name = "AI Private" Radio.config(list("[radio_name]" = 0)) if(load) // if loaded, unload at target - speak("Destination [destination] reached. Unloading [load].", radio_frequency, radio_name) + speak("Destination [destination] reached. Unloading [load].", radio_name) unload(loaddir) else // not loaded @@ -717,7 +717,7 @@ var/global/mulebot_count = 0 if(AM) load(AM) if(report_delivery) - speak("Now loading [load] at [get_area(src)].", radio_frequency, radio_name) + speak("Now loading [load] at [get_area(src)].", radio_name) // whatever happened, check to see if we return home if(auto_return && destination != home_destination) diff --git a/code/game/machinery/bots/secbot.dm b/code/game/machinery/bots/secbot.dm index d7d9d24a774..2b70de39797 100644 --- a/code/game/machinery/bots/secbot.dm +++ b/code/game/machinery/bots/secbot.dm @@ -25,7 +25,6 @@ var/arrest_type = 0 //If true, don't handcuff var/harmbaton = 0 var/base_icon = "secbot" - radio_frequency = SEC_FREQ //Security channel radio_name = "Security" bot_type = SEC_BOT bot_type_name = "Secbot" @@ -50,7 +49,6 @@ /obj/machinery/bot/secbot/pingsky name = "Officer Pingsky" desc = "It's Officer Pingsky! Delegated to satellite guard duty for harbouring anti-human sentiment." - radio_frequency = AIPRIV_FREQ radio_name = "AI Private" /obj/machinery/bot/secbot/ofitser @@ -256,7 +254,7 @@ Auto Patrol: []"}, if(declare_arrests) var/area/location = get_area(src) - speak("[arrest_type ? "Detaining" : "Arresting"] level [threatlevel] scumbag [target] in [location].",radio_frequency, radio_name) + speak("[arrest_type ? "Detaining" : "Arresting"] level [threatlevel] scumbag [target] in [location].", radio_name) target.visible_message("[target] has been [harmbaton ? "beaten" : "stunned"] by [src]!",\ "[target] has been [harmbaton ? "beaten" : "stunned"] by [src]!") diff --git a/code/game/machinery/camera/tracking.dm b/code/game/machinery/camera/tracking.dm index 1d60db31a3c..dd7c175ce4d 100644 --- a/code/game/machinery/camera/tracking.dm +++ b/code/game/machinery/camera/tracking.dm @@ -4,7 +4,7 @@ /mob/living/silicon/ai/proc/InvalidTurf(turf/T as turf) if(!T) return 1 - if((T.z in config.station_levels)) + if((T.z in config.admin_levels)) return 1 if(T.z > 6) return 1 diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm index 265145b4a04..a04ed3f2053 100644 --- a/code/game/machinery/hologram.dm +++ b/code/game/machinery/hologram.dm @@ -81,13 +81,20 @@ var/const/HOLOPAD_MODE = 0 /*This is the proc for special two-way communication between AI and holopad/people talking near holopad. For the other part of the code, check silicon say.dm. Particularly robot talk.*/ -/obj/machinery/hologram/holopad/hear_talk(mob/living/M, text, verb) +/obj/machinery/hologram/holopad/hear_talk(mob/living/M, text, verb, datum/language/speaking) if(M&&hologram&&master)//Master is mostly a safety in case lag hits or something. - if(!master.say_understands(M))//The AI will be able to understand most mobs talking through the holopad. - text = stars(text) + if(!master.say_understands(M, speaking))//The AI will be able to understand most mobs talking through the holopad. + if(speaking) + text = speaking.scramble(text) + else + text = stars(text) var/name_used = M.GetVoice() //This communication is imperfect because the holopad "filters" voices and is only designed to connect to the master only. - var/rendered = "Holopad received, [name_used] [verb], \"[text]\"" + var/rendered + if(speaking) + rendered = "Holopad received, [name_used] [speaking.format_message(text, verb)]" + else + rendered = "Holopad received, [name_used] [verb], \"[text]\"" master.show_message(rendered, 2) return diff --git a/code/game/machinery/telecomms/broadcaster.dm b/code/game/machinery/telecomms/broadcaster.dm index d2dbe48ce03..16b3e3860c8 100644 --- a/code/game/machinery/telecomms/broadcaster.dm +++ b/code/game/machinery/telecomms/broadcaster.dm @@ -20,7 +20,6 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept use_power = 1 idle_power_usage = 25 machinetype = 5 - heatgen = 0 delay = 7 circuitboard = "/obj/item/weapon/circuitboard/telecomms/broadcaster" @@ -59,7 +58,9 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept signal.data["vmask"], signal.data["vmessage"], signal.data["radio"], signal.data["message"], signal.data["name"], signal.data["job"], - signal.data["realname"], signal.data["vname"],, signal.data["compression"], signal.data["level"], signal.frequency) + signal.data["realname"], signal.data["vname"],, + signal.data["compression"], signal.data["level"], signal.frequency, + signal.data["verb"], signal.data["language"] ) /** #### - Simple Broadcast - #### **/ @@ -84,7 +85,8 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept signal.data["vmask"], signal.data["vmessage"], signal.data["radio"], signal.data["message"], signal.data["name"], signal.data["job"], - signal.data["realname"], signal.data["vname"], 4, signal.data["compression"], signal.data["level"], signal.frequency) + signal.data["realname"], signal.data["vname"], 4, signal.data["compression"], signal.data["level"], signal.frequency, + signal.data["verb"], signal.data["language"]) if(!message_delay) message_delay = 1 @@ -95,7 +97,7 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept /* --- Do a snazzy animation! --- */ flick("broadcaster_send", src) -/obj/machinery/telecomms/broadcaster/Destroy() +/obj/machinery/telecomms/broadcaster/Del() // In case message_delay is left on 1, otherwise it won't reset the list and people can't say the same thing twice anymore. if(message_delay) message_delay = 0 @@ -117,7 +119,6 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept use_power = 0 idle_power_usage = 0 machinetype = 6 - heatgen = 0 var/intercept = 0 // if nonzero, broadcasts all messages to syndicate channel /obj/machinery/telecomms/allinone/receive_signal(datum/signal/signal) @@ -142,19 +143,21 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept var/datum/radio_frequency/connection = signal.data["connection"] - if(connection.frequency == SYND_FREQ) // if syndicate broadcast, just + if(connection.frequency in ANTAG_FREQS) // if antag broadcast, just Broadcast_Message(signal.data["connection"], signal.data["mob"], signal.data["vmask"], signal.data["vmessage"], signal.data["radio"], signal.data["message"], signal.data["name"], signal.data["job"], - signal.data["realname"], signal.data["vname"],, signal.data["compression"], list(0), connection.frequency) + signal.data["realname"], signal.data["vname"],, signal.data["compression"], list(0), connection.frequency, + signal.data["verb"], signal.data["language"]) else if(intercept) Broadcast_Message(signal.data["connection"], signal.data["mob"], signal.data["vmask"], signal.data["vmessage"], signal.data["radio"], signal.data["message"], signal.data["name"], signal.data["job"], - signal.data["realname"], signal.data["vname"], 3, signal.data["compression"], list(0), connection.frequency) + signal.data["realname"], signal.data["vname"], 3, signal.data["compression"], list(0), connection.frequency, + signal.data["verb"], signal.data["language"]) @@ -218,7 +221,8 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept /proc/Broadcast_Message(var/datum/radio_frequency/connection, var/mob/M, var/vmask, var/vmessage, var/obj/item/device/radio/radio, var/message, var/name, var/job, var/realname, var/vname, - var/data, var/compression, var/list/level, var/freq) + var/data, var/compression, var/list/level, var/freq, var/verbage = "says", var/datum/language/speaking = null) + /* ###### Prepare the radio connection ###### */ @@ -246,16 +250,14 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept if(R.receive_range(display_freq, level) > -1) radios += R - // --- Broadcast to syndicate radio! --- + // --- Broadcast to antag radios! --- else if(data == 3) - - var/datum/radio_frequency/syndicateconnection = radio_controller.return_frequency(SYND_FREQ) - - for (var/obj/item/device/radio/R in syndicateconnection.devices["[RADIO_CHAT]"]) - - if(R.receive_range(SYND_FREQ, level) > -1) - radios += R + for(var/antag_freq in ANTAG_FREQS) + var/datum/radio_frequency/antag_connection = radio_controller.return_frequency(antag_freq) + for (var/obj/item/device/radio/R in antag_connection.devices["[RADIO_CHAT]"]) + if(R.receive_range(antag_freq, level) > -1) + radios += R // --- Broadcast to ALL radio devices --- @@ -283,6 +285,8 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept /* --- Loop through the receivers and categorize them --- */ + if (R.client && (R.client.prefs.toggles & CHAT_RADIO)) //Adminning with 80 people on can be fun when you're trying to talk and all you can hear is radios. + continue if(istype(R, /mob/new_player)) // we don't want new players to hear messages. rare but generates runtimes. continue @@ -324,88 +328,17 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept if (length(heard_masked) || length(heard_normal) || length(heard_voice) || length(heard_garbled) || length(heard_gibberish)) /* --- Some miscellaneous variables to format the string output --- */ - var/part_a = "" // goes in the actual output - var/freq_text // the name of the channel - - // --- Set the name of the channel --- - switch(display_freq) - - if(SYND_FREQ) - freq_text = "#unkn" - if(COMM_FREQ) - freq_text = "Command" - if(1351) - freq_text = "Science" - if(1355) - freq_text = "Medical" - if(1357) - freq_text = "Engineering" - if(1359) - freq_text = "Security" - if(1347) - freq_text = "Supply" - if(1349) - freq_text = "Service" - if(1441) - freq_text = "Special Ops" - if(1443) - freq_text = "Response Team" - if(1447) - freq_text = "AI Private" - //There's probably a way to use the list var of channels in code\game\communications.dm to make the dept channels non-hardcoded, but I wasn't in an experimentive mood. --NEO - - - // --- If the frequency has not been assigned a name, just use the frequency as the name --- - - if(!freq_text) - freq_text = format_frequency(display_freq) - - // --- Some more pre-message formatting --- + var/freq_text = get_frequency_name(display_freq) var/part_b_extra = "" if(data == 3) // intercepted radio message part_b_extra = " (Intercepted)" - var/part_b = " \icon[radio]\[[freq_text]\][part_b_extra] " // Tweaked for security headsets -- TLE + var/part_a = "\icon[radio]\[[freq_text]\][part_b_extra] " // goes in the actual output + + // --- Some more pre-message formatting --- + var/part_b = " " // Tweaked for security headsets -- TLE var/part_c = "" - // syndies! - if (display_freq == SYND_FREQ) - part_a = "" - - // centcomm channels (deathsquid and ert) - else if (display_freq in CENT_FREQS) - part_a = "" - - // command channel - else if (display_freq == COMM_FREQ) - part_a = "" - - // AI private channel - else if (display_freq == 1447) - part_a = "" - - // department radio formatting (poorly optimized, ugh) - else if (display_freq == SEC_FREQ) - part_a = "" - - else if (display_freq == ENG_FREQ) - part_a = "" - - else if (display_freq == SCI_FREQ) - part_a = "" - - else if (display_freq == MED_FREQ) - part_a = "" - - else if (display_freq == SUP_FREQ) // cargo - part_a = "" - - else if (display_freq == SRV_FREQ) // cargo - part_a = "" - // If all else fails and it's a dept_freq, color me purple! - else if (display_freq in DEPT_FREQS) - part_a = "" - // --- Filter the message; place it in quotes apply a verb --- @@ -424,133 +357,67 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept //BR.messages_admin += blackbox_admin_msg if(istype(blackbox)) switch(display_freq) - if(1459) + if(PUB_FREQ) blackbox.msg_common += blackbox_msg - if(1351) + if(SCI_FREQ) blackbox.msg_science += blackbox_msg - if(1353) + if(COMM_FREQ) blackbox.msg_command += blackbox_msg - if(1355) + if(MED_FREQ) blackbox.msg_medical += blackbox_msg - if(1357) + if(ENG_FREQ) blackbox.msg_engineering += blackbox_msg - if(1359) + if(SEC_FREQ) blackbox.msg_security += blackbox_msg - if(1441) + if(DTH_FREQ) blackbox.msg_deathsquad += blackbox_msg - if(1213) + if(SYND_FREQ) blackbox.msg_syndicate += blackbox_msg - if(1347) + if(SUP_FREQ) blackbox.msg_cargo += blackbox_msg - if(1349) + if(SRV_FREQ) blackbox.msg_service += blackbox_msg else blackbox.messages += blackbox_msg //End of research and feedback code. - var/aitrack = "" - var/aiopen = "" /* ###### Send the message ###### */ /* --- Process all the mobs that heard a masked voice (understood) --- */ if (length(heard_masked)) - var/N = name - var/J = job - var/rendered = "[part_a][N][part_b][quotedmsg][part_c]" for (var/mob/R in heard_masked) - aitrack = "" - aiopen = "\[OPEN\] " - if(data == 4) - aitrack = "" - - if(istype(R, /mob/living/silicon/ai)) - R.show_message("[part_a][aitrack][N] ([J]) [aiopen][part_b][quotedmsg][part_c]", 2) - else - R.show_message(rendered, 2) + R.hear_radio(message,verbage, speaking, part_a, part_b, M, 0, name) /* --- Process all the mobs that heard the voice normally (understood) --- */ if (length(heard_normal)) - var/rendered = "[part_a][realname][part_b][quotedmsg][part_c]" - for (var/mob/R in heard_normal) - aitrack = "" - aiopen = "\[OPEN\] " - if(data == 4) - aitrack = "" - - if(istype(R, /mob/living/silicon/ai)) - R.show_message("[part_a][aitrack][realname] ([job]) [aiopen][part_b][quotedmsg][part_c]", 2) - else - R.show_message(rendered, 2) + R.hear_radio(message, verbage, speaking, part_a, part_b, M, 0, realname) /* --- Process all the mobs that heard the voice normally (did not understand) --- */ if (length(heard_voice)) - var/rendered = "[part_a][vname][part_b][vmessage][part_c]" - for (var/mob/R in heard_voice) - aitrack = "" - aiopen = "\[OPEN\] " - if(data == 4) - aitrack = "" - - - if(istype(R, /mob/living/silicon/ai)) - R.show_message("[part_a][aitrack][vname] ([job]) [aiopen][part_b][vmessage]][part_c]", 2) - else - R.show_message(rendered, 2) + R.hear_radio(message,verbage, speaking, part_a, part_b, M,0, vname) /* --- Process all the mobs that heard a garbled voice (did not understand) --- */ // Displays garbled message (ie "f*c* **u, **i*er!") if (length(heard_garbled)) - if(M) - quotedmsg = M.say_quote(stars(message)) - else - quotedmsg = stars(quotedmsg) - - var/rendered = "[part_a][vname][part_b][quotedmsg][part_c]" - for (var/mob/R in heard_garbled) - aitrack = "" - aiopen = "\[OPEN\] " - if(data == 4) - aitrack = "" - - - if(istype(R, /mob/living/silicon/ai)) - R.show_message("[part_a][aitrack][vname][aiopen][part_b][quotedmsg][part_c]", 2) - else - R.show_message(rendered, 2) + R.hear_radio(message, verbage, speaking, part_a, part_b, M, 1, vname) /* --- Complete gibberish. Usually happens when there's a compressed message --- */ if (length(heard_gibberish)) - if(M) - quotedmsg = M.say_quote(Gibberish(message, compression + 50)) - else - quotedmsg = Gibberish(quotedmsg, compression + 50) - - var/rendered = "[part_a][Gibberish(name, compression + 50)][part_b][quotedmsg][part_c]" - for (var/mob/R in heard_gibberish) - aitrack = "" - aiopen = "\[OPEN\] " - if(data == 4) - aitrack = "" - - - if(istype(R, /mob/living/silicon/ai)) - R.show_message("[part_a][aitrack][Gibberish(realname, compression + 50)] ([Gibberish(job, compression + 50)]) [aiopen][part_b][quotedmsg][part_c]", 2) - else - R.show_message(rendered, 2) - + R.hear_radio(message, verbage, speaking, part_a, part_b, M, 1) + return 1 /proc/Broadcast_SimpleMessage(var/source, var/frequency, var/text, var/data, var/mob/M, var/compression, var/level) @@ -588,15 +455,15 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept receive |= R.send_hear(display_freq) - // --- Broadcast to syndicate radio! --- + // --- Broadcast to antag radios! --- else if(data == 3) - var/datum/radio_frequency/syndicateconnection = radio_controller.return_frequency(SYND_FREQ) - - for (var/obj/item/device/radio/R in syndicateconnection.devices["[RADIO_CHAT]"]) - var/turf/position = get_turf(R) - if(position && position.z == level) - receive |= R.send_hear(SYND_FREQ) + for(var/freq in ANTAG_FREQS) + var/datum/radio_frequency/antag_connection = radio_controller.return_frequency(freq) + for (var/obj/item/device/radio/R in antag_connection.devices["[RADIO_CHAT]"]) + var/turf/position = get_turf(R) + if(position && position.z == level) + receive |= R.send_hear(freq) // --- Broadcast to ALL radio devices --- @@ -621,6 +488,8 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept /* --- Loop through the receivers and categorize them --- */ + if (R.client && !(R.client.prefs.toggles & CHAT_RADIO)) //Adminning with 80 people on can be fun when you're trying to talk and all you can hear is radios. + continue // --- Check for compression --- @@ -648,34 +517,7 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept /* --- Some miscellaneous variables to format the string output --- */ var/part_a = "" // goes in the actual output - var/freq_text // the name of the channel - - // --- Set the name of the channel --- - switch(display_freq) - - if(SYND_FREQ) - freq_text = "#unkn" - if(COMM_FREQ) - freq_text = "Command" - if(1351) - freq_text = "Science" - if(1355) - freq_text = "Medical" - if(1357) - freq_text = "Engineering" - if(1359) - freq_text = "Security" - if(1347) - freq_text = "Supply" - if(1349) - freq_text = "Service" - //There's probably a way to use the list var of channels in code\game\communications.dm to make the dept channels non-hardcoded, but I wasn't in an experimentive mood. --NEO - - - // --- If the frequency has not been assigned a name, just use the frequency as the name --- - - if(!freq_text) - freq_text = format_frequency(display_freq) + var/freq_text = get_frequency_name(display_freq) // --- Some more pre-message formatting --- @@ -689,7 +531,7 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept var/part_b = " \icon[radio]\[[freq_text]\][part_b_extra] " // Tweaked for security headsets -- TLE var/part_c = "" - if (display_freq==SYND_FREQ) + if (display_freq in ANTAG_FREQS) part_a = "" else if (display_freq==COMM_FREQ) part_a = "" @@ -705,25 +547,25 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept //BR.messages_admin += blackbox_admin_msg if(istype(blackbox)) switch(display_freq) - if(1459) + if(PUB_FREQ) blackbox.msg_common += blackbox_msg - if(1351) + if(SCI_FREQ) blackbox.msg_science += blackbox_msg - if(1353) + if(COMM_FREQ) blackbox.msg_command += blackbox_msg - if(1355) + if(MED_FREQ) blackbox.msg_medical += blackbox_msg - if(1357) + if(ENG_FREQ) blackbox.msg_engineering += blackbox_msg - if(1359) + if(SEC_FREQ) blackbox.msg_security += blackbox_msg - if(1441) + if(DTH_FREQ) blackbox.msg_deathsquad += blackbox_msg - if(1213) + if(SYND_FREQ) blackbox.msg_syndicate += blackbox_msg - if(1347) + if(SUP_FREQ) blackbox.msg_cargo += blackbox_msg - if(1349) + if(SRV_FREQ) blackbox.msg_service += blackbox_msg else blackbox.messages += blackbox_msg @@ -767,7 +609,7 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept var/turf/position = get_turf(src) return (position.z in signal.data["level"] && signal.data["done"]) -/atom/proc/telecomms_process() +/atom/proc/telecomms_process(var/do_sleep = 1) // First, we want to generate a new radio signal var/datum/signal/signal = new @@ -785,13 +627,14 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept "done" = 0, "level" = pos.z // The level it is being broadcasted at. ) - signal.frequency = 1459// Common channel + signal.frequency = PUB_FREQ// Common channel //#### Sending the signal to all subspace receivers ####// for(var/obj/machinery/telecomms/receiver/R in telecomms_list) R.receive_signal(signal) - sleep(rand(10,25)) + if(do_sleep) + sleep(rand(10,25)) //world.log << "Level: [signal.data["level"]] - Done: [signal.data["done"]]" diff --git a/code/game/objects/items/devices/paicard.dm b/code/game/objects/items/devices/paicard.dm index cdd866e41c6..e184b0fb066 100644 --- a/code/game/objects/items/devices/paicard.dm +++ b/code/game/objects/items/devices/paicard.dm @@ -161,19 +161,13 @@ - - - - - - @@ -265,8 +259,11 @@ removePersonality() if(href_list["wires"]) var/t1 = text2num(href_list["wires"]) - if(radio) - radio.wires.CutWireIndex(t1) + switch(t1) + if(4) + radio.ToggleBroadcast() + if(2) + radio.ToggleReception() if(href_list["setlaws"]) var/newlaws = copytext(sanitize(input("Enter any additional directives you would like your pAI personality to follow. Note that these directives will not override the personality's allegiance to its imprinted master. Conflicting directives will be ignored.", "pAI Directive Configuration", pai.pai_laws) as message),1,MAX_MESSAGE_LEN) if(newlaws) diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm index 32bf7da3c7a..29854facc67 100644 --- a/code/game/objects/items/devices/radio/headset.dm +++ b/code/game/objects/items/devices/radio/headset.dm @@ -127,7 +127,7 @@ /obj/item/device/radio/headset/heads/captain/alt name = "\proper the captain's bowman headset" - desc = "The headset of the boss. Protects ears from flashbangs. \nChannels are as follows: :c - command, :s - security, :e - engineering, :u - supply, :v - service, :m - medical, :n - science." + desc = "The headset of the boss. Protects ears from flashbangs. \nChannels are as follows: :c - command, :s - security, :e - engineering, :u - supply, :zz - service, :m - medical, :n - science." flags = EARBANGPROTECT icon_state = "com_headset_alt" item_state = "com_headset_alt" diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index 28fdc835308..503fc2b5041 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -1,8 +1,3 @@ -var/GLOBAL_RADIO_TYPE = 1 // radio type to use - // 0 = old radios - // 1 = new radios (subspace technology) - - /obj/item/device/radio icon = 'icons/obj/radio.dmi' name = "station bounced radio" @@ -11,19 +6,18 @@ var/GLOBAL_RADIO_TYPE = 1 // radio type to use item_state = "walkietalkie" var/on = 1 // 0 for off var/last_transmission - var/frequency = 1459 //common chat + var/frequency = PUB_FREQ //common chat var/traitor_frequency = 0 //tune to frequency to unlock traitor supplies var/canhear_range = 3 // the range which mobs can hear this radio from var/obj/item/device/radio/patch_link = null var/datum/wires/radio/wires = null - var/prison_radio = 0 var/b_stat = 0 var/broadcasting = 0 var/listening = 1 var/freerange = 0 // 0 - Sanitize frequencies, 1 - Full range - var/list/channels = list() //see communications.dm for full list. First channels is a "default" for :h + var/list/channels = list() //see communications.dm for full list. First channes is a "default" for :h var/subspace_transmission = 0 - var/syndie = 0//Holder to see if it's a syndicate encrypted radio + var/syndie = 0//Holder to see if it's a syndicate encrpyed radio var/maxf = 1499 // "Example" = FREQ_LISTENING|FREQ_BROADCASTING flags = CONDUCT @@ -31,32 +25,31 @@ var/GLOBAL_RADIO_TYPE = 1 // radio type to use throw_speed = 2 throw_range = 9 w_class = 2 - g_amt = 25 + m_amt = 75 - - var/const/TRANSMISSION_DELAY = 5 // only 2/second/radio + g_amt = 25 var/const/FREQ_LISTENING = 1 - //FREQ_BROADCASTING = 2 + var/prison_radio = 0 - var/always_talk=0 // ALWAYS catch signals. Useful for covert listening devices. /obj/item/device/radio var/datum/radio_frequency/radio_connection - var/list/datum/radio_frequency/secure_radio_connections + var/list/datum/radio_frequency/secure_radio_connections = new proc/set_frequency(new_frequency) radio_controller.remove_object(src, frequency) frequency = new_frequency radio_connection = radio_controller.add_object(src, frequency, RADIO_CHAT) + /obj/item/device/radio/New() - wires = new(src) - if(prison_radio) - wires.CutWireIndex(WIRE_TRANSMIT) - secure_radio_connections = new ..() + wires = new(src) if(radio_controller) initialize() + + if(prison_radio) + wires.CutWireIndex(WIRE_TRANSMIT) /obj/item/device/radio/initialize() @@ -117,9 +110,16 @@ var/GLOBAL_RADIO_TYPE = 1 // radio type to use /obj/item/device/radio/proc/text_sec_channel(var/chan_name, var/chan_stat) var/list = !!(chan_stat&FREQ_LISTENING)!=0 return {" - [chan_name]: [list ? "Engaged" : "Disengaged"]
+ [chan_name]
+ Speaker: [list ? "Engaged" : "Disengaged"]
"} +/obj/item/device/radio/proc/ToggleBroadcast() + broadcasting = !broadcasting && !(wires.IsIndexCut(WIRE_TRANSMIT) || wires.IsIndexCut(WIRE_SIGNAL)) + +/obj/item/device/radio/proc/ToggleReception() + listening = !listening && !(wires.IsIndexCut(WIRE_RECEIVE) || wires.IsIndexCut(WIRE_SIGNAL)) + /obj/item/device/radio/Topic(href, href_list) //..() if (usr.stat || !on) @@ -129,13 +129,6 @@ var/GLOBAL_RADIO_TYPE = 1 // radio type to use usr << browse(null, "window=radio") return usr.set_machine(src) - if (href_list["open"]) - var/mob/target = locate(href_list["open"]) - var/mob/living/silicon/ai/A = locate(href_list["open2"]) - if(A && target) - A.open_nearest_door(target) - return - if (href_list["track"]) var/mob/target = locate(href_list["track"]) var/mob/living/silicon/ai/A = locate(href_list["track2"]) @@ -143,23 +136,6 @@ var/GLOBAL_RADIO_TYPE = 1 // radio type to use A.ai_actual_track(target) return - else if (href_list["faketrack"]) - var/mob/target = locate(href_list["track"]) - var/mob/living/silicon/ai/A = locate(href_list["track2"]) - if(A && target) - - A:cameraFollow = target - A << text("Now tracking [] on camera.", target.name) - if (usr.machine == null) - usr.machine = usr - - while (usr:cameraFollow == target) - usr << "Target is not on or near any active cameras on the station. We'll check again in 5 seconds (unless you use the cancel-camera verb)." - sleep(40) - continue - - return - else if (href_list["freq"]) var/new_frequency = (frequency + text2num(href_list["freq"])) if (!freerange || (frequency < 1200 || frequency > 1600)) @@ -171,16 +147,17 @@ var/GLOBAL_RADIO_TYPE = 1 // radio type to use return else if (href_list["talk"]) - broadcasting = text2num(href_list["talk"]) + ToggleBroadcast() else if (href_list["listen"]) var/chan_name = href_list["ch_name"] if (!chan_name) - listening = text2num(href_list["listen"]) + ToggleReception() else if (channels[chan_name] & FREQ_LISTENING) channels[chan_name] &= ~FREQ_LISTENING else channels[chan_name] |= FREQ_LISTENING + if (!( master )) if (istype(loc, /mob)) interact(loc) @@ -193,10 +170,7 @@ var/GLOBAL_RADIO_TYPE = 1 // radio type to use updateDialog() add_fingerprint(usr) -/obj/item/device/radio/proc/isWireCut(var/index) - return wires.IsIndexCut(index) - -/obj/item/device/radio/proc/autosay(var/message, var/from, var/channel, var/zlevel = list(1)) //BS12 EDIT +/obj/item/device/radio/proc/autosay(var/message, var/from, var/channel, var/zlevel = config.contact_levels) //BS12 EDIT var/datum/radio_frequency/connection = null if(channel && channels && channels.len > 0) if (channel == "department") @@ -219,173 +193,115 @@ var/GLOBAL_RADIO_TYPE = 1 // radio type to use del(A) return -/obj/item/device/radio/talk_into(mob/living/M as mob, message, channel) - if(!on) return // the device has to be on +// Interprets the message mode when talking into a radio, possibly returning a connection datum +/obj/item/device/radio/proc/handle_message_mode(mob/living/M as mob, message, message_mode) + // If a channel isn't specified, send to common. + if(!message_mode || message_mode == "headset") + return radio_connection + + // Otherwise, if a channel is specified, look for it. + if(channels && channels.len > 0) + if (message_mode == "department") // Department radio shortcut + message_mode = channels[1] + + if (channels[message_mode]) // only broadcast if the channel is set on + return secure_radio_connections[message_mode] + + // If we were to send to a channel we don't have, drop it. + return null + +/obj/item/device/radio/talk_into(mob/living/M as mob, message, channel, var/verb = "says", var/datum/language/speaking = null) + if(!on) return 0 // the device has to be on // Fix for permacell radios, but kinda eh about actually fixing them. - if(!M || !message) return + if(!M || !message) return 0 // Uncommenting this. To the above comment: // The permacell radios aren't suppose to be able to transmit, this isn't a bug and this "fix" is just making radio wires useless. -Giacom - if(isWireCut(WIRE_TRANSMIT)) // The device has to have all its wires and shit intact - return + if(wires.IsIndexCut(WIRE_TRANSMIT)) // The device has to have all its wires and shit intact + return 0 + + M.last_target_click = world.time + + /* Quick introduction: + This new radio system uses a very robust FTL signaling technology unoriginally + dubbed "subspace" which is somewhat similar to 'blue-space' but can't + actually transmit large mass. Headsets are the only radio devices capable + of sending subspace transmissions to the Communications Satellite. + + A headset sends a signal to a subspace listener/reciever elsewhere in space, + the signal gets processed and logged, and an audible transmission gets sent + to each individual headset. + */ + + //#### Grab the connection datum ####// + var/datum/radio_frequency/connection = handle_message_mode(M, message, channel) + if (!istype(connection)) + return 0 + if (!connection) + return 0 + + var/turf/position = get_turf(src) + + //#### Tagging the signal with all appropriate identity values ####// + + // ||-- The mob's name identity --|| + var/displayname = M.name // grab the display name (name you get when you hover over someone's icon) + var/real_name = M.real_name // mob's real name + var/mobkey = "none" // player key associated with mob + var/voicemask = 0 // the speaker is wearing a voice mask + if(M.client) + mobkey = M.key // assign the mob's key - if(GLOBAL_RADIO_TYPE == 1) // NEW RADIO SYSTEMS: By Doohl + var/jobname // the mob's "job" - /* Quick introduction: - This new radio system uses a very robust FTL signaling technology unoriginally - dubbed "subspace" which is somewhat similar to 'blue-space' but can't - actually transmit large mass. Headsets are the only radio devices capable - of sending subspace transmissions to the Communications Satellite. + // --- Human: use their actual job --- + if (ishuman(M)) + var/mob/living/carbon/human/H = M + jobname = H.get_assignment() - A headset sends a signal to a subspace listener/reciever elsewhere in space, - the signal gets processed and logged, and an audible transmission gets sent - to each individual headset. - */ + // --- Carbon Nonhuman --- + else if (iscarbon(M)) // Nonhuman carbon mob + jobname = "No id" - //#### Grab the connection datum ####// - var/datum/radio_frequency/connection = null - //testing("[src]: talk_into([M], [message], [channel])") - if(channel == "headset") - channel = null - if(channel) // If a channel is specified, look for it. - if(channels && channels.len > 0) - if (channel == "department") - //world << "DEBUG: channel=\"[channel]\" switching to \"[channels[1]]\"" - channel = channels[1] - connection = secure_radio_connections[channel] - if (!channels[channel]) // if the channel is turned off, don't broadcast - return - else - // If we were to send to a channel we don't have, drop it. - return - else // If a channel isn't specified, send to common. - connection = radio_connection - channel = null - if (!istype(connection)) - return - if (!connection) - return + // --- AI --- + else if (isAI(M)) + jobname = "AI" - var/turf/position = get_turf(src) + // --- Cyborg --- + else if (isrobot(M)) + jobname = "Cyborg" - //#### Tagging the signal with all appropriate identity values ####// + // --- Personal AI (pAI) --- + else if (istype(M, /mob/living/silicon/pai)) + jobname = "Personal AI" - // ||-- The mob's name identity --|| - var/displayname = M.name // grab the display name (name you get when you hover over someone's icon) - var/real_name = M.real_name // mob's real name - var/mobkey = "none" // player key associated with mob - var/voicemask = 0 // the speaker is wearing a voice mask - if(M.client) - mobkey = M.key // assign the mob's key + // --- Unidentifiable mob --- + else + jobname = "Unknown" - var/jobname // the mob's "job" + // --- Modifications to the mob's identity --- - // --- Human: use their actual job --- - if (ishuman(M)) - jobname = M:get_assignment() - - // --- Carbon Nonhuman --- - else if (iscarbon(M)) // Nonhuman carbon mob - jobname = "No id" - - // --- AI --- - else if (isAI(M)) - jobname = "AI" - - // --- Cyborg --- - else if (isrobot(M)) - var/mob/living/silicon/robot/B = M - jobname = "[B.designation] Cyborg" - - // --- Personal AI (pAI) --- - else if (istype(M, /mob/living/silicon/pai)) - jobname = "Personal AI" - - // --- Unidentifiable mob --- - else - jobname = "Unknown" - - - // --- Modifications to the mob's identity --- - - // The mob is disguising their identity: - if (ishuman(M) && M.GetVoice() != real_name) - displayname = M.GetVoice() - jobname = "Unknown" - voicemask = 1 + // The mob is disguising their identity: + if (ishuman(M) && M.GetVoice() != real_name) + displayname = M.GetVoice() + jobname = "Unknown" + voicemask = 1 - /* ###### Radio headsets can only broadcast through subspace ###### */ - - if(subspace_transmission) - // First, we want to generate a new radio signal - var/datum/signal/signal = new - signal.transmission_method = 2 // 2 would be a subspace transmission. - // transmission_method could probably be enumerated through #define. Would be neater. - - // --- Finally, tag the actual signal with the appropriate values --- - signal.data = list( - // Identity-associated tags: - "mob" = M, // store a reference to the mob - "mobtype" = M.type, // the mob's type - "realname" = real_name, // the mob's real name - "name" = displayname, // the mob's display name - "job" = jobname, // the mob's job - "key" = mobkey, // the mob's key - "vmessage" = pick(M.speak_emote), // the message to display if the voice wasn't understood - "vname" = M.voice_name, // the name to display if the voice wasn't understood - "vmask" = voicemask, // 1 if the mob is using a voice gas mask - - // We store things that would otherwise be kept in the actual mob - // so that they can be logged even AFTER the mob is deleted or something - - // Other tags: - "compression" = rand(45,50), // compressed radio signal - "message" = message, // the actual sent message - "connection" = connection, // the radio connection to use - "radio" = src, // stores the radio used for transmission - "slow" = 0, // how much to sleep() before broadcasting - simulates net lag - "traffic" = 0, // dictates the total traffic sum that the signal went through - "type" = 0, // determines what type of radio input it is: normal broadcast - "server" = null, // the last server to log this signal - "reject" = 0, // if nonzero, the signal will not be accepted by any broadcasting machinery - "level" = position.z // The source's z level - ) - signal.frequency = connection.frequency // Quick frequency set - - //#### Sending the signal to all subspace receivers ####// - - for(var/obj/machinery/telecomms/receiver/R in telecomms_list) - R.receive_signal(signal) - - // Allinone can act as receivers. - for(var/obj/machinery/telecomms/allinone/R in telecomms_list) - R.receive_signal(signal) - - // Receiving code can be located in Telecommunications.dm - return - - - /* ###### Intercoms and station-bounced radios ###### */ - - var/filter_type = 2 - - /* --- Intercoms can only broadcast to other intercoms, but bounced radios can broadcast to bounced radios and intercoms --- */ - if(istype(src, /obj/item/device/radio/intercom)) - filter_type = 1 - + /* ###### Radio headsets can only broadcast through subspace ###### */ + if(subspace_transmission) + // First, we want to generate a new radio signal var/datum/signal/signal = new - signal.transmission_method = 2 - - - /* --- Try to send a normal subspace broadcast first */ + signal.transmission_method = 2 // 2 would be a subspace transmission. + // transmission_method could probably be enumerated through #define. Would be neater. + // --- Finally, tag the actual signal with the appropriate values --- signal.data = list( - + // Identity-associated tags: "mob" = M, // store a reference to the mob "mobtype" = M.type, // the mob's type "realname" = real_name, // the mob's real name @@ -394,215 +310,110 @@ var/GLOBAL_RADIO_TYPE = 1 // radio type to use "key" = mobkey, // the mob's key "vmessage" = pick(M.speak_emote), // the message to display if the voice wasn't understood "vname" = M.voice_name, // the name to display if the voice wasn't understood - "vmask" = voicemask, // 1 if the mob is using a voice gas mas + "vmask" = voicemask, // 1 if the mob is using a voice gas mask - "compression" = 0, // uncompressed radio signal + // We store things that would otherwise be kept in the actual mob + // so that they can be logged even AFTER the mob is deleted or something + + // Other tags: + "compression" = rand(45,50), // compressed radio signal "message" = message, // the actual sent message "connection" = connection, // the radio connection to use "radio" = src, // stores the radio used for transmission - "slow" = 0, - "traffic" = 0, - "type" = 0, - "server" = null, - "reject" = 0, - "level" = position.z + "slow" = 0, // how much to sleep() before broadcasting - simulates net lag + "traffic" = 0, // dictates the total traffic sum that the signal went through + "type" = 0, // determines what type of radio input it is: normal broadcast + "server" = null, // the last server to log this signal + "reject" = 0, // if nonzero, the signal will not be accepted by any broadcasting machinery + "level" = position.z, // The source's z level + "language" = speaking, + "verb" = verb ) signal.frequency = connection.frequency // Quick frequency set + //#### Sending the signal to all subspace receivers ####// + for(var/obj/machinery/telecomms/receiver/R in telecomms_list) R.receive_signal(signal) + // Allinone can act as receivers. + for(var/obj/machinery/telecomms/allinone/R in telecomms_list) + R.receive_signal(signal) - sleep(rand(10,25)) // wait a little... - - if(signal.data["done"] && position.z in signal.data["level"]) - // we're done here. - return - - // Oh my god; the comms are down or something because the signal hasn't been broadcasted yet in our level. - // Send a mundane broadcast with limited targets: - - //THIS IS TEMPORARY. - if(!connection) return //~Carn - - Broadcast_Message(connection, M, voicemask, pick(M.speak_emote), - src, message, displayname, jobname, real_name, M.voice_name, - filter_type, signal.data["compression"], list(position.z), connection.frequency) + // Receiving code can be located in Telecommunications.dm + return signal.data["done"] && position.z in signal.data["level"] + /* ###### Intercoms and station-bounced radios ###### */ - else // OLD RADIO SYSTEMS: By Goons? + var/filter_type = 2 - var/datum/radio_frequency/connection = null - if(channel && channels && channels.len > 0) - if (channel == "department") - //world << "DEBUG: channel=\"[channel]\" switching to \"[channels[1]]\"" - channel = channels[1] - connection = secure_radio_connections[channel] - else - connection = radio_connection - channel = null - if (!istype(connection)) - return - var/display_freq = connection.frequency + /* --- Intercoms can only broadcast to other intercoms, but bounced radios can broadcast to bounced radios and intercoms --- */ + if(istype(src, /obj/item/device/radio/intercom)) + filter_type = 1 - //world << "DEBUG: used channel=\"[channel]\" frequency= \"[display_freq]\" connection.devices.len = [connection.devices.len]" - var/eqjobname + var/datum/signal/signal = new + signal.transmission_method = 2 - if (ishuman(M)) - eqjobname = M:get_assignment() - else if (iscarbon(M)) - eqjobname = "No id" //only humans can wear ID - else if (isAI(M)) - eqjobname = "AI" - else if (isrobot(M)) - eqjobname = "Cyborg"//Androids don't really describe these too well, in my opinion. - else if (istype(M, /mob/living/silicon/pai)) - eqjobname = "Personal AI" - else - eqjobname = "Unknown" - if (isWireCut(WIRE_TRANSMIT)) - return + /* --- Try to send a normal subspace broadcast first */ - var/list/receive = list() + signal.data = list( - //for (var/obj/item/device/radio/R in radio_connection.devices) - for (var/obj/item/device/radio/R in connection.devices["[RADIO_CHAT]"]) // Modified for security headset code -- TLE - //if(R.accept_rad(src, message)) - receive |= R.send_hear(display_freq, 0) + "mob" = M, // store a reference to the mob + "mobtype" = M.type, // the mob's type + "realname" = real_name, // the mob's real name + "name" = displayname, // the mob's display name + "job" = jobname, // the mob's job + "key" = mobkey, // the mob's key + "vmessage" = pick(M.speak_emote), // the message to display if the voice wasn't understood + "vname" = M.voice_name, // the name to display if the voice wasn't understood + "vmask" = voicemask, // 1 if the mob is using a voice gas mas - //world << "DEBUG: receive.len=[receive.len]" - var/list/heard_masked = list() // masked name or no real name - var/list/heard_normal = list() // normal message - var/list/heard_voice = list() // voice message - var/list/heard_garbled = list() // garbled message + "compression" = 0, // uncompressed radio signal + "message" = message, // the actual sent message + "connection" = connection, // the radio connection to use + "radio" = src, // stores the radio used for transmission + "slow" = 0, + "traffic" = 0, + "type" = 0, + "server" = null, + "reject" = 0, + "level" = position.z, + "language" = speaking, + "verb" = verb + ) + signal.frequency = connection.frequency // Quick frequency set - for (var/mob/R in receive) - if (R.say_understands(M)) - if (ishuman(M) && M.GetVoice() != M.real_name) - heard_masked += R - else - heard_normal += R - else - heard_voice += R + for(var/obj/machinery/telecomms/receiver/R in telecomms_list) + R.receive_signal(signal) - if (length(heard_masked) || length(heard_normal) || length(heard_voice) || length(heard_garbled)) - var/part_a = "" - //var/part_b = " \icon[src]\[[format_frequency(frequency)]\] " - var/freq_text - switch(display_freq) - if(SYND_FREQ) - freq_text = "#unkn" - if(COMM_FREQ) - freq_text = "Command" - if(1351) - freq_text = "Science" - if(1355) - freq_text = "Medical" - if(1357) - freq_text = "Engineering" - if(1359) - freq_text = "Security" - if(1347) - freq_text = "Supply" - //There's probably a way to use the list var of channels in code\game\communications.dm to make the dept channels non-hardcoded, but I wasn't in an experimentive mood. --NEO - if(!freq_text) - freq_text = format_frequency(display_freq) + sleep(rand(10,25)) // wait a little... - var/part_b = " \icon[src]\[[freq_text]\] " // Tweaked for security headsets -- TLE - var/part_c = "" + if(signal.data["done"] && position.z in signal.data["level"]) + // we're done here. + return 1 - if (display_freq==SYND_FREQ) - part_a = "" - else if (display_freq==COMM_FREQ) - part_a = "" - else if (display_freq in DEPT_FREQS) - part_a = "" + // Oh my god; the comms are down or something because the signal hasn't been broadcasted yet in our level. + // Send a mundane broadcast with limited targets: - var/quotedmsg = M.say_quote(message) + //THIS IS TEMPORARY. YEAH RIGHT + if(!connection) return 0 //~Carn - //This following recording is intended for research and feedback in the use of department radio channels. + return Broadcast_Message(connection, M, voicemask, pick(M.speak_emote), + src, message, displayname, jobname, real_name, M.voice_name, + filter_type, signal.data["compression"], list(position.z), connection.frequency,verb,speaking) - var/part_blackbox_b = " \[[freq_text]\] " // Tweaked for security headsets -- TLE - var/blackbox_msg = "[part_a][M.name][part_blackbox_b][quotedmsg][part_c]" - //var/blackbox_admin_msg = "[part_a][M.name] (Real name: [M.real_name])[part_blackbox_b][quotedmsg][part_c]" - if(istype(blackbox)) - //BR.messages_admin += blackbox_admin_msg - switch(display_freq) - if(1459) - blackbox.msg_common += blackbox_msg - if(1351) - blackbox.msg_science += blackbox_msg - if(1353) - blackbox.msg_command += blackbox_msg - if(1355) - blackbox.msg_medical += blackbox_msg - if(1357) - blackbox.msg_engineering += blackbox_msg - if(1359) - blackbox.msg_security += blackbox_msg - if(1441) - blackbox.msg_deathsquad += blackbox_msg - if(1213) - blackbox.msg_syndicate += blackbox_msg - if(1347) - blackbox.msg_cargo += blackbox_msg - if(1349) - blackbox.msg_service += blackbox_msg - else - blackbox.messages += blackbox_msg - //End of research and feedback code. - - if (length(heard_masked)) - var/N = M.name - var/J = eqjobname - if(ishuman(M) && M.GetVoice() != M.real_name) - N = M.GetVoice() - J = "Unknown" - var/rendered = "[part_a][N][part_b][quotedmsg][part_c]" - for (var/mob/R in heard_masked) - if(istype(R, /mob/living/silicon/ai)) - R.show_message("[part_a][N] ([J]) \[OPEN\] [part_b][quotedmsg][part_c]", 2) - else - R.show_message(rendered, 2) - - if (length(heard_normal)) - var/rendered = "[part_a][M.real_name][part_b][quotedmsg][part_c]" - - for (var/mob/R in heard_normal) - if(istype(R, /mob/living/silicon/ai)) - R.show_message("[part_a][M.real_name] ([eqjobname]) \[OPEN\] [part_b][quotedmsg][part_c]", 2) - else - R.show_message(rendered, 2) - - if (length(heard_voice)) - var/rendered = "[part_a][M.voice_name][part_b][pick(M.speak_emote)][part_c]" - - for (var/mob/R in heard_voice) - if(istype(R, /mob/living/silicon/ai)) - R.show_message("[part_a][M.voice_name] ([eqjobname]) \[OPEN\] [part_b][pick(M.speak_emote)][part_c]", 2) - else - R.show_message(rendered, 2) - - if (length(heard_garbled)) - quotedmsg = M.say_quote(stars(message)) - var/rendered = "[part_a][M.voice_name][part_b][quotedmsg][part_c]" - - for (var/mob/R in heard_voice) - if(istype(R, /mob/living/silicon/ai)) - R.show_message("[part_a][M.voice_name]\[OPEN\] [part_b][quotedmsg][part_c]", 2) - else - R.show_message(rendered, 2) - -/obj/item/device/radio/hear_talk(mob/M as mob, msg) +/obj/item/device/radio/hear_talk(mob/M as mob, msg, var/verb = "says", var/datum/language/speaking = null) if (broadcasting) if(get_dist(src, M) <= canhear_range) - talk_into(M, msg) + talk_into(M, msg,null,verb,speaking) + + /* /obj/item/device/radio/proc/accept_rad(obj/item/device/radio/R as obj, message) @@ -621,7 +432,7 @@ var/GLOBAL_RADIO_TYPE = 1 // radio type to use // what the range is in which mobs will hear the radio // returns: -1 if can't receive, range otherwise - if (isWireCut(WIRE_RECEIVE)) + if (wires.IsIndexCut(WIRE_RECEIVE)) return -1 if(!listening) return -1 @@ -629,7 +440,7 @@ var/GLOBAL_RADIO_TYPE = 1 // radio type to use var/turf/position = get_turf(src) if(!position || !(position.z in level)) return -1 - if(freq == SYND_FREQ) + if(freq in ANTAG_FREQS) if(!(src.syndie))//Checks to see if it's allowed on that frequency, based on the encryption keys return -1 if (!on) @@ -656,15 +467,13 @@ var/GLOBAL_RADIO_TYPE = 1 // radio type to use return get_mobs_in_view(canhear_range, src) -/obj/item/device/radio/examine() - set src in view() - - ..() - if ((in_range(src, usr) || loc == usr)) +/obj/item/device/radio/examine(mob/user) + . = ..() + if ((in_range(src, user) || loc == user)) if (b_stat) - usr.show_message("\blue \the [src] can be attached and modified!") + user.show_message("\blue \the [src] can be attached and modified!") else - usr.show_message("\blue \the [src] can not be modified or attached!") + user.show_message("\blue \the [src] can not be modified or attached!") return /obj/item/device/radio/attackby(obj/item/weapon/W as obj, mob/user as mob) @@ -697,8 +506,14 @@ var/GLOBAL_RADIO_TYPE = 1 // radio type to use //Giving borgs their own radio to have some more room to work with -Sieve /obj/item/device/radio/borg + var/mob/living/silicon/robot/myborg = null // Cyborg which owns this radio. Used for power checks var/obj/item/device/encryptionkey/keyslot = null//Borg radios can handle a single encryption key - + var/shut_up = 0 + icon = 'icons/obj/robot_component.dmi' // Cyborgs radio icons should look like the component. + icon_state = "radio" + canhear_range = 3 + subspace_transmission = 1 + /obj/item/device/radio/borg/syndicate syndie = 1 keyslot = new /obj/item/device/encryptionkey/syndicate @@ -713,6 +528,13 @@ var/GLOBAL_RADIO_TYPE = 1 // radio type to use ..() set_frequency(1441) +/obj/item/device/radio/borg/talk_into() + . = ..() + if (isrobot(src.loc)) + var/mob/living/silicon/robot/R = src.loc + var/datum/robot_component/C = R.components["radio"] + R.use_power(C.energy_consumption) + /obj/item/device/radio/borg/attackby(obj/item/weapon/W as obj, mob/user as mob) // ..() user.set_machine(src) @@ -758,18 +580,25 @@ var/GLOBAL_RADIO_TYPE = 1 // radio type to use src.channels = list() src.syndie = 0 + var/mob/living/silicon/robot/D = src.loc + if(D.module) + for(var/ch_name in D.module.channels) + if(ch_name in src.channels) + continue + src.channels += ch_name + src.channels[ch_name] += D.module.channels[ch_name] if(keyslot) for(var/ch_name in keyslot.channels) if(ch_name in src.channels) continue src.channels += ch_name - src.channels[ch_name] = keyslot.channels[ch_name] + src.channels[ch_name] += keyslot.channels[ch_name] if(keyslot.syndie) src.syndie = 1 - for (var/ch_name in channels) + for (var/ch_name in src.channels) if(!radio_controller) sleep(30) // Waiting for the radio_controller to be created. if(!radio_controller) @@ -784,12 +613,23 @@ var/GLOBAL_RADIO_TYPE = 1 // radio type to use if(usr.stat || !on) return if (href_list["mode"]) - subspace_transmission = !subspace_transmission - if(!subspace_transmission)//Simple as fuck, clears the channel list to prevent talking/listening over them if subspace transmission is disabled + if(subspace_transmission != 1) + subspace_transmission = 1 + usr << "Subspace Transmission is enabled" + else + subspace_transmission = 0 + usr << "Subspace Transmission is disabled" + if(subspace_transmission == 0)//Simple as fuck, clears the channel list to prevent talking/listening over them if subspace transmission is disabled channels = list() else recalculateChannels() - usr << "Subspace Transmission is [(subspace_transmission) ? "enabled" : "disabled"]" + if (href_list["shutup"]) // Toggle loudspeaker mode, AKA everyone around you hearing your radio. + shut_up = !shut_up + if(shut_up) + canhear_range = 0 + else + canhear_range = 3 + ..() /obj/item/device/radio/borg/interact(mob/user as mob) @@ -806,6 +646,7 @@ var/GLOBAL_RADIO_TYPE = 1 // radio type to use + +
Toggle Broadcast Mode
+ Loudspeaker: [shut_up ? "Disengaged" : "Engaged"]
"} if(subspace_transmission)//Don't even bother if subspace isn't turned on @@ -830,11 +671,3 @@ var/GLOBAL_RADIO_TYPE = 1 // radio type to use /obj/item/device/radio/off listening = 0 - -/obj/item/device/radio/Destroy() - if(radio_connection) - radio_connection.remove_listener(src) - if(isrobot(src.loc)) - var/mob/living/silicon/robot/R = src.loc - R.radio = null - ..() diff --git a/code/game/objects/items/devices/transfer_valve.dm b/code/game/objects/items/devices/transfer_valve.dm index a3e0d2f7b78..1dc2142d31a 100644 --- a/code/game/objects/items/devices/transfer_valve.dm +++ b/code/game/objects/items/devices/transfer_valve.dm @@ -63,6 +63,10 @@ attached_device.HasProximity(AM) return +/obj/item/device/transfer_valve/hear_talk(mob/living/M as mob, msg) + ..() + for(var/obj/O in contents) + O.hear_talk(M, msg) /obj/item/device/transfer_valve/attack_self(mob/user as mob) ui_interact(user) diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm index 23bed41262c..41520fabb93 100644 --- a/code/game/objects/items/robot/robot_upgrades.dm +++ b/code/game/objects/items/robot/robot_upgrades.dm @@ -32,9 +32,11 @@ R.icon_state = "robot" del(R.module) R.module = null - R.camera.network.Remove(list("Engineering","Medical","MINE")) + R.camera.network.Remove(list("Engineering","Medical","Mining Outpost")) R.updatename("Default") R.status_flags |= CANPUSH + R.languages = list() + R.speech_synthesizer_langs = list() R.notify_ai(2) R.updateicon() diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm index d8e22940639..7bf35f6c6e0 100644 --- a/code/game/objects/structures/girders.dm +++ b/code/game/objects/structures/girders.dm @@ -4,151 +4,83 @@ density = 1 layer = 2 var/state = 0 + var/health = 200 - attackby(obj/item/W as obj, mob/user as mob) - if(istype(W, /obj/item/weapon/wrench) && state == 0) - if(anchored && !istype(src,/obj/structure/girder/displaced)) - playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1) - user << "\blue Now disassembling the girder" - if(do_after(user,40)) - if(!src) return - user << "\blue You dissasembled the girder!" - new /obj/item/stack/sheet/metal(get_turf(src)) - del(src) - else if(!anchored) - playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1) - user << "\blue Now securing the girder" - if(get_turf(user, 40)) - user << "\blue You secured the girder!" - new/obj/structure/girder( src.loc ) - del(src) - - else if(istype(W, /obj/item/weapon/pickaxe/plasmacutter)) - user << "\blue Now slicing apart the girder" - if(do_after(user,30)) +/obj/structure/girder/attackby(obj/item/W as obj, mob/user as mob) + if(istype(W, /obj/item/weapon/wrench) && state == 0) + if(anchored && !istype(src,/obj/structure/girder/displaced)) + playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1) + user << "\blue Now disassembling the girder" + if(do_after(user,40)) if(!src) return - user << "\blue You slice apart the girder!" + user << "\blue You dissasembled the girder!" new /obj/item/stack/sheet/metal(get_turf(src)) del(src) - - else if(istype(W, /obj/item/weapon/pickaxe/diamonddrill)) - user << "\blue You drill through the girder!" - new /obj/item/stack/sheet/metal(get_turf(src)) - del(src) - - else if(istype(W, /obj/item/weapon/screwdriver) && state == 2 && istype(src,/obj/structure/girder/reinforced)) - playsound(src.loc, 'sound/items/Screwdriver.ogg', 100, 1) - user << "\blue Now unsecuring support struts" - if(do_after(user,40)) - if(!src) return - user << "\blue You unsecured the support struts!" - state = 1 - - else if(istype(W, /obj/item/weapon/wirecutters) && istype(src,/obj/structure/girder/reinforced) && state == 1) - playsound(src.loc, 'sound/items/Wirecutter.ogg', 100, 1) - user << "\blue Now removing support struts" - if(do_after(user,40)) - if(!src) return - user << "\blue You removed the support struts!" + else if(!anchored) + playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1) + user << "\blue Now securing the girder" + if(get_turf(user, 40)) + user << "\blue You secured the girder!" new/obj/structure/girder( src.loc ) del(src) - else if(istype(W, /obj/item/weapon/crowbar) && state == 0 && anchored ) - playsound(src.loc, 'sound/items/Crowbar.ogg', 100, 1) - user << "\blue Now dislodging the girder" - if(do_after(user, 40)) - if(!src) return - user << "\blue You dislodged the girder!" - new/obj/structure/girder/displaced( src.loc ) - del(src) + else if(istype(W, /obj/item/weapon/pickaxe/plasmacutter)) + user << "\blue Now slicing apart the girder" + if(do_after(user,30)) + if(!src) return + user << "\blue You slice apart the girder!" + new /obj/item/stack/sheet/metal(get_turf(src)) + del(src) - else if(istype(W, /obj/item/stack/sheet)) + else if(istype(W, /obj/item/weapon/pickaxe/diamonddrill)) + user << "\blue You drill through the girder!" + new /obj/item/stack/sheet/metal(get_turf(src)) + del(src) - var/obj/item/stack/sheet/S = W - switch(S.type) + else if(istype(W, /obj/item/weapon/screwdriver) && state == 2 && istype(src,/obj/structure/girder/reinforced)) + playsound(src.loc, 'sound/items/Screwdriver.ogg', 100, 1) + user << "\blue Now unsecuring support struts" + if(do_after(user,40)) + if(!src) return + user << "\blue You unsecured the support struts!" + state = 1 - if(/obj/item/stack/sheet/metal, /obj/item/stack/sheet/metal/cyborg) - if(!anchored) - if(S.amount < 2) return - var/pdiff=performWallPressureCheck(src.loc) - if(!pdiff) - S.use(2) - user << "\blue You create a false wall! Push on it to open or close the passage." - new /obj/structure/falsewall (src.loc) - del(src) - else - user << "\red There is too much air moving through the gap! The door wouldn't stay closed if you built it." - message_admins("Attempted false wall made by [user.real_name] ([formatPlayerPanel(user,user.ckey)]) at [formatJumpTo(loc)] had a pressure difference of [pdiff]!") - log_admin("Attempted false wall made by [user.real_name] (user.ckey) at [loc] had a pressure difference of [pdiff]!") - return - else - if(S.amount < 2) return ..() - user << "\blue Now adding plating..." - if (do_after(user,40)) - if(!src || !S || S.amount < 2) return - S.use(2) - user << "\blue You added the plating!" - var/turf/Tsrc = get_turf(src) - Tsrc.ChangeTurf(/turf/simulated/wall) - for(var/turf/simulated/wall/X in Tsrc.loc) - if(X) X.add_hiddenprint(usr) - del(src) - return + else if(istype(W, /obj/item/weapon/wirecutters) && istype(src,/obj/structure/girder/reinforced) && state == 1) + playsound(src.loc, 'sound/items/Wirecutter.ogg', 100, 1) + user << "\blue Now removing support struts" + if(do_after(user,40)) + if(!src) return + user << "\blue You removed the support struts!" + new/obj/structure/girder( src.loc ) + del(src) - if(/obj/item/stack/sheet/plasteel) - if(!anchored) - if(S.amount < 2) return - var/pdiff=performWallPressureCheck(src.loc) - if(!pdiff) - S.use(2) - user << "\blue You create a false wall! Push on it to open or close the passage." - new /obj/structure/falsewall/reinforced (src.loc) - del(src) - else - user << "\red There is too much air moving through the gap! The door wouldn't stay closed if you built it." - message_admins("Attempted false rwall made by [user.real_name] ([formatPlayerPanel(user,user.ckey)]) at [formatJumpTo(loc)] had a pressure difference of [pdiff]!") - log_admin("Attempted false rwall made by [user.real_name] ([user.ckey]) at [loc] had a pressure difference of [pdiff]!") - return - else - if (src.icon_state == "reinforced") //I cant believe someone would actually write this line of code... - if(S.amount < 1) return ..() - user << "\blue Now finalising reinforced wall." - if(do_after(user, 50)) - if(!src || !S || S.amount < 1) return - S.use(1) - user << "\blue Wall fully reinforced!" - var/turf/Tsrc = get_turf(src) - Tsrc.ChangeTurf(/turf/simulated/wall/r_wall) - for(var/turf/simulated/wall/r_wall/X in Tsrc.loc) - if(X) X.add_hiddenprint(usr) - del(src) - return - else - if(S.amount < 1) return ..() - user << "\blue Now reinforcing girders" - if (do_after(user,60)) - if(!src || !S || S.amount < 1) return - S.use(1) - user << "\blue Girders reinforced!" - new/obj/structure/girder/reinforced( src.loc ) - del(src) - return + else if(istype(W, /obj/item/weapon/crowbar) && state == 0 && anchored ) + playsound(src.loc, 'sound/items/Crowbar.ogg', 100, 1) + user << "\blue Now dislodging the girder" + if(do_after(user, 40)) + if(!src) return + user << "\blue You dislodged the girder!" + new/obj/structure/girder/displaced( src.loc ) + del(src) - if(S.sheettype) - var/M = S.sheettype + else if(istype(W, /obj/item/stack/sheet)) + + var/obj/item/stack/sheet/S = W + switch(S.type) + + if(/obj/item/stack/sheet/metal, /obj/item/stack/sheet/metal/cyborg) if(!anchored) if(S.amount < 2) return var/pdiff=performWallPressureCheck(src.loc) if(!pdiff) S.use(2) user << "\blue You create a false wall! Push on it to open or close the passage." - var/F = text2path("/obj/structure/falsewall/[M]") - new F (src.loc) + new /obj/structure/falsewall (src.loc) del(src) else user << "\red There is too much air moving through the gap! The door wouldn't stay closed if you built it." - message_admins("Attempted false [M] wall made by [user.real_name] ([formatPlayerPanel(user,user.ckey)]) at [formatJumpTo(loc)] had a pressure difference of [pdiff]!") - log_admin("Attempted false [M] wall made by [user.real_name] ([user.ckey]) at [loc] had a pressure difference of [pdiff]!") + message_admins("Attempted false wall made by [user.real_name] ([formatPlayerPanel(user,user.ckey)]) at [formatJumpTo(loc)] had a pressure difference of [pdiff]!") + log_admin("Attempted false wall made by [user.real_name] (user.ckey) at [loc] had a pressure difference of [pdiff]!") return else if(S.amount < 2) return ..() @@ -158,67 +90,138 @@ S.use(2) user << "\blue You added the plating!" var/turf/Tsrc = get_turf(src) - Tsrc.ChangeTurf(text2path("/turf/simulated/wall/mineral/[M]")) - for(var/turf/simulated/wall/mineral/X in Tsrc.loc) + Tsrc.ChangeTurf(/turf/simulated/wall) + for(var/turf/simulated/wall/X in Tsrc.loc) if(X) X.add_hiddenprint(usr) del(src) return - add_hiddenprint(usr) + if(/obj/item/stack/sheet/plasteel) + if(!anchored) + if(S.amount < 2) return + var/pdiff=performWallPressureCheck(src.loc) + if(!pdiff) + S.use(2) + user << "\blue You create a false wall! Push on it to open or close the passage." + new /obj/structure/falsewall/reinforced (src.loc) + del(src) + else + user << "\red There is too much air moving through the gap! The door wouldn't stay closed if you built it." + message_admins("Attempted false rwall made by [user.real_name] ([formatPlayerPanel(user,user.ckey)]) at [formatJumpTo(loc)] had a pressure difference of [pdiff]!") + log_admin("Attempted false rwall made by [user.real_name] ([user.ckey]) at [loc] had a pressure difference of [pdiff]!") + return + else + if (src.icon_state == "reinforced") //I cant believe someone would actually write this line of code... + if(S.amount < 1) return ..() + user << "\blue Now finalising reinforced wall." + if(do_after(user, 50)) + if(!src || !S || S.amount < 1) return + S.use(1) + user << "\blue Wall fully reinforced!" + var/turf/Tsrc = get_turf(src) + Tsrc.ChangeTurf(/turf/simulated/wall/r_wall) + for(var/turf/simulated/wall/r_wall/X in Tsrc.loc) + if(X) X.add_hiddenprint(usr) + del(src) + return + else + if(S.amount < 1) return ..() + user << "\blue Now reinforcing girders" + if (do_after(user,60)) + if(!src || !S || S.amount < 1) return + S.use(1) + user << "\blue Girders reinforced!" + new/obj/structure/girder/reinforced( src.loc ) + del(src) + return - else if(istype(W, /obj/item/pipe)) - var/obj/item/pipe/P = W - if (P.pipe_type in list(0, 1, 5)) //simple pipes, simple bends, and simple manifolds. - user.drop_item() - P.loc = src.loc - user << "\blue You fit the pipe into the [src]!" - else - ..() - - - bullet_act(var/obj/item/projectile/Proj) - if(istype(Proj ,/obj/item/projectile/beam/pulse)) - src.ex_act(2) - ..() - return 0 - - blob_act() - if(prob(40)) - del(src) - - bullet_act(var/obj/item/projectile/Proj) - if(istype(Proj ,/obj/item/projectile/beam/pulse)) - src.ex_act(2) - ..() - return 0 - - ex_act(severity) - switch(severity) - if(1.0) - qdel(src) - return - if(2.0) - if (prob(75)) - var/remains = pick(/obj/item/stack/rods,/obj/item/stack/sheet/metal) - new remains(loc) - qdel(src) - return - if(3.0) - if (prob(30)) - var/remains = pick(/obj/item/stack/rods,/obj/item/stack/sheet/metal) - new remains(loc) - qdel(src) - return + if(S.sheettype) + var/M = S.sheettype + if(!anchored) + if(S.amount < 2) return + var/pdiff=performWallPressureCheck(src.loc) + if(!pdiff) + S.use(2) + user << "\blue You create a false wall! Push on it to open or close the passage." + var/F = text2path("/obj/structure/falsewall/[M]") + new F (src.loc) + del(src) + else + user << "\red There is too much air moving through the gap! The door wouldn't stay closed if you built it." + message_admins("Attempted false [M] wall made by [user.real_name] ([formatPlayerPanel(user,user.ckey)]) at [formatJumpTo(loc)] had a pressure difference of [pdiff]!") + log_admin("Attempted false [M] wall made by [user.real_name] ([user.ckey]) at [loc] had a pressure difference of [pdiff]!") + return else - return + if(S.amount < 2) return ..() + user << "\blue Now adding plating..." + if (do_after(user,40)) + if(!src || !S || S.amount < 2) return + S.use(2) + user << "\blue You added the plating!" + var/turf/Tsrc = get_turf(src) + Tsrc.ChangeTurf(text2path("/turf/simulated/wall/mineral/[M]")) + for(var/turf/simulated/wall/mineral/X in Tsrc.loc) + if(X) X.add_hiddenprint(usr) + del(src) + return + + add_hiddenprint(usr) + + else if(istype(W, /obj/item/pipe)) + var/obj/item/pipe/P = W + if (P.pipe_type in list(0, 1, 5)) //simple pipes, simple bends, and simple manifolds. + user.drop_item() + P.loc = src.loc + user << "\blue You fit the pipe into the [src]!" + else + ..() + +/obj/structure/girder/blob_act() + if(prob(40)) + del(src) + +/obj/structure/girder/bullet_act(var/obj/item/projectile/Proj) + if(istype(Proj, /obj/item/projectile/beam)) + health -= Proj.damage + ..() + if(health <= 0) + new /obj/item/stack/sheet/metal(get_turf(src)) + del(src) + + if(istype(Proj ,/obj/item/projectile/beam/pulse)) + src.ex_act(2) + ..() + return 0 + +/obj/structure/girder/ex_act(severity) + switch(severity) + if(1.0) + qdel(src) + return + if(2.0) + if (prob(75)) + var/remains = pick(/obj/item/stack/rods,/obj/item/stack/sheet/metal) + new remains(loc) + qdel(src) + return + if(3.0) + if (prob(30)) + var/remains = pick(/obj/item/stack/rods,/obj/item/stack/sheet/metal) + new remains(loc) + qdel(src) + return + else + return /obj/structure/girder/displaced icon_state = "displaced" anchored = 0 + health = 50 /obj/structure/girder/reinforced icon_state = "reinforced" state = 2 + health = 500 /obj/structure/cultgirder icon= 'icons/obj/cult.dmi' @@ -226,47 +229,55 @@ anchored = 1 density = 1 layer = 2 + var/health = 250 - attackby(obj/item/W as obj, mob/user as mob) - if(istype(W, /obj/item/weapon/wrench)) - playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1) - user << "\blue Now disassembling the girder" - if(do_after(user,40)) - user << "\blue You dissasembled the girder!" - new /obj/effect/decal/remains/human(get_turf(src)) - del(src) +/obj/structure/cultgirder/attackby(obj/item/W as obj, mob/user as mob) + if(istype(W, /obj/item/weapon/wrench)) + playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1) + user << "\blue Now disassembling the girder" + if(do_after(user,40)) + user << "\blue You dissasembled the girder!" + dismantle() - else if(istype(W, /obj/item/weapon/pickaxe/plasmacutter)) - user << "\blue Now slicing apart the girder" - if(do_after(user,30)) - user << "\blue You slice apart the girder!" - new /obj/effect/decal/remains/human(get_turf(src)) - del(src) + else if(istype(W, /obj/item/weapon/pickaxe/plasmacutter)) + user << "\blue Now slicing apart the girder" + if(do_after(user,30)) + user << "\blue You slice apart the girder!" + dismantle() - else if(istype(W, /obj/item/weapon/pickaxe/diamonddrill)) - user << "\blue You drill through the girder!" - new /obj/effect/decal/remains/human(get_turf(src)) - del(src) + else if(istype(W, /obj/item/weapon/pickaxe/diamonddrill)) + user << "\blue You drill through the girder!" + dismantle() + +/obj/structure/cultgirder/proc/dismantle() + new /obj/effect/decal/remains/human(get_turf(src)) + qdel(src) - blob_act() - if(prob(40)) - del(src) +/obj/structure/cultgirder/blob_act() + if(prob(40)) + dismantle() + +/obj/structure/cultgirder/bullet_act(var/obj/item/projectile/Proj) //No beam check- How else will you destroy the cult girder with silver bullets????? + health -= Proj.damage + ..() + if(health <= 0) + dismantle() + return - - ex_act(severity) - switch(severity) - if(1.0) +/obj/structure/cultgirder/ex_act(severity) + switch(severity) + if(1.0) + qdel(src) + return + if(2.0) + if (prob(30)) + new /obj/effect/decal/remains/human(loc) qdel(src) - return - if(2.0) - if (prob(30)) - new /obj/effect/decal/remains/human(loc) - qdel(src) - return - if(3.0) - if (prob(5)) - new /obj/effect/decal/remains/human(loc) - qdel(src) - return - else - return \ No newline at end of file + return + if(3.0) + if (prob(5)) + new /obj/effect/decal/remains/human(loc) + qdel(src) + return + else + return \ No newline at end of file diff --git a/code/game/vehicles/vehicle.dm b/code/game/vehicles/vehicle.dm index 9924fea07d0..a61015cf6d6 100644 --- a/code/game/vehicles/vehicle.dm +++ b/code/game/vehicles/vehicle.dm @@ -182,9 +182,9 @@ mecha.loc.assume_air(leaked_gas) else del(leaked_gas) - if(mecha.hasInternalDamage(MECHA_INT_SHORT_CIRCUIT)) + /*if(mecha.hasInternalDamage(MECHA_INT_SHORT_CIRCUIT)) // LAG INDUCING - it'll keep on creating sparks if(mecha.get_charge()) mecha.spark_system.start() mecha.cell.charge -= min(20,mecha.cell.charge) - mecha.cell.maxcharge -= min(20,mecha.cell.maxcharge) + mecha.cell.maxcharge -= min(20,mecha.cell.maxcharge) */ return \ No newline at end of file diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index ce3ca49fd22..e7ab656bfb4 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -42,7 +42,7 @@ var/list/admin_verbs_admin = list( /client/proc/admin_memo, /*admin memo system. show/delete/write. +SERVER needed to delete admin memos of others*/ /client/proc/dsay, /*talk in deadchat using our ckey/fakekey*/ /client/proc/toggleprayers, /*toggles prayers on/off*/ -// /client/proc/toggle_hear_radio, /*toggles whether we hear the radio*/ + /client/proc/toggle_hear_radio, /*toggles whether we hear the radio*/ /client/proc/investigate_show, /*various admintools for investigation. Such as a singulo grief-log*/ /datum/admins/proc/toggleooc, /*toggles ooc on/off for everyone*/ /datum/admins/proc/toggleoocdead, /*toggles ooc on/off for everyone who is dead*/ diff --git a/code/modules/awaymissions/corpse.dm b/code/modules/awaymissions/corpse.dm index f62cef10073..7fa81ce358e 100644 --- a/code/modules/awaymissions/corpse.dm +++ b/code/modules/awaymissions/corpse.dm @@ -35,7 +35,6 @@ /obj/effect/landmark/corpse/proc/createCorpse() //Creates a mob and checks for gear in each slot before attempting to equip it. var/mob/living/carbon/human/human/M = new /mob/living/carbon/human/human (src.loc) - M.dna.mutantrace = mutantrace M.real_name = src.name M.death(1) //Kills the new mob M.timeofdeath = timeofdeath diff --git a/code/modules/awaymissions/mission_code/academy.dm b/code/modules/awaymissions/mission_code/academy.dm index 997276e74b8..16af3141647 100644 --- a/code/modules/awaymissions/mission_code/academy.dm +++ b/code/modules/awaymissions/mission_code/academy.dm @@ -3,6 +3,7 @@ /area/awaymission/academy name = "\improper Academy Asteroids" icon_state = "away" + report_alerts = 0 /area/awaymission/academy/headmaster name = "\improper Academy Fore Block" diff --git a/code/modules/awaymissions/mission_code/blackmarketpackers.dm b/code/modules/awaymissions/mission_code/blackmarketpackers.dm index d2d215053af..468863f3026 100644 --- a/code/modules/awaymissions/mission_code/blackmarketpackers.dm +++ b/code/modules/awaymissions/mission_code/blackmarketpackers.dm @@ -4,7 +4,7 @@ name = "\improper BMP Asteroids" icon_state = "away" luminosity = 0 - + report_alerts = 0 /area/awaymission/BMPship/Aft name = "\improper Aft Block" diff --git a/code/modules/awaymissions/mission_code/centcomAway.dm b/code/modules/awaymissions/mission_code/centcomAway.dm index 70be2fa7202..06f36c5bf44 100644 --- a/code/modules/awaymissions/mission_code/centcomAway.dm +++ b/code/modules/awaymissions/mission_code/centcomAway.dm @@ -4,7 +4,8 @@ name = "XCC-P5831" icon_state = "away" requires_power = 0 - + report_alerts = 0 + /area/awaymission/centcomAway/general name = "XCC-P5831" music = "music/ambigen3.ogg" diff --git a/code/modules/awaymissions/mission_code/challenge.dm b/code/modules/awaymissions/mission_code/challenge.dm index f7aa861eb80..966ce6053f6 100644 --- a/code/modules/awaymissions/mission_code/challenge.dm +++ b/code/modules/awaymissions/mission_code/challenge.dm @@ -1,5 +1,10 @@ //Challenge Areas +/area/awaymission/challenge + name = "Challenge" + icon_state = "away" + report_alerts = 0 + /area/awaymission/challenge/start name = "Where Am I?" icon_state = "away" diff --git a/code/modules/awaymissions/mission_code/clownplanet.dm b/code/modules/awaymissions/mission_code/clownplanet.dm index 45b0dc1c7de..359037ada0a 100644 --- a/code/modules/awaymissions/mission_code/clownplanet.dm +++ b/code/modules/awaymissions/mission_code/clownplanet.dm @@ -6,6 +6,7 @@ luminosity = 1 lighting_use_dynamic = 0 requires_power = 0 + report_alerts = 0 /area/awaymission/clownplanet/miningtown name = "\improper Clown Planet - Bananium-o-Rama" diff --git a/code/modules/awaymissions/mission_code/spacebattle.dm b/code/modules/awaymissions/mission_code/spacebattle.dm index dc86365f4ee..3f9c9925772 100644 --- a/code/modules/awaymissions/mission_code/spacebattle.dm +++ b/code/modules/awaymissions/mission_code/spacebattle.dm @@ -4,6 +4,7 @@ name = "\improper Space Battle" icon_state = "away" requires_power = 0 + report_alerts = 0 /area/awaymission/spacebattle/cruiser name = "\improper Nanotrasen Cruiser" diff --git a/code/modules/awaymissions/mission_code/stationCollision.dm b/code/modules/awaymissions/mission_code/stationCollision.dm index fdfd016e40a..dee5ae20af6 100644 --- a/code/modules/awaymissions/mission_code/stationCollision.dm +++ b/code/modules/awaymissions/mission_code/stationCollision.dm @@ -19,6 +19,9 @@ * Areas */ //Gateroom gets its own APC specifically for the gate + /area/awaymission + report_alerts = 0 + /area/awaymission/gateroom //Library, medbay, storage room diff --git a/code/modules/client/preferences_toggles.dm b/code/modules/client/preferences_toggles.dm index 8b4b300a6b0..2960f159546 100644 --- a/code/modules/client/preferences_toggles.dm +++ b/code/modules/client/preferences_toggles.dm @@ -25,6 +25,16 @@ src << "As a ghost, you will now [(prefs.toggles & CHAT_GHOSTRADIO) ? "hear all radio chat in the world" : "only hear from nearby speakers"]." prefs.save_preferences(src) feedback_add_details("admin_verb","TGR") + +/client/proc/toggle_hear_radio() + set name = "Show/Hide RadioChatter" + set category = "Preferences" + set desc = "Toggle seeing radiochatter from radios and speakers" + if(!holder) return + prefs.toggles ^= CHAT_RADIO + prefs.save_preferences(src) + usr << "You will [(prefs.toggles & CHAT_RADIO) ? "no longer" : "now"] see radio chatter from radios or speakers" + feedback_add_details("admin_verb","THR") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/verb/toggleadminhelpsound() set name = "Hear/Silence Adminhelps" diff --git a/code/modules/clothing/masks/gasmask.dm b/code/modules/clothing/masks/gasmask.dm index c728f0d88bb..dc584be1e73 100644 --- a/code/modules/clothing/masks/gasmask.dm +++ b/code/modules/clothing/masks/gasmask.dm @@ -51,44 +51,6 @@ siemens_coefficient = 0.7 species_fit = list("Vox") -/obj/item/clothing/mask/gas/voice - name = "gas mask" - //desc = "A face-covering mask that can be connected to an air supply. It seems to house some odd electronics." - var/mode = 0// 0==Scouter | 1==Night Vision | 2==Thermal | 3==Meson - var/voice = "Unknown" - var/vchange = 0//This didn't do anything before. It now checks if the mask has special functions/N - origin_tech = "syndicate=4" - species_fit = list("Vox") - -/obj/item/clothing/mask/gas/voice/space_ninja - name = "ninja mask" - desc = "A close-fitting mask that acts both as an air filter and a post-modern fashion statement." - icon_state = "s-ninja(norm)" - item_state = "s-ninja_mask" - vchange = 1 - unacidable = 1 - siemens_coefficient = 0.2 - species_fit = list("Vox") - -/obj/item/clothing/mask/gas/voice/space_ninja/scar - name = "ninja mask" - desc = "A close-fitting mask that acts both as an air filter and a post-modern fashion statement. This mask appears to have already seen battle." - icon_state = "s-ninja(scar)" - item_state = "s-ninja_mask" - -/obj/item/clothing/mask/gas/voice/space_ninja/visor - name = "ninja mask" - desc = "A close-fitting mask that acts both as an air filter and a post-modern fashion statement. This variant appears to have a visor to increase vision." - icon_state = "s-ninja(visor)" - item_state = "s-ninja_mask" - -/obj/item/clothing/mask/gas/voice/space_ninja/monocular - name = "ninja mask" - desc = "A close-fitting mask that acts both as an air filter and a post-modern fashion statement. This variant appears to focus the user's vision out of a single port." - icon_state = "s-ninja(mon)" - item_state = "s-ninja_mask" - - /obj/item/clothing/mask/gas/clown_hat name = "clown wig and mask" desc = "A true prankster's facial attire. A clown is incomplete without his wig and mask." diff --git a/code/modules/clothing/masks/voice.dm b/code/modules/clothing/masks/voice.dm new file mode 100644 index 00000000000..3d28b720d79 --- /dev/null +++ b/code/modules/clothing/masks/voice.dm @@ -0,0 +1,59 @@ +/obj/item/voice_changer + name = "voice changer" + desc = "A voice scrambling module. If you can see this, report it as a bug on the tracker." + var/voice //If set and item is present in mask/suit, this name will be used for the wearer's speech. + var/active + +/obj/item/clothing/mask/gas/voice + name = "gas mask" + desc = "A face-covering mask that can be connected to an air supply. It seems to house some odd electronics." + var/obj/item/voice_changer/changer + origin_tech = "syndicate=4" + +/obj/item/clothing/mask/gas/voice/verb/Toggle_Voice_Changer() + set category = "Object" + set src in usr + + changer.active = !changer.active + usr << "You [changer.active ? "enable" : "disable"] the voice-changing module in \the [src]." + +/obj/item/clothing/mask/gas/voice/verb/Set_Voice(name as text) + set category = "Object" + set src in usr + + var/voice = sanitize(copytext(name,1,MAX_MESSAGE_LEN)) + if(!voice || !length(voice)) return + changer.voice = voice + usr << "You are now mimicking [changer.voice]." + +/obj/item/clothing/mask/gas/voice/New() + ..() + changer = new(src) + +/obj/item/clothing/mask/gas/voice/space_ninja + name = "ninja mask" + desc = "A close-fitting mask that acts both as an air filter and a post-modern fashion statement." + icon_state = "s-ninja(norm)" + item_state = "s-ninja_mask" + unacidable = 1 + siemens_coefficient = 0.2 + species_fit = list("Vox") + var/mode = 0// 0==Scouter | 1==Night Vision | 2==Thermal | 3==Meson + +/obj/item/clothing/mask/gas/voice/space_ninja/scar + name = "ninja mask" + desc = "A close-fitting mask that acts both as an air filter and a post-modern fashion statement. This mask appears to have already seen battle." + icon_state = "s-ninja(scar)" + item_state = "s-ninja_mask" + +/obj/item/clothing/mask/gas/voice/space_ninja/visor + name = "ninja mask" + desc = "A close-fitting mask that acts both as an air filter and a post-modern fashion statement. This variant appears to have a visor to increase vision." + icon_state = "s-ninja(visor)" + item_state = "s-ninja_mask" + +/obj/item/clothing/mask/gas/voice/space_ninja/monocular + name = "ninja mask" + desc = "A close-fitting mask that acts both as an air filter and a post-modern fashion statement. This variant appears to focus the user's vision out of a single port." + icon_state = "s-ninja(mon)" + item_state = "s-ninja_mask" \ No newline at end of file diff --git a/code/modules/karma/karma.dm b/code/modules/karma/karma.dm index 0b97d51c8b3..38c101b4370 100644 --- a/code/modules/karma/karma.dm +++ b/code/modules/karma/karma.dm @@ -345,8 +345,8 @@ You've gained [totalkarma] total karma in your time here.
"} message_admins("SQL ERROR during karmaspent updating (updating existing entry). Error: \[[err]\]\n") return else - usr << "You have been charged [cost] karma." - message_admins("[key_name(usr)] has been charged [cost] karma.") + usr << "You have been [refund ? "refunded" : "charged"] [cost] karma." + message_admins("[key_name(usr)] has been [refund ? "refunded" : "charged"] [cost] karma.") return /client/proc/karmarefund(var/type,var/name,var/cost) diff --git a/code/modules/mining/laborcamp/laborstacker.dm b/code/modules/mining/laborcamp/laborstacker.dm index ed588a76482..facaf65c5da 100644 --- a/code/modules/mining/laborcamp/laborstacker.dm +++ b/code/modules/mining/laborcamp/laborstacker.dm @@ -12,14 +12,15 @@ var/obj/item/weapon/card/id/prisoner/inserted_id var/obj/machinery/door/airlock/release_door var/door_tag = "prisonshuttle" - var/obj/item/device/radio/Radio //needed to send messages to sec radio var/use_release_door = 0 + var/obj/item/device/radio/intercom/announcer /obj/machinery/mineral/labor_claim_console/New() ..() - Radio = new/obj/item/device/radio(src) - Radio.listening = 0 + announcer = new /obj/item/device/radio/intercom(null) + announcer.config(list("Security" = 0)) + spawn(7) src.machine = locate(/obj/machinery/mineral/stacking_machine, get_step(src, machinedir)) var/t @@ -103,8 +104,8 @@ else if(shuttle.location == 1) if (shuttle.moving_status == SHUTTLE_IDLE) - Radio.set_frequency(SEC_FREQ) - Radio.talk_into(src, "[inserted_id.registered_name] has returned to the station. Minerals and Prisoner ID card ready for retrieval.", SEC_FREQ) + var/message = "[inserted_id.registered_name] has returned to the station. Minerals and Prisoner ID card ready for retrieval." + announcer.autosay(message, "Labor Camp Controller", "Security") usr << "Shuttle received message and will be sent shortly." shuttle.launch() else @@ -131,7 +132,7 @@ /obj/machinery/mineral/stacking_machine/laborstacker var/points = 0 //The unclaimed value of ore stacked. Value for each ore loosely relative to its rarity. - var/list/ore_values = list(("glass" = 1), ("metal" = 2), ("solid plasma" = 20), ("plasteel" = 23), ("reinforced glass" = 4), ("gold" = 20), ("silver" = 20), ("uranium" = 20), ("diamond" = 25), ("bananium" = 50)) + var/list/ore_values = list(("glass" = 1), ("metal" = 2), ("iron" = 3), ("solid plasma" = 20), ("plasteel" = 23), ("reinforced glass" = 4), ("gold" = 20), ("silver" = 20), ("uranium" = 20), ("diamond" = 25), ("bananium" = 50)) /obj/machinery/mineral/stacking_machine/laborstacker/proc/get_ore_values() var/dat = "
Transmit:[(!radio.isWireCut(WIRE_TRANSMIT)) ? "En" : "Dis" ]abled + [radio.broadcasting ? "En" : "Dis" ]abled
Receive:[(!radio.isWireCut(WIRE_RECEIVE)) ? "En" : "Dis" ]abled - -
Signal Pulser:[(!radio.isWireCut(WIRE_SIGNAL)) ? "En" : "Dis" ]abled + [radio.listening ? "En" : "Dis" ]abled
" @@ -155,6 +156,17 @@ S.loc = output.loc else O.loc = output.loc + + //Output amounts that are past stack_amt. + for(var/sheet in stack_storage) + if(stack_storage[sheet] >= stack_amt) + var/stacktype = stack_paths[sheet] + var/obj/item/stack/sheet/S = new stacktype (get_turf(output)) + S.amount = stack_amt + stack_storage[sheet] -= stack_amt + + console.updateUsrDialog() + return /**********************Point Lookup Console**************************/ diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index 4be7623c8ff..e999f919091 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -24,6 +24,7 @@ var/atom/movable/following = null var/medHUD = 0 var/secHUD = 0 + var/anonsay = 0 /mob/dead/observer/New(var/mob/body=null, var/flags=1) sight |= SEE_TURFS | SEE_MOBS | SEE_OBJS | SEE_SELF @@ -490,6 +491,11 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp if(usr != src) return ..() + + if (href_list["track"]) + var/mob/target = locate(href_list["track"]) in mob_list + if(target) + ManualFollow(target) if (href_list["follow"]) var/mob/target = locate(href_list["follow"]) in mob_list @@ -532,3 +538,14 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp following = null ..() //END TELEPORT HREF CODE + +/mob/dead/observer/verb/toggle_anonsay() + set category = "Ghost" + set name = "Toggle Anonymous Chat" + set desc = "Toggles showing your key in dead chat." + + src.anonsay = !src.anonsay + if(anonsay) + src << "Your key won't be shown when you speak in dead chat." + else + src << "Your key will be publicly visible again." diff --git a/code/modules/mob/hear_say.dm b/code/modules/mob/hear_say.dm new file mode 100644 index 00000000000..f63566a0483 --- /dev/null +++ b/code/modules/mob/hear_say.dm @@ -0,0 +1,215 @@ +// At minimum every mob has a hear_say proc. + +/mob/proc/hear_say(var/message, var/verb = "says", var/datum/language/language = null, var/alt_name = "",var/italics = 0, var/mob/speaker = null, var/sound/speech_sound, var/sound_vol) + if(!client) + return + + if(speaker && !speaker.client && istype(src,/mob/dead/observer) && client.prefs.toggles & CHAT_GHOSTEARS && !speaker in view(src)) + //Does the speaker have a client? It's either random stuff that observers won't care about (Experiment 97B says, 'EHEHEHEHEHEHEHE') + //Or someone snoring. So we make it where they won't hear it. + return + + //make sure the air can transmit speech - hearer's side + var/turf/T = get_turf(src) + if ((T) && (!(istype(src, /mob/dead/observer)))) //Ghosts can hear even in vacuum. + var/datum/gas_mixture/environment = T.return_air() + var/pressure = (environment)? environment.return_pressure() : 0 + if(pressure < SOUND_MINIMUM_PRESSURE && get_dist(speaker, src) > 1) + return + + if (pressure < ONE_ATMOSPHERE*0.4) //sound distortion pressure, to help clue people in that the air is thin, even if it isn't a vacuum yet + italics = 1 + sound_vol *= 0.5 //muffle the sound a bit, so it's like we're actually talking through contact + + if(sleeping || stat == 1) + hear_sleep(message) + return + + //non-verbal languages are garbled if you can't see the speaker. Yes, this includes if they are inside a closet. + if (language && (language.flags & NONVERBAL)) + if (!speaker || (src.sdisabilities & BLIND || src.blinded) || !(speaker in view(src))) + message = stars(message) + + if(!(language && (language.flags & INNATE))) // skip understanding checks for INNATE languages + if(!say_understands(speaker,language)) + if(istype(speaker,/mob/living/simple_animal)) + var/mob/living/simple_animal/S = speaker + message = pick(S.speak) + else + if(language) + message = language.scramble(message) + else + message = stars(message) + + var/speaker_name = speaker.name + if(istype(speaker, /mob/living/carbon/human)) + var/mob/living/carbon/human/H = speaker + speaker_name = H.GetVoice() + + if(italics) + message = "[message]" + + var/track = null + if(istype(src, /mob/dead/observer)) + if(italics && client.prefs.toggles & CHAT_GHOSTRADIO) + return + if(speaker_name != speaker.real_name && speaker.real_name) + speaker_name = "[speaker.real_name] ([speaker_name])" + track = "(follow) " + if(client.prefs.toggles & CHAT_GHOSTEARS && speaker in view(src)) + message = "[message]" + + if(sdisabilities & DEAF || ear_deaf) + if(!language || !(language.flags & INNATE)) // INNATE is the flag for audible-emote-language, so we don't want to show an "x talks but you cannot hear them" message if it's set + if(speaker == src) + src << "You cannot hear yourself speak!" + else + src << "[speaker_name][alt_name] talks but you cannot hear \him." + else + if(language) + src << "[speaker_name][alt_name] [track][language.format_message(message, verb)]" + else + src << "[speaker_name][alt_name] [track][verb], \"[message]\"" + if (speech_sound && (get_dist(speaker, src) <= world.view && src.z == speaker.z)) + var/turf/source = speaker? get_turf(speaker) : get_turf(src) + src.playsound_local(source, speech_sound, sound_vol, 1) + + +/mob/proc/hear_radio(var/message, var/verb="says", var/datum/language/language=null, var/part_a, var/part_b, var/mob/speaker = null, var/hard_to_hear = 0, var/vname ="") + + if(!client) + return + + if(sleeping || stat==1) //If unconscious or sleeping + hear_sleep(message) + return + + var/track = null + + //non-verbal languages are garbled if you can't see the speaker. Yes, this includes if they are inside a closet. + if (language && (language.flags & NONVERBAL)) + if (!speaker || (src.sdisabilities & BLIND || src.blinded) || !(speaker in view(src))) + message = stars(message) + + if(!(language && (language.flags & INNATE))) // skip understanding checks for INNATE languages + if(!say_understands(speaker,language)) + if(istype(speaker,/mob/living/simple_animal)) + var/mob/living/simple_animal/S = speaker + if(S.speak && S.speak.len) + message = pick(S.speak) + else + return + else + if(language) + message = language.scramble(message) + else + message = stars(message) + + if(hard_to_hear) + message = stars(message) + + var/speaker_name = speaker.name + + if(vname) + speaker_name = vname + + if(istype(speaker, /mob/living/carbon/human)) + var/mob/living/carbon/human/H = speaker + if(H.voice) + speaker_name = H.voice + + if(hard_to_hear) + speaker_name = "unknown" + + var/changed_voice + + if(istype(src, /mob/living/silicon/ai) && !hard_to_hear) + var/jobname // the mob's "job" + var/mob/living/carbon/human/impersonating //The crewmember being impersonated, if any. + + if (ishuman(speaker)) + var/mob/living/carbon/human/H = speaker + + if((H.wear_id && istype(H.wear_id,/obj/item/weapon/card/id/syndicate)) && (H.wear_mask && istype(H.wear_mask,/obj/item/clothing/mask/gas/voice))) + + changed_voice = 1 + var/mob/living/carbon/human/I = locate(speaker_name) + + if(I) + impersonating = I + jobname = impersonating.get_assignment() + else + jobname = "Unknown" + else + jobname = H.get_assignment() + + else if (iscarbon(speaker)) // Nonhuman carbon mob + jobname = "No id" + else if (isAI(speaker)) + jobname = "AI" + else if (isrobot(speaker)) + jobname = "Cyborg" + else if (istype(speaker, /mob/living/silicon/pai)) + jobname = "Personal AI" + else + jobname = "Unknown" + + if(changed_voice) + if(impersonating) + track = "[speaker_name] ([jobname])" + else + track = "[speaker_name] ([jobname])" + else + track = "[speaker_name] ([jobname])" + + if(istype(src, /mob/dead/observer)) + if(speaker_name != speaker.real_name && !isAI(speaker)) //Announce computer and various stuff that broadcasts doesn't use it's real name but AI's can't pretend to be other mobs. + speaker_name = "[speaker.real_name] ([speaker_name])" + track = "[speaker_name] (follow)" + + var/formatted + if(language) + formatted = language.format_message_radio(message, verb) + else + formatted = "[verb], \"[message]\"" + if(sdisabilities & DEAF || ear_deaf) + if(prob(20)) + src << "You feel your headset vibrate but can hear nothing from it!" + else if(track) + src << "[part_a][track][part_b][formatted]" + else + src << "[part_a][speaker_name][part_b][formatted]" + +/mob/proc/hear_signlang(var/message, var/verb = "gestures", var/datum/language/language, var/mob/speaker = null) + if(!client) + return + + if(say_understands(speaker, language)) + message = "[src] [verb], \"[message]\"" + else + message = "[src] [verb]." + + if(src.status_flags & PASSEMOTES) + for(var/obj/item/weapon/holder/H in src.contents) + H.show_message(message) + for(var/mob/living/M in src.contents) + M.show_message(message) + src.show_message(message) + +/mob/proc/hear_sleep(var/message) + var/heard = "" + if(prob(15)) + var/list/punctuation = list(",", "!", ".", ";", "?") + var/list/messages = text2list(message, " ") + var/R = rand(1, messages.len) + var/heardword = messages[R] + if(copytext(heardword,1, 1) in punctuation) + heardword = copytext(heardword,2) + if(copytext(heardword,-1) in punctuation) + heardword = copytext(heardword,1,lentext(heardword)) + heard = "...You hear something about...[heardword]" + + else + heard = "...You almost hear someone talking..." + + src << heard diff --git a/code/modules/mob/language.dm b/code/modules/mob/language.dm index 0a043db41ef..3b4f1cc6f39 100644 --- a/code/modules/mob/language.dm +++ b/code/modules/mob/language.dm @@ -1,3 +1,5 @@ +#define SCRAMBLE_CACHE_LEN 20 + /* Datum based languages. Easily editable and modular. */ @@ -5,13 +7,106 @@ /datum/language var/name = "an unknown language" // Fluff name of language if any. var/desc = "A language." // Short description for 'Check Languages'. - var/speech_verb = "says" // 'says', 'hisses'. - var/ask_verb = "asks" // Used when sentence ends in a ? + var/speech_verb = "says" // 'says', 'hisses', 'farts'. + var/ask_verb = "asks" // Used when sentence ends in a ? var/exclaim_verb = "exclaims" // Used when sentence ends in a ! - var/colour = "say_quote" // CSS style to use for strings in this language. + var/whisper_verb // Optional. When not specified speech_verb + quietly/softly is used instead. + var/signlang_verb = list() // list of emotes that might be displayed if this language has NONVERBAL or SIGNLANG flags + var/colour = "body" // CSS style to use for strings in this language. var/key = "x" // Character used to speak in language eg. :o for Unathi. var/flags = 0 // Various language flags. var/native // If set, non-native speakers will have trouble speaking. + var/list/syllables // Used when scrambling text for a non-speaker. + var/list/space_chance = 55 // Likelihood of getting a space in the random scramble string. + +/datum/language/proc/get_random_name(var/gender, name_count=2, syllable_count=4) + if(!syllables || !syllables.len) + if(gender==FEMALE) + return capitalize(pick(first_names_female)) + " " + capitalize(pick(last_names)) + else + return capitalize(pick(first_names_male)) + " " + capitalize(pick(last_names)) + + var/full_name = "" + var/new_name = "" + + for(var/i = 0;i0;x--) + new_name += pick(syllables) + full_name += " [capitalize(lowertext(new_name))]" + + return "[trim(full_name)]" + +/datum/language + var/list/scramble_cache = list() + +/datum/language/proc/scramble(var/input) + + if(!syllables || !syllables.len) + return stars(input) + + // If the input is cached already, move it to the end of the cache and return it + if(input in scramble_cache) + var/n = scramble_cache[input] + scramble_cache -= input + scramble_cache[input] = n + return n + + var/input_size = length(input) + var/scrambled_text = "" + var/capitalize = 1 + + while(length(scrambled_text) < input_size) + var/next = pick(syllables) + if(capitalize) + next = capitalize(next) + capitalize = 0 + scrambled_text += next + var/chance = rand(100) + if(chance <= 5) + scrambled_text += ". " + capitalize = 1 + else if(chance > 5 && chance <= space_chance) + scrambled_text += " " + + scrambled_text = trim(scrambled_text) + var/ending = copytext(scrambled_text, length(scrambled_text)) + if(ending == ".") + scrambled_text = copytext(scrambled_text,1,length(scrambled_text)-1) + var/input_ending = copytext(input, input_size) + if(input_ending in list("!","?",".")) + scrambled_text += input_ending + + // Add it to cache, cutting old entries if the list is too long + scramble_cache[input] = scrambled_text + if(scramble_cache.len > SCRAMBLE_CACHE_LEN) + scramble_cache.Cut(1, scramble_cache.len-SCRAMBLE_CACHE_LEN-1) + + + return scrambled_text + +/datum/language/proc/format_message(message, verb) + return "[verb], \"[capitalize(message)]\"" + +/datum/language/proc/format_message_radio(message, verb) + return "[verb], \"[capitalize(message)]\"" + +/datum/language/proc/get_talkinto_msg_range(message) + // if you yell, you'll be heard from two tiles over instead of one + return (copytext(message, length(message)) == "!") ? 2 : 1 + +/datum/language/proc/broadcast(var/mob/living/speaker,var/message,var/speaker_mask) + log_say("[key_name(speaker)] : ([name]) [message]") + + if(!speaker_mask) speaker_mask = speaker.name + var/msg = "[name], [speaker_mask] [format_message(message, get_spoken_verb(message))]" + + for(var/mob/player in player_list) + if(istype(player,/mob/dead) || ((src in player.languages) && check_special_condition(player))) + player << msg + +/datum/language/proc/check_special_condition(var/mob/other) + return 1 /datum/language/proc/get_spoken_verb(var/msg_end) switch(msg_end) @@ -19,8 +114,25 @@ return exclaim_verb if("?") return ask_verb - return speech_verb - + return speech_verb + +// Noise "language", for audible emotes. +/datum/language/noise + name = "Noise" + desc = "Noises" + key = "" + flags = RESTRICTED|NONGLOBAL|INNATE|NO_TALK_MSG + +/datum/language/noise/format_message(message, verb) + return "[message]" + +/datum/language/noise/format_message_radio(message, verb) + return "[message]" + +/datum/language/noise/get_talkinto_msg_range(message) + // if you make a loud noise (screams etc), you'll be heard from 4 tiles over instead of two + return (copytext(message, length(message)) == "!") ? 4 : 2 + /datum/language/unathi name = "Sinta'unathi" desc = "The common language of Moghes, composed of sibilant hisses and rattles. Spoken natively by Unathi." @@ -29,17 +141,38 @@ exclaim_verb = "roars" colour = "soghun" key = "o" - flags = WHITELISTED + flags = RESTRICTED + syllables = list("ss","ss","ss","ss","skak","seeki","resh","las","esi","kor","sh") + +/datum/language/unathi/get_random_name() + + var/new_name = ..() + while(findtextEx(new_name,"sss",1,null)) + new_name = replacetext(new_name, "sss", "ss") + return capitalize(new_name) /datum/language/tajaran name = "Siik'tajr" - desc = "An expressive language that combines yowls and chirps with posture, tail and ears. Native to the Tajaran." + desc = "The traditionally employed tongue of Ahdomai, composed of expressive yowls and chirps. Native to the Tajaran." speech_verb = "mrowls" ask_verb = "mrowls" exclaim_verb = "yowls" colour = "tajaran" key = "j" - flags = WHITELISTED + flags = RESTRICTED + syllables = list("rr","rr","tajr","kir","raj","kii","mir","kra","ahk","nal","vah","khaz","jri","ran","darr", \ + "mi","jri","dynh","manq","rhe","zar","rrhaz","kal","chur","eech","thaa","dra","jurl","mah","sanu","dra","ii'r", \ + "ka","aasi","far","wa","baq","ara","qara","zir","sam","mak","hrar","nja","rir","khan","jun","dar","rik","kah", \ + "hal","ket","jurl","mah","tul","cresh","azu","ragh") + +/datum/language/tajaran/get_random_name(var/gender) + + var/new_name = ..(gender,1) + if(prob(80)) + new_name += " [pick(list("Hadii","Kaytam","Zhan-Khazan","Hharar","Njarir'Akhan"))]" + else + new_name += ..(gender,1) + return new_name /datum/language/skrell name = "Skrellian" @@ -49,7 +182,8 @@ exclaim_verb = "warbles" colour = "skrell" key = "k" - flags = WHITELISTED + flags = RESTRICTED + syllables = list("qr","qrr","xuq","qil","quum","xuqm","vol","xrim","zaoo","qu-uu","qix","qoo","zix","*","!") /datum/language/vox name = "Vox-pidgin" @@ -59,7 +193,12 @@ exclaim_verb = "SHRIEKS" colour = "vox" key = "v" - flags = RESTRICTED + flags = RESTRICTED | WHITELISTED + syllables = list("ti","ti","ti","hi","hi","ki","ki","ki","ki","ya","ta","ha","ka","ya","chi","cha","kah", \ + "SKRE","AHK","EHK","RAWK","KRA","AAA","EEE","KI","II","KRI","KA") + +/datum/language/vox/get_random_name() + return ..(FEMALE,1,6) /datum/language/diona name = "Rootspeak" @@ -67,79 +206,258 @@ speech_verb = "creaks and rustles" ask_verb = "creaks" exclaim_verb = "rustles" - colour = "soghun" + colour = "diona" key = "q" flags = RESTRICTED + syllables = list("hs","zt","kr","st","sh") +/datum/language/diona/get_random_name() + var/new_name = "[pick(list("To Sleep Beneath","Wind Over","Embrace of","Dreams of","Witnessing","To Walk Beneath","Approaching the"))]" + new_name += " [pick(list("the Void","the Sky","Encroaching Night","Planetsong","Starsong","the Wandering Star","the Empty Day","Daybreak","Nightfall","the Rain"))]" + return new_name + +/datum/language/trinary + name = "Trinary" + desc = "A modification of binary to allow fuzzy logic. 0 is no, 1 is maybe, 2 is yes. Credited with giving Machine People the ability to think creatively." + speech_verb = "states" + ask_verb = "queries" + exclaim_verb = "exclaims" + colour = "trinary" + key = "5" + flags = RESTRICTED | WHITELISTED + syllables = list("02011","01222","10100","10210","21012","02011","21200","1002","2001","0002","0012","0012","000","120","121","201","220","10","11","0") + /datum/language/kidan name = "Chittin" - desc = "The noise made by rubbing it's antennae together is actually a complex form of communication for Kidan." - speech_verb = "rubs its antenna together" - ask_verb = "rubs its antenna together" - exclaim_verb = "rubs its antenna together" - colour = "tajaran" + desc = "The noise made by rubbing its antennae together is actually a complex form of communication for Kidan." + speech_verb = "rubs its antennae together" + ask_verb = "rubs its antennae together" + exclaim_verb = "rubs its antennae together" + colour = "kidan" key = "4" - flags = RESTRICTED - + flags = RESTRICTED | WHITELISTED + syllables = list("click","clack") + /datum/language/slime name = "Bubblish" - desc = "Languages of slimes, a mixture of bubbling noises and pops. Almost impossible to speak without mechanical aid for non slime people." + desc = "The language of slimes. It's a mixture of bubbling noises and pops. Very difficult to speak without mechanical aid for humans." speech_verb = "bubbles and pops" ask_verb = "bubbles and pops" exclaim_verb = "bubbles and pops" - colour = "skrell" + colour = "slime" key = "f" + flags = RESTRICTED | WHITELISTED + syllables = list("blob","plop","pop","bop","boop") + +/datum/language/common + name = "Galactic Common" + desc = "The common galactic tongue." + speech_verb = "says" + whisper_verb = "whispers" + key = "0" flags = RESTRICTED + syllables = list("blah","blah","blah","bleh","meh","neh","nah","wah") + +//TODO flag certain languages to use the mob-type specific say_quote and then get rid of these. +/datum/language/common/get_spoken_verb(var/msg_end) + switch(msg_end) + if("!") + return pick("exclaims","shouts","yells") //TODO: make the basic proc handle lists of verbs. + if("?") + return ask_verb + return speech_verb /datum/language/human name = "Sol Common" desc = "A bastardized hybrid of informal English and elements of Mandarin Chinese; the common language of the Sol system." + speech_verb = "says" + whisper_verb = "whispers" + colour = "solcom" key = "1" flags = RESTRICTED + syllables = list("tao","shi","tzu","yi","com","be","is","i","op","vi","ed","lec","mo","cle","te","dis","e") -/datum/language/trinary - name = "Trinary" - desc = "A modification of binary to allow fuzzy logic. 0 is no, 1 maybe, 2 yes. Credited with giving Machine People the ability to think creatively." - key = "5" - flags = RESTRICTED - +/datum/language/human/get_spoken_verb(var/msg_end) + switch(msg_end) + if("!") + return pick("exclaims","shouts","yells") //TODO: make the basic proc handle lists of verbs. + if("?") + return ask_verb + return speech_verb // Galactic common languages (systemwide accepted standards). /datum/language/trader name = "Tradeband" desc = "Maintained by the various trading cartels in major systems, this elegant, structured language is used for bartering and bargaining." speech_verb = "enunciates" + colour = "say_quote" key = "2" + space_chance = 100 + syllables = list("lorem", "ipsum", "dolor", "sit", "amet", "consectetur", "adipiscing", "elit", + "sed", "do", "eiusmod", "tempor", "incididunt", "ut", "labore", "et", "dolore", + "magna", "aliqua", "ut", "enim", "ad", "minim", "veniam", "quis", "nostrud", + "exercitation", "ullamco", "laboris", "nisi", "ut", "aliquip", "ex", "ea", "commodo", + "consequat", "duis", "aute", "irure", "dolor", "in", "reprehenderit", "in", + "voluptate", "velit", "esse", "cillum", "dolore", "eu", "fugiat", "nulla", + "pariatur", "excepteur", "sint", "occaecat", "cupidatat", "non", "proident", "sunt", + "in", "culpa", "qui", "officia", "deserunt", "mollit", "anim", "id", "est", "laborum") /datum/language/gutter name = "Gutter" desc = "Much like Standard, this crude pidgin tongue descended from numerous languages and serves as Tradeband for criminal elements." speech_verb = "growls" + colour = "rough" key = "3" + syllables = list ("gra","ba","ba","breh","bra","rah","dur","ra","ro","gro","go","ber","bar","geh","heh", "gra") + +/datum/language/xenocommon + name = "Xenomorph" + colour = "alien" + desc = "The common tongue of the xenomorphs." + speech_verb = "hisses" + ask_verb = "hisses" + exclaim_verb = "hisses" + key = "6" + flags = RESTRICTED + syllables = list("sss","sSs","SSS") + +/datum/language/xenos + name = "Hivemind" + desc = "Xenomorphs have the strange ability to commune over a psychic hivemind." + speech_verb = "hisses" + ask_verb = "hisses" + exclaim_verb = "hisses" + colour = "alien" + key = "a" + flags = RESTRICTED | HIVEMIND + +/datum/language/xenos/check_special_condition(var/mob/other) + var/mob/living/carbon/M = other + if(!istype(M)) + return 1 + return 0 + +/datum/language/ling + name = "Changeling" + desc = "Although they are normally wary and suspicious of each other, changelings can commune over a distance." + speech_verb = "says" + colour = "changeling" + key = "g" + flags = RESTRICTED | HIVEMIND + +/datum/language/ling/broadcast(var/mob/living/speaker,var/message,var/speaker_mask) + + if(speaker.mind && speaker.mind.changeling) + ..(speaker,message,speaker.mind.changeling.changelingID) + else + ..(speaker,message) + +/datum/language/corticalborer + name = "Cortical Link" + desc = "Cortical borers possess a strange link between their tiny minds." + speech_verb = "sings" + ask_verb = "sings" + exclaim_verb = "sings" + colour = "alien" + key = "x" + flags = RESTRICTED | HIVEMIND + +/datum/language/corticalborer/broadcast(var/mob/living/speaker,var/message,var/speaker_mask) + + var/mob/living/simple_animal/borer/B + + if(istype(speaker,/mob/living/carbon)) + var/mob/living/carbon/M = speaker + B = M.has_brain_worms() + else if(istype(speaker,/mob/living/simple_animal/borer)) + B = speaker + + if(B) + speaker_mask = B.truename + ..(speaker,message,speaker_mask) + +/datum/language/binary + name = "Robot Talk" + desc = "Most human stations support free-use communications protocols and routing hubs for synthetic use." + colour = "say_quote" + speech_verb = "states" + ask_verb = "queries" + exclaim_verb = "declares" + key = "b" + flags = RESTRICTED | HIVEMIND + var/drone_only + +/datum/language/binary/broadcast(var/mob/living/speaker,var/message,var/speaker_mask) + + if(!speaker.binarycheck()) + return + + if (!message) + return + + var/message_start = "[name], [speaker.name]" + var/message_body = "[speaker.say_quote(message)], \"[message]\"" + + for (var/mob/M in dead_mob_list) + if(!istype(M,/mob/new_player) && !istype(M,/mob/living/carbon/brain)) //No meta-evesdropping + M.show_message("[message_start] [message_body]", 2) + + for (var/mob/living/S in living_mob_list) + + if(drone_only && !istype(S,/mob/living/silicon/robot/drone)) + continue + else if(istype(S , /mob/living/silicon/ai)) + message_start = "[name], [speaker.name]" + else if (!S.binarycheck()) + continue + + S.show_message("[message_start] [message_body]", 2) + + var/list/listening = hearers(1, src) + listening -= src + + for (var/mob/living/M in listening) + if(istype(M, /mob/living/silicon) || M.binarycheck()) + continue + M.show_message("synthesised voice beeps, \"beep beep beep\"",2) + + //robot binary xmitter component power usage + if (isrobot(speaker)) + var/mob/living/silicon/robot/R = speaker + var/datum/robot_component/C = R.components["comms"] + R.use_power(C.energy_consumption) + +/datum/language/binary/drone + name = "Drone Talk" + desc = "A heavily encoded damage control coordination stream." + speech_verb = "transmits" + ask_verb = "transmits" + exclaim_verb = "transmits" + colour = "say_quote" + key = "d" + flags = RESTRICTED | HIVEMIND + drone_only = 1 // Language handling. /mob/proc/add_language(var/language) - for(var/datum/language/L in languages) - if(L && L.name == language) - return 0 - var/datum/language/new_language = all_languages[language] - if(!istype(new_language,/datum/language)) + if(!istype(new_language) || new_language in languages) return 0 - languages += new_language + languages |= new_language return 1 /mob/proc/remove_language(var/rem_language) + var/datum/language/L = all_languages[rem_language] + . = (L in languages) + languages.Remove(L) - for(var/datum/language/L in languages) - if(L && L.name == rem_language) - languages -= L - return 1 +// Can we speak this language, as opposed to just understanding it? +/mob/proc/can_speak(datum/language/speaking) - return 0 + return (universal_speak || (speaking && speaking.flags & INNATE) || speaking in src.languages) //TBD /mob/verb/check_languages() @@ -150,7 +468,10 @@ var/dat = "Known Languages

" for(var/datum/language/L in languages) - dat += "[L.name] (:[L.key])
[L.desc]

" + if(!(L.flags & NONGLOBAL)) + dat += "[L.name] (:[L.key])
[L.desc]

" src << browse(dat, "window=checklanguage") - return \ No newline at end of file + return + +#undef SCRAMBLE_CACHE_LEN diff --git a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm index 0eb6fe764ee..721c2a4b3fb 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm @@ -21,6 +21,8 @@ if(name == "alien") name = text("alien ([rand(1, 1000)])") real_name = name + add_language("Xenomorph") + add_language("Hivemind") ..() //This is fine, works the same as a human diff --git a/code/modules/mob/living/carbon/alien/larva/larva.dm b/code/modules/mob/living/carbon/alien/larva/larva.dm index 5515c951514..a918e069bb7 100644 --- a/code/modules/mob/living/carbon/alien/larva/larva.dm +++ b/code/modules/mob/living/carbon/alien/larva/larva.dm @@ -23,6 +23,8 @@ name = "alien larva ([rand(1, 1000)])" real_name = name regenerate_icons() + add_language("Xenomorph") + add_language("Hivemind") ..() //This is fine, works the same as a human diff --git a/code/modules/mob/living/carbon/alien/say.dm b/code/modules/mob/living/carbon/alien/say.dm index 9604a50559d..8b4177470a4 100644 --- a/code/modules/mob/living/carbon/alien/say.dm +++ b/code/modules/mob/living/carbon/alien/say.dm @@ -1,69 +1,28 @@ /mob/living/carbon/alien/say(var/message) + var/verb = "says" + var/message_range = world.view - if (silent) - return + if(client) + if(client.prefs.muted & MUTE_IC) + src << "\red You cannot speak in IC (Muted)." + return - if (length(message) >= 2) - if (department_radio_keys[copytext(message, 1, 3)] == "alientalk") - message = copytext(message, 3) - message = trim(copytext(sanitize(message), 1, MAX_MESSAGE_LEN)) - if (stat == 2) - return say_dead(message) - else - alien_talk(message) - else - if (copytext(message, 1, 2) != "*" && !stat) - playsound(loc, "hiss", 25, 1, 1)//So aliens can hiss while they hiss yo/N - return ..(message) - else + message = trim_strip_html_properly(message) -/mob/living/proc/alien_talk(var/message) + if(stat == 2) + return say_dead(message) + + if(copytext(message,1,2) == "*") + return emote(copytext(message,2)) + + var/datum/language/speaking = parse_language(message) + + if(speaking) + message = copytext(message, 2+length(speaking.key)) - log_say("[key_name(src)] : [message]") message = trim(message) - if (!message) + if(!message || stat) return - var/message_a = say_quote(message) - var/rendered = "Hivemind, [name] [message_a]" - for (var/mob/living/S in player_list) - if(!S.stat) - if(S.alien_talk_understand) - if(S.alien_talk_understand == alien_talk_understand) - S.show_message(rendered, 2) - else if (S.hivecheck()) - S.show_message(rendered, 2) - - var/list/listening = hearers(1, src) - listening -= src - listening += src - - var/list/heard = list() - for (var/mob/M in listening) - if(!istype(M, /mob/living/carbon/alien) && !M.alien_talk_understand) - heard += M - - - if (length(heard)) - var/message_b - - message_b = "hsssss" - message_b = say_quote(message_b) - message_b = "[message_b]" - - rendered = "[voice_name] [message_b]" - - for (var/mob/M in heard) - M.show_message(rendered, 2) - - message = say_quote(message) - - rendered = "Hivemind, [name] [message_a]" - var/rendered2 = null - for (var/mob/M in player_list) - if (istype(M, /mob/new_player)) - continue - if (M.stat > 1 && istype(M, /mob/dead/observer)) - rendered2 = "Hivemind, [name] (Follow) [message_a]" - M.show_message(rendered2, 2) \ No newline at end of file + ..(message, speaking, verb, null, null, message_range, null) \ No newline at end of file diff --git a/code/modules/mob/living/carbon/brain/brain.dm b/code/modules/mob/living/carbon/brain/brain.dm index f181cc05464..bbcd527386b 100644 --- a/code/modules/mob/living/carbon/brain/brain.dm +++ b/code/modules/mob/living/carbon/brain/brain.dm @@ -55,4 +55,7 @@ canmove = 1 use_me = 1 //If it can move, let it emote else canmove = 0 - return canmove \ No newline at end of file + return canmove + +/mob/living/carbon/brain/binarycheck() + return istype(loc, /obj/item/device/mmi/posibrain) \ No newline at end of file diff --git a/code/modules/mob/living/carbon/brain/say.dm b/code/modules/mob/living/carbon/brain/say.dm index 1e7a9da9a76..26dc7b30f3f 100644 --- a/code/modules/mob/living/carbon/brain/say.dm +++ b/code/modules/mob/living/carbon/brain/say.dm @@ -1,3 +1,4 @@ +//TODO: Convert this over for languages. /mob/living/carbon/brain/say(var/message) if (silent) return @@ -8,18 +9,31 @@ if(!(container && (istype(container, /obj/item/device/mmi) || istype(container, /obj/item/device/mmi/posibrain)))) return //No MMI, can't speak, bucko./N else - if ((department_radio_keys[copytext(message, 1, 3)] == "binary") && (container && istype(container, /obj/item/device/mmi/posibrain))) - message = copytext(message, 3) - message = trim(copytext(sanitize(message), 1, MAX_MESSAGE_LEN)) - robot_talk(message) - return + var/datum/language/speaking = parse_language(message) + if(speaking) + message = copytext(message, 2+length(speaking.key)) + var/verb = "says" + var/ending = copytext(message, length(message)) + if (speaking) + verb = speaking.get_spoken_verb(ending) + else + if(ending=="!") + verb=pick("exclaims","shouts","yells") + if(ending=="?") + verb="asks" + if(prob(emp_damage*4)) if(prob(10))//10% chane to drop the message entirely return else message = Gibberish(message, (emp_damage*6))//scrambles the message, gets worse when emp_damage is higher + + if(speaking && speaking.flags & HIVEMIND) + speaking.broadcast(src,trim(message)) + return + if(istype(container, /obj/item/device/mmi/radio_enabled)) var/obj/item/device/mmi/radio_enabled/R = container if(R.radio) - spawn(0) R.radio.hear_talk(src, sanitize(message)) - ..() \ No newline at end of file + spawn(0) R.radio.hear_talk(src, trim(sanitize(message)), verb, speaking) + ..(trim(message), speaking, verb) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 5f3a0cca482..ff64560fbbe 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -9,6 +9,40 @@ var/datum/species/species //Contains icon generation and language information, set during New(). var/embedded_flag //To check if we've need to roll for damage on movement while an item is imbedded in us. +/mob/living/carbon/human/New(var/new_loc, var/new_species = null, var/delay_ready_dna=0) + if(!species) + if(new_species) + set_species(new_species,null,1) + else + set_species() + + var/datum/reagents/R = new/datum/reagents(1000) + reagents = R + R.my_atom = src + + hud_list[HEALTH_HUD] = image('icons/mob/hud.dmi', src, "hudhealth100") + hud_list[STATUS_HUD] = image('icons/mob/hud.dmi', src, "hudhealthy") + hud_list[ID_HUD] = image('icons/mob/hud.dmi', src, "hudunknown") + hud_list[WANTED_HUD] = image('icons/mob/hud.dmi', src, "hudblank") + hud_list[IMPLOYAL_HUD] = image('icons/mob/hud.dmi', src, "hudblank") + hud_list[IMPCHEM_HUD] = image('icons/mob/hud.dmi', src, "hudblank") + hud_list[IMPTRACK_HUD] = image('icons/mob/hud.dmi', src, "hudblank") + hud_list[SPECIALROLE_HUD] = image('icons/mob/hud.dmi', src, "hudblank") + hud_list[STATUS_HUD_OOC] = image('icons/mob/hud.dmi', src, "hudhealthy") + hud_list[NATIONS_HUD] = image('icons/mob/hud.dmi', src, "hudblank") + + ..() + + if(dna) + dna.real_name = real_name + + prev_gender = gender // Debug for plural genders + make_blood() + + // Set up DNA. + if(!delay_ready_dna) + dna.ready_dna(src) + /mob/living/carbon/human/dummy real_name = "Test Dummy" status_flags = GODMODE|CANPUSH @@ -49,8 +83,6 @@ /mob/living/carbon/human/grey/New(var/new_loc) ..(new_loc, "Grey") - spell_list += new /obj/effect/proc_holder/spell/wizard/targeted/remotetalk - /mob/living/carbon/human/human/New(var/new_loc) ..(new_loc, "Human") @@ -63,50 +95,6 @@ h_style = "blue IPC screen" ..(new_loc, "Machine") -/mob/living/carbon/human/New(var/new_loc, var/new_species = null, var/delay_ready_dna=0) - if(!species) - if(new_species) - set_species(new_species,null,1) - else - set_species() - - if(species.language) - var/datum/language/L = all_languages[species.language] - if(L) - languages += L - - var/datum/reagents/R = new/datum/reagents(1000) - reagents = R - R.my_atom = src - - if(!dna) - dna = new /datum/dna(null) - dna.species=species.name - - hud_list[HEALTH_HUD] = image('icons/mob/hud.dmi', src, "hudhealth100") - hud_list[STATUS_HUD] = image('icons/mob/hud.dmi', src, "hudhealthy") - hud_list[ID_HUD] = image('icons/mob/hud.dmi', src, "hudunknown") - hud_list[WANTED_HUD] = image('icons/mob/hud.dmi', src, "hudblank") - hud_list[IMPLOYAL_HUD] = image('icons/mob/hud.dmi', src, "hudblank") - hud_list[IMPCHEM_HUD] = image('icons/mob/hud.dmi', src, "hudblank") - hud_list[IMPTRACK_HUD] = image('icons/mob/hud.dmi', src, "hudblank") - hud_list[SPECIALROLE_HUD] = image('icons/mob/hud.dmi', src, "hudblank") - hud_list[STATUS_HUD_OOC] = image('icons/mob/hud.dmi', src, "hudhealthy") - hud_list[NATIONS_HUD] = image('icons/mob/hud.dmi', src, "hudblank") - - ..() - - if(dna) - dna.real_name = real_name - - prev_gender = gender // Debug for plural genders - make_blood() - - // Set up DNA. - if(!delay_ready_dna) - dna.ready_dna(src) - - /mob/living/carbon/human/Bump(atom/movable/AM as mob|obj, yes) if ((!( yes ) || now_pushing)) return @@ -1313,7 +1301,8 @@ usr << "\blue [self ? "Your" : "[src]'s"] pulse is [src.get_pulse(GETPULSE_HAND)]." /mob/living/carbon/human/proc/set_species(var/new_species, var/force_organs, var/default_colour) - + + var/datum/species/oldspecies = species if(!dna) if(!new_species) new_species = "Human" @@ -1323,19 +1312,34 @@ else dna.species = new_species - if(species && (species.name && species.name == new_species)) - return - - if(species && species.language) - remove_language(species.language) + if(species) + if(species.name && species.name == new_species) + return + if(species.language) + remove_language(species.language) + + if(species.default_language) + remove_language(species.default_language) + species = all_species[new_species] + + if(oldspecies) + if(oldspecies.default_genes.len) + oldspecies.handle_dna(src,1) // Remove any genes that belong to the old species if(force_organs || !organs || !organs.len) species.create_organs(src) + + if(vessel) + vessel = null + make_blood() if(species.language) add_language(species.language) + + if(species.default_language) + add_language(species.default_language) see_in_dark = species.darksight if(see_in_dark > 2) @@ -1343,9 +1347,6 @@ else see_invisible = SEE_INVISIBLE_LIVING - if(species.default_mutations.len>0 || species.default_blocks.len>0) - do_deferred_species_setup=1 - spawn(0) update_icons() @@ -1358,21 +1359,18 @@ r_skin = 0 g_skin = 0 b_skin = 0 + + if(!dna) + dna = new /datum/dna(null) + dna.species = species.name + dna.real_name = real_name + dna.mutantrace = null species.handle_post_spawn(src) spawn(0) - update_icons() - if(species && species.flags & NO_BLOOD) //We want the var for safety but we can do without the actual blood. - if(vessel.has_reagent("water") || vessel.has_reagent("blood")) - var/water = vessel.get_reagent_amount("water") - var/blood = vessel.get_reagent_amount("blood") - vessel.remove_reagent("water",water) - vessel.remove_reagent("blood",blood) - if(species.bloodflags & BLOOD_SLIME) - vessel.add_reagent("water",560-vessel.total_volume) - else - vessel.add_reagent("blood",560-vessel.total_volume) + overlays.Cut() + update_mutantrace(1) fixblood() if(species) diff --git a/code/modules/mob/living/carbon/human/human_damage.dm b/code/modules/mob/living/carbon/human/human_damage.dm index 4db067181cb..49b6a73143c 100644 --- a/code/modules/mob/living/carbon/human/human_damage.dm +++ b/code/modules/mob/living/carbon/human/human_damage.dm @@ -32,9 +32,12 @@ timeofdeath = 0 /mob/living/carbon/human/getBrainLoss() - if(species && species.flags & NO_INTORGANS) return + if(species && species.flags & NO_INTORGANS) + return var/res = brainloss var/datum/organ/internal/brain/sponge = internal_organs_by_name["brain"] + if(!sponge) + return if (sponge.is_bruised()) res += 20 if (sponge.is_broken()) @@ -197,6 +200,7 @@ UpdateDamageIcon() hud_updateflag |= 1 << HEALTH_HUD updatehealth() + speech_problem_flag = 1 //Heal MANY external organs, in random order @@ -218,6 +222,7 @@ parts -= picked updatehealth() hud_updateflag |= 1 << HEALTH_HUD + speech_problem_flag = 1 if(update) UpdateDamageIcon() // damage MANY external organs, in random order diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index b98ea2c790f..4e373c7cdb8 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -50,6 +50,10 @@ var/icon/stand_icon = null var/icon/lying_icon = null + + var/voice = "" //Instead of new say code calling GetVoice() over and over and over, we're just going to ask this variable, which gets updated in Life() + + var/speech_problem_flag = 0 var/miming = null //Toggle for the mime's abilities. var/special_voice = "" // For changing our voice. Used by a symptom. diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 8319046d5d5..0f32d9d187e 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -33,27 +33,9 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc var/prev_gender = null // Debug for plural genders var/temperature_alert = 0 var/in_stasis = 0 - var/do_deferred_species_setup=0 var/exposedtimenow = 0 var/firstexposed = 0 -// Doing this during species init breaks shit. -/mob/living/carbon/human/proc/DeferredSpeciesSetup() - var/mut_update=0 - if(species.default_mutations.len>0) - for(var/mutation in species.default_mutations) - if(!(mutation in mutations)) - mutations.Add(mutation) - mut_update=1 - if(species.default_blocks.len>0) - for(var/block in species.default_blocks) - if(!dna.GetSEState(block)) - dna.SetSEState(block,1) - mut_update=1 - if(mut_update) - domutcheck(src,null,MUTCHK_FORCED) - update_mutations() - /mob/living/carbon/human/Life() set invisibility = 0 //set background = 1 @@ -63,10 +45,6 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc ..() - if(do_deferred_species_setup) - DeferredSpeciesSetup() - do_deferred_species_setup=0 - //Apparently, the person who wrote this code designed it so that //blinded get reset each cycle and then get activated later in the //code. Very ugly. I dont care. Moving this stuff here so its easy @@ -84,6 +62,8 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc if(life_tick%30==15) hud_updateflag = 1022 + + voice = GetVoice() //No need to update all of these procs if the guy is dead. if(stat != DEAD && !in_stasis) @@ -252,22 +232,26 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc drop_item() emote("cough") if (disabilities & TOURETTES) + speech_problem_flag = 1 if ((prob(10) && paralysis <= 1)) Stun(10) switch(rand(1, 3)) if(1) emote("twitch") if(2 to 3) - say("[prob(50) ? ";" : ""][pick("SHIT", "PISS", "FUCK", "CUNT", "COCKSUCKER", "MOTHERFUCKER", "TITS")]") + var/tourettes = pick("SHIT", "PISS", "FUCK", "CUNT", "COCKSUCKER", "MOTHERFUCKER", "TITS") + say("[prob(50) ? ";" : ""][tourettes]") var/x_offset = pixel_x + rand(-2,2) //Should probably be moved into the twitch emote at some point. var/y_offset = pixel_y + rand(-1,1) animate(src, pixel_x = pixel_x + x_offset, pixel_y = pixel_y + y_offset, time = 1) animate(pixel_x = pixel_x - x_offset, pixel_y = pixel_y - y_offset, time = 1) if (disabilities & NERVOUS) + speech_problem_flag = 1 if (prob(10)) stuttering = max(10, stuttering) if (getBrainLoss() >= 60 && stat != 2) + speech_problem_flag = 1 if (prob(3)) switch(pick(1,2,3)) if(1) @@ -329,6 +313,7 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc if(gene.is_active(src)) /* if (prob(10) && prob(gene.instability)) adjustCloneLoss(1) */ + speech_problem_flag = 1 gene.OnMobLife(src) if (radiation) @@ -1091,6 +1076,7 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc if(halloss > 0) adjustHalLoss(-3) else if(sleeping) + speech_problem_flag = 1 handle_dreams() adjustStaminaLoss(-10) adjustHalLoss(-3) @@ -1944,7 +1930,29 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc var/client/C = client for(var/mob/living/carbon/human/H in view(src, 14)) C.images += H.hud_list[NATIONS_HUD] + +/mob/living/carbon/human/handle_silent() + if(..()) + speech_problem_flag = 1 + return silent +/mob/living/carbon/human/handle_slurring() + if(..()) + speech_problem_flag = 1 + return slurring + +/mob/living/carbon/human/handle_stunned() + if(species.flags & NO_PAIN) + stunned = 0 + return 0 + if(..()) + speech_problem_flag = 1 + return stunned + +/mob/living/carbon/human/handle_stuttering() + if(..()) + speech_problem_flag = 1 + return stuttering // Need this in species. //#undef HUMAN_MAX_OXYLOSS diff --git a/code/modules/mob/living/carbon/human/say.dm b/code/modules/mob/living/carbon/human/say.dm index 028f0efe755..4cc61b36290 100644 --- a/code/modules/mob/living/carbon/human/say.dm +++ b/code/modules/mob/living/carbon/human/say.dm @@ -1,81 +1,152 @@ /mob/living/carbon/human/say(var/message) - if(miming) - if(length(message) >= 2) - if(mind && mind.changeling) - if(copytext(message, 1, 2) != "*" && department_radio_keys[copytext(message, 1, 3)] != "changeling") - return - else - return ..(message) - if(stat == DEAD) - return ..(message) - if(length(message) >= 1) //In case people forget the '*help' command, this will slow them the message and prevent people from saying one letter at a time - if (copytext(message, 1, 2) != "*") - return + var/verb = "says" + var/alt_name = "" + var/message_range = world.view + var/italics = 0 - if(dna) - if(length(message) >= 2) - if (copytext(message, 1, 2) != "*" && department_radio_keys[copytext(message, 1, 3)] != "changeling") - for(var/datum/dna/gene/gene in dna_genes) - if(!gene.block) - continue - if(gene.is_active(src)) - message = gene.OnSay(src,message) - /* - if(dna.mutantrace == "lizard") - if(copytext(message, 1, 2) != "*") - message = replacetext(message, "s", stutter("ss")) + if(client) + if(client.prefs.muted & MUTE_IC) + src << "\red You cannot speak in IC (Muted)." + return - if(dna.mutantrace == "slime" && prob(5)) - if(copytext(message, 1, 2) != "*") - if(copytext(message, 1, 2) == ";") - message = ";" - else - message = "" - message += "SKR" - var/imax = rand(5,20) - for(var/i = 0,iYou're muzzled and cannot speak!
" + return + + var/message_mode = parse_message_mode(message, "headset") + + if(copytext(message,1,2) == "*") + return emote(copytext(message,2)) + + if(name != GetVoice()) + alt_name = "(as [get_id_name("Unknown")])" + + //parse the radio code and consume it + if (message_mode) + if (message_mode == "headset") + message = copytext(message,2) //it would be really nice if the parse procs could do this for us. + else + message = copytext(message,3) + + //parse the language code and consume it + var/datum/language/speaking = parse_language(message) + if(speaking) + message = copytext(message,2+length(speaking.key)) + else if(species.default_language) + speaking = all_languages[species.default_language] + + var/ending = copytext(message, length(message)) + if (speaking) + // This is broadcast to all mobs with the language, + // irrespective of distance or anything else. + if(speaking.flags & HIVEMIND) + speaking.broadcast(src,trim(message)) + return + //If we've gotten this far, keep going! + verb = speaking.get_spoken_verb(ending) + else + if(ending=="!") + verb=pick("exclaims","shouts","yells") + if(ending=="?") + verb="asks" + + message = trim(message) + + if(speech_problem_flag) + var/list/handle_r = handle_speech_problems(message) + message = handle_r[1] + verb = handle_r[2] + speech_problem_flag = handle_r[3] + + if(!message || message == "") + return + + var/list/obj/item/used_radios = new + + switch (message_mode) + if("headset") + if(l_ear && istype(l_ear,/obj/item/device/radio)) + var/obj/item/device/radio/R = l_ear + R.talk_into(src,message,null,verb,speaking) + used_radios += l_ear + else if(r_ear && istype(r_ear,/obj/item/device/radio)) + var/obj/item/device/radio/R = r_ear + R.talk_into(src,message,null,verb,speaking) + used_radios += r_ear + + if("right ear") + var/obj/item/device/radio/R + var/has_radio = 0 + if(r_ear && istype(r_ear,/obj/item/device/radio)) + R = r_ear + has_radio = 1 + if(r_hand && istype(r_hand, /obj/item/device/radio)) + R = r_hand + has_radio = 1 + if(has_radio) + R.talk_into(src,message,null,verb,speaking) + used_radios += R - if(wear_mask) - if(istype(wear_mask, /obj/item/clothing/mask/gas/voice/space_ninja) && wear_mask:voice == "Unknown") - if(copytext(message, 1, 2) != "*") - var/list/temp_message = text2list(message, " ") - var/list/pick_list = list() - for(var/i = 1, i <= temp_message.len, i++) - pick_list += i - for(var/i=1, i <= abs(temp_message.len/3), i++) - var/H = pick(pick_list) - if(findtext(temp_message[H], "*") || findtext(temp_message[H], ";") || findtext(temp_message[H], ":")) continue - temp_message[H] = ninjaspeak(temp_message[H]) - pick_list -= H - message = list2text(temp_message, " ") - message = replacetext(message, "o", "¤") - message = replacetext(message, "p", "þ") - message = replacetext(message, "l", "£") - message = replacetext(message, "s", "§") - message = replacetext(message, "u", "µ") - message = replacetext(message, "b", "ß") + if("left ear") + var/obj/item/device/radio/R + var/has_radio = 0 + if(l_ear && istype(l_ear,/obj/item/device/radio)) + R = l_ear + has_radio = 1 + if(l_hand && istype(l_hand,/obj/item/device/radio)) + R = l_hand + has_radio = 1 + if(has_radio) + R.talk_into(src,message,null,verb,speaking) + used_radios += R - else if(istype(wear_mask, /obj/item/clothing/mask/horsehead)) - var/obj/item/clothing/mask/horsehead/hoers = wear_mask - if(hoers.voicechange) - if(!(copytext(message, 1, 2) == "*" || (mind && mind.changeling && department_radio_keys[copytext(message, 1, 3)] != "changeling"))) - message = pick("NEEIIGGGHHHH!", "NEEEIIIIGHH!", "NEIIIGGHH!", "HAAWWWWW!", "HAAAWWW!") + if("intercom") + for(var/obj/item/device/radio/intercom/I in view(1, null)) + I.talk_into(src, message, verb, speaking) + used_radios += I + if("whisper") + whisper_say(message, speaking, alt_name) + return + else + if(message_mode) + if(l_ear && istype(l_ear,/obj/item/device/radio)) + l_ear.talk_into(src,message, message_mode, verb, speaking) + used_radios += l_ear + else if(r_ear && istype(r_ear,/obj/item/device/radio)) + r_ear.talk_into(src,message, message_mode, verb, speaking) + used_radios += r_ear - if ((M_HULK in mutations) && health >= 25 && length(message)) - if(copytext(message, 1, 2) != "*") - message = "[uppertext(message)]!!" //because I don't know how to code properly in getting vars from other files -Bro + var/sound/speech_sound + var/sound_vol + if(species.speech_sounds && prob(species.speech_chance)) + speech_sound = sound(pick(species.speech_sounds)) + sound_vol = 50 - if (src.slurring) - if(copytext(message, 1, 2) != "*") - message = slur(message) + //speaking into radios + if(used_radios.len) + italics = 1 + message_range = 1 + if(speaking) + message_range = speaking.get_talkinto_msg_range(message) + var/msg + if(!speaking || !(speaking.flags & NO_TALK_MSG)) + msg = "\The [src] talks into \the [used_radios[1]]" + for(var/mob/living/M in hearers(5, src)) + if((M != src) && msg) + M.show_message(msg) + if (speech_sound) + sound_vol *= 0.5 - if((species.name == "Vox" || species.name == "Vox Armalis") && prob(20)) - playsound(src.loc, 'sound/voice/shriek1.ogg', 50, 1) - - ..(message) + ..(message, speaking, verb, alt_name, italics, message_range, speech_sound, sound_vol) //ohgod we should really be passing a datum here. /mob/living/carbon/human/proc/forcesay(list/append) if(stat == CONSCIOUS) @@ -100,6 +171,7 @@ if(findtext(temp, "*", 1, 2)) //emotes return temp = copytext(trim_left(temp), 1, rand(5,8)) + var/trimmed = trim_left(temp) if(length(trimmed)) if(append) @@ -108,25 +180,45 @@ say(temp) winset(client, "input", "text=[null]") -/mob/living/carbon/human/say_understands(var/other,var/datum/language/speaking = null) +/mob/living/carbon/human/say_understands(var/mob/other,var/datum/language/speaking = null) if(has_brain_worms()) //Brain worms translate everything. Even mice and alien speak. return 1 - if (istype(other, /mob/living/silicon)) - return 1 - if (istype(other, /mob/living/carbon/brain)) - return 1 - if (istype(other, /mob/living/carbon/slime)) + + if(species.can_understand(other)) return 1 + + //These only pertain to common. Languages are handled by mob/say_understands() + if (!speaking) + if (istype(other, /mob/living/carbon/monkey/diona)) + if(other.languages.len >= 2) //They've sucked down some blood and can speak common now. + return 1 + if (istype(other, /mob/living/silicon)) + return 1 + if (istype(other, /mob/living/carbon/brain)) + return 1 + if (istype(other, /mob/living/carbon/slime)) + return 1 + + //This is already covered by mob/say_understands() + //if (istype(other, /mob/living/simple_animal)) + // if((other.universal_speak && !speaking) || src.universal_speak || src.universal_understand) + // return 1 + // return 0 + return ..() /mob/living/carbon/human/GetVoice() - if(istype(src.wear_mask, /obj/item/clothing/mask/gas/voice)) - var/obj/item/clothing/mask/gas/voice/V = src.wear_mask - if(V.vchange) - return V.voice - else - return name + + var/voice_sub + for(var/obj/item/gear in list(wear_mask,wear_suit,head)) + if(!gear) + continue + var/obj/item/voice_changer/changer = locate() in gear + if(changer && changer.active && changer.voice) + voice_sub = changer.voice + if(voice_sub) + return voice_sub if(mind && mind.changeling && mind.changeling.mimicing) return mind.changeling.mimicing if(GetSpecialVoice()) @@ -143,4 +235,81 @@ return /mob/living/carbon/human/proc/GetSpecialVoice() - return special_voice \ No newline at end of file + return special_voice + + +/* + ***Deprecated*** + let this be handled at the hear_say or hear_radio proc + This is left in for robot speaking when humans gain binary channel access until I get around to rewriting + robot_talk() proc. + There is no language handling build into it however there is at the /mob level so we accept the call + for it but just ignore it. +*/ + +/mob/living/carbon/human/say_quote(var/message, var/datum/language/speaking = null) + var/verb = "says" + var/ending = copytext(message, length(message)) + + if(speaking) + verb = speaking.get_spoken_verb(ending) + else + if(ending == "!") + verb = "exclaims" + else if(ending == "?") + verb = "asks" + + return verb + +/mob/living/carbon/human/proc/handle_speech_problems(var/message) + + var/list/returns[3] + var/verb = "says" + var/handled = 0 + if(silent || (sdisabilities & MUTE)) + message = "" + handled = 1 + if(istype(wear_mask, /obj/item/clothing/mask/horsehead)) + var/obj/item/clothing/mask/horsehead/hoers = wear_mask + if(hoers.voicechange) + if(mind && mind.changeling && department_radio_keys[copytext(message, 1, 3)] != "changeling") + message = pick("NEEIIGGGHHHH!", "NEEEIIIIGHH!", "NEIIIGGHH!", "HAAWWWWW!", "HAAAWWW!") + verb = pick("whinnies","neighs", "says") + handled = 1 + + if(dna) + for(var/datum/dna/gene/gene in dna_genes) + if(!gene.block) + continue + if(gene.is_active(src)) + message = gene.OnSay(src,message) + handled = 1 + + if(message != "") + if((M_HULK in mutations) && health >= 25 && length(message)) + message = "[uppertext(message)]!!!" + verb = pick("yells","roars","hollers") + handled = 1 + if(slurring) + message = slur(message) + verb = "slurs" + handled = 1 + if(stuttering) + message = stutter(message) + verb = "stammers" + handled = 1 + + var/braindam = getBrainLoss() + if(braindam >= 60) + handled = 1 + if(prob(braindam/4)) + message = stutter(message) + verb = "gibbers" + if(prob(braindam)) + message = uppertext(message) + verb = "yells loudly" + + returns[1] = message + returns[2] = verb + returns[3] = handled + return returns diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 9a47536c759..937c85bce8e 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -290,11 +290,12 @@ proc/get_damage_icon_part(damage_state, body_part) //Robotic limbs are handled in get_icon() so all we worry about are missing or dead limbs. //No icon stored, so we need to start with a basic one. var/datum/organ/external/chest = get_organ("chest") - base_icon = chest.get_icon(g,fat) + if(chest) + base_icon = chest.get_icon(g,fat) - if(chest.status & ORGAN_DEAD) - base_icon.ColorTone(necrosis_color_mod) - base_icon.SetIntensity(0.7) + if(chest.status & ORGAN_DEAD) + base_icon.ColorTone(necrosis_color_mod) + base_icon.SetIntensity(0.7) for(var/datum/organ/external/part in organs) diff --git a/code/modules/mob/living/carbon/human/whisper.dm b/code/modules/mob/living/carbon/human/whisper.dm index 58bbfc54dec..43e8af94f50 100644 --- a/code/modules/mob/living/carbon/human/whisper.dm +++ b/code/modules/mob/living/carbon/human/whisper.dm @@ -1,11 +1,8 @@ //Lallander was here /mob/living/carbon/human/whisper(message as text) + var/alt_name = "" - message = trim(copytext(strip_html_simple(message), 1, MAX_MESSAGE_LEN)) - - if (!message || silent || miming) - return - + message = trim_strip_html_properly(message) log_whisper("[src.name]/[src.key] : [message]") if (src.client) @@ -16,28 +13,74 @@ if (src.client.handle_spam_prevention(message,MUTE_IC)) return - if (src.stat == 2) return src.say_dead(message) if (src.stat) return - var/alt_name = "" - if (istype(src, /mob/living/carbon/human) && src.name != GetVoice()) - var/mob/living/carbon/human/H = src - alt_name = " (as [H.get_id_name("Unknown")])" - // Mute disability - if (src.sdisabilities & MUTE) - return + if(name != GetVoice()) + alt_name = "(as [get_id_name("Unknown")])" + + //parse the language code and consume it + var/datum/language/speaking = parse_language(message) + if (speaking) + message = copytext(message,2+length(speaking.key)) + + whisper_say(message, speaking, alt_name) + + +//This is used by both the whisper verb and human/say() to handle whispering +/mob/living/carbon/human/proc/whisper_say(var/message, var/datum/language/speaking = null, var/alt_name="", var/verb="whispers") if (istype(src.wear_mask, /obj/item/clothing/mask/muzzle)) + src << "You're muzzled and cannot speak!" return - var/italics = 1 var/message_range = 1 + var/eavesdropping_range = 2 + var/watching_range = 5 + var/italics = 1 - if(istype(src.wear_mask, /obj/item/clothing/mask/gas/voice/space_ninja)&&src.wear_mask:voice=="Unknown") + var/not_heard //the message displayed to people who could not hear the whispering + if (speaking) + if (speaking.whisper_verb) + verb = speaking.whisper_verb + not_heard = "[verb] something" + else + var/adverb = pick("quietly", "softly") + verb = "[speaking.speech_verb] [adverb]" + not_heard = "[speaking.speech_verb] something [adverb]" + else + not_heard = "[verb] something" //TODO get rid of the null language and just prevent speech if language is null + + message = capitalize(trim(message)) + + if(speech_problem_flag) + var/list/handle_r = handle_speech_problems(message) + message = handle_r[1] + verb = handle_r[2] + if(verb == "yells loudly") + verb = "slurs emphatically" + else + var/adverb = pick("quietly", "softly") + verb = "[verb] [adverb]" + + speech_problem_flag = handle_r[3] + + if(!message || message=="") + return + + //looks like this only appears in whisper. Should it be elsewhere as well? Maybe handle_speech_problems? + var/voice_sub + for(var/obj/item/gear in list(wear_mask,wear_suit,head)) + if(!gear) + continue + var/obj/item/voice_changer/changer = locate() in gear + if(changer && changer.active && changer.voice) + voice_sub = changer.voice + + if(voice_sub == "Unknown") if(copytext(message, 1, 2) != "*") var/list/temp_message = text2list(message, " ") var/list/pick_list = list() @@ -49,97 +92,60 @@ temp_message[H] = ninjaspeak(temp_message[H]) pick_list -= H message = list2text(temp_message, " ") - message = replacetext(message, "o", "?") - message = replacetext(message, "p", "?") - message = replacetext(message, "l", "?") - message = replacetext(message, "s", "?") - message = replacetext(message, "u", "?") - message = replacetext(message, "b", "?") - - if (src.stuttering) - message = stutter(message) - - for (var/obj/O in view(message_range, src)) - spawn (0) - if (O) - O.hear_talk(src, message) + message = replacetext(message, "o", "�") + message = replacetext(message, "p", "�") + message = replacetext(message, "l", "�") + message = replacetext(message, "s", "�") + message = replacetext(message, "u", "�") + message = replacetext(message, "b", "�") var/list/listening = hearers(message_range, src) listening |= src + //ghosts + for (var/mob/M in dead_mob_list) //does this include players who joined as observers as well? + if (!(M.client)) + continue + if(M.stat == DEAD && M.client && (M.client.prefs.toggles & CHAT_GHOSTEARS)) + listening |= M + //Pass whispers on to anything inside the immediate listeners. for(var/mob/L in listening) for(var/mob/C in L.contents) if(istype(C,/mob/living)) listening += C - var/list/eavesdropping = hearers(2, src) + //pass on the message to objects that can hear us. + for (var/obj/O in view(message_range, src)) + spawn (0) + if (O) + O.hear_talk(src, message, verb, speaking) + + var/list/eavesdropping = hearers(eavesdropping_range, src) eavesdropping -= src eavesdropping -= listening - var/list/watching = hearers(5, src) + var/list/watching = hearers(watching_range, src) watching -= src watching -= listening watching -= eavesdropping - var/list/heard_a = list() // understood us - var/list/heard_b = list() // didn't understand us + //now mobs + var/speech_bubble_test = say_test(message) + var/image/speech_bubble = image('icons/mob/talk.dmi',src,"h[speech_bubble_test]") + spawn(30) del(speech_bubble) - for (var/mob/M in listening) - if (M.say_understands(src)) - heard_a += M - else - heard_b += M + for(var/mob/M in listening) + M << speech_bubble + M.hear_say(message, verb, speaking, alt_name, italics, src) - var/rendered = null + if (eavesdropping.len) + var/new_message = stars(message) //hopefully passing the message twice through stars() won't hurt... I guess if you already don't understand the language, when they speak it too quietly to hear normally you would be able to catch even less. + for(var/mob/M in eavesdropping) + M << speech_bubble + M.hear_say(new_message, verb, speaking, alt_name, italics, src) - for (var/mob/M in watching) - if (M.say_understands(src)) - rendered = "[src.name] whispers something." - else - rendered = "[src.voice_name] whispers something." - M.show_message(rendered, 2) - - if (length(heard_a)) - var/message_a = message - - if (italics) - message_a = "[message_a]" - //This appears copied from carbon/living say.dm so the istype check for mob is probably not needed. Appending for src is also not needed as the game will check that automatically. - rendered = "[GetVoice()][alt_name] whispers, \"[message_a]\"" - - for (var/mob/M in heard_a) - M.show_message(rendered, 2) - - if (length(heard_b)) - var/message_b - - message_b = stars(message) - - if (italics) - message_b = "[message_b]" - - rendered = "[src.voice_name] whispers, \"[message_b]\"" - - for (var/mob/M in heard_b) - M.show_message(rendered, 2) - - for (var/mob/M in eavesdropping) - if (M.say_understands(src)) - var/message_c - message_c = stars(message) - rendered = "[GetVoice()][alt_name] whispers, \"[message_c]\"" - M.show_message(rendered, 2) - else - rendered = "[src.voice_name] whispers something." - M.show_message(rendered, 2) - - if (italics) - message = "[message]" - rendered = "[GetVoice()][alt_name] whispers, \"[message]\"" - - for (var/mob/M in dead_mob_list) - if (!(M.client)) - continue - if (M.stat > 1 && !(M in heard_a) && (M.client.prefs.toggles & CHAT_GHOSTEARS)) + if (watching.len) + var/rendered = "[src.name] [not_heard]." + for (var/mob/M in watching) M.show_message(rendered, 2) diff --git a/code/modules/mob/living/carbon/metroid/say.dm b/code/modules/mob/living/carbon/metroid/say.dm index 89708595da4..f4de10ceb74 100644 --- a/code/modules/mob/living/carbon/metroid/say.dm +++ b/code/modules/mob/living/carbon/metroid/say.dm @@ -21,3 +21,16 @@ return 1 return ..() +/mob/living/carbon/slime/hear_say(var/message, var/verb = "says", var/datum/language/language = null, var/alt_name = "", var/italics = 0, var/mob/speaker = null, var/sound/speech_sound, var/sound_vol) + if (speaker in Friends) + speech_buffer = list() + speech_buffer.Add(speaker) + speech_buffer.Add(lowertext(html_decode(message))) + ..() + +/mob/living/carbon/slime/hear_radio(var/message, var/verb="says", var/datum/language/language=null, var/part_a, var/part_b, var/mob/speaker = null, var/hard_to_hear = 0, var/vname ="") + if (speaker in Friends) + speech_buffer = list() + speech_buffer.Add(speaker) + speech_buffer.Add(lowertext(html_decode(message))) + ..() diff --git a/code/modules/mob/living/carbon/species.dm b/code/modules/mob/living/carbon/species.dm index 6512ee05247..02587d04994 100644 --- a/code/modules/mob/living/carbon/species.dm +++ b/code/modules/mob/living/carbon/species.dm @@ -8,10 +8,10 @@ var/icobase = 'icons/mob/human_races/r_human.dmi' // Normal icon set. var/deform = 'icons/mob/human_races/r_def_human.dmi' // Mutated icon set. var/eyes = "eyes_s" // Icon for eyes. + var/blurb = "A completely nondescript species." // A brief lore summary for use in the chargen screen. var/primitive // Lesser form, if any (ie. monkey for humans) var/tail // Name of tail image in species effects icon file. - var/language // Default racial language, if any. var/unarmed //For empty hand harm-intent attack var/unarmed_type = /datum/unarmed_attack var/mutantrace // Safeguard due to old code. @@ -41,11 +41,8 @@ var/brute_mod = null // Physical damage reduction/malus. var/burn_mod = null // Burn damage reduction/malus. - // For grays var/max_hurt_damage = 9 // Max melee damage dealt + 5 if hulk - var/list/default_mutations = list() - var/list/default_blocks = list() // Don't touch. - var/list/default_block_names = list() // Use this instead, using the names from setupgame.dm + var/list/default_genes = list() var/flags = 0 // Various specific features. var/bloodflags=0 @@ -60,12 +57,21 @@ //Used in icon caching. var/race_key = 0 var/icon/icon_template - + + // Language/culture vars. + var/default_language = "Galactic Common" // Default language is used when 'say' is used without modifiers. + var/language = "Galactic Common" // Default racial language, if any. + var/secondary_langs = list() // The names of secondary languages that are available to this species. + var/list/speech_sounds // A list of sounds to potentially play when speaking. + var/list/speech_chance // The likelihood of a speech sound playing. /datum/species/New() unarmed = new unarmed_type() - +/datum/species/proc/get_random_name(var/gender) + var/datum/language/species_language = all_languages[language] + return species_language.get_random_name(gender) + /datum/species/proc/create_organs(var/mob/living/carbon/human/H) //Handles creation of mob organs. //This is a basic humanoid limb setup. H.organs = list() @@ -81,7 +87,7 @@ H.organs_by_name["l_foot"] = new/datum/organ/external/l_foot(H.organs_by_name["l_leg"]) H.organs_by_name["r_foot"] = new/datum/organ/external/r_foot(H.organs_by_name["r_leg"]) - if (name!="Slime People") + if (name != "Slime People") new/datum/organ/internal/heart(H) new/datum/organ/internal/lungs(H) new/datum/organ/internal/liver(H) @@ -247,6 +253,10 @@ return 1 /datum/species/proc/handle_post_spawn(var/mob/living/carbon/C) //Handles anything not already covered by basic species assignment. + handle_dna(C) + return + +/datum/species/proc/handle_dna(var/mob/living/carbon/C, var/remove) //Handles DNA mutations, as that doesn't work at init. return // Used for species-specific names (Vox, etc) @@ -262,6 +272,10 @@ return message /datum/species/proc/equip(var/mob/living/carbon/human/H) + return + +/datum/species/proc/can_understand(var/mob/other) + return /datum/species/human name = "Human" @@ -272,17 +286,29 @@ flags = HAS_LIPS | HAS_UNDERWEAR | CAN_BE_FAT bodyflags = HAS_SKIN_TONE unarmed_type = /datum/unarmed_attack/punch + blurb = "Humanity originated in the Sol system, and over the last five centuries has spread \ + colonies across a wide swathe of space. They hold a wide range of forms and creeds.

\ + While the central Sol government maintains control of its far-flung people, powerful corporate \ + interests, rampant cyber and bio-augmentation and secretive factions make life on most human \ + worlds tumultous at best." /datum/species/unathi name = "Unathi" icobase = 'icons/mob/human_races/r_lizard.dmi' deform = 'icons/mob/human_races/r_def_lizard.dmi' path = /mob/living/carbon/human/unathi + default_language = "Galactic Common" language = "Sinta'unathi" tail = "sogtail" unarmed_type = /datum/unarmed_attack/claws primitive = /mob/living/carbon/monkey/unathi darksight = 3 + + blurb = "A heavily reptillian species, Unathi (or 'Sinta as they call themselves) hail from the \ + Uuosa-Eso system, which roughly translates to 'burning mother'.

Coming from a harsh, radioactive \ + desert planet, they mostly hold ideals of honesty, virtue, martial combat and bravery above all \ + else, frequently even their own lives. They prefer warmer temperatures than most species and \ + their native tongue is a heavy hissing laungage called Sinta'Unathi." flags = HAS_LIPS | HAS_UNDERWEAR bodyflags = FEET_CLAWS | HAS_TAIL | HAS_SKIN_COLOR @@ -305,10 +331,17 @@ icobase = 'icons/mob/human_races/r_tajaran.dmi' deform = 'icons/mob/human_races/r_def_tajaran.dmi' path = /mob/living/carbon/human/tajaran + default_language = "Galactic Common" language = "Siik'tajr" tail = "tajtail" unarmed_type = /datum/unarmed_attack/claws darksight = 8 + + blurb = "The Tajaran race is a species of feline-like bipeds hailing from the planet of Ahdomai in the \ + S'randarr system. They have been brought up into the space age by the Humans and Skrell, and have been \ + influenced heavily by their long history of Slavemaster rule. They have a structured, clan-influenced way \ + of family and politics. They prefer colder environments, and speak a variety of languages, mostly Siik'Maas, \ + using unique inflections their mouths form." cold_level_1 = 200 cold_level_2 = 140 @@ -331,9 +364,16 @@ icobase = 'icons/mob/human_races/r_skrell.dmi' deform = 'icons/mob/human_races/r_def_skrell.dmi' path = /mob/living/carbon/human/skrell + default_language = "Galactic Common" language = "Skrellian" primitive = /mob/living/carbon/monkey/skrell unarmed_type = /datum/unarmed_attack/punch + + blurb = "An amphibious species, Skrell come from the star system known as Qerr'Vallis, which translates to 'Star of \ + the royals' or 'Light of the Crown'.

Skrell are a highly advanced and logical race who live under the rule \ + of the Qerr'Katish, a caste within their society which keeps the empire of the Skrell running smoothly. Skrell are \ + herbivores on the whole and tend to be co-operative with the other species of the galaxy, although they rarely reveal \ + the secrets of their empire to their allies." flags = HAS_LIPS | HAS_UNDERWEAR bloodflags = BLOOD_GREEN @@ -348,8 +388,20 @@ icobase = 'icons/mob/human_races/r_vox.dmi' deform = 'icons/mob/human_races/r_def_vox.dmi' path = /mob/living/carbon/human/vox - language = "Vox-pidgin" + + default_language = "Galactic Common" + language = "Vox-pidgin" + speech_sounds = list('sound/voice/shriek1.ogg') + speech_chance = 20 + unarmed_type = /datum/unarmed_attack/claws //I dont think it will hurt to give vox claws too. + + blurb = "The Vox are the broken remnants of a once-proud race, now reduced to little more than \ + scavenging vermin who prey on isolated stations, ships or planets to keep their own ancient arkships \ + alive. They are four to five feet tall, reptillian, beaked, tailed and quilled; human crews often \ + refer to them as 'shitbirds' for their violent and offensive nature, as well as their horrible \ + smell.

Most humans will never meet a Vox raider, instead learning of this insular species through \ + dealing with their traders and merchants; those that do rarely enjoy the experience." warning_low_pressure = 50 hazard_low_pressure = 0 @@ -393,7 +445,6 @@ name = "Vox Armalis" icobase = 'icons/mob/human_races/r_armalis.dmi' deform = 'icons/mob/human_races/r_armalis.dmi' - language = "Vox-pidgin" path = /mob/living/carbon/human/voxarmalis unarmed_type = /datum/unarmed_attack/claws/armalis @@ -454,20 +505,19 @@ icobase = 'icons/mob/human_races/r_kidan.dmi' deform = 'icons/mob/human_races/r_def_kidan.dmi' path = /mob/living/carbon/human/kidan + default_language = "Galactic Common" language = "Chittin" unarmed_type = /datum/unarmed_attack/claws - brute_mod = 0.8 flags = IS_WHITELISTED bloodflags = BLOOD_GREEN bodyflags = FEET_CLAWS - - /datum/species/slime name = "Slime People" + default_language = "Galactic Common" language = "Bubblish" path = /mob/living/carbon/human/slime primitive = /mob/living/carbon/slime @@ -478,37 +528,48 @@ /datum/species/slime/handle_post_spawn(var/mob/living/carbon/human/H) H.dna = new /datum/dna(null) - H.dna.species=H.species.name + H.dna.real_name = H.real_name + H.dna.species = H.species.name H.dna.mutantrace = "slime" - H.update_mutantrace() - return ..() + ..() -/datum/species/grey // /vg/ +/datum/species/grey name = "Grey" icobase = 'icons/mob/human_races/r_grey.dmi' deform = 'icons/mob/human_races/r_def_grey.dmi' - language = "Grey" + default_language = "Galactic Common" + //language = "Grey" // Perhaps if they ever get a hivemind unarmed_type = /datum/unarmed_attack/punch darksight = 5 // BOOSTED from 2 eyes = "grey_eyes_s" brute_mod = 1.25 //greys are fragile + + default_genes = list(M_REMOTE_TALK) primitive = /mob/living/carbon/monkey // TODO flags = IS_WHITELISTED | HAS_LIPS | HAS_UNDERWEAR | CAN_BE_FAT - - // Both must be set or it's only a 45% chance of manifesting. - default_mutations=list(M_REMOTE_TALK) - default_block_names=list("REMOTETALK") - + +/datum/species/grey/handle_dna(var/mob/living/carbon/C, var/remove) + if(!remove) + C.dna.SetSEState(REMOTETALKBLOCK,1,1) + C.mutations |= M_REMOTE_TALK + genemutcheck(C,REMOTETALKBLOCK,null,MUTCHK_FORCED) + else + C.dna.SetSEState(REMOTETALKBLOCK,0,1) + C.mutations -= M_REMOTE_TALK + genemutcheck(C,REMOTETALKBLOCK,null,MUTCHK_FORCED) + C.update_mutations() + ..() /datum/species/diona name = "Diona" icobase = 'icons/mob/human_races/r_diona.dmi' deform = 'icons/mob/human_races/r_def_plant.dmi' path = /mob/living/carbon/human/diona + default_language = "Galactic Common" language = "Rootspeak" unarmed_type = /datum/unarmed_attack/diona primitive = /mob/living/carbon/monkey/diona @@ -523,6 +584,14 @@ heat_level_1 = 300 heat_level_2 = 350 heat_level_3 = 700 + + blurb = "Commonly referred to (erroneously) as 'plant people', the Dionaea are a strange space-dwelling collective \ + species hailing from Epsilon Ursae Minoris. Each 'diona' is a cluster of numerous cat-sized organisms called nymphs; \ + there is no effective upper limit to the number that can fuse in gestalt, and reports exist of the Epsilon Ursae \ + Minoris primary being ringed with a cloud of singing space-station-sized entities.

The Dionaea coexist peacefully with \ + all known species, especially the Skrell. Their communal mind makes them slow to react, and they have difficulty understanding \ + even the simplest concepts of other minds. Their alien physiology allows them survive happily off a diet of nothing but light, \ + water and other radiation." flags = NO_BREATHE | REQUIRE_LIGHT | IS_PLANT | RAD_ABSORB | NO_BLOOD | IS_SLOW | NO_PAIN @@ -532,6 +601,12 @@ flesh_color = "#907E4A" reagent_tag = IS_DIONA + +/datum/species/diona/can_understand(var/mob/other) + var/mob/living/carbon/monkey/diona/D = other + if(istype(D)) + return 1 + return 0 /datum/species/diona/handle_post_spawn(var/mob/living/carbon/human/H) H.gender = NEUTER @@ -561,6 +636,7 @@ icobase = 'icons/mob/human_races/r_machine.dmi' deform = 'icons/mob/human_races/r_machine.dmi' path = /mob/living/carbon/human/machine + default_language = "Galactic Common" language = "Trinary" unarmed_type = /datum/unarmed_attack/punch diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index bad5c10d9e0..51988feaf22 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -1,25 +1,22 @@ var/list/department_radio_keys = list( - ":r" = "right ear", "#r" = "right ear", ".r" = "right ear", "!r" = "fake right ear", - ":l" = "left ear", "#l" = "left ear", ".l" = "left ear", "!l" = "fake left ear", + ":r" = "right ear", "#r" = "right ear", ".r" = "right ear", + ":l" = "left ear", "#l" = "left ear", ".l" = "left ear", ":i" = "intercom", "#i" = "intercom", ".i" = "intercom", ":h" = "department", "#h" = "department", ".h" = "department", + ":+" = "special", "#+" = "special", ".+" = "special", //activate radio-specific special functions ":c" = "Command", "#c" = "Command", ".c" = "Command", ":n" = "Science", "#n" = "Science", ".n" = "Science", ":m" = "Medical", "#m" = "Medical", ".m" = "Medical", ":e" = "Engineering", "#e" = "Engineering", ".e" = "Engineering", ":s" = "Security", "#s" = "Security", ".s" = "Security", ":w" = "whisper", "#w" = "whisper", ".w" = "whisper", - ":b" = "binary", "#b" = "binary", ".b" = "binary", - ":d" = "drone", "#d" = "drone", ".d" = "drone", - ":a" = "alientalk", "#a" = "alientalk", ".a" = "alientalk", ":t" = "Syndicate", "#t" = "Syndicate", ".t" = "Syndicate", ":u" = "Supply", "#u" = "Supply", ".u" = "Supply", ":z" = "Service", "#z" = "Service", ".z" = "Service", - ":g" = "changeling", "#g" = "changeling", ".g" = "changeling", + ":p" = "AI Private", "#p" = "AI Private", ".p" = "AI Private", - - ":R" = "right ear", "#R" = "right ear", ".R" = "right ear", "!R" = "fake right ear", - ":L" = "left ear", "#L" = "left ear", ".L" = "left ear", "!L" = "fake left ear", + ":R" = "right ear", "#R" = "right ear", ".R" = "right ear", + ":L" = "left ear", "#L" = "left ear", ".L" = "left ear", ":I" = "intercom", "#I" = "intercom", ".I" = "intercom", ":H" = "department", "#H" = "department", ".H" = "department", ":C" = "Command", "#C" = "Command", ".C" = "Command", @@ -28,40 +25,35 @@ var/list/department_radio_keys = list( ":E" = "Engineering", "#E" = "Engineering", ".E" = "Engineering", ":S" = "Security", "#S" = "Security", ".S" = "Security", ":W" = "whisper", "#W" = "whisper", ".W" = "whisper", - ":D" = "drone", "#D" = "drone", ".D" = "drone", - ":B" = "binary", "#B" = "binary", ".B" = "binary", - ":A" = "alientalk", "#A" = "alientalk", ".A" = "alientalk", ":T" = "Syndicate", "#T" = "Syndicate", ".T" = "Syndicate", ":U" = "Supply", "#U" = "Supply", ".U" = "Supply", ":Z" = "Service", "#Z" = "Service", ".Z" = "Service", - ":G" = "changeling", "#G" = "changeling", ".G" = "changeling" - - /* //kinda localization -- rastaf0 - //same keys as above, but on russian keyboard layout. This file uses cp1251 as encoding. - ":ê" = "right hand", "#ê" = "right hand", ".ê" = "right hand", - ":ä" = "left hand", "#ä" = "left hand", ".ä" = "left hand", - ":ø" = "intercom", "#ø" = "intercom", ".ø" = "intercom", - ":ð" = "department", "#ð" = "department", ".ð" = "department", - ":ñ" = "Command", "#ñ" = "Command", ".ñ" = "Command", - ":ò" = "Science", "#ò" = "Science", ".ò" = "Science", - ":ü" = "Medical", "#ü" = "Medical", ".ü" = "Medical", - ":ó" = "Engineering", "#ó" = "Engineering", ".ó" = "Engineering", - ":û" = "Security", "#û" = "Security", ".û" = "Security", - ":ö" = "whisper", "#ö" = "whisper", ".ö" = "whisper", - ":è" = "binary", "#è" = "binary", ".è" = "binary", - ":ô" = "alientalk", "#ô" = "alientalk", ".ô" = "alientalk", - ":å" = "Syndicate", "#å" = "Syndicate", ".å" = "Syndicate", - ":é" = "Supply", "#é" = "Supply", ".é" = "Supply", - ":ï" = "changeling", "#ï" = "changeling", ".ï" = "changeling" */ + ":P" = "AI Private", "#P" = "AI Private", ".P" = "AI Private" ) + +var/list/channel_to_radio_key = new +proc/get_radio_key_from_channel(var/channel) + var/key = channel_to_radio_key[channel] + if(!key) + for(var/radio_key in department_radio_keys) + if(department_radio_keys[radio_key] == channel) + key = radio_key + break + if(!key) + key = "" + channel_to_radio_key[channel] = key + + return key + /mob/living/proc/binarycheck() + if (istype(src, /mob/living/silicon/pai)) return - if (issilicon(src)) - return 1 + if (!ishuman(src)) return + var/mob/living/carbon/human/H = src if (H.l_ear || H.r_ear) var/obj/item/device/radio/headset/dongle @@ -72,446 +64,78 @@ var/list/department_radio_keys = list( if(!istype(dongle)) return if(dongle.translate_binary) return 1 -/mob/living/proc/hivecheck() - if (isalien(src)) return 1 - if (!ishuman(src)) return - var/mob/living/carbon/human/H = src - if (H.l_ear || H.r_ear) - var/obj/item/device/radio/headset/dongle - if(istype(H.l_ear,/obj/item/device/radio/headset)) - dongle = H.l_ear - else - dongle = H.r_ear - if(!istype(dongle)) return - if(dongle.translate_hive) return 1 - -/mob/living/say(var/message) - - /* - Formatting and sanitizing. - */ - - message = trim(copytext(sanitize(message), 1, MAX_MESSAGE_LEN)) - - - /* - Sanity checking and speech failure. - */ - - if (!message) - return - - if(silent) - return - - if (stat == 2) // Dead. - return say_dead(message) - else if (stat) // Unconcious. - return - - if (src.client) - if(client.prefs.muted & MUTE_IC) - src << "\red You cannot speak in IC (muted)." - return - if (src.client.handle_spam_prevention(message,MUTE_IC)) - return - // undo last word status. - - if(ishuman(src)) - var/mob/living/carbon/human/H=src - if(H.said_last_words) - H.said_last_words=0 - - // Mute disability - if (sdisabilities & MUTE) - return - - // Muzzled. - if (istype(wear_mask, /obj/item/clothing/mask/muzzle)) - return - - // Emotes. - if (copytext(message, 1, 2) == "*" && !stat) - return emote(copytext(message, 2)) - - /* - Identity hiding. - */ - var/alt_name = "" - if (istype(src, /mob/living/carbon/human) && name != GetVoice()) - var/mob/living/carbon/human/H = src - alt_name = " (as [H.get_id_name("Unknown")])" - - /* - Now we get into the real meat of the say processing. Determining the message mode. - */ - - var/italics = 0 - var/message_range = null - var/message_mode = null - - var/datum/language/speaking = null //For use if a specific language is being spoken. - - var/braindam = getBrainLoss() - if (braindam >= 60) - if(prob(braindam/4)) - message = stutter(message) - if(prob(braindam)) - message = uppertext(message) - - // General public key. Special message handling - var/mmode - var/cprefix = "" - if(length(message) >= 2) - cprefix = copytext(message, 1, 3) - if(cprefix in department_radio_keys) - mmode = department_radio_keys[cprefix] - if (copytext(message, 1, 2) == ";" || (prob(braindam/2) && !mmode)) - message_mode = "headset" - message = copytext(message, 2) - // Begin checking for either a message mode or a language to speak. - else if (length(message) >= 2) - var/channel_prefix = copytext(message, 1, 3) - - //Check if the person is speaking a language that they know. - if(languages.len) - for(var/datum/language/L in languages) - if(lowertext(channel_prefix) == ":[L.key]") - speaking = L - break - message_mode = department_radio_keys[channel_prefix] - if (message_mode || speaking || copytext(message,1,2) == ":") - message = trim(copytext(message, 3)) - if (!(istype(src,/mob/living/carbon/human) && !isAI(src) && !isrobot(src) || istype(src,/mob/living/carbon/monkey) || istype(src, /mob/living/simple_animal/parrot) || isrobot(src) && (message_mode=="department") || isAI(src) && (message_mode=="department") || (message_mode in radiochannels))) - message_mode = null //only humans can use headsets - - if(traumatic_shock > 61 && prob(50)) - if(message_mode) - src << "You try to use your radio, but you are in too much pain." - message_mode = null //people in shock will have a high chance of not being able to speak on radio; needed since people don't instantly pass out at 100 damage. - - message = capitalize(message) - - if (!message) - return - - if (stuttering) - message = stutter(message) - - /////////////////////////////////////////////////////////// - // VIDEO KILLED THE RADIO STAR V2.0 - // - // EXPERIMENTAL CODE BY YOUR PALS AT /vg/ - /////////////////////////////////////////////////////////// - - var/list/obj/item/used_radios = new - - // Actually speaking on the radio? - var/is_speaking_radio = 0 - - // Devices selected - var/list/devices=list() - - // Select all always_talk devices - // Carbon lifeforms - //if(istype(src, /mob/living/carbon)) - for(var/obj/item/device/radio/R in contents) - if(R.always_talk) - devices += R - - //src << "Speaking on [message_mode]: [message]" - if(message_mode) - switch (message_mode) - if ("right ear") - if(iscarbon(src)) - var/mob/living/carbon/C=src - if(C:r_ear) devices += C:r_ear - message_mode="headset" - message_range = 1 - italics = 1 - - if ("left ear") - if(iscarbon(src)) - var/mob/living/carbon/C=src - if(C:l_ear) devices += C:l_ear - message_mode="headset" - message_range = 1 - italics = 1 - - // Select a headset and speak into it without actually sending a message - if ("fake") - if(iscarbon(src)) - var/mob/living/carbon/C=src - if(C:l_ear) used_radios += C:l_ear - if(C:r_ear) used_radios += C:r_ear - if(issilicon(src)) - var/mob/living/silicon/Ro=src - if(Ro:radio) devices += Ro:radio - message_range = 1 - italics = 1 - if ("fake left ear") - if(iscarbon(src)) - var/mob/living/carbon/C=src - if(C:l_ear) used_radios += C:l_ear - message_range = 1 - italics = 1 - if ("fake right ear") - if(iscarbon(src)) - var/mob/living/carbon/C=src - if(C:r_ear) used_radios += C:r_ear - message_range = 1 - italics = 1 - - if ("intercom") - for (var/obj/item/device/radio/intercom/I in view(1, null)) - devices += I - message_mode=null - message_range = 1 - italics = 1 - - //I see no reason to restrict such way of whispering - if ("whisper") - whisper(message) - return - - if ("binary") - if(robot_talk_understand || binarycheck()) - //message = trim(copytext(sanitize(message), 1, MAX_MESSAGE_LEN)) //seems redundant - robot_talk(message) - return - - if ("alientalk") - if(alien_talk_understand || hivecheck()) - //message = trim(copytext(sanitize(message), 1, MAX_MESSAGE_LEN)) //seems redundant - alien_talk(message) - return - - if ("pAI") - message_range = 1 - italics = 1 - - if("changeling") - if(mind && mind.changeling) - log_say("[key_name(src)] ([mind.changeling.changelingID]): [message]") - for(var/mob/Changeling in mob_list) - if(istype(Changeling, /mob/living/silicon)) continue //WHY IS THIS NEEDED? - if((Changeling.mind && Changeling.mind.changeling) || istype(Changeling, /mob/dead/observer)) - Changeling << "[mind.changeling.changelingID]: [message]" - else if(istype(Changeling,/mob/dead/observer) && (Changeling.client && Changeling.client.prefs.toggles & CHAT_GHOSTEARS)) - Changeling << "[mind.changeling.changelingID] (: (Follow) [message]" - return - else // headset, department channels. - if(iscarbon(src)) - var/mob/living/carbon/C=src - if(C:l_ear) devices += C:l_ear - if(C:r_ear) devices += C:r_ear - if(issilicon(src)) - if(isAI(src))//for the AI's radio. This can't be with the borg thing above due to typecasting. - var/mob/living/silicon/ai/A = src - if(A.aiRadio) - A.aiRadio.talk_into(src, message, message_mode) - used_radios += A.aiRadio - else - var/mob/living/silicon/Ro=src - if(!isAI(Ro)) - if(Ro:radio) - devices += Ro:radio - else - warning("[src] has no radio!") - message_range = 1 - italics = 1 - if(devices.len>0) - for(var/obj/item/device/radio/R in devices) - if(istype(R)) - R.talk_into(src, message, message_mode) - used_radios += R - is_speaking_radio = 1 - - ///////////////////////////////////////////////////////////////// - // - ///////////////////////////////////////////////////////////////// - - var/datum/gas_mixture/environment = loc.return_air() - if(environment) - var/pressure = environment.return_pressure() - if(pressure < SOUND_MINIMUM_PRESSURE) - italics = 1 - message_range = 1 - - var/list/listening - - listening = get_mobs_in_view(message_range, src) - var/list/onscreen = viewers() - for(var/mob/M in player_list) - if (!M.client) - continue //skip monkeys and leavers - if (istype(M, /mob/new_player)) - continue - if(M.stat == DEAD && (M.client.prefs.toggles & CHAT_GHOSTEARS) && src.client) // src.client is so that ghosts don't have to listen to mice - listening|=M +/mob/living/say(var/message, var/datum/language/speaking = null, var/verb="says", var/alt_name="", var/italics=0, var/message_range = world.view, var/sound/speech_sound, var/sound_vol) var/turf/T = get_turf(src) - var/list/W = hear(message_range, T) - for (var/obj/O in ((W | contents)-used_radios)) - W |= O + //handle nonverbal and sign languages here + if (speaking) + if (speaking.flags & NONVERBAL) + if (prob(30)) + src.custom_emote(1, "[pick(speaking.signlang_verb)].") - for (var/mob/M in W) - W |= M.contents + if (speaking.flags & SIGNLANG) + return say_signlang(message, pick(speaking.signlang_verb), speaking) - for (var/atom/A in W) - if(istype(A, /mob/living/simple_animal/parrot)) //Parrot speech mimickry - if(A == src) - continue //Dont imitate ourselves + var/list/listening = list() + var/list/listening_obj = list() - var/mob/living/simple_animal/parrot/P = A - if(P.speech_buffer.len >= 10) - P.speech_buffer.Remove(pick(P.speech_buffer)) - P.speech_buffer.Add(message) + if(T) + //make sure the air can transmit speech - speaker's side + var/datum/gas_mixture/environment = T.return_air() + var/pressure = (environment)? environment.return_pressure() : 0 + if(pressure < SOUND_MINIMUM_PRESSURE) + message_range = 1 - if (isslime(A)) - var/mob/living/carbon/slime/S = A - if (src in S.Friends) - S.speech_buffer = list() - S.speech_buffer.Add(src) - S.speech_buffer.Add(lowertext(html_decode(message))) + if (pressure < ONE_ATMOSPHERE*0.4) //sound distortion pressure, to help clue people in that the air is thin, even if it isn't a vacuum yet + italics = 1 + sound_vol *= 0.5 //muffle the sound a bit, so it's like we're actually talking through contact - if(istype(A, /obj/)) //radio in pocket could work, radio in backpack wouldn't --rastaf0 - var/obj/O = A - spawn (0) - if(O && !istype(O.loc, /obj/item/weapon/storage)) - O.hear_talk(src, message) + var/list/hear = hear(message_range, T) + var/list/hearturfs = list() + for(var/I in hear) + if(istype(I, /mob/)) + var/mob/M = I + listening += M + hearturfs += M.locs[1] + for(var/obj/O in M.contents) + listening_obj |= O + else if(istype(I, /obj/)) + var/obj/O = I + hearturfs += O.locs[1] + listening_obj |= O - var/list/heard_a = list() // understood us - var/list/heard_b = list() // didn't understand us - - for (var/M in listening) - if(hascall(M,"say_understands")) - if (M:say_understands(src,speaking)) - heard_a += M - else - heard_b += M - else - heard_a += M + for(var/mob/M in player_list) + if(M.stat == DEAD && M.client && (M.client.prefs.toggles & CHAT_GHOSTEARS)) + listening |= M + continue + if(M.loc && M.locs[1] in hearturfs) + listening |= M var/speech_bubble_test = say_test(message) var/image/speech_bubble = image('icons/mob/talk.dmi',src,"h[speech_bubble_test]") spawn(30) del(speech_bubble) - for(var/mob/M in hearers(5, src)) - if(M != src && is_speaking_radio) - M:show_message("[src] talks into [used_radios.len ? used_radios[1] : "radio"]") + for(var/mob/M in listening) + M << speech_bubble + M.hear_say(message, verb, speaking, alt_name, italics, src, speech_sound, sound_vol) -/* if(message_mode == null) - var/accent = "en-us" - var/voice = "m7" - var/speed = 175 - var/pitch = 0 - var/echo = 10 - if(istype(src, /mob/living/silicon/ai)) - echo = 90 - if(istype(src, /mob/living/silicon/robot)) - echo = 60 - if(src.client && src.client.prefs) - accent = src.client.prefs.accent - voice = src.client.prefs.voice - speed = src.client.prefs.talkspeed - pitch = src.client.prefs.pitch - src:texttospeech(message, speed, pitch, accent, "+[voice]", echo)*/ - - var/rendered = null - - if (length(heard_a)) - var/message_a = say_quote(message,speaking) - - if (italics) - message_a = "[message_a]" - - var/message_ghost = "[message_a]" // bold so ghosts know the person is in view. - rendered = "[GetVoice()][alt_name] [message_a]" - var/rendered2 = null - - for (var/mob/M in heard_a) - //BEGIN TELEPORT CHANGES -/* if(message_mode == null && fexists("sound/playervoices/[src.ckey].ogg")) - if(M.client) - if(M.client.prefs) - if(M.client.prefs.sound & SOUND_VOICES) - M.playsound_local(get_turf(src), "sound/playervoices/[src.ckey].ogg", 70, 0, 5, 1)*/ - if(!istype(M, /mob/new_player)) - if(M && M.stat == DEAD) - if (M.client && M.client.prefs && (M.client.prefs.toggles & CHAT_GHOSTEARS) && M in onscreen) - rendered2 = "[GetVoice()] [alt_name] (Follow) [message_ghost]" - else - rendered2 = "[GetVoice()] [alt_name] (Follow) [message_a]" - M:show_message(rendered2, 2) - continue - //END CHANGES - - if(hascall(M,"show_message")) - var/deaf_message = "" - var/deaf_type = 1 - if(M != src) - deaf_message = "[name][alt_name] talks but you cannot hear them." - else - deaf_message = "You cannot hear yourself!" - deaf_type = 2 // Since you should be able to hear yourself without looking - M:show_message(rendered, 2, deaf_message, deaf_type) - M << speech_bubble - - if (length(heard_b)) - - var/message_b - message_b = stars(message) - message_b = say_quote(message_b,speaking) - - if (italics) - message_b = "[message_b]" - - rendered = "[name][alt_name] [message_b]" //Voice_name isn't too useful. You'd be able to tell who was talking presumably. - var/rendered2 = null - - for (var/M in heard_b) - var/mob/MM - if(istype(M, /mob)) - MM = M - if(!istype(MM, /mob/new_player) && MM) - if(MM && MM.stat == DEAD) - rendered2 = "[voice_name] (Follow) [message_b]" - MM:show_message(rendered2, 2) - continue - if(hascall(M,"show_message")) - M:show_message(rendered, 2) - M << speech_bubble - - /* - if(M.client) - - if(!M.client.bubbles || M == src) - var/image/I = image('icons/effects/speechbubble.dmi', B, "override") - I.override = 1 - M << I - */ /* - - flick("[presay]say", B) - - if(istype(loc, /turf)) - B.loc = loc - else - B.loc = loc.loc - - spawn() - sleep(11) - del(B) - */ + for(var/obj/O in listening_obj) + spawn(0) + if(O) //It's possible that it could be deleted in the meantime. + O.hear_talk(src, message, verb, speaking) log_say("[name]/[key] : [message]") + return 1 + +/mob/living/proc/say_signlang(var/message, var/verb="gestures", var/datum/language/language) + for (var/mob/O in viewers(src, null)) + O.hear_signlang(message, verb, language, src) + return 1 /obj/effect/speech_bubble var/mob/parent /mob/living/proc/GetVoice() return name - - diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index 117a2d127d5..a7fb2ada618 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -112,6 +112,20 @@ var/list/ai_list = list() /mob/living/silicon/ai/proc/ai_statuschange, /mob/living/silicon/ai/proc/ai_hologram_change, \ /mob/living/silicon/ai/proc/toggle_camera_light, /mob/living/silicon/ai/proc/botcall, /mob/living/silicon/ai/proc/control_integrated_radio, /mob/living/silicon/ai/proc/control_hud, /mob/living/silicon/ai/proc/change_arrival_message, /mob/living/silicon/ai/proc/ai_store_location, /mob/living/silicon/ai/proc/ai_goto_location, /mob/living/silicon/ai/proc/ai_remove_location, /mob/living/silicon/ai/proc/nano_crew_monitor, /mob/living/silicon/ai/proc/ai_cancel_call) + //Languages + add_language("Robot Talk", 1) + add_language("Sol Common", 1) + add_language("Tradeband", 1) + add_language("Sinta'unathi", 0) + add_language("Siik'tajr", 0) + add_language("Skrellian", 0) + add_language("Vox-pidgin", 0) + add_language("Rootspeak", 0) + add_language("Trinary", 1) + add_language("Chittin", 0) + add_language("Bubblish", 0) + add_language("Gutter", 0) + if(!safety)//Only used by AIize() to successfully spawn an AI. if (!B)//If there is no player/brain inside. empty_playable_ai_cores += new/obj/structure/AIcore/deactivated(loc)//New empty terminal. @@ -127,6 +141,7 @@ var/list/ai_list = list() /mob/living/silicon/ai/proc/ai_statuschange, /mob/living/silicon/ai/proc/ai_hologram_change, \ /mob/living/silicon/ai/proc/toggle_camera_light,/mob/living/silicon/ai/verb/pick_icon,/mob/living/silicon/ai/proc/control_hud, /mob/living/silicon/ai/proc/change_arrival_message, /mob/living/silicon/ai/proc/ai_cancel_call) laws = new /datum/ai_laws/alienmov + add_language("xenocommon", 1) else B.brainmob.mind.transfer_to(src) diff --git a/code/modules/mob/living/silicon/ai/freelook/eye.dm b/code/modules/mob/living/silicon/ai/freelook/eye.dm index ec02433c46a..833d08e7cb4 100644 --- a/code/modules/mob/living/silicon/ai/freelook/eye.dm +++ b/code/modules/mob/living/silicon/ai/freelook/eye.dm @@ -5,7 +5,9 @@ /mob/aiEye name = "Inactive AI Eye" - icon = 'icons/obj/status_display.dmi' // For AI friend secret shh :o + icon = 'icons/mob/AI.dmi' + icon_state = "eye" + alpha = 127 var/list/visibleCameraChunks = list() var/mob/living/silicon/ai/ai = null density = 0 diff --git a/code/modules/mob/living/silicon/ai/say.dm b/code/modules/mob/living/silicon/ai/say.dm index b596fd53541..5a4398485ed 100644 --- a/code/modules/mob/living/silicon/ai/say.dm +++ b/code/modules/mob/living/silicon/ai/say.dm @@ -1,32 +1,8 @@ /mob/living/silicon/ai/say(var/message) if(parent && istype(parent) && parent.stat != 2) - parent.say(message) //If there is a defined "parent" AI, it is actually an AI, and it is alive, anything the AI tries to say is said by the parent instead. - return - - ..(message) - -/mob/living/silicon/ai/say_understands(var/other) - if (istype(other, /mob/living/carbon/human)) - return 1 - if (istype(other, /mob/living/silicon/robot)) - return 1 - if (istype(other, /mob/living/silicon/decoy)) - return 1 - if (istype(other, /mob/living/carbon/brain)) - return 1 - if (istype(other, /mob/living/silicon/pai)) - return 1 - return ..() - -/mob/living/silicon/ai/say_quote(var/text) - var/ending = copytext(text, length(text)) - - if (ending == "?") - return "queries, \"[text]\""; - else if (ending == "!") - return "declares, \"[text]\""; - - return "states, \"[text]\""; + return parent.say(message) + //If there is a defined "parent" AI, it is actually an AI, and it is alive, anything the AI tries to say is said by the parent instead. + return ..(message) /mob/living/silicon/ai/proc/IsVocal() diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm index 48a34265d43..d62c5f544d4 100644 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -71,6 +71,7 @@ var/obj/item/radio/integrated/signal/sradio // AI's signaller + var/translator_on = 0 // keeps track of the translator module /mob/living/silicon/pai/New(var/obj/item/device/paicard) canmove = 0 @@ -81,6 +82,13 @@ if(!card.radio) card.radio = new /obj/item/device/radio(src.card) radio = card.radio + + //Default languages without universal translator software + add_language("Sol Common", 1) + add_language("Tradeband", 1) + add_language("Gutter", 1) + add_language("Trinary", 1) + //Verbs for pAI mobile form, chassis and Say flavor text verbs += /mob/living/silicon/pai/proc/choose_chassis verbs += /mob/living/silicon/pai/proc/choose_verbs @@ -334,7 +342,7 @@ //I'm not sure how much of this is necessary, but I would rather avoid issues. if(istype(card.loc,/mob)) var/mob/holder = card.loc - holder.unEquip(card) + holder.drop_from_inventory(card) else if(istype(card.loc,/obj/item/clothing/suit/space/space_ninja)) var/obj/item/clothing/suit/space/space_ninja/holder = card.loc holder.pai = null @@ -503,3 +511,7 @@ spawn(1) close_up() return 2 + +// No binary for pAIs. +/mob/living/silicon/pai/binarycheck() + return 0 \ No newline at end of file diff --git a/code/modules/mob/living/silicon/pai/software.dm b/code/modules/mob/living/silicon/pai/software.dm index 4f7bd1a1c61..ff9b343a7b1 100644 --- a/code/modules/mob/living/silicon/pai/software.dm +++ b/code/modules/mob/living/silicon/pai/software.dm @@ -268,7 +268,7 @@ src.medHUD = !src.medHUD if("translator") if(href_list["toggle"]) - src.universal_speak = !src.universal_speak + src.translator_toggle() if("doorjack") if(href_list["jack"]) if(src.cable && src.cable.machine) @@ -687,4 +687,36 @@ else dat += addtext("
") dat += "
From", index["owner"],": ", index["message"], "
" - return dat \ No newline at end of file + return dat + +/mob/living/silicon/pai/proc/translator_toggle() + + // Sol Common, Tradeband, Gutter and Trinary are added with New() and are therefore the current default, always active languages + + if(translator_on) + translator_on = 0 + + remove_language("Sinta'unathi") + remove_language("Siik'tajr") + remove_language("Skrellian") + remove_language("Vox-pidgin") + remove_language("Rootspeak") + remove_language("Trinary") + remove_language("Chittin") + remove_language("Bubblish") + + src << "\blue Translator Module toggled OFF." + + else + translator_on = 1 + + add_language("Sinta'unathi") + add_language("Siik'tajr") + add_language("Skrellian") + add_language("Vox-pidgin") + add_language("Rootspeak") + add_language("Trinary") + add_language("Chittin") + add_language("Bubblish") + + src << "\blue Translator Module toggled ON." \ No newline at end of file diff --git a/code/modules/mob/living/silicon/robot/component.dm b/code/modules/mob/living/silicon/robot/component.dm index 5817715ff99..e2d6c31e8f6 100644 --- a/code/modules/mob/living/silicon/robot/component.dm +++ b/code/modules/mob/living/silicon/robot/component.dm @@ -121,6 +121,11 @@ /mob/living/silicon/robot/proc/is_component_functioning(module_name) var/datum/robot_component/C = components[module_name] return C && C.installed == 1 && C.toggled && C.is_powered() + +// Returns component by it's string name +/mob/living/silicon/robot/proc/get_component(var/component_name) + var/datum/robot_component/C = components[component_name] + return C /obj/item/broken_device name = "broken component" diff --git a/code/modules/mob/living/silicon/robot/drone/drone.dm b/code/modules/mob/living/silicon/robot/drone/drone.dm index e3a04f2cd0f..e83298a68eb 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone.dm @@ -13,7 +13,8 @@ lawupdate = 0 density = 1 req_access = list(access_engine, access_robotics) - + local_transmit = 1 + // We need to keep track of a few module items so we don't need to do list operations // every time we need them. These get set in New() after the module is chosen. var/obj/item/stack/sheet/metal/cyborg/stack_metal = null @@ -25,11 +26,13 @@ //Used for self-mailing. var/mail_destination = 0 - //Used for pulling. /mob/living/silicon/robot/drone/New() ..() + + remove_language("Robot Talk") + add_language("Drone Talk", 1) if(camera && "Robots" in camera.network) camera.network.Add("Engineering") @@ -88,79 +91,6 @@ /mob/living/silicon/robot/drone/pick_module() return -//Drones can only use binary and say emotes. NOTHING else. -//TBD, fix up boilerplate. ~ Z -/mob/living/silicon/robot/drone/say(var/message) - if (!message) - return - - if (src.client) - if(client.prefs.muted & MUTE_IC) - src << "You cannot send IC messages (muted)." - return - if (src.client.handle_spam_prevention(message,MUTE_IC)) - return - - if (stat == 2) - message = trim(copytext(sanitize(message), 1, MAX_MESSAGE_LEN)) - return say_dead(message) - - //Must be concious to speak - if (stat) - return - - if(copytext(message,1,2) == "*") - return emote(copytext(message,2)) - - if (length(message) >= 2) - var/prefix = copytext(message, 1, 3) - if (department_radio_keys[prefix] == "drone") - message = copytext(message, 3) - message = trim(copytext(sanitize(message), 1, MAX_MESSAGE_LEN)) - - if(istype(src, /mob/living/silicon/robot/drone)) - var/mob/living/silicon/robot/drone/R = src - if(!R.is_component_functioning("comms")) - src << "\red Your drone communications component isn't functional." - return - drone_talk(message) - else - var/list/listeners = hearers(5,src) - listeners |= src - message = trim(copytext(sanitize(message), 1, MAX_MESSAGE_LEN)) - for(var/mob/living/silicon/D in listeners) - if(D.client) - D << "[src] transmits, \"[message]\"" - - for (var/mob/M in player_list) - if (!M.client) - continue - if (istype(M, /mob/new_player)) - continue - else if(M.stat == 2 && (M.client.prefs.toggles & CHAT_GHOSTEARS) && src.client) - M << "[src] (Follow) transmits, \"[message]\"" - else if(M.stat == 2 && src.client && M in listeners) - M << "[src] (Follow) transmits, \"[message]\"" - -/mob/living/proc/drone_talk(var/message) - log_say("[key_name(src)] : [message]") - message = trim(message) - - if (!message) - return - - var/message_a = say_quote(message) - var/rendered = "Drone Talk, [name] [message_a]" - - for (var/mob/living/S in living_mob_list) - if(istype(S, /mob/living/silicon/robot/drone)) - S.show_message(rendered, 2) - - for (var/mob/S in dead_mob_list) - if(!istype(S,/mob/new_player) && !istype(S,/mob/living/carbon/brain)) - var/rendered2 = "Drone Talk, [name] (Follow) [message_a]" - S.show_message(rendered2, 2) - //Drones cannot be upgraded with borg modules so we need to catch some items before they get used in ..(). /mob/living/silicon/robot/drone/attackby(obj/item/weapon/W as obj, mob/user as mob) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index e28f9ac8b7d..ae42fbc4697 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -80,6 +80,8 @@ spark_system = new /datum/effect/effect/system/spark_spread() spark_system.set_up(5, 0, src) spark_system.attach(src) + + add_language("Robot Talk", 1) robot_modules_background = new() robot_modules_background.icon_state = "block" @@ -174,6 +176,13 @@ rbPDA.set_name_and_job(custom_name,braintype) if(hiddenborg) rbPDA.hidden = 1 + +/mob/living/silicon/robot/binarycheck() + if(is_component_functioning("comms")) + var/datum/robot_component/RC = get_component("comms") + use_power(RC.energy_consumption) + return 1 + return 0 //If there's an MMI in the robot, have it ejected when the mob goes away. --NEO //Improved /N @@ -197,7 +206,6 @@ modtype = input("Please, select a module!", "Robot", null, null) in modules designation = modtype var/module_sprites[0] //Used to store the associations between sprite names and sprite index. - var/channels = list() if(module) return @@ -205,14 +213,14 @@ switch(modtype) if("Standard") module = new /obj/item/weapon/robot_module/standard(src) - channels = list("Service" = 1) + module.channels = list("Service" = 1) module_sprites["Basic"] = "robot_old" module_sprites["Android"] = "droid" module_sprites["Default"] = "robot" if("Service") module = new /obj/item/weapon/robot_module/butler(src) - channels = list("Service" = 1) + module.channels = list("Service" = 1) module_sprites["Waitress"] = "Service" module_sprites["Kent"] = "toiletbot" module_sprites["Bro"] = "Brobot" @@ -221,7 +229,7 @@ /* if("Clerical") module = new /obj/item/weapon/robot_module/clerical(src) - channels = list("Service" = 1) + module.channels = list("Service" = 1) module_sprites["Waitress"] = "Service" module_sprites["Kent"] = "toiletbot" module_sprites["Bro"] = "Brobot" @@ -230,7 +238,7 @@ */ if("Miner") module = new /obj/item/weapon/robot_module/miner(src) - channels = list("Supply" = 1) + module.channels = list("Supply" = 1) if(camera && "Robots" in camera.network) camera.network.Add("MINE") module_sprites["Basic"] = "Miner_old" @@ -239,7 +247,7 @@ if("Medical") module = new /obj/item/weapon/robot_module/medical(src) - channels = list("Medical" = 1) + module.channels = list("Medical" = 1) if(camera && "Robots" in camera.network) camera.network.Add("Medical") module_sprites["Basic"] = "Medbot" @@ -249,7 +257,7 @@ if("Security") module = new /obj/item/weapon/robot_module/security(src) - channels = list("Security" = 1) + module.channels = list("Security" = 1) module_sprites["Basic"] = "secborg" module_sprites["Red Knight"] = "Security" module_sprites["Black Knight"] = "securityrobot" @@ -257,7 +265,7 @@ if("Engineering") module = new /obj/item/weapon/robot_module/engineering(src) - channels = list("Engineering" = 1) + module.channels = list("Engineering" = 1) if(camera && "Robots" in camera.network) camera.network.Add("Engineering") module_sprites["Basic"] = "Engineering" @@ -266,14 +274,15 @@ if("Janitor") module = new /obj/item/weapon/robot_module/janitor(src) + module.channels = list("Service" = 1) module_sprites["Basic"] = "JanBot2" module_sprites["Mopbot"] = "janitorrobot" module_sprites["Mop Gear Rex"] = "mopgearrex" if("Combat") module = new /obj/item/weapon/robot_module/combat(src) + module.channels = list("Security" = 1) module_sprites["Combat Android"] = "droidcombat" - channels = list("Security" = 1) if("Hunter") updatename(module) @@ -283,7 +292,9 @@ icon_state = "xenoborg-state-a" modtype = "Xeno-Hu" feedback_inc("xeborg_hunter",1) - + + //languages + module.add_languages(src) //Custom_sprite check and entry if (custom_sprite == 1) @@ -297,7 +308,7 @@ status_flags &= ~CANPUSH choose_icon(6,module_sprites) - radio.config(channels) + radio.config(module.channels) notify_ai(2) /mob/living/silicon/robot/proc/updatename(var/prefix as text) @@ -1467,6 +1478,16 @@ laws = new /datum/ai_laws/syndicate_override() Namepick() + +/mob/living/silicon/robot/syndicate/canUseTopic(atom/movable/M) + if(stat || lockcharge || stunned || weakened) + return + if(z in config.admin_levels) + return 1 + /*if(istype(M, /obj/machinery)) + var/obj/machinery/Machine = M + return Machine.emagged*/ + return 1 /mob/living/silicon/robot/proc/notify_ai(var/notifytype, var/oldname, var/newname) if(!connected_ai) diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index a2c1fcb7347..a6b9d46f19a 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -10,6 +10,7 @@ var/obj/item/emag = null var/obj/item/borg/upgrade/jetpack = null var/list/stacktypes + var/channels = list() emp_act(severity) @@ -55,6 +56,20 @@ for(var/obj/O in temp_list) if(O) modules += O + +/obj/item/weapon/robot_module/proc/add_languages(var/mob/living/silicon/robot/R) + //full set of languages + R.add_language("Sol Common", 1) + R.add_language("Tradeband", 1) + R.add_language("Sinta'unathi", 0) + R.add_language("Siik'tajr", 0) + R.add_language("Skrellian", 0) + R.add_language("Vox-pidgin", 0) + R.add_language("Rootspeak", 0) + R.add_language("Trinary", 1) + R.add_language("Chittin", 0) + R.add_language("Bubblish", 0) + R.add_language("Gutter", 0) /obj/item/weapon/robot_module/standard name = "standard robot module" @@ -248,6 +263,20 @@ if(src.emag) var/obj/item/weapon/reagent_containers/food/drinks/cans/beer/B = src.emag B.reagents.add_reagent("beer2", 2) + +/obj/item/weapon/robot_module/butler/add_languages(var/mob/living/silicon/robot/R) + //full set of languages + R.add_language("Sol Common", 1) + R.add_language("Tradeband", 1) + R.add_language("Sinta'unathi", 1) + R.add_language("Siik'tajr", 1) + R.add_language("Skrellian", 1) + R.add_language("Vox-pidgin", 1) + R.add_language("Rootspeak", 1) + R.add_language("Trinary", 1) + R.add_language("Chittin", 1) + R.add_language("Bubblish", 1) + R.add_language("Gutter", 1) /* /obj/item/weapon/robot_module/clerical //Whyyyyy? @@ -341,6 +370,10 @@ src.emag = new /obj/item/weapon/reagent_containers/spray/alien/acid(src) src.emag.reagents.add_reagent("pacid", 125) src.emag.reagents.add_reagent("sacid", 125) + +/obj/item/weapon/robot_module/butler/add_languages(var/mob/living/silicon/robot/R) + ..() + R.add_language("xenocommon", 1) /obj/item/weapon/robot_module/drone name = "drone module" diff --git a/code/modules/mob/living/silicon/say.dm b/code/modules/mob/living/silicon/say.dm index 35a31a8dbe0..ba5b0ad4f82 100644 --- a/code/modules/mob/living/silicon/say.dm +++ b/code/modules/mob/living/silicon/say.dm @@ -2,79 +2,154 @@ var/ending = copytext(text, length(text)) if (ending == "?") - return "[speak_query], \"[text]\""; + return speak_query else if (ending == "!") - return "[speak_exclamation], \"[text]\""; + return speak_exclamation - return "[speak_statement], \"[text]\""; + return speak_statement + +#define IS_AI 1 +#define IS_ROBOT 2 +#define IS_PAI 3 + +/mob/living/silicon/say_understands(var/other,var/datum/language/speaking = null) + //These only pertain to common. Languages are handled by mob/say_understands() + if (!speaking) + if (istype(other, /mob/living/carbon)) + return 1 + if (istype(other, /mob/living/silicon)) + return 1 + if (istype(other, /mob/living/carbon/brain)) + return 1 + return ..() /mob/living/silicon/say(var/message) if (!message) - return + return 0 if (src.client) if(client.prefs.muted & MUTE_IC) src << "You cannot send IC messages (muted)." - return + return 0 if (src.client.handle_spam_prevention(message,MUTE_IC)) - return + return 0 + + message = trim_strip_html_properly(message) if (stat == 2) - message = trim(copytext(sanitize(message), 1, MAX_MESSAGE_LEN)) return say_dead(message) + if(copytext(message,1,2) == "*") + return emote(copytext(message,2)) + + var/bot_type = 0 //Let's not do a fuck ton of type checks, thanks. + if(istype(src, /mob/living/silicon/ai)) + bot_type = IS_AI + else if(istype(src, /mob/living/silicon/robot)) + bot_type = IS_ROBOT + else if(istype(src, /mob/living/silicon/pai)) + bot_type = IS_PAI + + var/mob/living/silicon/ai/AI = src //and let's not declare vars over and over and over for these guys. + var/mob/living/silicon/robot/R = src + var/mob/living/silicon/pai/P = src + //Must be concious to speak if (stat) - return + return 0 - if (length(message) >= 2) - var/prefix = copytext(message, 1, 3) - if (department_radio_keys[prefix] == "binary") - if(istype(src, /mob/living/silicon/pai)) - return ..(message) - message = copytext(message, 3) - message = trim(copytext(sanitize(message), 1, MAX_MESSAGE_LEN)) + var/verb = say_quote(message) - // TODO: move the component system up to silicon so we don't have to use this ugly hack.. - if(istype(src, /mob/living/silicon/robot)) - var/mob/living/silicon/robot/R = src - if(!R.is_component_functioning("comms")) - src << "\red Your binary communications component isn't functional." - return - robot_talk(message) - - else if (department_radio_keys[prefix] == "alientalk") - if(!alien_talk_understand) return - message = copytext(message, 3) - message = trim(copytext(sanitize(message), 1, MAX_MESSAGE_LEN)) - - alien_talk(message) - else if (department_radio_keys[prefix] == "department") - if(isAI(src)&&client) //For patching directly into AI holopads. - var/mob/living/silicon/ai/U = src - message = copytext(message, 3) - message = trim(copytext(sanitize(message), 1, MAX_MESSAGE_LEN)) - U.holopad_talk(message) - else //Will not allow anyone by an active AI to use this function. - src << "This function is not available to you." - return + //parse radio key and consume it + var/message_mode = parse_message_mode(message, "general") + if (message_mode) + if (message_mode == "general") + message = trim(copytext(message,2)) else - var/mob/living/silicon/ai/AI = src - if (isAI(src) && AI.aiRadio.disabledAi) - src << "\red System Error - Transceiver Disabled" - return - else - return ..(message) - else - var/mob/living/silicon/ai/AI = src - if (isAI(src) && AI.aiRadio.disabledAi) - src << "\red System Error - Transceiver Disabled" - return + message = trim(copytext(message,3)) + + //parse language key and consume it + var/datum/language/speaking = parse_language(message) + if (speaking) + verb = speaking.speech_verb + message = trim(copytext(message,2+length(speaking.key))) + + if(speaking.flags & HIVEMIND) + speaking.broadcast(src,trim(message)) + return 1 + + // Currently used by drones. + if(local_transmit) + var/list/listeners = hearers(5,src) + listeners |= src + + for(var/mob/living/silicon/D in listeners) + if(D.client && istype(D,src.type)) + D << "[src] transmits, \"[message]\"" + + for (var/mob/M in player_list) + if (istype(M, /mob/new_player)) + continue + else if(M.stat == 2 && M.client.prefs.toggles & CHAT_GHOSTEARS) + if(M.client) M << "[src] transmits, \"[message]\"" + return 1 + + if(message_mode && bot_type == IS_ROBOT && !R.is_component_functioning("radio")) + src << "\red Your radio isn't functional at this time." + return 0 + + switch(message_mode) + if("department") + switch(bot_type) + if(IS_AI) + return AI.holopad_talk(message, verb, speaking) + if(IS_ROBOT) + log_say("[key_name(src)] : [message]") + return R.radio.talk_into(src,message,message_mode,verb,speaking) + if(IS_PAI) + log_say("[key_name(src)] : [message]") + return P.radio.talk_into(src,message,message_mode,verb,speaking) + return 0 + + if("general") + switch(bot_type) + if(IS_AI) + if (AI.aiRadio.disabledAi || AI.aiRestorePowerRoutine || AI.stat) + src << "\red System Error - Transceiver Disabled" + return 0 + else + log_say("[key_name(src)] : [message]") + return AI.aiRadio.talk_into(src,message,null,verb,speaking) + if(IS_ROBOT) + log_say("[key_name(src)] : [message]") + return R.radio.talk_into(src,message,null,verb,speaking) + if(IS_PAI) + log_say("[key_name(src)] : [message]") + return P.radio.talk_into(src,message,null,verb,speaking) + return 0 + else - return ..(message) + if(message_mode) + switch(bot_type) + if(IS_AI) + if (AI.aiRadio.disabledAi || AI.aiRestorePowerRoutine || AI.stat) + src << "\red System Error - Transceiver Disabled" + return 0 + else + log_say("[key_name(src)] : [message]") + return AI.aiRadio.talk_into(src,message,message_mode,verb,speaking) + if(IS_ROBOT) + log_say("[key_name(src)] : [message]") + return R.radio.talk_into(src,message,message_mode,verb,speaking) + if(IS_PAI) + log_say("[key_name(src)] : [message]") + return P.radio.talk_into(src,message,message_mode,verb,speaking) + return 0 + + return ..(message,speaking,verb) //For holopads only. Usable by AI. -/mob/living/silicon/ai/proc/holopad_talk(var/message) +/mob/living/silicon/ai/proc/holopad_talk(var/message, verb, datum/language/speaking) log_say("[key_name(src)] : [message]") @@ -84,18 +159,23 @@ return var/obj/machinery/hologram/holopad/T = src.holo - if(istype(T) && T.hologram && T.master == src)//If there is a hologram and its master is the user. - var/message_a = say_quote(message) + if(T && T.hologram && T.master == src)//If there is a hologram and its master is the user. //Human-like, sorta, heard by those who understand humans. - var/rendered_a = "[name] [message_a]" - + var/rendered_a //Speach distorted, heard by those who do not understand AIs. - message = stars(message) - var/message_b = say_quote(message) - var/rendered_b = "[voice_name] [message_b]" + var/message_stars = stars(message) + var/rendered_b + + if(speaking) + rendered_a = "[name] [speaking.format_message(message, verb)]" + rendered_b = "[voice_name] [speaking.format_message(message_stars, verb)]" + src << "Holopad transmitted, [real_name] [speaking.format_message(message, verb)]"//The AI can "hear" its own message. + else + rendered_a = "[name] [verb], \"[message]\"" + rendered_b = "[voice_name] [verb], \"[message_stars]\"" + src << "Holopad transmitted, [real_name] [verb], \"[message]\""//The AI can "hear" its own message. - src << "Holopad transmitted, [real_name] [message_a]"//The AI can "hear" its own message. for(var/mob/M in hearers(T.loc))//The location is the object, default distance. if(M.say_understands(src))//If they understand AI speak. Humans and the like will be able to. M.show_message(rendered_a, 2) @@ -105,79 +185,37 @@ This is another way of saying that we won't bother dealing with them.*/ else src << "No holopad connected." - return + return + return 1 -/mob/living/proc/robot_talk(var/message) +/mob/living/silicon/ai/proc/holopad_emote(var/message) //This is called when the AI uses the 'me' verb while using a holopad. - log_say("[key_name(src)] : [message]") - - var/desig = "Unknown" //ezmode for taters - if(isrobot(src)) - var/mob/living/silicon/S = src - if(S.designation) - desig = trim_left(S.designation) - else - desig = "Default" - else if(isAI(src)) - desig = "AI" + log_emote("[key_name(src)] : [message]") message = trim(message) if (!message) return - var/message_a = say_quote(message) - var/rendered = "Robotic Talk, [name] ([desig]) [message_a]" + var/obj/machinery/hologram/holopad/T = src.holo + if(T && T.hologram && T.master == src) + var/rendered = "[name] [message]" + src << "Holopad action relayed, [real_name] [message]" - for (var/mob/living/S in living_mob_list) - if(S.robot_talk_understand && (S.robot_talk_understand == robot_talk_understand)) // This SHOULD catch everything caught by the one below, but I'm not going to change it. - if(istype(S , /mob/living/silicon/ai)) - var/renderedAI = "Robotic Talk, [name] ([desig]) [message_a]" - S.show_message(renderedAI, 2) - else if(istype(S , /mob/dead/observer) && S.stat == DEAD) - var/rendered2 = "Robotic Talk, [name] ([desig]) (Follow) [message_a]" - S.show_message(rendered2, 2) - else - S.show_message(rendered, 2) - - - else if (S.binarycheck()) - if(istype(S , /mob/living/silicon/ai)) - var/renderedAI = "Robotic Talk, [name] [message_a]" - S.show_message(renderedAI, 2) - else if(istype(S , /mob/dead/observer) && S.stat == DEAD) - var/rendered2 = "Robotic Talk, [name] (Follow) [message_a]" - S.show_message(rendered2, 2) - else - S.show_message(rendered, 2) - - var/list/listening = hearers(1, src) - listening -= src - listening += src - - var/list/heard = list() - for (var/mob/M in listening) - if(!istype(M, /mob/living/silicon) && !M.robot_talk_understand) - heard += M - - if (length(heard)) - var/message_b - - message_b = "beep beep beep" - message_b = say_quote(message_b) - message_b = "[message_b]" - - rendered = "[voice_name] [message_b]" - - for (var/mob/M in heard) + for(var/mob/M in viewers(T.loc)) M.show_message(rendered, 2) + else //This shouldn't occur, but better safe then sorry. + src << "No holopad connected." + return + return 1 - message = say_quote(message) +/mob/living/silicon/ai/emote(var/act, var/type, var/message) + var/obj/machinery/hologram/holopad/T = src.holo + if(T && T.hologram && T.master == src) //Is the AI using a holopad? + src.holopad_emote(message) + else //Emote normally, then. + ..() -// rendered = "Robotic Talk, [name] [message_a]" - rendered = null - - for (var/mob/M in dead_mob_list) - if(!istype(M,/mob/new_player) && !istype(M,/mob/living/carbon/brain)) //No meta-evesdropping - rendered = "Robotic Talk, [name] (Follow) [message_a]" - M.show_message(rendered, 2) \ No newline at end of file +#undef IS_AI +#undef IS_ROBOT +#undef IS_PAI diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index 6f88c99c71e..86da14df0e7 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -8,6 +8,7 @@ var/list/alarms_to_clear = list() immune_to_ssd = 1 var/list/hud_list[10] + var/list/speech_synthesizer_langs = list() //which languages can be vocalized by the speech synthesizer var/list/alarm_types_show = list("Motion" = 0, "Fire" = 0, "Atmosphere" = 0, "Power" = 0, "Camera" = 0) var/list/alarm_types_clear = list("Motion" = 0, "Fire" = 0, "Atmosphere" = 0, "Power" = 0, "Camera" = 0) var/designation = "" @@ -20,6 +21,7 @@ var/sensor_mode = 0 //Determines the current HUD. #define SEC_HUD 1 //Security HUD mode #define MED_HUD 2 //Medical HUD mode + var/local_transmit //If set, can only speak to others of the same type within a short range. /mob/living/silicon/proc/cancelAlarm() return @@ -205,6 +207,37 @@ show_emergency_shuttle_eta() show_system_integrity() show_malf_ai() + +//Silicon mob language procs + +/mob/living/silicon/can_speak(datum/language/speaking) + return universal_speak || (speaking in src.speech_synthesizer_langs) //need speech synthesizer support to vocalize a language + +/mob/living/silicon/add_language(var/language, var/can_speak=1) + if (..(language) && can_speak) + speech_synthesizer_langs.Add(all_languages[language]) + return 1 + +/mob/living/silicon/remove_language(var/rem_language) + ..(rem_language) + + for (var/datum/language/L in speech_synthesizer_langs) + if (L.name == rem_language) + speech_synthesizer_langs -= L + +/mob/living/silicon/check_languages() + set name = "Check Known Languages" + set category = "IC" + set src = usr + + var/dat = "Known Languages

" + + for(var/datum/language/L in languages) + if(!(L.flags & NONGLOBAL)) + dat += "[L.name] (:[L.key])
Speech Synthesizer: [(L in speech_synthesizer_langs)? "YES":"NOT SUPPORTED"]
[L.desc]

" + + src << browse(dat, "window=checklanguage") + return // this function displays the stations manifest in a separate window /mob/living/silicon/proc/show_station_manifest() @@ -257,6 +290,9 @@ set category = "IC" flavor_text = copytext(sanitize(input(usr, "Please enter your new flavour text.", "Flavour text", null) as text), 1) + +/mob/living/silicon/binarycheck() + return 1 /mob/living/silicon/proc/toggle_sensor_mode() var/sensor_type = input("Please select sensor type.", "Sensor Integration", null) in list("Security", "Medical","Disable") diff --git a/code/modules/mob/living/simple_animal/borer.dm b/code/modules/mob/living/simple_animal/borer.dm index 8dae4be093b..50334dbdf27 100644 --- a/code/modules/mob/living/simple_animal/borer.dm +++ b/code/modules/mob/living/simple_animal/borer.dm @@ -100,51 +100,12 @@ /mob/living/simple_animal/borer/New(var/by_gamemode=0) ..() + add_language("Cortical Link") truename = "[pick("Primary","Secondary","Tertiary","Quaternary")] [rand(1000,9999)]" if(!by_gamemode) request_player() - -/mob/living/simple_animal/borer/say(var/message) - - message = trim(copytext(sanitize(message), 1, MAX_MESSAGE_LEN)) - message = capitalize(message) - - if(!message) - return - - if (stat == 2) - return say_dead(message) - - if (stat) - return - - if (src.client) - if(client.prefs.muted & MUTE_IC) - src << "\red You cannot speak in IC (muted)." - return - if (src.client.handle_spam_prevention(message,MUTE_IC)) - return - - if (copytext(message, 1, 2) == "*") - return emote(copytext(message, 2)) - - if (copytext(message, 1, 2) == ";") //Brain borer hivemind. - return borer_speak(message) - - if(!host) - src << "You have no host to speak to." - return //No host, no audible speech. - - src << "You drop words into [host]'s mind: \"[message]\"" - host << "Your own thoughts speak: \"[message]\"" - - for(var/mob/M in mob_list) - if(M.mind && (istype(M, /mob/dead/observer))) - M << "Thought-speech, [truename] -> [host]: [copytext(message, 2)]" - - /mob/living/simple_animal/borer/Stat() ..() statpanel("Status") diff --git a/code/modules/mob/living/simple_animal/parrot.dm b/code/modules/mob/living/simple_animal/parrot.dm index 48fd6943658..a62f0640a54 100644 --- a/code/modules/mob/living/simple_animal/parrot.dm +++ b/code/modules/mob/living/simple_animal/parrot.dm @@ -48,6 +48,7 @@ response_disarm = "gently moves aside the" response_harm = "swats the" stop_automated_movement = 1 + universal_speak = 1 var/parrot_state = PARROT_WANDER //Hunt for a perch when created var/parrot_sleep_max = 25 //The time the parrot sits while perched before looking around. Mosly a way to avoid the parrot's AI in life() being run every single tick. @@ -61,7 +62,7 @@ var/list/available_channels = list() //Headset for Poly to yell at engineers :) - var/obj/item/device/radio/headset/l_ear = null + var/obj/item/device/radio/headset/ears = null //The thing the parrot is currently interested in. This gets used for items the parrot wants to pick up, mobs it wants to steal from, //mobs it wants to attack or mobs that have attacked it @@ -84,13 +85,13 @@ /mob/living/simple_animal/parrot/New() ..() - if(!l_ear) + if(!ears) var/headset = pick(/obj/item/device/radio/headset/headset_sec, \ /obj/item/device/radio/headset/headset_eng, \ /obj/item/device/radio/headset/headset_med, \ /obj/item/device/radio/headset/headset_sci, \ /obj/item/device/radio/headset/headset_cargo) - l_ear = new headset(src) + ears = new headset(src) parrot_sleep_dur = parrot_sleep_max //In case someone decides to change the max without changing the duration var @@ -100,7 +101,7 @@ /mob/living/simple_animal/parrot/proc/perch_player) -/mob/living/simple_animal/parrot/Die() +/mob/living/simple_animal/parrot/death() if(held_item) held_item.loc = src.loc held_item = null @@ -119,10 +120,10 @@ if(user.stat) return var/dat = "

Inventory of [name]

" - if(l_ear) - dat += "
Headset: [l_ear] (Remove)" + if(ears) + dat += "
Headset: [ears] (Remove)" else - dat += "
Headset: Nothing" + dat += "
Headset: Nothing" user << browse(dat, text("window=mob[];size=325x500", name)) onclose(user, "mob[real_name]") @@ -134,21 +135,21 @@ if(!usr.canmove || usr.stat || usr.restrained() || !in_range(loc, usr)) return - //Is the usr's mob type able to do this? (lolaliens) - if(ishuman(usr) || ismonkey(usr) || isrobot(usr) || isalienadult(usr)) + //Is the usr's mob type able to do this? + if(ishuman(usr) || ismonkey(usr) || isrobot(usr)) //Removing from inventory if(href_list["remove_inv"]) var/remove_from = href_list["remove_inv"] switch(remove_from) - if("l_ear") - if(l_ear) + if("ears") + if(ears) if(available_channels.len) src.say("[pick(available_channels)] BAWWWWWK LEAVE THE HEADSET BAWKKKKK!") else src.say("BAWWWWWK LEAVE THE HEADSET BAWKKKKK!") - l_ear.loc = src.loc - l_ear = null + ears.loc = src.loc + ears = null for(var/possible_phrase in speak) if(copytext(possible_phrase,1,3) in department_radio_keys) possible_phrase = copytext(possible_phrase,3,length(possible_phrase)) @@ -163,8 +164,8 @@ usr << "\red You have nothing in your hand to put on its [add_to]." return switch(add_to) - if("l_ear") - if(l_ear) + if("ears") + if(ears) usr << "\red It's already wearing something." return else @@ -180,7 +181,7 @@ usr.drop_item() headset_to_add.loc = src - src.l_ear = headset_to_add + src.ears = headset_to_add usr << "You fit the headset onto [src]." clearlist(available_channels) @@ -214,7 +215,7 @@ /mob/living/simple_animal/parrot/attack_hand(mob/living/carbon/M as mob) ..() if(client) return - if(!stat && M.a_intent == "harm") + if(!stat && M.a_intent == "hurt") icon_state = "parrot_fly" //It is going to be flying regardless of whether it flees or attacks @@ -231,25 +232,6 @@ drop_held_item(0) return -/mob/living/simple_animal/parrot/attack_paw(mob/living/carbon/monkey/M as mob) - attack_hand(M) - -/mob/living/simple_animal/parrot/attack_alien(mob/living/carbon/monkey/M as mob) - attack_hand(M) - -//Simple animals -/mob/living/simple_animal/parrot/attack_animal(mob/living/simple_animal/M as mob) - if(client) return - - - if(parrot_state == PARROT_PERCH) - parrot_sleep_dur = parrot_sleep_max //Reset it's sleep timer if it was perched - - if(M.melee_damage_upper > 0) - parrot_interest = M - parrot_state = PARROT_SWOOP | PARROT_ATTACK //Attack other animals regardless - icon_state = "parrot_fly" - //Mobs with objects /mob/living/simple_animal/parrot/attackby(var/obj/item/O as obj, var/mob/user as mob) ..() @@ -335,7 +317,7 @@ if(speak.len) var/list/newspeak = list() - if(available_channels.len && src.l_ear) + if(available_channels.len && src.ears) for(var/possible_phrase in speak) //50/50 chance to not use the radio at all @@ -496,11 +478,11 @@ var/datum/organ/external/affecting = H.get_organ(ran_zone(pick(parrot_dam_zone))) H.apply_damage(damage, BRUTE, affecting, H.run_armor_check(affecting, "melee"), sharp=1) - emote(pick("pecks [H]'s [affecting]", "cuts [H]'s [affecting] with its talons")) + emote(pick("pecks [H]'s [affecting].", "cuts [H]'s [affecting] with its talons.")) else L.adjustBruteLoss(damage) - emote(pick("pecks at [L]", "claws [L]")) + emote(pick("pecks at [L].", "claws [L].")) return //Otherwise, fly towards the mob! @@ -700,6 +682,71 @@ speak = list("Poly wanna cracker!", ":e Check the singlo, you chucklefucks!",":e Wire the solars, you lazy bums!",":e WHO TOOK THE DAMN HARDSUITS?",":e OH GOD ITS FREE CALL THE SHUTTLE") /mob/living/simple_animal/parrot/Poly/New() - l_ear = new /obj/item/device/radio/headset/headset_eng(src) + ears = new /obj/item/device/radio/headset/headset_eng(src) available_channels = list(":e") ..() + +/mob/living/simple_animal/parrot/say(var/message) + + if(stat) + return + + var/verb = "says" + if(speak_emote.len) + verb = pick(speak_emote) + + var/message_mode = null + if(copytext(message,1,2) == ";") + message_mode = "headset" + message = copytext(message,2) + + if(copytext(message,1,2) == ":") + var/channel_prefix = copytext(message, 1 ,3) + message_mode = department_radio_keys[channel_prefix] + var/positioncut = 3 + message = trim(copytext(message,positioncut)) + + message = capitalize(trim_left(message)) + if(message_mode) + if(message_mode in radiochannels) + if(ears && istype(ears,/obj/item/device/radio)) + ears.talk_into(src, message, message_mode, verb, null) + + ..(message) + + +/mob/living/simple_animal/parrot/hear_say(var/message, var/verb = "says", var/datum/language/language = null, var/alt_name = "",var/italics = 0, var/mob/speaker = null) + if(prob(50)) + parrot_hear(message) + ..(message,verb,language,alt_name,italics,speaker) + + + +/mob/living/simple_animal/parrot/hear_radio(var/message, var/verb="says", var/datum/language/language=null, var/part_a, var/part_b, var/mob/speaker = null, var/hard_to_hear = 0) + if(prob(50)) + parrot_hear("[pick(available_channels)] [message]") + ..(message,verb,language,part_a,part_b,speaker,hard_to_hear) + + +/mob/living/simple_animal/parrot/proc/parrot_hear(var/message="") + if(!message || stat) + return + speech_buffer.Add(message) + +/mob/living/simple_animal/parrot/attack_paw(var/mob/user, var/damage, var/attack_message) + + var/success = ..() + + if(client) + return success + + if(parrot_state == PARROT_PERCH) + parrot_sleep_dur = parrot_sleep_max //Reset it's sleep timer if it was perched + + if(!success) + return 0 + + parrot_interest = user + parrot_state = PARROT_SWOOP | PARROT_ATTACK //Attack other animals regardless + icon_state = "parrot_fly" + return success diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 800d9967ca7..6d0694c3073 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -269,6 +269,7 @@ for(var/mob/O in viewers(src, null)) if ((O.client && !( O.blinded ))) O.show_message("\blue [M] [response_help] [src].") + playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) if("grab") if (M == src || anchored) @@ -288,12 +289,14 @@ for(var/mob/O in viewers(src, null)) if ((O.client && !( O.blinded ))) O.show_message(text("\red [] has grabbed [] passively!", M, src), 1) + playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) if("harm", "disarm") adjustBruteLoss(harm_intent_damage) for(var/mob/O in viewers(src, null)) if ((O.client && !( O.blinded ))) O.show_message("\red [M] [response_harm] [src]!") + playsound(loc, "punch", 25, 1, -1) return @@ -537,3 +540,22 @@ if (S.occupant || S.occupant2) return 0 return 1 + +/mob/living/simple_animal/say(var/message) + if(stat) + return + + if(copytext(message,1,2) == "*") + return emote(copytext(message,2)) + + if(stat) + return + + var/verb = "says" + + if(speak_emote.len) + verb = pick(speak_emote) + + message = capitalize(trim_left(message)) + + ..(message, null, verb) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 7b197aafcb2..a3d5932e10b 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -93,6 +93,7 @@ return 0 /mob/proc/Life() + handle_typing_indicator() // if(organStructure) // organStructure.ProcessOrgans() return diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index e23014f9f52..d3abbfc1776 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -446,3 +446,49 @@ var/list/intents = list("help","disarm","grab","harm") /proc/get_both_hands(mob/living/carbon/M) var/list/hands = list(M.l_hand, M.r_hand) return hands + + +//Direct dead say used both by emote and say +//It is somewhat messy. I don't know what to do. +//I know you can't see the change, but I rewrote the name code. It is significantly less messy now +/proc/say_dead_direct(var/message, var/mob/subject = null) + var/name + var/keyname + if(subject && subject.client) + var/client/C = subject.client + keyname = (C.holder && C.holder.fakekey) ? C.holder.fakekey : C.key + if(C.mob) //Most of the time this is the dead/observer mob; we can totally use him if there is no better name + var/mindname + var/realname = C.mob.real_name + if(C.mob.mind) + mindname = C.mob.mind.name + if(C.mob.mind.original && C.mob.mind.original.real_name) + realname = C.mob.mind.original.real_name + if(mindname && mindname != realname) + name = "[realname] died as [mindname]" + else + name = realname + + for(var/mob/M in player_list) + if(M.client && ((!istype(M, /mob/new_player) && M.stat == DEAD) || (M.client.holder && M.client.holder.rights == R_MOD)) && (M.client.prefs.toggles & CHAT_DEAD)) + var/follow + var/lname + if(subject) + if(subject != M) + follow = "(follow) " + if(M.stat != DEAD && M.client.holder) + follow = "(JMP) " + var/mob/dead/observer/DM + if(istype(subject, /mob/dead/observer)) + DM = subject + if(M.client.holder) // What admins see + lname = "[keyname][(DM && DM.anonsay) ? "*" : (DM ? "" : "^")] ([name])" + else + if(DM && DM.anonsay) // If the person is actually observer they have the option to be anonymous + lname = "Ghost of [name]" + else if(DM) // Non-anons + lname = "[keyname] ([name])" + else // Everyone else (dead people who didn't ghost yet, etc.) + lname = name + lname = "[lname] " + M << "[lname][follow][message]" diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index 6ecdfdc4e67..4810c0b10f7 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -444,46 +444,22 @@ proc/create_character() spawning = 1 close_spawn_windows() + var/mob/living/carbon/human/new_character + var/datum/species/chosen_species if(client.prefs.species) chosen_species = all_species[client.prefs.species] if(chosen_species) // Have to recheck admin due to no usr at roundstart. Latejoins are fine though. if(is_species_whitelisted(chosen_species) || has_admin_rights()) - switch(chosen_species.name) - if("Slime People") - new_character = new /mob/living/carbon/human/slime(loc) - if("Tajaran") - new_character = new /mob/living/carbon/human/tajaran(loc) - if("Unathi") - new_character = new /mob/living/carbon/human/unathi(loc) - if("Skrell") - new_character = new /mob/living/carbon/human/skrell(loc) - if("Diona") - new_character = new /mob/living/carbon/human/diona(loc) - if("Vox") - new_character = new /mob/living/carbon/human/vox(loc) - if("Vox Armalis") - new_character = new /mob/living/carbon/human/voxarmalis(loc) - if("Kidan") - new_character = new /mob/living/carbon/human/kidan(loc) - if("Grey") - new_character = new /mob/living/carbon/human/grey(loc) - if("Machine") - new_character = new /mob/living/carbon/human/machine(loc) - if("Plasmaman") - new_character = new /mob/living/carbon/human/plasma(loc) - if("Human") - new_character = new /mob/living/carbon/human/human(loc) -// new_character.set_species(client.prefs.species) - if(chosen_species.language) - new_character.add_language(chosen_species.language) - else - new_character = new /mob/living/carbon/human(loc) + new_character = new(loc, client.prefs.species) + + if(!new_character) + new_character = new(loc) + new_character.lastarea = get_area(loc) - var/datum/language/chosen_language if(client.prefs.language) chosen_language = all_languages[client.prefs.language] @@ -529,6 +505,8 @@ if(client.prefs.disabilities & DISABILITY_FLAG_DEAF) new_character.dna.SetSEState(DEAFBLOCK,1,1) new_character.sdisabilities |= DEAF + + chosen_species.handle_dna(new_character) domutcheck(new_character) new_character.dna.UpdateSE() diff --git a/code/modules/mob/say.dm b/code/modules/mob/say.dm index 41612819446..38328b16bb7 100644 --- a/code/modules/mob/say.dm +++ b/code/modules/mob/say.dm @@ -9,114 +9,97 @@ /mob/verb/say_verb(message as text) set name = "Say" set category = "IC" + + //Let's try to make users fix their errors - we try to detect single, out-of-place letters and 'unintended' words + /* + var/first_letter = copytext(message,1,2) + if((copytext(message,2,3) == " " && first_letter != "I" && first_letter != "A" && first_letter != ";") || cmptext(copytext(message,1,5), "say ") || cmptext(copytext(message,1,4), "me ") || cmptext(copytext(message,1,6), "looc ") || cmptext(copytext(message,1,5), "ooc ") || cmptext(copytext(message,2,6), "say ")) + var/response = alert(usr, "Do you really want to say this using the *say* verb?\n\n[message]\n", "Confirm your message", "Yes", "Edit message", "No") + if(response == "Edit message") + message = input(usr, "Please edit your message carefully:", "Edit message", message) + if(!message) + return + else if(response == "No") + return + */ + + set_typing_indicator(0) usr.say(message) /mob/verb/me_verb(message as text) set name = "Me" set category = "IC" - message = trim(copytext(sanitize(message), 1, MAX_MESSAGE_LEN)) + message = strip_html_properly(message) + set_typing_indicator(0) if(use_me) usr.emote("me",usr.emote_type,message) else usr.emote(message) /mob/proc/say_dead(var/message) - var/name = src.real_name - var/alt_name = "" - - if(!src.client.holder) if(!dsay_allowed) - src << "\red Deadchat is globally muted" + src << "Deadchat is globally muted." return if(client && !(client.prefs.toggles & CHAT_DEAD)) - usr << "\red You have deadchat muted." + usr << "You have deadchat muted." return - if(mind && mind.name) - name = "[mind.name]" - else - name = real_name - if(name != real_name) - alt_name = " (died as [real_name])" - - message = src.say_quote(message) - //var/rendered = "DEAD: [name][alt_name] [message]" - var/rendered2 = null//edited - for(var/mob/M in player_list) - rendered2 = "DEAD: [name][alt_name] (Follow) [message]"//edited - if(istype(M, /mob/new_player)) - continue - if(M.client && M.client.holder && (M.client.holder.rights & R_ADMIN|R_MOD) && (M.client.prefs.toggles & CHAT_DEAD)) // Show the message to admins/mods with deadchat toggled on - M << rendered2 //Admins can hear deadchat, if they choose to, no matter if they're blind/deaf or not. - - else if(M.client && M.stat == DEAD && (M.client.prefs.toggles & CHAT_DEAD)) // Show the message to regular ghosts with deadchat toggled on. - M.show_message(rendered2, 2) //Takes into account blindness and such. - return + say_dead_direct("[pick("complains","moans","whines","laments","blubbers")], \"[message]\"", src) /mob/proc/say_understands(var/mob/other,var/datum/language/speaking = null) - if(!other) - return 1 - //Universal speak makes everything understandable, for obvious reasons. - if(other.universal_speak || src.universal_speak || src.universal_understand) - return 1 - if (src.stat == 2) + if (src.stat == 2) //Dead return 1 - if(!speaking) //Handle languages later - if(other.universal_speak || src.universal_speak) + //Universal speak makes everything understandable, for obvious reasons. + else if(src.universal_speak || src.universal_understand) + return 1 + + //Languages are handled after. + if (!speaking) + if(!other) + return 1 + if(other.universal_speak) return 1 if(isAI(src) && ispAI(other)) return 1 if (istype(other, src.type) || istype(src, other.type)) return 1 - if (istype(other, /mob/living/carbon/human) && (istype(src, /mob/living/carbon/human) || istype(src, /mob/living/silicon/pai))) - return 1 - if(istype(other, /mob/living/carbon/alien) && istype(src, /mob/living/carbon/alien)) - return 1 return 0 - for(var/datum/language/L in src.languages) //Handling languages + if(speaking.flags & INNATE) + return 1 + + //Language check. + for(var/datum/language/L in src.languages) if(speaking.name == L.name) return 1 return 0 -/mob/proc/say_quote(var/text,var/datum/language/speaking) +/* + ***Deprecated*** + let this be handled at the hear_say or hear_radio proc + This is left in for robot speaking when humans gain binary channel access until I get around to rewriting + robot_talk() proc. + There is no language handling build into it however there is at the /mob level so we accept the call + for it but just ignore it. +*/ - if(!text) - return "says, \"...\""; //not the best solution, but it will stop a large number of runtimes. The cause is somewhere in the Tcomms code - //tcomms code is still runtiming somewhere here - var/ending = copytext(text, length(text)) +/mob/proc/say_quote(var/message, var/datum/language/speaking = null) + var/verb = "says" + var/ending = copytext(message, length(message)) + if(ending=="!") + verb=pick("exclaims","shouts","yells") + else if(ending=="?") + verb="asks" - var/speechverb = "" + return verb - if (speaking) - speechverb = "[speaking.speech_verb], \"" - else if(speak_emote && speak_emote.len) - speechverb = "[pick(speak_emote)], \"" - else if (src.stuttering) - speechverb = "stammers, \"" - else if (src.slurring) - speechverb = "slurrs, \"" - else if (ending == "?") - speechverb = "asks, \"" - else if (ending == "!") - speechverb = "exclaims, \"" - else if(isliving(src)) - var/mob/living/L = src - if (L.getBrainLoss() >= 60) - speechverb = "gibbers, \"" - else - speechverb = "says, \"" - else - speechverb = "says, \"" - - return "[speechverb][text]\"" /mob/proc/emote(var/act, var/type, var/message) if(act == "me") @@ -133,21 +116,34 @@ /mob/proc/say_test(var/text) var/ending = copytext(text, length(text)) if (ending == "?") - if(isalien(src)) - return "A1" - if(isrobot(src)) - return "R1" - else - return "1" + return "1" else if (ending == "!") - if(isalien(src)) - return "A2" - if(isrobot(src)) - return "R2" - else - return "2" - else if(isalien(src)) - return "A0" - else if(isrobot(src)) - return "R0" + return "2" return "0" + +//parses the message mode code (e.g. :h, :w) from text, such as that supplied to say. +//returns the message mode string or null for no message mode. +//standard mode is the mode returned for the special ';' radio code. +/mob/proc/parse_message_mode(var/message, var/standard_mode="headset") + if(length(message) >= 1 && copytext(message,1,2) == ";") + return standard_mode + + if(length(message) >= 2) + var/channel_prefix = copytext(message, 1 ,3) + return department_radio_keys[channel_prefix] + + return null + +//parses the language code (e.g. :j) from text, such as that supplied to say. +//returns the language object only if the code corresponds to a language that src can speak, otherwise null. +/mob/proc/parse_language(var/message) + if(length(message) >= 1 && copytext(message,1,2) == "!") + return all_languages["Noise"] + + if(length(message) >= 2) + var/language_prefix = lowertext(copytext(message, 1 ,3)) + var/datum/language/L = language_keys[language_prefix] + if (can_speak(L)) + return L + + return null diff --git a/code/modules/mob/typing_indicator.dm b/code/modules/mob/typing_indicator.dm new file mode 100644 index 00000000000..c104aa839a4 --- /dev/null +++ b/code/modules/mob/typing_indicator.dm @@ -0,0 +1,85 @@ +#define TYPING_INDICATOR_LIFETIME 30 * 10 //grace period after which typing indicator disappears regardless of text in chatbar + +mob/var/hud_typing = 0 //set when typing in an input window instead of chatline +mob/var/typing +mob/var/last_typed +mob/var/last_typed_time + +var/global/image/typing_indicator + +/mob/proc/set_typing_indicator(var/state) + + if(!typing_indicator) + typing_indicator = image('icons/mob/talk.dmi',null,"typing") + + if(client) + if(client.prefs.toggles & SHOW_TYPING) + overlays -= typing_indicator + else + if(state) + if(!typing) + overlays += typing_indicator + typing = 1 + else + if(typing) + overlays -= typing_indicator + typing = 0 + return state + +/mob/verb/say_wrapper() + set name = ".Say" + set hidden = 1 + + set_typing_indicator(1) + hud_typing = 1 + var/message = input("","say (text)") as text + hud_typing = 0 + set_typing_indicator(0) + if(message) + say_verb(message) + +/mob/verb/me_wrapper() + set name = ".Me" + set hidden = 1 + + set_typing_indicator(1) + hud_typing = 1 + var/message = input("","me (text)") as text + hud_typing = 0 + set_typing_indicator(0) + if(message) + me_verb(message) + +/mob/proc/handle_typing_indicator() + if(client) + if(!(client.prefs.toggles & SHOW_TYPING) && !hud_typing) + var/temp = winget(client, "input", "text") + + if (temp != last_typed) + last_typed = temp + last_typed_time = world.time + + if (world.time > last_typed_time + TYPING_INDICATOR_LIFETIME) + set_typing_indicator(0) + return + if(length(temp) > 5 && findtext(temp, "Say \"", 1, 7)) + set_typing_indicator(1) + else if(length(temp) > 3 && findtext(temp, "Me ", 1, 5)) + set_typing_indicator(1) + + else + set_typing_indicator(0) + +/client/verb/typing_indicator() + set name = "Show/Hide Typing Indicator" + set category = "Preferences" + set desc = "Toggles showing an indicator when you are typing emote or say message." + prefs.toggles ^= SHOW_TYPING + prefs.save_preferences(src) + src << "You will [(prefs.toggles & SHOW_TYPING) ? "no longer" : "now"] display a typing indicator." + + // Clear out any existing typing indicator. + if(prefs.toggles & SHOW_TYPING) + if(istype(mob)) mob.set_typing_indicator(0) + + feedback_add_details("admin_verb","TID") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! \ No newline at end of file diff --git a/code/modules/paperwork/faxmachine.dm b/code/modules/paperwork/faxmachine.dm index 98726004ea4..7beff751760 100644 --- a/code/modules/paperwork/faxmachine.dm +++ b/code/modules/paperwork/faxmachine.dm @@ -21,8 +21,6 @@ var/list/alldepartments = list() var/department = "Unknown" // our department var/destination = "Central Command" // the department we're sending to - - var/data[0] /obj/machinery/photocopier/faxmachine/New() ..() @@ -51,6 +49,7 @@ var/list/alldepartments = list() user << "You swipe the card through [src], but nothing happens." /obj/machinery/photocopier/faxmachine/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) + var/data[0] if(scan) data["scan_name"] = scan.name else @@ -142,8 +141,7 @@ var/list/alldepartments = list() else if(istype(copyitem, /obj/item/weapon/photo)) copyitem.name = "[(n_name ? text("[n_name]") : "photo")]" else if(istype(copyitem, /obj/item/weapon/paper_bundle)) - copyitem.name = "[(n_name ? text("[n_name]") : "paper")]" - data["name"] = copyitem.name + copyitem.name = "[(n_name ? text("[n_name]") : "paper")]" nanomanager.update_uis(src) diff --git a/code/modules/research/designs/machine_designs.dm b/code/modules/research/designs/machine_designs.dm index 4567d00bfde..ab5653e0d1a 100644 --- a/code/modules/research/designs/machine_designs.dm +++ b/code/modules/research/designs/machine_designs.dm @@ -62,7 +62,7 @@ build_path = /obj/item/weapon/circuitboard/bodyscanner category = list("Medical Machinery") -/datum/design/sleep_console +/datum/design/bodyscanner_console name = "Machine Board (Body Scanner Console)" desc = "Allows for the construction of circuit boards used to build a Body Scanner Console." id = "bodyscanner_console" diff --git a/code/modules/surgery/headreattach.dm b/code/modules/surgery/headreattach.dm index 3c49a9e8c0a..c493607c52c 100644 --- a/code/modules/surgery/headreattach.dm +++ b/code/modules/surgery/headreattach.dm @@ -196,7 +196,7 @@ user.visible_message("\blue [user] has attached [target]'s head to the body.", \ "\blue You have attached [target]'s head to the body.") affected.status = 0 - if(istype(target,/mob/living/carbon/human/machine)) + if(target.species && (target.species.flags & IS_SYNTHETIC)) affected.status = 128 affected.amputated = 0 affected.destspawn = 0 diff --git a/code/setup.dm b/code/setup.dm index ca1c664815a..c2981325856 100644 --- a/code/setup.dm +++ b/code/setup.dm @@ -711,11 +711,12 @@ var/list/TAGGERLOCATIONS = list("Disposals", #define CHAT_GHOSTEARS 4 #define CHAT_GHOSTSIGHT 8 #define CHAT_PRAYER 16 -//#define CHAT_RADIO 32 +#define CHAT_RADIO 32 #define CHAT_ATTACKLOGS 64 #define CHAT_DEBUGLOGS 128 #define CHAT_LOOC 256 #define CHAT_GHOSTRADIO 512 +#define SHOW_TYPING 1024 #define SOUND_ADMINHELP 1 #define SOUND_MIDI 2 @@ -843,12 +844,15 @@ var/list/restricted_camera_networks = list( //Those networks can only be accesse #define HAS_SKIN_TONE 16 #define HAS_SKIN_COLOR 32 - //Language flags. -#define WHITELISTED 1 // Language is available if the speaker is whitelisted. -#define RESTRICTED 2 // Language can only be accquired by spawning or an admin. -#define NONVERBAL 4 // Language has a significant non-verbal component. Speech is garbled without line-of-sight -#define SIGNLANG 8 // Language is completely non-verbal. Speech is displayed through emotes for those who can understand. +#define WHITELISTED 1 // Language is available if the speaker is whitelisted. +#define RESTRICTED 2 // Language can only be accquired by spawning or an admin. +#define NONVERBAL 4 // Language has a significant non-verbal component. Speech is garbled without line-of-sight +#define SIGNLANG 8 // Language is completely non-verbal. Speech is displayed through emotes for those who can understand. +#define HIVEMIND 16 // Broadcast to all mobs with this language. +#define NONGLOBAL 32 // Do not add to general languages list +#define INNATE 64 // All mobs can be assumed to speak and understand this language (audible emotes) +#define NO_TALK_MSG 128 // Do not show the "\The [speaker] talks into \the [radio]" message //Flags for zone sleeping #define ZONE_ACTIVE 1 diff --git a/code/stylesheet.dm b/code/stylesheet.dm index 441ffc17000..b7111e1e5a1 100644 --- a/code/stylesheet.dm +++ b/code/stylesheet.dm @@ -67,9 +67,18 @@ h1.alert, h2.alert {color: #000000;} .noticealien {color: #00c000;} .alertalien {color: #00c000; font-weight: bold;} .tajaran {color: #803B56;} +.tajaran_signlang {color: #941C1C;} .skrell {color: #00CED1;} .soghun {color: #228B22;} +.solcom {color: #22228B;} +.changeling {color: #800080;} .vox {color: #AA00AA;} +.diona {color: #007200;} +.trinary {color: #727272;} +.kidan {color: #664205;} +.slime {color: #0077AA;} +.rough {font-family: "Trebuchet MS", cursive, sans-serif;} +.say_quote {font-family: Georgia, Verdana, sans-serif;} .say_quote {font-family: Georgia, Verdana, sans-serif;} diff --git a/config/example/config.txt b/config/example/config.txt index a26aa4575d6..454dcca2d0c 100644 --- a/config/example/config.txt +++ b/config/example/config.txt @@ -256,7 +256,7 @@ ADMIN_LEVELS 2 CONTACT_LEVELS 1;5 ## Defines all Z-levels a character can typically reach -PLAYER_LEVELS 1;3;4;5;6 +PLAYER_LEVELS 1;3;4;5;6;7 ## Expected round length in minutes EXPECTED_ROUND_LENGTH 120 diff --git a/icons/mob/human_races/r_golem.dmi b/icons/mob/human_races/r_golem.dmi new file mode 100644 index 0000000000000000000000000000000000000000..f9cfb8e157c7b5440b2ee7135e888a9c4ac2b446 GIT binary patch literal 11595 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 GfA}}yDYV%D literal 0 HcmV?d00001 diff --git a/icons/mob/human_races/r_shadow.dmi b/icons/mob/human_races/r_shadow.dmi new file mode 100644 index 0000000000000000000000000000000000000000..70450af690243fd20f537d6b1d6606549b15265a GIT binary patch literal 1760 zcmYLKc{rQt7XQ91MMA|@bmD3((-zfGTQ?%Hv`jmp#HF3qI@T&FVHA;2OY4rCblTf% ztJ0}@YKWFv5~^t#OHt}h)e>7!)oY183;8BGf86JJpL5>xd(Ziu<^AK__8^~CLt#+> z0I0dSI(q^DsJMav09_GtN`;1j$PP| zpm~zL0OF^iP=(QwMDe9Lhr|WPMo?)HG0^~!Sd=^Pd~do1X3r#-p0g*x=*yQN{VbAS zX~e)yTkS}WmT(lEpih3eh?htqJr-hnMxEf=5YGCI-@GvKF@38r8El+WtrY% zc@`D-!r~sv1Ueo$kU{<~@7GMp#^WNX>)PHvvs8l~?fYZi49>pqeW0avbaqUef#6We zT>wBD3#{1E~Fd z{jco_#N^;%RVw=D#Q{`j)y`?KJ4#R?A(plL_M>jKr;cM!CqM`O#0|W z3f3S;G-r#E@9M82uD1-mzI5q8JN$9cH`!bLYEB(l1>WJoN=fY_ykfsQg8D?4h5jb* ztqk=3WE0!ZSomxe2!@8=MR~Xc&-WSXG7i$B^pFAO^-GN$AIlmTqdc-1MziQs)to#7 zn#lO#BWXAeRtbOVUZ|dC|6%Qtj_25F;9nG;ov_ohY4Q4hJo(&OHLXd}!%X}SpN;&8 zg%swZ2-S#s=NrS?bXBXbkMc@zBw-M{N4$7LyzQu*@6VPXcSYs|Bh>&W1(&A8NQ;`f zgSuTkEW`PsNZsVp5TA{S2=21~`{}^Tp4qKu9=`MCBpJ^Q-QJ;X9efHX*rwJrpjTq( zcj(ms1W_I3j9sku&Mxy`*>+{dhZ%H-^-u=Qd(L@3B=}=}+bBu)XW?cIr!xmTnC>H~hZHVEeRf z@RIXHb(oaRwBs@{rlOPQHKJ~=zOf0q@iaR5gw>`c0SsdwFK_cg6echV*&Z&(AgL-U zI}@9(ul&ZIg5%U?bq|oFZ5McD*se|;Bs;sUM^#-bKpU6d<>XVmt%A8Ims)9w`WeNN zRVOj`pv{3J0mCNw69@iiWzGNAzagArkolL^1tGJ;r<(k?q;^)BuU&!0#bGbuA>?1*9$0&WxD8t3s45@Hy8cw*rlIEM#cQ?^ z(`d5b6MR7l(KG1FnX^47x-);v>?N}SlZ7i#?;0?VqZc0Pum0(OSCHQ>!=*f$xE4`a z*8DE+$8HCVU7jsr%9$Qd$Di2IM!e`k-t(#U9yCMo_u$wN@uiLIPWbl@^7t#RyW^jz zwIvudutKh-I7Z`oN5mNd!hOLhog8;%_lmHe-8-js<>}1$6%{Vs?&`E=tSo%6{qW4@ zbLTl+z%FP#IET|ex=w(AYsc6O=4glIW@*}{p}lw;{w#GeS`J3za<401^Kn##ti&}I zDxA&+CqHB`d(>(FhdO>~daGbsgID!A5I?F5dL8(S(@2_^9JF+>n8lSW$(kfejdW{X z@v1sol4b${TGZnZ&;TL9GDXDrGFrhXhRV0$f9R-v^{l9-%fZ!De?=v2vxHe(0BmF| zdGq~`@$+ly>@C?FMK(EP0`ZqZOZ62*tnxe|`j;)4NsImpq$EVg$`WHo1KN>3Q+&-^ z=ADXS8a2(9AF3#~>C9}dz!t0~{4uv2nB6iiy&2f*+0sD>)h)mt0yd;rB8MGdFje?F zNC5#mwjlm$j=|upC;`EbNS~6S6Su)}B@dvM^`!FE>JFGD28|V?6HY6McEDOOD5`jo uxdSSk`KgR489a0a9#AsYDhHx*t^TE2K0U%K$KNV85a8xQcIG$+r2h$`%}*x) literal 0 HcmV?d00001 diff --git a/icons/mob/human_races/r_slime.dmi b/icons/mob/human_races/r_slime.dmi new file mode 100644 index 0000000000000000000000000000000000000000..287779d3c7bb250e720f0d911f83869ed0c319f4 GIT binary patch literal 4614 zcma)=cT`i`y2W=Aq06}^a z>5(A42%)zCK|wl(00|_t8_yl@jq}DE=U)F>Ywf+qF5mjiZ_crwo0=GK96fmy0054w zhPpQZ0K}Mr09IzkVC|dd!Wcfo&2RhbI{P{Lx;^xF^Y#LOz_jSz@}uDj+->CXORbr~ z`Ni%D4(B-ON5x_XpXlF|%O9vF&CCqM32}w);RrTRcl@7^iB*uF@IGn$S}Y?RM8G6V#?vSv<1ROCgUOs)v3 z#?PNVXG~i#yz?pP!e&v@LaSj=n!p2gF-6sjiukBctd`FRUzdq;MTWM>H;DEH-2Efl znNO=oE&P|&TErA?U>V=U16rF9UsDRqf+Mlm< zRZje_r<+anNXT=mZf*}o?SJUkLJ>O6^>cfoa@FE@`lSXzTAB|eZFdVa(JIIAxDYohHU?Kw_hkVcI1Uo*gn*=rmS57nOA5mF`Oj9ocu(HHcE zF~Tad+q0uLx6#BM%ExhGw5q(9)Zk744t*h}rvG(1E4aKN=gL&AB=$Za! zHK;QmIGjg`2101o?5Xko8p+wACJCA+X(jiMc2*~8m&w;&mY*rjBw~G393{|aXRp4) z?{$W)h(@uzOp|5y9$#aG=Zv|%`JbkxT;XuUPM;FL1?&=!&nL*(Eg@FG+#=9#P_`1( z-%xhG`Z1v6MLJ8%yoQ6VS!D;G9{z|4R*Cg;Fg^wM2)8MeYWBQ>0vhQ921s#gzo-a> zOE2P?nelE=zWbbgYgtIUI}gy|I-JtGaFY9}7!ZpusEom@%#@5h?IV2PU;@r}t^!*P z5`7*nTTasT52u`^yPGS7JitD}fGYo=)kP}Ez6VP}KI)CEK&nj8m|fTOp=NV_Bg)|= z0JO3KI*MSxlrcRn@gJA7zV>qoDv)wK+f`UOLm|iSUsfO&_ylO)ERfH<2O!ePdxTJh}8MB75EJ?N=I-K<}KFKnu{zOM{QT8yPv2-g8W44d$^S%nfw(7(MsG;}_$X0GE_NOoe!=iL3VE#;v(- zOR|#dT;8xpDtw8jQIZ4!p{$J-kn#hSB8Ujo(vHi6o$E0v&wF?h8S0!gIUy0lSdw?i zEBQD!N2I1_l>tLugwEd&ro5%P?YqJO9XXdjeU~N{oNc9p#h_B$w!~GajtEkF@!PMt_xx+>w zQ$D;-8txs1)$uTwnTzS7TYsUR;0KxT45YvY(p81TH)KcgPE4rE(->=JZ7pOy^p8HB zx&~@ffNd!IYGr!RbP%mS$a8adcWeaj&XB(vP3WNjcgH!ui0KcxEW|P`5Fp(q31kQ` zMtuNy!2_TinEv1Lc1hIZZ#TLBSo+f*{o=kYRO|Fc@3~mW(tEq$d=d0-qzae|v}nR7 z_)-;QIMJPn8(Egs8!9{S_OlYZHFEtMMmutuTC~uxoZ5F46J;YgD6FCF+x3ahs1h+##C}1p1U}2Fsd0tF=idR6o9q451~T%A)puKyxhNl+&=?(;n4W9o-X(` zRP9K#7ykR+`?RwoEL7tX;C7J27o7+)g5GwwYVk4s>o#dhuM>_{4>_=zt2Jb36+M#p z61s8Hd77{0iK@M}xfic!-srQ-pR_{mC;uh`O^-CZ9zkYx#uHHcX0<@sQ#G}zXSnXn zEp$+273giH8GuckdnUI(QR)7C{*0mK_Ib^7R~O4UV6wqk$3$~OK-`GFX+vMulQ`J^ z<(HucnH}p21#a5%l@d(CQb);mehZd8WVQddmUYB7SQ;5xZmS%SdonHe5%l)fI2z@` zlCgdIF;zD$bF^#x${pc!XFI^RD?nJs3Z7se6J~LZ7zvRcgGr#`p6%zX?z2!?CJ_ew67PzwNG*@a% z>5~2y=;%AlgXtVsA{ioZoh5tE)4qxZ*KX41>*DWAtvPz6TNwL0{+37*6JixsF3xBO*RNbyHqqYY~x zt=wCf9aXbw>HGty6CwA9=;QnvQ=b)2FcV)&c<78OH^2lWt8+0rT=L_x8xFi>;_q}4JzuGvy9U2bw?qf^Qv^WvntU4U*y>Yz zUQECbe*N8>O>uE2|4i@S znr%6z%L}L)B>9K(zwVl>7OBr!=RpnT*Os636LWyHdV|%IQlRNsr?w@SV&kI#ffIsY zpM`D3?*V*@Jm;%SLjd;dyMeA8P8}?oLKR|;LO))Ck1L!qHris%c=(hB6|ZtExCSKk z*Z0?g%<@`X2niC^;>ZMfhI>!CLI+8&4I8dr69i@4F5w)t_^$Bq)`XxKU|OUQdcj3I zmUi(ggjg+8Fwo1I3P`72q~B~Yt?9s2mR1GD{4|cAApEj{{8BysyBDqIULsC1=)k{f zQ?ZO5Pl%yXN;UkJI@f#onFpr6Z!>qq1vB+A3L4NK>q&bs`qSGXOOhuBXl7n~?DQ^UL#Yx#(@^ZBYfoIn;XZDyjg@`4N(5w@pcKX;-51KF z6I*T>D&h`4Qi#T25~rBWb-t~;O53o#lMp|8QoXJ~=FZ>R1d9 zkoE$a-0{PUnglyy7K~WxG=(c|-KtnbXxExBg*jxd`Yx!&984r?@n>iKsZuB2-{}VCXx3{%>nJ!>!hTnw%@;Z*a5;QG~!Y5dn(z_C4)l*{&XPVhW=qUQKpqBPXdUe!yr6%_^aO`Kui^@z!?T5REl4SQ_ zzm^=vyI04zcFYdGbJ+{sS=?*O8-CNjlvPFhE5%%SG{=czJo$?5T=WH#D+)0#weIf* z7sIFHTO6^Iihs*AzFYBm<9GM`f|C9H!Cf1l_@5ILH9VETc^Q+Sb@~+6GaZ-sy_1#d zn`n!x&?1KOb)UYdRa=Ch)de0b^*cy==tJgLN(c&QmAPSp-ZSMx2S{~pyS}Ap+o~!S z4!y@@dbt)nvooi(L#EvgIT3efw_B&KU)Vm^0L0i!ceDK?6_O`+2)_}7Xyq=YlrNjT z-7&rHsYK$!L!`|+i$MYrXzhF?pdf5J!H$?FwJZ#I99rx$Xub|($wli0Ou`&)Oo!XHJCPV9J z3iqgG_*-l3yis2CVXqPkg?H^XU)ZYv;KvOi(=-;yOfO}ci_Ph_lT_JqsTAE-gwmWU zv_K)L1n%5TBRo~LcU)OxVt2Z47kZzxkK2TcPBoECc?~zh6At=va28u79p?Khi+1$d z3i=)9IQ3IfCiu@rm;}QYUe{j8X2QEfzx{Jttk!XJiUu%APcSH>e3_`)^q3ZF} z%YtY;Ex*w%)5$w5^Vo<8$f@{Vg({16@$-t6(rpCiGE1?=9{$??quL@nDk-8#^AvFJ z((V_VJIx1K-rR!kh2trk2;^r}DuVq;Hv`i41I!NB8%RfB0-NBUDJHeX zRVsU1b*GLh+S8yF_73t^4=^8>^Z%JwRrLW6@lS2C?i^SdSiWqB^BPd2tXQ}@x69#G!pAp<1k8i{u$l{A-Y|B@TrLKcsB{ta9G`Y zX@xqI_nsof^2s|ChTLo}JxH0{q#*Jz7SyL|&Z7om2V4<(XHI9(BbgXKc7UsTCb}h8 H?8E*AS~;BP literal 0 HcmV?d00001 diff --git a/icons/mob/talk.dmi b/icons/mob/talk.dmi index 2cd0b40bb1887a9d2031eb9e4b7e675875e809ce..86534d162d0435461c00231259931f7fee7b91da 100644 GIT binary patch literal 2403 zcmb7Gc{Cf?8c(8jUQksjYAHrrW$dLz5Np*|TU8rs39STGDMljJw$^GbRY9~3I<#n7 zt(ugsQ9&q!BuztWi6v5E3#yYjZ_YdKocGR~^ZvNs?>pza-*>*{-rv2~y*!*{rS?ey z003E67nqL_34bmLF`>+(A&v-vmf{WK4ML3Yrhf}EG4^1*o#34$_WRqV$!pi&k1#Q8bp`@e{bN5ovFu(i6;g=!Sb3KU$oj=bxwK5T{FI_e?lon z>X*Xyb~3!hBo?)X(Z2kN)g4RYx6`Xw^kx#eL$>lbP5S5)Cbt*Uw>Ob$NL4B2HF8Iv zH0O$LxmM3OddtK*mqj>ANY34Xmqka2M{k*N8wsI1CUfOrJaWvGeIr)0Zd;!!hMmw{ zre3O#w&j`XT0Bs9^d{)#j;r

Oxm1m70J^u`2h=zOLQv5b1&1Vm+b>%ji}0hP{cD9r5z;u{gY#3)e#~68?Zs(RBtrhe zus&l(@A>%4khCF^zKW&Es-qeoF`EQOQk{~v_*)DS8A%Sxw;>@ev9E^s74uZ>8S;6%6Y=+xLt2sRP(ZTY47G=YLXLrXil%; zAR`NYpUoA63UwNy{uO_Zq+Wvy)Gh)z{z$DOaef54_GGX&Nl@AsE*^4MWW^ zX_eq}wd<3*EsxV_>b3w@+P8LrwFdydpNkm^54rQDM3{L~;&Z=^Zt)FimwS3%(IKPL zB3@RKMhfSG>0KYbDC}#f7YpzChkM^ijeAb`Ogc@F;l7X^=^ zHGuCgZf_qF5rs?kQ{_m9sMHx+0gn8WMJUaN8}^9WcNoq{L?0>#C|7^a>Gv$bxmgm9JOXR zG?Oxg8lc~brFOQkV+#YZYGl%92hZt@BKl~Ln^9T4%_4&V6yq=LD^|yZ0VNzE+)n%Fb@}r+_ZHwHEqAn2 zA3`gpeDFovzSnn-Yk0lXdLc7ZH|HiAarmyobbW8Igha@KJ#FZoHD0&6=Fm#z&EP<@ z&9SM${VdGp;u2{qKwYTxV`#taY|y_qKA2h;4Znh;=g6CFM$t8&O$@T?c_Yp2r1_US z+kNvFZKlGe!3!A`tFytt1(lBuBb>w3^#Vwu`wY+e$9#RkD$}s<>*lIT>`4`Mt&%B` zuJ@bV^65ml-~i&4(Rb_C;fl6Xm;(DXn%T!nLtOD-0QO0J=os-spkR@Mkd_0P%+a+r zd-MFEYZ9u)Y@2TuYKt~6xT#YCgD54Z>KsXH(Czas5fQJH(?Sd(XZONjgEr9$-U~&BK5=&=m40Qj2WpmTko?fjyci7=1 zqYx+Pm|0Kbfh1C-Q6hTHU~w6xhIl5ihw-Mb+<)ve)4o$M;_zoPE&X1{3IhC)^daD3!yf{_}}CMW9%T%ReIA!O(U zNc^>mmSaOEq}OsJuSm2zQ|?YJwCO? zgWM`WFM082fDs|!Tj2bFncYLMTz1(;TW%S{h@?hfvKSEXP^Sq8!Vc zj3|f5##Rn1I?$X~%xMmNd*AE3zW49%`u=#H-}5~8eLwee-`92D*OTJvY$v-{X|ITg zh^&J>+D*t};fRxx6wdbo{2@a88SQZnkH%gPhzPxk4-F3!5g`=RX4L=Ic~}O`oicD< z^rq?51s%MUXx?P=OU+HRPoyeSibMsJI)9e=bY-@X5jfFVEGFmkwu$c zm_8NhYIbt4U=>cWI`!84{6UZX!QDOL60gQg=UR6@7)>=L$w-XBtYQAFmNm*H8}St8 zu^dqAcj{yJ3tzq_#3|g((#f#4y$zcF!!|=>)S&a&x1S5+Nrju_;C86qIN|0L zuZBDS9AUL~e13h)Ka(4!_xldXs&Reu5l&##rXP#JwwJ}Y8|E4>TNw98G^l#zWUD(d z&&E>9X)2`)&$Ghg$-C~WU+xy1xsns!yDs;Dl!Fa`5~N}&ONP_n!a=^qVu_)nUjI>o zSP4GE>42-t#6*&4ZTN?hrOd26qf}|JxjqiZwRm-C;5yyXGM@?X4eTJbQ_rMey}q~U zD&^D1TGaWcYIXVtFINhMHQ?;o6huW~~P80`Gq_pR+?M4g1!s3Pt$_{*ma>cs$Q z#oy2h2Tjy&TZ_s61vi9@&9*{+G*Z#TSNwH@svN-h73kG!ocP`mF?q9Sfj+^Q=*Qal_E%!uf?`{f?4SK(4=3@db&_qt9YrMWXWkZf3*^{1s)jRi`JQmjX+9^5j z5Wm3hlYY9fW7f+*UJc4t=BYQGVxmN7R({Avb^rVp*sMxen!aZZ&tz?OAbOY1Kf|eU zd~3#y&-m_+BVHaxd^BopYsFx|9P9&~hi_smSHap+CMbN{=g|H;3*BJQ?Aj99wzPci zvql2l9xx5Bzy-Mb(DQOdxmuIv~NpI2N zNLCChIxqUAgTlk_HZv8@d`XX_H%l}0`S!1j`T&7or3ZM_F!BN0CA(6#a)?K$GuF_c zN+v1;*QPtiYwIJxAHw>6`eH0)_kuvjRTtp$i6#OXpMzvedRWS))yD(r~&2N-k2+(wA{DhJ6Qt7j8nUH+ag+FFGH=^CY-g2lWiCJwt4R%-h0kB(xY zCYcmO6X~R3DPTXo6g6MbVGT()wEU-L8V*acr#DzXnnkfiRc25@mHdubaWc`iY2P6h zzFc%9btYY)*C;2cm@%GMBy=B<*Fvi9fSznXP0!c}_XKWVtDOtaha_AewjM6s;`1k_ z*?c=mG(7GDO~VfAga}koorqcvTbXNqzP1}2e$nS=sAcKysP=(e>L4s`6B*sB9BULi z8Nwdwo+PfV8=udIV`d`%Qupq@1G*s4(D?g=gb`%7eSS!CF}x9k^T3?$jlr0o83-PRAyq zOu}Zn<6`g1h$Ez0;p;H`KF{5%nuvVI@}xkSy1mLN<^w+$-aR%D1Vdd;Tjfbr4rFS) zd;Y|6@}@XU^PYjmrfL#uc7!Z8F1;5N+Ue%v0+XE-V}|UE=gO(%-(9pLJD9WA;sdr5 zahbmly_0wl30gE$3*GZi;{VgL{x_6xF`!Uc!8{((r- zTmw^dWw1LO2GdVdQC8M^tm3X>-KgbO2z8z^v`gk~gh!5zBa+ke8kuLo2=$EXj=7uOYPYAkl zpnKOUkYqk`z_WcQyVRQls>R}~`cjyGheQ_q$QY;1#i=F-Mb_l}3#P`6msV6t iN796S{{KVPFM#zVtm#HTxw!CyA>v@`jDBM68~<;n5)jJ( diff --git a/icons/obj/robot_storage.dmi b/icons/obj/robot_storage.dmi index 5a996c01e7e7678414e5f90f6559d1b22c0e90e9..2382586eee7febdb948c65d6b85c47bee84fb94e 100644 GIT binary patch delta 4978 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 delta 5060 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

hZ*Cr-Dn>ny~;;r|MjJghXLoZFEJ)aB$p#b{u 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

Ty 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%0A)bTtT9TMvJ#~igs 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 diff --git a/nano/images/uiTitleFluff-Syndicate.png b/nano/images/uiTitleFluff-Syndicate.png index b2a32013f862ef583e38c39b6583e009970c8f3f..b09f5ba6b29ca06a13e7972b84295dd7d8997f11 100644 GIT binary patch literal 1429 zcmV;G1#0??>1o_^z`)DLqb9_gb;S`g{rDHMMp>X_4f8=3n9X0)zyW~I(v4} zjNaY_LHF*3NpAPtpy6Q~Fc+{H+a3bLT1bdnv)kR8-G1v)c=$C>Mn=!@mM!g3QBkgc z1k~kntqKYX%J#KT)3l}~F)=}-DJdU?c6Uc1g!U*R;@7dr$h%{U7Y{y)j2zZ&wzJP{ z-(F(?!~i^ZV9%Z%LHF;+hV=G69diBpycvCc&k9A+q>+&dpi)5NR6v8R16|i$s;XvK zJOaQxSx%bcaBKzo$HK#h28)Z^JS$fY`LMU7yQ^zXTwL6!F&+g*T^l#v1SH@mbKw)G zPIfgP)Z6q;qNL5vQbs*3C5JgcYtaE2(4gmX&CB;Cx4p(%@pVFfM2?+^qpmZcY{zOQB z|MG#Nq7y>}1=lo9>!Pd-MNy`TQdmbvM`l7o!Wk=2As)*zmdD2*7LTW1s}5^`PjpBZ z@U~x%{+$Bwlv-Bt#(U(KlXlke7xLo>C!eI z1=9c|0Z-}h#iSn9;Zr~p@CGR#$G2I}?iu(izW@ICCyJIr)c{mX?Qr-3()ZEuy8RWmRfwYFlDb(qVJ5t+iDq zFdM}{mk!ken!P<*1nd>yu}-F@rn)SA8Zb$xrKh**#`Aa0&9Y%2P~P|&GiP20Y(iBdy!Hfww-)%oSB{1OwYJkRu2HEmuODzI0U7)uOOcQ|q2807QrsL7ISy`t6zOAo+53u0luzB<5HdR&oCd*HAk5yhHYHJr|7Z<-Z z6dfJ*)sZ9nCY4Yx&*lOj8&fI%=*bt=Jb3V+CNwm3*Hk&GC<+nh&Mklo~k|bsLvc2&9dAkm~MoUUcfH}8TtoZ(fELZwdFEO3}7UM3k0eIDzx(IX{7vh`1 zU0~Szh7ZgK76388^T0|V2sjBG4djMDEudbY7Xd4bgJXc_fO*E{W!Cr-Jis5u2iydH j2Ce|@05|(FS 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 diff --git a/paradise.dme b/paradise.dme index fa33cb1324b..3b01e089723 100644 --- a/paradise.dme +++ b/paradise.dme @@ -239,6 +239,7 @@ #include "code\defines\procs\AStar.dm" #include "code\defines\procs\dbcore.dm" #include "code\defines\procs\hud.dm" +#include "code\defines\procs\radio.dm" #include "code\defines\procs\sd_Alert.dm" #include "code\defines\procs\statistics.dm" #include "code\game\asteroid.dm" @@ -959,6 +960,7 @@ #include "code\modules\clothing\masks\breath.dm" #include "code\modules\clothing\masks\gasmask.dm" #include "code\modules\clothing\masks\miscellaneous.dm" +#include "code\modules\clothing\masks\voice.dm" #include "code\modules\clothing\shoes\colour.dm" #include "code\modules\clothing\shoes\magboots.dm" #include "code\modules\clothing\shoes\miscellaneous.dm" @@ -1159,6 +1161,7 @@ #include "code\modules\mob\abilities.dm" #include "code\modules\mob\death.dm" #include "code\modules\mob\emote.dm" +#include "code\modules\mob\hear_say.dm" #include "code\modules\mob\holder.dm" #include "code\modules\mob\inventory.dm" #include "code\modules\mob\language.dm" @@ -1172,6 +1175,7 @@ #include "code\modules\mob\mob_transformation_simple.dm" #include "code\modules\mob\say.dm" #include "code\modules\mob\transform_procs.dm" +#include "code\modules\mob\typing_indicator.dm" #include "code\modules\mob\update_icons.dm" #include "code\modules\mob\camera\camera.dm" #include "code\modules\mob\dead\death.dm" From c89e3ac1eba9f9d493e53ee9c3f57ed155cbf83e Mon Sep 17 00:00:00 2001 From: Markolie Date: Fri, 20 Feb 2015 17:59:07 +0100 Subject: [PATCH 18/39] Revert "Revert "Emergency communications hotfix"" This reverts commit 3ea36839a8ecf6cd5c614e158d0ca4a256d2927d. --- code/controllers/communications.dm | 290 ++++++++---------- code/datums/wires/airlock.dm | 18 +- code/game/gamemodes/nuclear/nuclearbomb.dm | 1 - code/game/machinery/alarm.dm | 2 - code/game/machinery/bots/mulebot.dm | 2 +- code/game/machinery/doors/airlock.dm | 13 +- code/game/machinery/doors/airlock_control.dm | 35 +-- .../embedded_controller/airlock_program.dm | 2 +- .../embedded_controller_base.dm | 12 +- code/game/objects/items/devices/PDA/radio.dm | 2 + .../objects/items/devices/radio/headset.dm | 2 +- .../objects/items/devices/radio/intercom.dm | 14 +- code/game/objects/objs.dm | 5 + code/modules/assembly/signaler.dm | 13 +- code/modules/client/preferences_toggles.dm | 2 +- code/modules/mob/living/silicon/pai/pai.dm | 2 +- code/setup.dm | 2 +- 17 files changed, 185 insertions(+), 232 deletions(-) diff --git a/code/controllers/communications.dm b/code/controllers/communications.dm index 523cc7055b9..6fc3faab894 100644 --- a/code/controllers/communications.dm +++ b/code/controllers/communications.dm @@ -40,7 +40,7 @@ obj/proc/receive_signal(datum/signal/signal, var/receive_method as num, var/receive_param) Handler from received signals. By default does nothing. Define your own for your object. - Avoid of sending signals directly from this proc, use spawn(-1). Do not use sleep() here please. + Avoid of sending signals directly from this proc, use spawn(-1). DO NOT use sleep() here or call procs that sleep please. If you must, use spawn() parameters: signal - see description below. Extract all needed data from the signal before doing sleep(), spawn() or return! receive_method - may be TRANSMISSION_WIRE or TRANSMISSION_RADIO. @@ -61,33 +61,6 @@ */ -/* the radio controller is a confusing piece of shit and didnt work - so i made radios not use the radio controller. -*/ -var/list/all_radios = list() - -/proc/add_radio(var/obj/item/radio, freq) - if(!freq || !radio) - return - if(!all_radios["[freq]"]) - all_radios["[freq]"] = list(radio) - return freq - - all_radios["[freq]"] |= radio - return freq - -/proc/remove_radio(var/obj/item/radio, freq) - if(!freq || !radio) - return - if(!all_radios["[freq]"]) - return - - all_radios["[freq]"] -= radio - -/proc/remove_radio_all(var/obj/item/radio) - for(var/freq in all_radios) - all_radios["[freq]"] -= radio - /* Frequency range: 1200 to 1600 Radiochat range: 1441 to 1489 (most devices refuse to be tune to other frequency, even during mapmaking) @@ -99,10 +72,10 @@ Radio: 1355 - Medical 1357 - Engineering 1359 - Security -1441 - death squad +1341 - death squad 1443 - Confession Intercom 1347 - Cargo techs -1349 - Service +1349 - Service people Devices: 1451 - tracking implant @@ -112,7 +85,7 @@ On the map: 1311 for prison shuttle console (in fact, it is not used) 1435 for status displays 1437 for atmospherics/fire alerts -1439 for engine components +1438 for engine components 1439 for air pumps, air scrubbers, atmo control 1441 for atmospherics - supply tanks 1443 for atmospherics - distribution loop/mixed air tank @@ -160,7 +133,7 @@ var/list/CENT_FREQS = list(ERT_FREQ, DTH_FREQ) // Antag channels, i.e. Syndicate var/list/ANTAG_FREQS = list(SYND_FREQ) -//depending helpers +//depenging helpers var/list/DEPT_FREQS = list(SCI_FREQ, MED_FREQ, ENG_FREQ, SEC_FREQ, SUP_FREQ, SRV_FREQ, ERT_FREQ, SYND_FREQ, DTH_FREQ) #define TRANSMISSION_WIRE 0 @@ -199,18 +172,25 @@ var/list/DEPT_FREQS = list(SCI_FREQ, MED_FREQ, ENG_FREQ, SEC_FREQ, SUP_FREQ, SRV return "radio" /* filters */ -var/const/RADIO_TO_AIRALARM = "1" -var/const/RADIO_FROM_AIRALARM = "2" -var/const/RADIO_CHAT = "3" -var/const/RADIO_ATMOSIA = "4" -var/const/RADIO_NAVBEACONS = "5" -var/const/RADIO_AIRLOCK = "6" -var/const/RADIO_SECBOT = "7" -var/const/RADIO_MULEBOT = "8" -var/const/RADIO_MAGNETS = "9" +//When devices register with the radio controller, they might register under a certain filter. +//Other devices can then choose to send signals to only those devices that belong to a particular filter. +//This is done for performance, so we don't send signals to lots of machines unnecessarily. + +//This filter is special because devices belonging to default also recieve signals sent to any other filter. +var/const/RADIO_DEFAULT = "radio_default" + +var/const/RADIO_TO_AIRALARM = "radio_airalarm" //air alarms +var/const/RADIO_FROM_AIRALARM = "radio_airalarm_rcvr" //devices interested in recieving signals from air alarms +var/const/RADIO_CHAT = "radio_telecoms" +var/const/RADIO_ATMOSIA = "radio_atmos" +var/const/RADIO_NAVBEACONS = "radio_navbeacon" +var/const/RADIO_AIRLOCK = "radio_airlock" +var/const/RADIO_SECBOT = "radio_secbot" +var/const/RADIO_MULEBOT = "radio_mulebot" var/const/RADIO_CLEANBOT = "10" var/const/RADIO_FLOORBOT = "11" var/const/RADIO_MEDBOT = "12" +var/const/RADIO_MAGNETS = "radio_magnet" var/global/datum/controller/radio/radio_controller @@ -218,164 +198,138 @@ var/global/datum/controller/radio/radio_controller radio_controller = new /datum/controller/radio() return 1 -datum/controller/radio +//callback used by objects to react to incoming radio signals +/obj/proc/receive_signal(datum/signal/signal, receive_method, receive_param) + return null + +//The global radio controller +/datum/controller/radio var/list/datum/radio_frequency/frequencies = list() - proc/add_object(obj/device as obj, var/new_frequency as num, var/filter = null as text|null) - var/f_text = num2text(new_frequency) - var/datum/radio_frequency/frequency = frequencies[f_text] +/datum/controller/radio/proc/add_object(obj/device as obj, var/new_frequency as num, var/filter = null as text|null) + var/f_text = num2text(new_frequency) + var/datum/radio_frequency/frequency = frequencies[f_text] - if(!frequency) - frequency = new - frequency.frequency = new_frequency - frequencies[f_text] = frequency + if(!frequency) + frequency = new + frequency.frequency = new_frequency + frequencies[f_text] = frequency - frequency.add_listener(device, filter) - return frequency + frequency.add_listener(device, filter) + return frequency - proc/remove_object(obj/device, old_frequency) - var/f_text = num2text(old_frequency) - var/datum/radio_frequency/frequency = frequencies[f_text] +/datum/controller/radio/proc/remove_object(obj/device, old_frequency) + var/f_text = num2text(old_frequency) + var/datum/radio_frequency/frequency = frequencies[f_text] - if(frequency) - frequency.remove_listener(device) + if(frequency) + frequency.remove_listener(device) - if(frequency.devices.len == 0) - del(frequency) - frequencies -= f_text + if(frequency.devices.len == 0) + del(frequency) + frequencies -= f_text - return 1 + return 1 - proc/return_frequency(var/new_frequency as num) - var/f_text = num2text(new_frequency) - var/datum/radio_frequency/frequency = frequencies[f_text] +/datum/controller/radio/proc/return_frequency(var/new_frequency as num) + var/f_text = num2text(new_frequency) + var/datum/radio_frequency/frequency = frequencies[f_text] - if(!frequency) - frequency = new - frequency.frequency = new_frequency - frequencies[f_text] = frequency + if(!frequency) + frequency = new + frequency.frequency = new_frequency + frequencies[f_text] = frequency - return frequency + return frequency -datum/radio_frequency +/datum/radio_frequency var/frequency as num var/list/list/obj/devices = list() - proc - post_signal(obj/source as obj|null, datum/signal/signal, var/filter = null as text|null, var/range = null as num|null) - //log_admin("DEBUG \[[world.timeofday]\]: post_signal {source=\"[source]\", [signal.debug_print()], filter=[filter]}") -// var/N_f=0 -// var/N_nf=0 -// var/Nt=0 - var/turf/start_point - if(range) - start_point = get_turf(source) - if(!start_point) - del(signal) - return 0 - if (filter) //here goes some copypasta. It is for optimisation. -rastaf0 - for(var/obj/device in devices[filter]) - if(device == source) - continue - if(range) - var/turf/end_point = get_turf(device) - if(!end_point) - continue - //if(max(abs(start_point.x-end_point.x), abs(start_point.y-end_point.y)) <= range) - if(start_point.z!=end_point.z || get_dist(start_point, end_point) > range) - continue - device.receive_signal(signal, TRANSMISSION_RADIO, frequency) - for(var/obj/device in devices["_default"]) - if(device == source) - continue - if(range) - var/turf/end_point = get_turf(device) - if(!end_point) - continue - //if(max(abs(start_point.x-end_point.x), abs(start_point.y-end_point.y)) <= range) - if(start_point.z!=end_point.z || get_dist(start_point, end_point) > range) - continue - device.receive_signal(signal, TRANSMISSION_RADIO, frequency) -// N_f++ - else - for (var/next_filter in devices) -// var/list/obj/DDD = devices[next_filter] -// Nt+=DDD.len - for(var/obj/device in devices[next_filter]) - if(device == source) - continue - if(range) - var/turf/end_point = get_turf(device) - if(!end_point) - continue - //if(max(abs(start_point.x-end_point.x), abs(start_point.y-end_point.y)) <= range) - if(start_point.z!=end_point.z || get_dist(start_point, end_point) > range) - continue - device.receive_signal(signal, TRANSMISSION_RADIO, frequency) -// N_nf++ +/datum/radio_frequency/proc/post_signal(obj/source as obj|null, datum/signal/signal, var/filter = null as text|null, var/range = null as num|null) + var/turf/start_point + if(range) + start_point = get_turf(source) + if(!start_point) + del(signal) + return 0 + if (filter) + send_to_filter(source, signal, filter, start_point, range) + send_to_filter(source, signal, RADIO_DEFAULT, start_point, range) + else + //Broadcast the signal to everyone! + for (var/next_filter in devices) + send_to_filter(source, signal, next_filter, start_point, range) -// log_admin("DEBUG: post_signal(source=[source] ([source.x], [source.y], [source.z]),filter=[filter]) frequency=[frequency], N_f=[N_f], N_nf=[N_nf]") +//Sends a signal to all machines belonging to a given filter. Should be called by post_signal() +/datum/radio_frequency/proc/send_to_filter(obj/source, datum/signal/signal, var/filter, var/turf/start_point = null, var/range = null) + if (range && !start_point) + return + for(var/obj/device in devices[filter]) + if(device == source) + continue + if(range) + var/turf/end_point = get_turf(device) + if(!end_point) + continue + if(start_point.z!=end_point.z || get_dist(start_point, end_point) > range) + continue -// del(signal) + device.receive_signal(signal, TRANSMISSION_RADIO, frequency) - add_listener(obj/device as obj, var/filter as text|null) - if (!filter) - filter = "_default" - //log_admin("add_listener(device=[device],filter=[filter]) frequency=[frequency]") - var/list/obj/devices_line = devices[filter] - if (!devices_line) - devices_line = new - devices[filter] = devices_line - devices_line+=device +/datum/radio_frequency/proc/add_listener(obj/device as obj, var/filter as text|null) + if (!filter) + filter = RADIO_DEFAULT + //log_admin("add_listener(device=[device],filter=[filter]) frequency=[frequency]") + var/list/obj/devices_line = devices[filter] + if (!devices_line) + devices_line = new + devices[filter] = devices_line + devices_line+=device // var/list/obj/devices_line___ = devices[filter_str] // var/l = devices_line___.len - //log_admin("DEBUG: devices_line.len=[devices_line.len]") - //log_admin("DEBUG: devices(filter_str).len=[l]") + //log_admin("DEBUG: devices_line.len=[devices_line.len]") + //log_admin("DEBUG: devices(filter_str).len=[l]") - remove_listener(obj/device) - for (var/devices_filter in devices) - var/list/devices_line = devices[devices_filter] - devices_line-=device - while (null in devices_line) - devices_line -= null - if (devices_line.len==0) - devices -= devices_filter - del(devices_line) +/datum/radio_frequency/proc/remove_listener(obj/device) + for (var/devices_filter in devices) + var/list/devices_line = devices[devices_filter] + devices_line-=device + while (null in devices_line) + devices_line -= null + if (devices_line.len==0) + devices -= devices_filter + del(devices_line) - -obj/proc - receive_signal(datum/signal/signal, receive_method, receive_param) - return null - -datum/signal +/datum/signal var/obj/source - var/transmission_method = 0 + var/transmission_method = 0 //unused at the moment //0 = wire //1 = radio transmission //2 = subspace transmission - var/data = list() + var/list/data = list() var/encryption var/frequency = 0 - proc/copy_from(datum/signal/model) - source = model.source - transmission_method = model.transmission_method - data = model.data - encryption = model.encryption - frequency = model.frequency +/datum/signal/proc/copy_from(datum/signal/model) + source = model.source + transmission_method = model.transmission_method + data = model.data + encryption = model.encryption + frequency = model.frequency - proc/debug_print() - if (source) - . = "signal = {source = '[source]' ([source:x],[source:y],[source:z])\n" - else - . = "signal = {source = '[source]' ()\n" - for (var/i in data) - . += "data\[\"[i]\"\] = \"[data[i]]\"\n" - if(islist(data[i])) - var/list/L = data[i] - for(var/t in L) - . += "data\[\"[i]\"\] list has: [t]" +/datum/signal/proc/debug_print() + if (source) + . = "signal = {source = '[source]' ([source:x],[source:y],[source:z])\n" + else + . = "signal = {source = '[source]' ()\n" + for (var/i in data) + . += "data\[\"[i]\"\] = \"[data[i]]\"\n" + if(islist(data[i])) + var/list/L = data[i] + for(var/t in L) + . += "data\[\"[i]\"\] list has: [t]" diff --git a/code/datums/wires/airlock.dm b/code/datums/wires/airlock.dm index 3b6d009a5ff..211e82d4394 100644 --- a/code/datums/wires/airlock.dm +++ b/code/datums/wires/airlock.dm @@ -33,14 +33,16 @@ var/const/AIRLOCK_WIRE_LIGHT = 2048 /datum/wires/airlock/GetInteractWindow() var/obj/machinery/door/airlock/A = holder + var/haspower = A.arePowerSystemsOn() . += ..() - . += text("
\n[]
\n[]
\n[]
\n[]
\n[]
\n[]
\n[]", (A.locked ? "The door bolts have fallen!" : "The door bolts look up."), - (A.lights ? "The door bolt lights are on." : "The door bolt lights are off!"), - ((A.arePowerSystemsOn() && !(A.stat & NOPOWER)) ? "The test light is on." : "The test light is off!"), - (A.aiControlDisabled==0 ? "The 'AI control allowed' light is on." : "The 'AI control allowed' light is off."), - (A.safe==0 ? "The 'Check Wiring' light is on." : "The 'Check Wiring' light is off."), - (A.normalspeed==0 ? "The 'Check Timing Mechanism' light is on." : "The 'Check Timing Mechanism' light is off."), - (A.emergency==0 ? "The emergency lights are off." : "The emergency lights are on.")) + . += text("
\n[]
\n[]
\n[]
\n[]
\n[]
\n[]
\n[]", + (A.locked ? "The door bolts have fallen!" : "The door bolts look up."), + ((A.lights && haspower) ? "The door bolt lights are on." : "The door bolt lights are off!"), + ((haspower) ? "The test light is on." : "The test light is off!"), + ((A.aiControlDisabled==0 && !A.emagged && haspower) ? "The 'AI control allowed' light is on." : "The 'AI control allowed' light is off."), + ((A.safe==0 && haspower) ? "The 'Check Wiring' light is on." : "The 'Check Wiring' light is off."), + ((A.normalspeed==0 && haspower) ? "The 'Check Timing Mechanism' light is on." : "The 'Check Timing Mechanism' light is off."), + ((A.emergency==0 && haspower) ? "The emergency lights are off." : "The emergency lights are on.")) /datum/wires/airlock/UpdateCut(var/index, var/mended) @@ -125,7 +127,7 @@ var/const/AIRLOCK_WIRE_LIGHT = 2048 switch(index) if(AIRLOCK_WIRE_IDSCAN) //Sending a pulse through this disables emergency access and flashes the red light on the door (if the door has power). - if((A.arePowerSystemsOn()) && (!(A.stat & NOPOWER))) + if((A.arePowerSystemsOn()) && A.density) A.door_animate("deny") if(A.emergency) A.emergency = 0 diff --git a/code/game/gamemodes/nuclear/nuclearbomb.dm b/code/game/gamemodes/nuclear/nuclearbomb.dm index fe3062a194c..8d4686148b1 100644 --- a/code/game/gamemodes/nuclear/nuclearbomb.dm +++ b/code/game/gamemodes/nuclear/nuclearbomb.dm @@ -23,7 +23,6 @@ var/bomb_set var/timing_wire var/removal_stage = 0 // 0 is no removal, 1 is covers removed, 2 is covers open, 3 is sealant open, 4 is unwrenched, 5 is removed from bolts. var/lastentered - flags = FPRINT use_power = 0 unacidable = 1 diff --git a/code/game/machinery/alarm.dm b/code/game/machinery/alarm.dm index 257069a0248..96b3de5fc45 100644 --- a/code/game/machinery/alarm.dm +++ b/code/game/machinery/alarm.dm @@ -142,8 +142,6 @@ pixel_x = (dir & 3)? 0 : (dir == 4 ? -24 : 24) pixel_y = (dir & 3)? (dir ==1 ? -24 : 24) : 0 update_icon() - if(ticker && ticker.current_state == 3)//if the game is running - src.initialize() return first_run() diff --git a/code/game/machinery/bots/mulebot.dm b/code/game/machinery/bots/mulebot.dm index ac28b903947..4e15b07fe01 100644 --- a/code/game/machinery/bots/mulebot.dm +++ b/code/game/machinery/bots/mulebot.dm @@ -71,7 +71,7 @@ var/global/mulebot_count = 0 cell.charge = 2000 cell.maxcharge = 2000 - spawn(50) // must wait for map loading to finish + spawn(5) // must wait for map loading to finish add_to_beacons(bot_filter) mulebot_count += 1 diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 19980597308..daa81985978 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -358,7 +358,7 @@ About the new airlock wires panel: return ((src.aiControlDisabled==1) && (!hackProof) && (!src.isAllPowerLoss())); /obj/machinery/door/airlock/proc/arePowerSystemsOn() - if (stat & NOPOWER) + if (stat & (NOPOWER|BROKEN)) return 0 return (src.secondsMainPowerLost==0 || src.secondsBackupPowerLost==0) @@ -473,7 +473,8 @@ About the new airlock wires panel: if("spark") flick("door_spark", src) if("deny") - flick("door_deny", src) + if(density && src.arePowerSystemsOn()) + flick("door_deny", src) return /obj/machinery/door/airlock/attack_ai(mob/user as mob) @@ -1028,19 +1029,19 @@ About the new airlock wires panel: if(density) if(beingcrowbarred == 0) //being fireaxe'd var/obj/item/weapon/twohanded/fireaxe/F = C - if(F:wielded) + if(F.wielded) spawn(0) open(1) else - user << "\red You need to be wielding the Fire axe to do that." + user << "\red You need to be wielding \the [C] to do that." else spawn(0) open(1) else if(beingcrowbarred == 0) var/obj/item/weapon/twohanded/fireaxe/F = C - if(F:wielded) + if(F.wielded) spawn(0) close(1) else - user << "\red You need to be wielding the Fire axe to do that." + user << "\red You need to be wielding \the [C] to do that." else spawn(0) close(1) else diff --git a/code/game/machinery/doors/airlock_control.dm b/code/game/machinery/doors/airlock_control.dm index 498d7449a36..ad9d9910365 100644 --- a/code/game/machinery/doors/airlock_control.dm +++ b/code/game/machinery/doors/airlock_control.dm @@ -8,11 +8,6 @@ obj/machinery/door/airlock var/datum/radio_frequency/radio_connection var/cur_command = null //the command the door is currently attempting to complete -obj/machinery/door/airlock/proc/can_radio() - if(!arePowerSystemsOn()) - return 0 - return 1 - obj/machinery/door/airlock/process() ..() if (arePowerSystemsOn()) @@ -21,14 +16,13 @@ obj/machinery/door/airlock/process() obj/machinery/door/airlock/receive_signal(datum/signal/signal) if (!arePowerSystemsOn()) return //no power - if (!can_radio()) return //no radio - if(!signal || signal.encryption) return if(id_tag != signal.data["tag"] || !signal.data["command"]) return cur_command = signal.data["command"] - execute_current_command() + spawn() + execute_current_command() obj/machinery/door/airlock/proc/execute_current_command() if(operating) @@ -94,7 +88,7 @@ obj/machinery/door/airlock/proc/command_completed(var/command) return 1 //Unknown command. Just assume it's completed. -obj/machinery/door/airlock/proc/send_status() +obj/machinery/door/airlock/proc/send_status(var/bumped = 0) if(radio_connection) var/datum/signal/signal = new signal.transmission_method = 1 //radio signal @@ -103,6 +97,9 @@ obj/machinery/door/airlock/proc/send_status() signal.data["door_status"] = density?("closed"):("open") signal.data["lock_status"] = locked?("locked"):("unlocked") + + if (bumped) + signal.data["bumped_with_access"] = 1 radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = RADIO_AIRLOCK) @@ -122,17 +119,7 @@ obj/machinery/door/airlock/Bumped(atom/AM) if(istype(AM, /obj/mecha)) var/obj/mecha/mecha = AM if(density && radio_connection && mecha.occupant && (src.allowed(mecha.occupant) || src.check_access_list(mecha.operation_req_access))) - var/datum/signal/signal = new - signal.transmission_method = 1 //radio signal - signal.data["tag"] = id_tag - signal.data["timestamp"] = world.time - - signal.data["door_status"] = density?("closed"):("open") - signal.data["lock_status"] = locked?("locked"):("unlocked") - - signal.data["bumped_with_access"] = 1 - - radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = RADIO_AIRLOCK) + send_status(1) return obj/machinery/door/airlock/proc/set_frequency(new_frequency) @@ -258,6 +245,12 @@ obj/machinery/access_button/update_icon() else icon_state = "access_button_off" +obj/machinery/access_button/attackby(obj/item/I as obj, mob/user as mob) + //Swiping ID on the access button + if (istype(I, /obj/item/weapon/card/id) || istype(I, /obj/item/device/pda)) + attack_hand(user) + return + ..() obj/machinery/access_button/attack_hand(mob/user) add_fingerprint(usr) @@ -296,4 +289,4 @@ obj/machinery/access_button/airlock_interior obj/machinery/access_button/airlock_exterior frequency = 1379 - command = "cycle_exterior" + command = "cycle_exterior" \ No newline at end of file diff --git a/code/game/machinery/embedded_controller/airlock_program.dm b/code/game/machinery/embedded_controller/airlock_program.dm index 90a2ca57206..24c49f9fa55 100644 --- a/code/game/machinery/embedded_controller/airlock_program.dm +++ b/code/game/machinery/embedded_controller/airlock_program.dm @@ -265,7 +265,7 @@ var/datum/signal/signal = new signal.data["tag"] = tag signal.data["command"] = command - post_signal(signal) + post_signal(signal, RADIO_AIRLOCK) /datum/computer/file/embedded_program/airlock/proc/signalPump(var/tag, var/power, var/direction, var/pressure) var/datum/signal/signal = new diff --git a/code/game/machinery/embedded_controller/embedded_controller_base.dm b/code/game/machinery/embedded_controller/embedded_controller_base.dm index a9a8b40ed58..ec411753803 100644 --- a/code/game/machinery/embedded_controller/embedded_controller_base.dm +++ b/code/game/machinery/embedded_controller/embedded_controller_base.dm @@ -3,6 +3,9 @@ name = "Embedded Controller" anchored = 1 + + use_power = 1 + idle_power_usage = 10 var/on = 1 @@ -43,8 +46,10 @@ density = 0 var/id_tag + //var/radio_power_use = 50 //power used to xmit signals var/frequency = 1379 + var/radio_filter = null var/datum/radio_frequency/radio_connection unacidable = 1 @@ -60,14 +65,15 @@ else icon_state = "airlock_control_off" -/obj/machinery/embedded_controller/radio/post_signal(datum/signal/signal) +/obj/machinery/embedded_controller/radio/post_signal(datum/signal/signal, var/filter = null) signal.transmission_method = TRANSMISSION_RADIO if(radio_connection) - return radio_connection.post_signal(src, signal) + //use_power(radio_power_use) //neat idea, but causes way too much lag. + return radio_connection.post_signal(src, signal, filter) else del(signal) /obj/machinery/embedded_controller/radio/proc/set_frequency(new_frequency) radio_controller.remove_object(src, frequency) frequency = new_frequency - radio_connection = radio_controller.add_object(src, frequency) \ No newline at end of file + radio_connection = radio_controller.add_object(src, frequency, radio_filter) \ No newline at end of file diff --git a/code/game/objects/items/devices/PDA/radio.dm b/code/game/objects/items/devices/PDA/radio.dm index 63f1082884f..e3ea25af4e4 100644 --- a/code/game/objects/items/devices/PDA/radio.dm +++ b/code/game/objects/items/devices/PDA/radio.dm @@ -48,6 +48,8 @@ signal.data[key4] = value4 frequency.post_signal(src, signal, filter = s_filter) + + return /obj/item/radio/integrated/receive_signal(datum/signal/signal) /*var/obj/item/device/pda/P = src.loc diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm index 29854facc67..6cb551ceac3 100644 --- a/code/game/objects/items/devices/radio/headset.dm +++ b/code/game/objects/items/devices/radio/headset.dm @@ -127,7 +127,7 @@ /obj/item/device/radio/headset/heads/captain/alt name = "\proper the captain's bowman headset" - desc = "The headset of the boss. Protects ears from flashbangs. \nChannels are as follows: :c - command, :s - security, :e - engineering, :u - supply, :zz - service, :m - medical, :n - science." + desc = "The headset of the boss. Protects ears from flashbangs. \nChannels are as follows: :c - command, :s - security, :e - engineering, :u - supply, :z - service, :m - medical, :n - science." flags = EARBANGPROTECT icon_state = "com_headset_alt" item_state = "com_headset_alt" diff --git a/code/game/objects/items/devices/radio/intercom.dm b/code/game/objects/items/devices/radio/intercom.dm index 0f5f9f64ac1..567dc49bf4f 100644 --- a/code/game/objects/items/devices/radio/intercom.dm +++ b/code/game/objects/items/devices/radio/intercom.dm @@ -4,7 +4,7 @@ icon_state = "intercom" anchored = 1 w_class = 4.0 - canhear_range = 5 + canhear_range = 2 flags = CONDUCT | NOBLOODY var/number = 0 var/anyai = 1 @@ -15,7 +15,7 @@ ..() processing_objects += src -/obj/item/device/radio/intercom/Destroy() +/obj/item/device/radio/intercom/Del() processing_objects -= src ..() @@ -24,10 +24,6 @@ spawn (0) attack_self(user) -/obj/item/device/radio/intercom/attack_paw(mob/user as mob) - return src.attack_hand(user) - - /obj/item/device/radio/intercom/attack_hand(mob/user as mob) src.add_fingerprint(user) spawn (0) @@ -36,15 +32,13 @@ /obj/item/device/radio/intercom/receive_range(freq, level) if (!on) return -1 - if (isWireCut(WIRE_RECEIVE)) - return -1 if(!(0 in level)) var/turf/position = get_turf(src) if(isnull(position) || !(position.z in level)) return -1 if (!src.listening) return -1 - if(freq == SYND_FREQ) + if(freq in ANTAG_FREQS) if(!(src.syndie)) return -1//Prevents broadcast of messages over devices lacking the encryption @@ -72,4 +66,4 @@ if(!on) icon_state = "intercom-p" else - icon_state = "intercom" \ No newline at end of file + icon_state = "intercom" diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index 6049d30bd51..a1b04e09896 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -21,6 +21,11 @@ // Reagent ID => friendly name var/list/reagents_to_log=list() +/obj/New() + ..() + if(ticker && ticker.current_state == GAME_STATE_PLAYING) + initialize() + /obj/Topic(href, href_list, var/nowindow = 0, var/checkrange = 1) // Calling Topic without a corresponding window open causes runtime errors if(!nowindow && ..()) diff --git a/code/modules/assembly/signaler.dm b/code/modules/assembly/signaler.dm index 4d24559ef0c..a46b683ca45 100644 --- a/code/modules/assembly/signaler.dm +++ b/code/modules/assembly/signaler.dm @@ -144,14 +144,13 @@ proc/set_frequency(new_frequency) - if(!radio_controller) - sleep(20) - if(!radio_controller) + spawn(20) + if(!radio_controller) + return + radio_controller.remove_object(src, frequency) + frequency = new_frequency + radio_connection = radio_controller.add_object(src, frequency, RADIO_CHAT) return - radio_controller.remove_object(src, frequency) - frequency = new_frequency - radio_connection = radio_controller.add_object(src, frequency, RADIO_CHAT) - return // Embedded signaller used in anomalies. /obj/item/device/assembly/signaler/anomaly diff --git a/code/modules/client/preferences_toggles.dm b/code/modules/client/preferences_toggles.dm index 2960f159546..06c82bfc529 100644 --- a/code/modules/client/preferences_toggles.dm +++ b/code/modules/client/preferences_toggles.dm @@ -33,7 +33,7 @@ if(!holder) return prefs.toggles ^= CHAT_RADIO prefs.save_preferences(src) - usr << "You will [(prefs.toggles & CHAT_RADIO) ? "no longer" : "now"] see radio chatter from radios or speakers" + usr << "You will [(prefs.toggles & CHAT_RADIO) ? "now" : "no longer"] see radio chatter from radios or speakers" feedback_add_details("admin_verb","THR") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/verb/toggleadminhelpsound() diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm index d62c5f544d4..85c15c7989a 100644 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -342,7 +342,7 @@ //I'm not sure how much of this is necessary, but I would rather avoid issues. if(istype(card.loc,/mob)) var/mob/holder = card.loc - holder.drop_from_inventory(card) + holder.unEquip(card) else if(istype(card.loc,/obj/item/clothing/suit/space/space_ninja)) var/obj/item/clothing/suit/space/space_ninja/holder = card.loc holder.pai = null diff --git a/code/setup.dm b/code/setup.dm index c2981325856..2d05f300323 100644 --- a/code/setup.dm +++ b/code/setup.dm @@ -725,7 +725,7 @@ var/list/TAGGERLOCATIONS = list("Disposals", #define SOUND_STREAMING 16 #define SOUND_DEFAULT (SOUND_ADMINHELP|SOUND_MIDI|SOUND_AMBIENCE|SOUND_LOBBY|SOUND_STREAMING) -#define TOGGLES_DEFAULT (CHAT_OOC|CHAT_DEAD|CHAT_GHOSTEARS|CHAT_GHOSTSIGHT|CHAT_PRAYER|CHAT_ATTACKLOGS|CHAT_LOOC) +#define TOGGLES_DEFAULT (CHAT_OOC|CHAT_DEAD|CHAT_GHOSTEARS|CHAT_GHOSTSIGHT|CHAT_PRAYER|CHAT_RADIO|CHAT_ATTACKLOGS|CHAT_LOOC) #define BE_TRAITOR 1 #define BE_OPERATIVE 2 From c399b6d2767f512492926163a0f7e73a7fbc8b2f Mon Sep 17 00:00:00 2001 From: ZomgPonies Date: Fri, 20 Feb 2015 12:46:27 -0500 Subject: [PATCH 19/39] Fax and comms console event flag fix --- code/modules/admin/verbs/pray.dm | 64 ++-------------------------- code/modules/paperwork/faxmachine.dm | 60 +++++++++++++------------- 2 files changed, 34 insertions(+), 90 deletions(-) diff --git a/code/modules/admin/verbs/pray.dm b/code/modules/admin/verbs/pray.dm index caab5c8b258..549a2140c2d 100644 --- a/code/modules/admin/verbs/pray.dm +++ b/code/modules/admin/verbs/pray.dm @@ -15,23 +15,9 @@ var/image/cross = image('icons/obj/storage.dmi',"bible") msg = "\blue \icon[cross] PRAY: [key_name(src, 1)] (
?) (PP) (VV) (SM) (JMP) (CA) (SC): [msg]" - var/list/eventholders = list() - var/list/banholders = list() - for(var/client/X in admins) if(R_EVENT & X.holder.rights) - eventholders += X - if(R_BAN & X.holder.rights) - banholders += X - - if(eventholders.len) - for(var/client/C in eventholders) - if(C.prefs.toggles & CHAT_PRAYER) - C << msg - else if (banholders.len) - for(var/client/C in banholders) - if(C.prefs.toggles & CHAT_PRAYER) - C << msg + X << msg usr << "Your prayers have been received by the gods." @@ -42,64 +28,22 @@ var/msg = copytext(sanitize(text), 1, MAX_MESSAGE_LEN) msg = "\blue CENTCOMM:[key_name(Sender, 1)] (PP) (VV) (SM) (JMP) (CA) (BSA) (RPLY): [msg]" - var/list/eventholders = list() - var/list/banholders = list() - for(var/client/X in admins) if(R_EVENT & X.holder.rights) - eventholders += X - if(R_BAN & X.holder.rights) - banholders += X - - if(eventholders.len) - for(var/client/C in eventholders) - C << msg - return - else if (banholders.len) - for(var/client/C in banholders) - C << msg - return + X << msg /proc/Syndicate_announce(var/text , var/mob/Sender) var/msg = copytext(sanitize(text), 1, MAX_MESSAGE_LEN) msg = "\blue SYNDICATE: [key_name(Sender, 1)] (PP) (VV) (SM) (JMP) (CA) (BSA) (REPLY): [msg]" - var/list/eventholders = list() - var/list/banholders = list() - for(var/client/X in admins) if(R_EVENT & X.holder.rights) - eventholders += X - if(R_BAN & X.holder.rights) - banholders += X - - if(eventholders.len) - for(var/client/C in eventholders) - C << msg - return - else if (banholders.len) - for(var/client/C in banholders) - C << msg - return + X << msg /proc/HONK_announce(var/text , var/mob/Sender) var/msg = copytext(sanitize(text), 1, MAX_MESSAGE_LEN) msg = "\blue HONK:[key_name(Sender, 1)] (PP) (VV) (SM) (JMP) (CA) (BSA) (RPLY): [msg]" - var/list/eventholders = list() - var/list/banholders = list() - for(var/client/X in admins) if(R_EVENT & X.holder.rights) - eventholders += X - if(R_BAN & X.holder.rights) - banholders += X - - if(eventholders.len) - for(var/client/C in eventholders) - C << msg - return - else if (banholders.len) - for(var/client/C in banholders) - C << msg - return \ No newline at end of file + X << msg \ No newline at end of file diff --git a/code/modules/paperwork/faxmachine.dm b/code/modules/paperwork/faxmachine.dm index 98726004ea4..b5df316c7b0 100644 --- a/code/modules/paperwork/faxmachine.dm +++ b/code/modules/paperwork/faxmachine.dm @@ -8,7 +8,7 @@ var/list/alldepartments = list() icon = 'icons/obj/library.dmi' icon_state = "fax" insert_anim = "faxsend" - req_one_access = list(access_lawyer, access_heads, access_armory) + req_one_access = list(access_lawyer, access_heads, access_armory) use_power = 1 idle_power_usage = 30 @@ -21,7 +21,7 @@ var/list/alldepartments = list() var/department = "Unknown" // our department var/destination = "Central Command" // the department we're sending to - + var/data[0] /obj/machinery/photocopier/faxmachine/New() @@ -33,7 +33,7 @@ var/list/alldepartments = list() /obj/machinery/photocopier/faxmachine/attack_hand(mob/user as mob) ui_interact(user) - + /obj/machinery/photocopier/faxmachine/attackby(obj/item/weapon/item, mob/user) if(istype(item,/obj/item/weapon/card/id) && !scan) scan(item) @@ -42,14 +42,14 @@ var/list/alldepartments = list() nanomanager.update_uis(src) else return ..() - + /obj/machinery/photocopier/faxmachine/emag_act(user as mob) if(!emagged) emagged = 1 user << "The transmitters realign to an unknown source!" else user << "You swipe the card through [src], but nothing happens." - + /obj/machinery/photocopier/faxmachine/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) if(scan) data["scan_name"] = scan.name @@ -75,23 +75,23 @@ var/list/alldepartments = list() else data["respectcooldown"] = 0 - ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) + ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) if (!ui) ui = new(user, src, ui_key, "faxmachine.tmpl", "Fax Machine UI", 540, 450) - ui.set_initial_data(data) + ui.set_initial_data(data) ui.open() /obj/machinery/photocopier/faxmachine/Topic(href, href_list) if(..()) return 1 - + if(href_list["send"]) if(copyitem && authenticated) if ((destination in admin_departments) || (destination in hidden_admin_departments)) send_admin_fax(usr, destination) else sendfax(destination,usr) - + if (sendcooldown) spawn(sendcooldown) // cooldown time sendcooldown = 0 @@ -122,7 +122,7 @@ var/list/alldepartments = list() if(emagged) combineddepartments += hidden_admin_departments destination = input(usr, "To which department?", "Choose a department", "") as null|anything in combineddepartments - if(!destination) + if(!destination) destination = lastdestination if(href_list["auth"]) @@ -131,22 +131,22 @@ var/list/alldepartments = list() authenticated = 1 else if(authenticated) authenticated = 0 - + if(href_list["rename"]) if(copyitem) var/n_name = copytext(sanitize(input(usr, "What would you like to label the fax?", "Fax Labelling", copyitem.name) as text), 1, MAX_MESSAGE_LEN) if((copyitem && copyitem.loc == src && usr.stat == 0)) - if (istype(copyitem, /obj/item/weapon/paper)) - copyitem.name = "[(n_name ? text("[n_name]") : initial(copyitem.name))]" - copyitem.desc = "This is a paper titled '" + copyitem.name + "'." - else if(istype(copyitem, /obj/item/weapon/photo)) + if (istype(copyitem, /obj/item/weapon/paper)) + copyitem.name = "[(n_name ? text("[n_name]") : initial(copyitem.name))]" + copyitem.desc = "This is a paper titled '" + copyitem.name + "'." + else if(istype(copyitem, /obj/item/weapon/photo)) copyitem.name = "[(n_name ? text("[n_name]") : "photo")]" else if(istype(copyitem, /obj/item/weapon/paper_bundle)) copyitem.name = "[(n_name ? text("[n_name]") : "paper")]" - data["name"] = copyitem.name + data["name"] = copyitem.name nanomanager.update_uis(src) - + /obj/machinery/photocopier/faxmachine/proc/scan(var/obj/item/weapon/card/id/card = null) if(scan) // Card is in machine if(ishuman(usr)) @@ -174,14 +174,14 @@ var/list/alldepartments = list() /obj/machinery/photocopier/faxmachine/proc/sendfax(var/destination,var/mob/sender) if(stat & (BROKEN|NOPOWER)) return - + use_power(200) - + var/success = 0 for(var/obj/machinery/photocopier/faxmachine/F in allfaxes) if( F.department == destination ) success = F.receivefax(copyitem) - + if (success) var/datum/fax/F = new /datum/fax() F.name = copyitem.name @@ -191,7 +191,7 @@ var/list/alldepartments = list() F.message = copyitem F.sent_by = sender F.sent_at = world.time - + visible_message("[src] beeps, \"Message transmitted successfully.\"") //sendcooldown = 600 else @@ -200,16 +200,16 @@ var/list/alldepartments = list() /obj/machinery/photocopier/faxmachine/proc/receivefax(var/obj/item/incoming) if(stat & (BROKEN|NOPOWER)) return 0 - + if(department == "Unknown") return 0 //You can't send faxes to "Unknown" flick("faxreceive", src) playsound(loc, "sound/items/polaroid1.ogg", 50, 1) - + // give the sprite some time to flick sleep(20) - + if (istype(incoming, /obj/item/weapon/paper)) copy(incoming) else if (istype(incoming, /obj/item/weapon/photo)) @@ -225,7 +225,7 @@ var/list/alldepartments = list() /obj/machinery/photocopier/faxmachine/proc/send_admin_fax(var/mob/sender, var/destination) if(stat & (BROKEN|NOPOWER)) return - + use_power(200) var/obj/item/rcvdcopy @@ -238,9 +238,9 @@ var/list/alldepartments = list() else visible_message("[src] beeps, \"Error transmitting message.\"") return - + rcvdcopy.loc = null //hopefully this shouldn't cause trouble - + var/datum/fax/admin/A = new /datum/fax/admin() A.name = rcvdcopy.name A.from_department = department @@ -249,7 +249,7 @@ var/list/alldepartments = list() A.message = rcvdcopy A.sent_by = sender A.sent_at = world.time - + //message badmins that a fax has arrived switch(destination) if ("Central Command") @@ -259,11 +259,11 @@ var/list/alldepartments = list() sendcooldown = 1800 sleep(50) visible_message("[src] beeps, \"Message transmitted successfully.\"") - + /obj/machinery/photocopier/faxmachine/proc/message_admins(var/mob/sender, var/faxname, var/faxtype, var/obj/item/sent, font_colour="#006100") var/msg = "\blue [faxname]: [key_name(sender, 1)] (PP) (VV) (SM) (JMP) (CA) (BSA) (REPLY): Receiving '[sent.name]' via secure connection... view message" for(var/client/C in admins) - if(R_ADMIN & C.holder.rights) + if(R_EVENT & C.holder.rights) C << msg From ef2c939872e83dc0eb64ebdfbd883316a657d594 Mon Sep 17 00:00:00 2001 From: Artorp Date: Fri, 20 Feb 2015 19:20:21 +0100 Subject: [PATCH 20/39] Change space law iframe wiki link --- code/game/objects/items/weapons/manuals.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/weapons/manuals.dm b/code/game/objects/items/weapons/manuals.dm index 699cada546e..3e3b67fe6af 100644 --- a/code/game/objects/items/weapons/manuals.dm +++ b/code/game/objects/items/weapons/manuals.dm @@ -673,7 +673,7 @@ - + From 2c6d2f07fca621638df533f75e355eb5ebfa0bb4 Mon Sep 17 00:00:00 2001 From: ZomgPonies Date: Fri, 20 Feb 2015 11:17:03 -0500 Subject: [PATCH 21/39] Fix PDA bug --- code/modules/mob/living/carbon/human/inventory.dm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm index 30e3f9dc5f5..23327fd3211 100644 --- a/code/modules/mob/living/carbon/human/inventory.dm +++ b/code/modules/mob/living/carbon/human/inventory.dm @@ -163,6 +163,9 @@ else if(I == wear_id) wear_id = null update_inv_wear_id(0) + else if(I == wear_pda) + wear_pda = null + update_inv_wear_pda(0) else if(I == r_store) r_store = null update_inv_pockets(0) From e237fbd5e7e3f6fa41983a98b2e8877806d5ee4f Mon Sep 17 00:00:00 2001 From: ZomgPonies Date: Fri, 20 Feb 2015 11:24:56 -0500 Subject: [PATCH 22/39] Fixes clicking not turning you --- code/_onclick/click.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index a0da39a2976..fb2f17d46a9 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -65,6 +65,8 @@ if(stat || paralysis || stunned || weakened) return + face_atom(A) + if(next_move > world.time) // in the year 2000... return From 6bac3781d05f4c849fc1e026d4d9d3cc4b2c247a Mon Sep 17 00:00:00 2001 From: ZomgPonies Date: Fri, 20 Feb 2015 11:37:05 -0500 Subject: [PATCH 23/39] Fixed handcuffs, legcuffs and others --- .../modules/mob/living/carbon/human/inventory.dm | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm index 23327fd3211..007281ec5cf 100644 --- a/code/modules/mob/living/carbon/human/inventory.dm +++ b/code/modules/mob/living/carbon/human/inventory.dm @@ -175,6 +175,22 @@ else if(I == s_store) s_store = null update_inv_s_store(0) + else if(I == back) + back = null + update_inv_back(0) + else if(I == handcuffed) + handcuffed = null + update_inv_handcuffed(0) + else if(I == legcuffed) + legcuffed = null + update_inv_legcuffed(0) + else if(I == r_hand) + r_hand = null + update_inv_r_hand(0) + else if(I == l_hand) + l_hand = null + update_inv_l_hand(0) + update_action_buttons() From 616cc2209f174e1417c89954a5f92c6e20fb4ab1 Mon Sep 17 00:00:00 2001 From: Artorp Date: Fri, 20 Feb 2015 16:23:43 +0100 Subject: [PATCH 24/39] Overhaul of canister variables - Moves reference lists to their own datum - Changes to nanoUI data gathering, large variables are no longer stored on the atom --- code/game/machinery/atmoalter/canister.dm | 255 ++++++++++++---------- 1 file changed, 134 insertions(+), 121 deletions(-) diff --git a/code/game/machinery/atmoalter/canister.dm b/code/game/machinery/atmoalter/canister.dm index 78760cd3010..17492a83ba4 100644 --- a/code/game/machinery/atmoalter/canister.dm +++ b/code/game/machinery/atmoalter/canister.dm @@ -1,52 +1,5 @@ -/obj/machinery/portable_atmospherics/canister - name = "canister" - icon = 'icons/obj/atmos.dmi' - icon_state = "yellow" - density = 1 - var/health = 100.0 - flags = CONDUCT - - var/menu = 0 - //used by nanoui: 0 = main menu, 1 = relabel - var/valve_open = 0 - var/release_pressure = ONE_ATMOSPHERE - - var/list/_color //variable that stores colours - var/list/decals // list that stores the decals - var/list/possibledecals - var/list/oldcolor//lists for check_change() - var/list/olddecals - var/list/possiblemaincolor //these lists contain the possible colors of a canister - var/list/possibleseccolor - var/list/possibletertcolor - var/list/possiblequartcolor - var/list/colorcontainer //passed to the ui to render the color lists - - var/can_label = 1 - var/filled = 0.5 - pressure_resistance = 7*ONE_ATMOSPHERE - var/temperature_resistance = 1000 + T0C - volume = 1000 - use_power = 0 - var/release_log = "" - var/busy = 0 - var/update_flag = 0 - - New() - ..() - _color = list( - "prim" = "yellow", - "sec" = null, - "ter" = null, - "quart" = null) - oldcolor = list() - decals = list() - olddecals = list() - possibledecals = list( //var that stores all possible decals, used by ui - list("name" = "Low temperature canister", "icon" = "cold", "active" = 0), - list("name" = "High temperature canister", "icon" = "hot", "active" = 0), - list("name" = "Plasma containing canister", "icon" = "plasma", "active" = 0) - ) +/datum/canister_icons + var possiblemaincolor = list( //these lists contain the possible colors of a canister list("name" = "\[N2O\]", "icon" = "redws"), list("name" = "\[N2\]", "icon" = "red"), @@ -81,29 +34,103 @@ list("name" = "\[Air\]", "icon" = "grey-c-2"), list("name" = "\[CAUTION\]", "icon" = "yellow-c-2") ) - colorcontainer = list(//passed to the ui to render the color lists - "prim" = list( - "options" = possiblemaincolor, - "name" = "Primary color", - "anycolor" = -1,//0: no color applied. 1: color selected. Not used for primary color. - ), - "sec" = list( - "options" = possibleseccolor, - "name" = "Secondary color", - "anycolor" = 0, - ), - "ter" = list( - "options" = possibletertcolor, - "name" = "Tertiary color", - "anycolor" = 0, - ), - "quart" = list( - "options" = possiblequartcolor, - "name" = "Quaternary color", - "anycolor" = 0, - ) + + possibledecals = list( //var that stores all possible decals, used by ui + list("name" = "Low temperature canister", "icon" = "cold"), + list("name" = "High temperature canister", "icon" = "hot"), + list("name" = "Plasma containing canister", "icon" = "plasma") ) + +var/datum/canister_icons/canister_icon_container = new() + +/obj/machinery/portable_atmospherics/canister + name = "canister" + icon = 'icons/obj/atmos.dmi' + icon_state = "yellow" + density = 1 + var/health = 100.0 + flags = CONDUCT + + var/menu = 0 + //used by nanoui: 0 = main menu, 1 = relabel + + var/valve_open = 0 + var/release_pressure = ONE_ATMOSPHERE + + var/list/_color //variable that stores colours + var/list/decals //list that stores the decals + + //lists for check_change() + var/list/oldcolor + var/list/olddecals + + //passed to the ui to render the color lists + var/list/colorcontainer + var/list/possibledecals + + var/can_label = 1 + var/filled = 0.5 + pressure_resistance = 7*ONE_ATMOSPHERE + var/temperature_resistance = 1000 + T0C + volume = 1000 + use_power = 0 + var/release_log = "" + var/busy = 0 + var/update_flag = 0 + + New() + ..() + _color = list( + "prim" = "yellow", + "sec" = "none", + "ter" = "none", + "quart" = "none") + oldcolor = new /list() + decals = list("cold" = 0, "hot" = 0, "plasma" = 0) + colorcontainer = new /list(4) + possibledecals = new /list(3) update_icon() + +/obj/machinery/portable_atmospherics/canister/proc/init_data_vars() + //passed to the ui to render the color lists + colorcontainer = list( + "prim" = list( + "options" = canister_icon_container.possiblemaincolor, + "name" = "Primary color", + ), + "sec" = list( + "options" = canister_icon_container.possibleseccolor, + "name" = "Secondary color", + ), + "ter" = list( + "options" = canister_icon_container.possibletertcolor, + "name" = "Tertiary color", + ), + "quart" = list( + "options" = canister_icon_container.possiblequartcolor, + "name" = "Quaternary color", + ) + ) + + //var/anycolor used by the nanoUI, 0: no color applied. 1: color applied + for(var/C in colorcontainer) + if(C == "prim") continue + var/list/L = colorcontainer[C] + if(!(_color[C]) || (_color[C] == "none")) + L.Add(list("anycolor" = 0)) + else + L.Add(list("anycolor" = 1)) + colorcontainer[C] = L + + possibledecals = new /list(3) + + var/i + var/list/L = canister_icon_container.possibledecals + for(i=1;i<=L.len;i++) + var/list/LL = L[i] + LL = LL.Copy() //make sure we don't edit the datum list + LL.Add(list("active" = decals[LL["icon"]])) //"active" used by nanoUI + possibledecals[i] = LL /obj/machinery/portable_atmospherics/canister/proc/check_change() var/old_flag = update_flag @@ -126,11 +153,11 @@ if(list2params(oldcolor) != list2params(_color)) update_flag |= 64 oldcolor = _color.Copy() - + if(list2params(olddecals) != list2params(decals)) update_flag |= 128 olddecals = decals.Copy() - + if(update_flag == old_flag) return 1 else @@ -160,19 +187,16 @@ update_flag if(check_change()) //Returns 1 if no change needed to icons. return - src.overlays = 0 - - if (_color["sec"])//COLORS! - overlays.Add(_color["sec"]) - - if (_color["ter"]) - overlays.Add(_color["ter"]) - - if (_color["quart"]) - overlays.Add(_color["quart"]) - + overlays.Cut() + + for(var/C in _color) + if(C == "prim") continue + if(_color[C] == "none") continue + overlays.Add(_color[C]) + for(var/D in decals) - overlays.Add("decal-" + D) + if(decals[D]) + overlays.Add("decal-" + D) if(update_flag & 1) overlays += "can-open" @@ -186,32 +210,32 @@ update_flag overlays += "can-o2" else if(update_flag & 32) overlays += "can-o3" - + update_flag &= ~196 //the flags 128 and 64 represent change, not states. As such, we have to reset them to be able to detect a change on the next go. return //template modification exploit prevention, used in Topic() -/obj/machinery/portable_atmospherics/canister/proc/is_a_color(var/inputVar, var/checkColor = "all") +/obj/machinery/portable_atmospherics/canister/proc/is_a_color(var/inputVar, var/checkColor = "all") if (checkColor == "prim" || checkColor == "all") - for(var/list/L in possiblemaincolor) + for(var/list/L in canister_icon_container.possiblemaincolor) if (L["icon"] == inputVar) return 1 if (checkColor == "sec" || checkColor == "all") - for(var/list/L in possibleseccolor) + for(var/list/L in canister_icon_container.possibleseccolor) if (L["icon"] == inputVar) return 1 if (checkColor == "ter" || checkColor == "all") - for(var/list/L in possibletertcolor) + for(var/list/L in canister_icon_container.possibletertcolor) if (L["icon"] == inputVar) return 1 if (checkColor == "quart" || checkColor == "all") - for(var/list/L in possiblequartcolor) + for(var/list/L in canister_icon_container.possiblequartcolor) if (L["icon"] == inputVar) return 1 return 0 /obj/machinery/portable_atmospherics/canister/proc/is_a_decal(var/inputVar) - for(var/list/L in possibledecals) + for(var/list/L in canister_icon_container.possibledecals) if (L["icon"] == inputVar) return 1 return 0 @@ -364,6 +388,8 @@ update_flag if (src.destroyed) return + init_data_vars() //set up var/colorcontainer and var/possibledecals + // this is the data which will be sent to the ui var/data[0] data["name"] = name @@ -395,6 +421,10 @@ update_flag ui.open() // auto update every Master Controller tick ui.set_auto_update(1) + + //Disregard these, avoid cluttering up the VV window + colorcontainer = new /list(4) + possibledecals = new /list(3) /obj/machinery/portable_atmospherics/canister/Topic(href, href_list) @@ -406,7 +436,7 @@ update_flag usr << browse(null, "window=canister") onclose(usr, "canister") return - + if (href_list["choice"] == "menu") menu = text2num(href_list["mode_target"]) @@ -437,7 +467,7 @@ update_flag release_pressure = min(10*ONE_ATMOSPHERE, release_pressure+diff) else release_pressure = max(ONE_ATMOSPHERE/10, release_pressure+diff) - + if (href_list["rename"]) if (can_label) var/T = copytext(sanitize(input("Choose canister label", "Name", name) as text|null),1,MAX_NAME_LEN) @@ -454,40 +484,24 @@ update_flag _color["prim"] = href_list["icon"] if (href_list["choice"] == "Secondary color") if (href_list["icon"] == "none") - _color["sec"] = "" - colorcontainer["sec"]["anycolor"] = 0 + _color["sec"] = "none" else if (is_a_color(href_list["icon"],"sec")) _color["sec"] = href_list["icon"] - colorcontainer["sec"]["anycolor"] = 1 if (href_list["choice"] == "Tertiary color") if (href_list["icon"] == "none") - _color["ter"] = "" - colorcontainer["ter"]["anycolor"] = 0 + _color["ter"] = "none" else if (is_a_color(href_list["icon"],"ter")) _color["ter"] = href_list["icon"] - colorcontainer["ter"]["anycolor"] = 1 if (href_list["choice"] == "Quaternary color") if (href_list["icon"] == "none") - _color["quart"] = "" - colorcontainer["quart"]["anycolor"] = 0 + _color["quart"] = "none" else if (is_a_color(href_list["icon"],"quart")) _color["quart"] = href_list["icon"] - colorcontainer["quart"]["anycolor"] = 1 - + if (href_list["choice"] == "decals") if (is_a_decal(href_list["icon"])) - for (var/list/L in possibledecals) - if (L["icon"] == href_list["icon"]) - L["active"] = (L["active"] == 0) - break - - decals = list() - - for (var/list/L in possibledecals) - if (L["active"]) - if (!(L["icon"] in decals)) - decals.Add(L["icon"]) - + decals[href_list["icon"]] = (decals[href_list["icon"]] == 0) + src.add_fingerprint(usr) update_icon() @@ -526,10 +540,9 @@ update_flag /obj/machinery/portable_atmospherics/canister/toxins/New() ..() - + _color["prim"] = "orange" - decals = list("plasma") - possibledecals[3]["active"] = 1 + decals["plasma"] = 1 src.air_contents.toxins = (src.maximum_pressure*filled)*air_contents.volume/(R_IDEAL_GAS_EQUATION*air_contents.temperature) air_contents.update_values() @@ -547,7 +560,7 @@ update_flag /obj/machinery/portable_atmospherics/canister/sleeping_agent/New() ..() - + _color["prim"] = "redws" var/datum/gas/sleeping_agent/trace_gas = new air_contents.trace_gases += trace_gas @@ -585,7 +598,7 @@ update_flag /obj/machinery/portable_atmospherics/canister/carbon_dioxide/New() ..() - + _color["prim"] = "black" src.air_contents.carbon_dioxide = (src.maximum_pressure*filled)*air_contents.volume/(R_IDEAL_GAS_EQUATION*air_contents.temperature) air_contents.update_values() @@ -596,7 +609,7 @@ update_flag /obj/machinery/portable_atmospherics/canister/air/New() ..() - + _color["prim"] = "grey" src.air_contents.oxygen = (O2STANDARD*src.maximum_pressure*filled)*air_contents.volume/(R_IDEAL_GAS_EQUATION*air_contents.temperature) src.air_contents.nitrogen = (N2STANDARD*src.maximum_pressure*filled)*air_contents.volume/(R_IDEAL_GAS_EQUATION*air_contents.temperature) From 98fe1820a4bd9676fc702aeebbffb042206d807b Mon Sep 17 00:00:00 2001 From: Markolie Date: Fri, 20 Feb 2015 19:58:12 +0100 Subject: [PATCH 25/39] Disable typing indicator, fix radio toggle --- code/game/machinery/telecomms/broadcaster.dm | 2 +- code/modules/mob/mob.dm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/machinery/telecomms/broadcaster.dm b/code/game/machinery/telecomms/broadcaster.dm index 16b3e3860c8..995bfe7afac 100644 --- a/code/game/machinery/telecomms/broadcaster.dm +++ b/code/game/machinery/telecomms/broadcaster.dm @@ -285,7 +285,7 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept /* --- Loop through the receivers and categorize them --- */ - if (R.client && (R.client.prefs.toggles & CHAT_RADIO)) //Adminning with 80 people on can be fun when you're trying to talk and all you can hear is radios. + if (R.client && !(R.client.prefs.toggles & CHAT_RADIO)) //Adminning with 80 people on can be fun when you're trying to talk and all you can hear is radios. continue if(istype(R, /mob/new_player)) // we don't want new players to hear messages. rare but generates runtimes. diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index a3d5932e10b..5f0f4e1768f 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -93,7 +93,7 @@ return 0 /mob/proc/Life() - handle_typing_indicator() +// handle_typing_indicator() // if(organStructure) // organStructure.ProcessOrgans() return From e15fe8b6e056e94909c61ecc0f7b4bf14cbf167a Mon Sep 17 00:00:00 2001 From: Mark van Alphen Date: Fri, 20 Feb 2015 20:02:18 +0100 Subject: [PATCH 26/39] Fix radio toggle Changes: 1) Fixes the radio toggle. --- code/game/machinery/telecomms/broadcaster.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/machinery/telecomms/broadcaster.dm b/code/game/machinery/telecomms/broadcaster.dm index 16b3e3860c8..995bfe7afac 100644 --- a/code/game/machinery/telecomms/broadcaster.dm +++ b/code/game/machinery/telecomms/broadcaster.dm @@ -285,7 +285,7 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept /* --- Loop through the receivers and categorize them --- */ - if (R.client && (R.client.prefs.toggles & CHAT_RADIO)) //Adminning with 80 people on can be fun when you're trying to talk and all you can hear is radios. + if (R.client && !(R.client.prefs.toggles & CHAT_RADIO)) //Adminning with 80 people on can be fun when you're trying to talk and all you can hear is radios. continue if(istype(R, /mob/new_player)) // we don't want new players to hear messages. rare but generates runtimes. From 63f08384d04b69ee201a51888e3321e97d7122be Mon Sep 17 00:00:00 2001 From: Mark van Alphen Date: Fri, 20 Feb 2015 20:02:50 +0100 Subject: [PATCH 27/39] Disable typing indicator Changes: 1) Disables the typing indicator for now. --- code/modules/mob/mob.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index a3d5932e10b..9900b2c0b42 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -93,7 +93,7 @@ return 0 /mob/proc/Life() - handle_typing_indicator() +// handle_typing_indicator() // if(organStructure) // organStructure.ProcessOrgans() return @@ -1342,4 +1342,4 @@ mob/proc/yank_out_object() if(G.mind == mind) if(G.can_reenter_corpse || even_if_they_cant_reenter) return G - break \ No newline at end of file + break From 5e35ad70e35b1225beb9bf3768094f85eb4d689e Mon Sep 17 00:00:00 2001 From: Markolie Date: Fri, 20 Feb 2015 20:08:24 +0100 Subject: [PATCH 28/39] New typing indicator sprite --- icons/mob/talk.dmi | Bin 2403 -> 2437 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/mob/talk.dmi b/icons/mob/talk.dmi index 86534d162d0435461c00231259931f7fee7b91da..49aaee9182f3e5695ddc2115ad6b87bab089ba88 100644 GIT binary patch delta 2206 zcmbuAc{J2}AIHdM>qC@%f}<&U-sW4-6Dx4gdcQ@29BeFdahCfH(6LV9@0NUf6H>%Gfv_3`q=1xReR~YEq<)3$7^&uriWK{T_ zW`L1GS02$Y%=38=Lwm&bl+Zi(XVj9s5Y7u~XIYZl?3L3i4Cn^$N5LuG_K3?iylA|d zR3*bZz1YqpxaKfZrqmLLvrFiAFn<3{_~oi?qmKv4DpJUfHhyZlRQ+$&kW*W2Qnz7_{~ds-q^TVS)S?j=Th zO-$5{ZGwgfQzp<$uUGwJ(Z9=PeVyyy0@iZm6~&_|uDqRtN%3L_+{_i6Y3z7WDX`;r zIE|agEV}{*b0Y5Scm?_QF*c%Bq7I^5km6yioa1Omg{Dy=J=kPaef*+@XJFu)cQ)`= z+c)mlMcTU=1|rsKWoumNJ8#$(BU#yT4&*J0phEFm?vFr!d&u~Y`>cITwgo5n$4AY;F(Zh z=)Q7U)KbmO)GqJ=%~Isfw|tS#q~!UgD$L?_{F&GOgpw-PfWfVG`X7UreLR@aKS6^~ zebp}y)i=*q4Arhrgg*DF4!RZ8F?Aa7MJAXfhwQZq+Q{I2fx&pg^-k%%o*LLYYyjdd z!@t`LmEU)=KU?l>?j`y%AYA9RS34{9_UUA!6wlhwhvhGhK$XJg^GW41lLc9S;uRD& zHV1JzPf^>Z9f~e9b|ZTpuiq9u!>o+x2#Mu~t~ctdpk8ZNR3D@si<4LRsza?k_U>+S zf#y7+=lprn^>%-P?wm$Q9!g-p1V}qRlqfyJ{tycrQ@>LxY543~TieQS;g85n$bEQ$ zhx0%+sz%9XrkM*G^s*&EckYG3AXVbXk{5Nb5(hl2dm%fSOfQ*=DirwKlt{&Gy*@g+ z)CNB4K%KPU(ibKSCw}AgJMTxJgy5%CJ&tqptMX3Wu>NUbz}Q8TSrQNfMF4ilz?uN&jyD$2E(*%GH-vEJdusB%LXj4GC> zF1I#OTQ!suHu990JKo5MRox4Ng;@>Y=#cJVIeLQx`kKu|53RIdU}(x`a(t)p(>jle zsE8XEY%<|DF1(Qjp46Ag1?-G$r776($X51!X;4J2*W13*n2^h17pip06Z@vF@E?Dd zxb*86U-(VK-{~B<5YZ}|e$6bFhfnNwC70sgAO%as zS&Txt$iS`a{F5NPX^PlW>h2rYY!KW3{X6X+p>BEOu1#F2Y;SnW2HQ1fdP>CpqkfT3 z;Qi_>DXe~x-E2t*7V3spg~U)a=i7qDgk`%Mjt4Www0xum81`zqPv*?q`Ig!dZMsR=Z$x%g>`HtxR@m zRe}Vt%n>wF$3C#a>~L>tYU&_YR#rB%FO4n>-bfi#4-Zx7>jScg`{aiD5<@+YOq&JgL#hRM5E z4@ziA^(lnvYTdUk9J4IMd^$NkG{mOif#bb#L|OVd#m33z4}r}?Lm9MAV(D!%D{#!1 zLJw7Csw)tol0!Py8vBxWEEOU`xx*UE*Dkn5uY5b4<|40Gg2mdzOGq=#wvF4R=lqtqA z>D2L-_~h7E`2tMT3F0Vb0Yj>>`pvZiCShg rO@UUNB$T^$Qp#k1g6;ne$l+~JB9VQI`^Sp?uAPOkcR@e1J%8&ja0wwk delta 2171 zcmbVNc{JPU8ct{|jozTG){wRoqpdQQQd*>z(#=-e7{nG~Dp56}RPu|pty=1irJ5kL zmJUT5)vAf=bcsp`Wssz4Xhjr}5<)OKx##xWd(XM&+&Sld|Ge)x?|HuOeV_Aw&y&6V zqvp*ofafWf6TX+pqKaqnJKS_%@%JcI_lySJ%CHK2NZR4%qHhzIp2dAasXMW+*2Pq^ zD{$$AmB*QhHdCKq4ZVFI^gA9Hp7*|Z&El%b8LhajR|+~hXvkK}c&rp}@Y6e9PdrP~ z!LH!3Td26sZKUHY=+QQ=h>7ppmBcV(=#+>X0nun%OD<&nRHe|>TP@zL6y>U-I&&LY z8jDhnT|Xjfq=au;&XmE(m@zB<&3L`K4HJeEVM1?_aj8DmQEX*ob8oM!H^n%29M0@T zSr|}cpXVcu$7E7m9@nt8lo8>MkWBFCUab-~b1?`-NFA4WOn;lR2R~Ekcwx#4gVy+Q*n}fAelp$_1`JV6bZjk`UEvb+ zr^`qTRSB_p+aN9ix8x@}+6 zFEtIgclU&u(jzF}U)=JtRrf~r7K81QOHJx>gx-{ts68_0_uhI(P=R4X%)cJkscPKd zjyQn=k2k|RlV(Q{(zcbRHDU;id6~ zzL4|LKb>smy=av2gU&!yPEUI{Od)SW4=gIUCi?Bsx!H@2&k`zr7xfa34G{=PnGyGW zY4HJ?7PFWY)mdnL|Hb_p_R|$X3c9huCnI)JQtoJ$iP-641FdXJ>k*}aV%q1o<+=M| zoV5YH#q`u3fMTOn|P%Lk~Dd~ydYL7Co3U$9@>=hd}I;H4kr)sVl8qDr~^Fi~QhB`_5 zr`+@3s5bVaVG2!YYpIBp(>+I1J+TTP)7u);sZe?roO72$b^4Fct?pZp_iFW%ztHAob-#WHMOJlol|7Oy(L;opJ(|r z!`Fklr!oVM+H;&+sG0H%)NjXwhZJN%%-ypv!b&GB`n^yjF zS9Nmo+(z-OGvIA=ML88!3Wv&#O!S zsoGH8%xMVfP>u6cJu_HEC2Y=#HFU?GY*blwaEbKy;J_nmV}ijwJp9`H0(CuLFAoo_ z_2XH;ZmzQbXuKy_fkY(}**O|V)?(Otk0%Cs_2Q8h{^i-O&5gd<3l4(FDcD>_`SPb= z@SM(D=aK0{jFo)tq_aY?{g>JL{AI3L-^aCOo%nM)d-aP2iruf*L}gP+NZEe$bMrs! z9}JhbpU3ArNm)nUlFW!jg8_uL`fy;Z_D!H{ei{u`SFoI6>#s3y_#>n$x)ywg&o=OR zho_=6LBJqZ>ttn)s=dOk2zM0f`EDT0Y*J{`X+2_a*MzUdM-zPM#5xcDlQp74_=vkz zy=~>Q6nx)CBHz>8@wUdmcjvBK@jFnmF1N5NSqF5A(yDU81%>voX)WU@pjh<`?Ks;Y zt%?{eETm~h^!L4zx)r$ElCg4Vg;2{C|1$9 z1*WW~)sVog?d81aD?7X39#$Jm{HH*O*`Bs|mFRRkahr1=_E ziMO8XF6&R;>-=I5Byv?VD-1k7ay8K$E_TStI*c^os%Oa6dQLmxT6ycSAxr9S>Qt|2 z+*z*r?P|_lVH`b=b+2{`XlyRFK-}RcMGA*2jTLsQ7$?4H0X( zg2_pj*opkJy)c@+zWPbTV~61B)P$cGW0z;MkUt`|PtboN23tY3zB Date: Fri, 20 Feb 2015 14:22:22 -0500 Subject: [PATCH 29/39] Revert "Fax and comms console event flag fix" This reverts commit c399b6d2767f512492926163a0f7e73a7fbc8b2f. --- code/modules/admin/verbs/pray.dm | 64 ++++++++++++++++++++++++++-- code/modules/paperwork/faxmachine.dm | 60 +++++++++++++------------- 2 files changed, 90 insertions(+), 34 deletions(-) diff --git a/code/modules/admin/verbs/pray.dm b/code/modules/admin/verbs/pray.dm index 549a2140c2d..caab5c8b258 100644 --- a/code/modules/admin/verbs/pray.dm +++ b/code/modules/admin/verbs/pray.dm @@ -15,9 +15,23 @@ var/image/cross = image('icons/obj/storage.dmi',"bible") msg = "\blue \icon[cross] PRAY: [key_name(src, 1)] (?) (PP) (VV) (SM) (JMP) (CA) (SC): [msg]" + var/list/eventholders = list() + var/list/banholders = list() + for(var/client/X in admins) if(R_EVENT & X.holder.rights) - X << msg + eventholders += X + if(R_BAN & X.holder.rights) + banholders += X + + if(eventholders.len) + for(var/client/C in eventholders) + if(C.prefs.toggles & CHAT_PRAYER) + C << msg + else if (banholders.len) + for(var/client/C in banholders) + if(C.prefs.toggles & CHAT_PRAYER) + C << msg usr << "Your prayers have been received by the gods." @@ -28,22 +42,64 @@ var/msg = copytext(sanitize(text), 1, MAX_MESSAGE_LEN) msg = "\blue CENTCOMM:[key_name(Sender, 1)] (PP) (VV) (SM) (JMP) (CA) (BSA) (RPLY): [msg]" + var/list/eventholders = list() + var/list/banholders = list() + for(var/client/X in admins) if(R_EVENT & X.holder.rights) - X << msg + eventholders += X + if(R_BAN & X.holder.rights) + banholders += X + + if(eventholders.len) + for(var/client/C in eventholders) + C << msg + return + else if (banholders.len) + for(var/client/C in banholders) + C << msg + return /proc/Syndicate_announce(var/text , var/mob/Sender) var/msg = copytext(sanitize(text), 1, MAX_MESSAGE_LEN) msg = "\blue SYNDICATE: [key_name(Sender, 1)] (PP) (VV) (SM) (JMP) (CA) (BSA) (REPLY): [msg]" + var/list/eventholders = list() + var/list/banholders = list() + for(var/client/X in admins) if(R_EVENT & X.holder.rights) - X << msg + eventholders += X + if(R_BAN & X.holder.rights) + banholders += X + + if(eventholders.len) + for(var/client/C in eventholders) + C << msg + return + else if (banholders.len) + for(var/client/C in banholders) + C << msg + return /proc/HONK_announce(var/text , var/mob/Sender) var/msg = copytext(sanitize(text), 1, MAX_MESSAGE_LEN) msg = "\blue HONK:[key_name(Sender, 1)] (PP) (VV) (SM) (JMP) (CA) (BSA) (RPLY): [msg]" + var/list/eventholders = list() + var/list/banholders = list() + for(var/client/X in admins) if(R_EVENT & X.holder.rights) - X << msg \ No newline at end of file + eventholders += X + if(R_BAN & X.holder.rights) + banholders += X + + if(eventholders.len) + for(var/client/C in eventholders) + C << msg + return + else if (banholders.len) + for(var/client/C in banholders) + C << msg + return \ No newline at end of file diff --git a/code/modules/paperwork/faxmachine.dm b/code/modules/paperwork/faxmachine.dm index b5df316c7b0..98726004ea4 100644 --- a/code/modules/paperwork/faxmachine.dm +++ b/code/modules/paperwork/faxmachine.dm @@ -8,7 +8,7 @@ var/list/alldepartments = list() icon = 'icons/obj/library.dmi' icon_state = "fax" insert_anim = "faxsend" - req_one_access = list(access_lawyer, access_heads, access_armory) + req_one_access = list(access_lawyer, access_heads, access_armory) use_power = 1 idle_power_usage = 30 @@ -21,7 +21,7 @@ var/list/alldepartments = list() var/department = "Unknown" // our department var/destination = "Central Command" // the department we're sending to - + var/data[0] /obj/machinery/photocopier/faxmachine/New() @@ -33,7 +33,7 @@ var/list/alldepartments = list() /obj/machinery/photocopier/faxmachine/attack_hand(mob/user as mob) ui_interact(user) - + /obj/machinery/photocopier/faxmachine/attackby(obj/item/weapon/item, mob/user) if(istype(item,/obj/item/weapon/card/id) && !scan) scan(item) @@ -42,14 +42,14 @@ var/list/alldepartments = list() nanomanager.update_uis(src) else return ..() - + /obj/machinery/photocopier/faxmachine/emag_act(user as mob) if(!emagged) emagged = 1 user << "The transmitters realign to an unknown source!" else user << "You swipe the card through [src], but nothing happens." - + /obj/machinery/photocopier/faxmachine/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) if(scan) data["scan_name"] = scan.name @@ -75,23 +75,23 @@ var/list/alldepartments = list() else data["respectcooldown"] = 0 - ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) + ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) if (!ui) ui = new(user, src, ui_key, "faxmachine.tmpl", "Fax Machine UI", 540, 450) - ui.set_initial_data(data) + ui.set_initial_data(data) ui.open() /obj/machinery/photocopier/faxmachine/Topic(href, href_list) if(..()) return 1 - + if(href_list["send"]) if(copyitem && authenticated) if ((destination in admin_departments) || (destination in hidden_admin_departments)) send_admin_fax(usr, destination) else sendfax(destination,usr) - + if (sendcooldown) spawn(sendcooldown) // cooldown time sendcooldown = 0 @@ -122,7 +122,7 @@ var/list/alldepartments = list() if(emagged) combineddepartments += hidden_admin_departments destination = input(usr, "To which department?", "Choose a department", "") as null|anything in combineddepartments - if(!destination) + if(!destination) destination = lastdestination if(href_list["auth"]) @@ -131,22 +131,22 @@ var/list/alldepartments = list() authenticated = 1 else if(authenticated) authenticated = 0 - + if(href_list["rename"]) if(copyitem) var/n_name = copytext(sanitize(input(usr, "What would you like to label the fax?", "Fax Labelling", copyitem.name) as text), 1, MAX_MESSAGE_LEN) if((copyitem && copyitem.loc == src && usr.stat == 0)) - if (istype(copyitem, /obj/item/weapon/paper)) - copyitem.name = "[(n_name ? text("[n_name]") : initial(copyitem.name))]" - copyitem.desc = "This is a paper titled '" + copyitem.name + "'." - else if(istype(copyitem, /obj/item/weapon/photo)) + if (istype(copyitem, /obj/item/weapon/paper)) + copyitem.name = "[(n_name ? text("[n_name]") : initial(copyitem.name))]" + copyitem.desc = "This is a paper titled '" + copyitem.name + "'." + else if(istype(copyitem, /obj/item/weapon/photo)) copyitem.name = "[(n_name ? text("[n_name]") : "photo")]" else if(istype(copyitem, /obj/item/weapon/paper_bundle)) copyitem.name = "[(n_name ? text("[n_name]") : "paper")]" - data["name"] = copyitem.name + data["name"] = copyitem.name nanomanager.update_uis(src) - + /obj/machinery/photocopier/faxmachine/proc/scan(var/obj/item/weapon/card/id/card = null) if(scan) // Card is in machine if(ishuman(usr)) @@ -174,14 +174,14 @@ var/list/alldepartments = list() /obj/machinery/photocopier/faxmachine/proc/sendfax(var/destination,var/mob/sender) if(stat & (BROKEN|NOPOWER)) return - + use_power(200) - + var/success = 0 for(var/obj/machinery/photocopier/faxmachine/F in allfaxes) if( F.department == destination ) success = F.receivefax(copyitem) - + if (success) var/datum/fax/F = new /datum/fax() F.name = copyitem.name @@ -191,7 +191,7 @@ var/list/alldepartments = list() F.message = copyitem F.sent_by = sender F.sent_at = world.time - + visible_message("[src] beeps, \"Message transmitted successfully.\"") //sendcooldown = 600 else @@ -200,16 +200,16 @@ var/list/alldepartments = list() /obj/machinery/photocopier/faxmachine/proc/receivefax(var/obj/item/incoming) if(stat & (BROKEN|NOPOWER)) return 0 - + if(department == "Unknown") return 0 //You can't send faxes to "Unknown" flick("faxreceive", src) playsound(loc, "sound/items/polaroid1.ogg", 50, 1) - + // give the sprite some time to flick sleep(20) - + if (istype(incoming, /obj/item/weapon/paper)) copy(incoming) else if (istype(incoming, /obj/item/weapon/photo)) @@ -225,7 +225,7 @@ var/list/alldepartments = list() /obj/machinery/photocopier/faxmachine/proc/send_admin_fax(var/mob/sender, var/destination) if(stat & (BROKEN|NOPOWER)) return - + use_power(200) var/obj/item/rcvdcopy @@ -238,9 +238,9 @@ var/list/alldepartments = list() else visible_message("[src] beeps, \"Error transmitting message.\"") return - + rcvdcopy.loc = null //hopefully this shouldn't cause trouble - + var/datum/fax/admin/A = new /datum/fax/admin() A.name = rcvdcopy.name A.from_department = department @@ -249,7 +249,7 @@ var/list/alldepartments = list() A.message = rcvdcopy A.sent_by = sender A.sent_at = world.time - + //message badmins that a fax has arrived switch(destination) if ("Central Command") @@ -259,11 +259,11 @@ var/list/alldepartments = list() sendcooldown = 1800 sleep(50) visible_message("[src] beeps, \"Message transmitted successfully.\"") - + /obj/machinery/photocopier/faxmachine/proc/message_admins(var/mob/sender, var/faxname, var/faxtype, var/obj/item/sent, font_colour="#006100") var/msg = "\blue [faxname]: [key_name(sender, 1)] (PP) (VV) (SM) (JMP) (CA) (BSA) (REPLY): Receiving '[sent.name]' via secure connection... view message" for(var/client/C in admins) - if(R_EVENT & C.holder.rights) + if(R_ADMIN & C.holder.rights) C << msg From 9f1ee47d8ebd1f88672daec13b982cf3e9799e5a Mon Sep 17 00:00:00 2001 From: ZomgPonies Date: Fri, 20 Feb 2015 14:26:59 -0500 Subject: [PATCH 30/39] Fixes chat icon while using hotkey toggle --- interface/skin.dmf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/interface/skin.dmf b/interface/skin.dmf index 52f9a07309c..152619144ee 100644 --- a/interface/skin.dmf +++ b/interface/skin.dmf @@ -783,7 +783,7 @@ macro "hotkeymode" is-disabled = false elem name = "T" - command = "say" + command = ".say" is-disabled = false elem "w_key" name = "W+REP" @@ -839,7 +839,7 @@ macro "hotkeymode" is-disabled = false elem name = "F3" - command = "say" + command = ".say" is-disabled = false elem name = "F4" From bb1d0c7a713135a6a240aaf12ca76c98549e2c97 Mon Sep 17 00:00:00 2001 From: ZomgPonies Date: Fri, 20 Feb 2015 14:28:39 -0500 Subject: [PATCH 31/39] IC fax & comms console wrong staff --- code/modules/admin/verbs/pray.dm | 64 ++-------------------------- code/modules/paperwork/faxmachine.dm | 58 ++++++++++++------------- 2 files changed, 33 insertions(+), 89 deletions(-) diff --git a/code/modules/admin/verbs/pray.dm b/code/modules/admin/verbs/pray.dm index caab5c8b258..549a2140c2d 100644 --- a/code/modules/admin/verbs/pray.dm +++ b/code/modules/admin/verbs/pray.dm @@ -15,23 +15,9 @@ var/image/cross = image('icons/obj/storage.dmi',"bible") msg = "\blue \icon[cross] PRAY: [key_name(src, 1)] (?) (PP) (VV) (SM) (JMP) (CA) (SC): [msg]" - var/list/eventholders = list() - var/list/banholders = list() - for(var/client/X in admins) if(R_EVENT & X.holder.rights) - eventholders += X - if(R_BAN & X.holder.rights) - banholders += X - - if(eventholders.len) - for(var/client/C in eventholders) - if(C.prefs.toggles & CHAT_PRAYER) - C << msg - else if (banholders.len) - for(var/client/C in banholders) - if(C.prefs.toggles & CHAT_PRAYER) - C << msg + X << msg usr << "Your prayers have been received by the gods." @@ -42,64 +28,22 @@ var/msg = copytext(sanitize(text), 1, MAX_MESSAGE_LEN) msg = "\blue CENTCOMM:[key_name(Sender, 1)] (PP) (VV) (SM) (JMP) (CA) (BSA) (RPLY): [msg]" - var/list/eventholders = list() - var/list/banholders = list() - for(var/client/X in admins) if(R_EVENT & X.holder.rights) - eventholders += X - if(R_BAN & X.holder.rights) - banholders += X - - if(eventholders.len) - for(var/client/C in eventholders) - C << msg - return - else if (banholders.len) - for(var/client/C in banholders) - C << msg - return + X << msg /proc/Syndicate_announce(var/text , var/mob/Sender) var/msg = copytext(sanitize(text), 1, MAX_MESSAGE_LEN) msg = "\blue SYNDICATE: [key_name(Sender, 1)] (PP) (VV) (SM) (JMP) (CA) (BSA) (REPLY): [msg]" - var/list/eventholders = list() - var/list/banholders = list() - for(var/client/X in admins) if(R_EVENT & X.holder.rights) - eventholders += X - if(R_BAN & X.holder.rights) - banholders += X - - if(eventholders.len) - for(var/client/C in eventholders) - C << msg - return - else if (banholders.len) - for(var/client/C in banholders) - C << msg - return + X << msg /proc/HONK_announce(var/text , var/mob/Sender) var/msg = copytext(sanitize(text), 1, MAX_MESSAGE_LEN) msg = "\blue HONK:[key_name(Sender, 1)] (PP) (VV) (SM) (JMP) (CA) (BSA) (RPLY): [msg]" - var/list/eventholders = list() - var/list/banholders = list() - for(var/client/X in admins) if(R_EVENT & X.holder.rights) - eventholders += X - if(R_BAN & X.holder.rights) - banholders += X - - if(eventholders.len) - for(var/client/C in eventholders) - C << msg - return - else if (banholders.len) - for(var/client/C in banholders) - C << msg - return \ No newline at end of file + X << msg \ No newline at end of file diff --git a/code/modules/paperwork/faxmachine.dm b/code/modules/paperwork/faxmachine.dm index 7beff751760..7e213801fcb 100644 --- a/code/modules/paperwork/faxmachine.dm +++ b/code/modules/paperwork/faxmachine.dm @@ -8,7 +8,7 @@ var/list/alldepartments = list() icon = 'icons/obj/library.dmi' icon_state = "fax" insert_anim = "faxsend" - req_one_access = list(access_lawyer, access_heads, access_armory) + req_one_access = list(access_lawyer, access_heads, access_armory) use_power = 1 idle_power_usage = 30 @@ -31,7 +31,7 @@ var/list/alldepartments = list() /obj/machinery/photocopier/faxmachine/attack_hand(mob/user as mob) ui_interact(user) - + /obj/machinery/photocopier/faxmachine/attackby(obj/item/weapon/item, mob/user) if(istype(item,/obj/item/weapon/card/id) && !scan) scan(item) @@ -40,14 +40,14 @@ var/list/alldepartments = list() nanomanager.update_uis(src) else return ..() - + /obj/machinery/photocopier/faxmachine/emag_act(user as mob) if(!emagged) emagged = 1 user << "The transmitters realign to an unknown source!" else user << "You swipe the card through [src], but nothing happens." - + /obj/machinery/photocopier/faxmachine/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) var/data[0] if(scan) @@ -74,23 +74,23 @@ var/list/alldepartments = list() else data["respectcooldown"] = 0 - ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) + ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) if (!ui) ui = new(user, src, ui_key, "faxmachine.tmpl", "Fax Machine UI", 540, 450) - ui.set_initial_data(data) + ui.set_initial_data(data) ui.open() /obj/machinery/photocopier/faxmachine/Topic(href, href_list) if(..()) return 1 - + if(href_list["send"]) if(copyitem && authenticated) if ((destination in admin_departments) || (destination in hidden_admin_departments)) send_admin_fax(usr, destination) else sendfax(destination,usr) - + if (sendcooldown) spawn(sendcooldown) // cooldown time sendcooldown = 0 @@ -121,7 +121,7 @@ var/list/alldepartments = list() if(emagged) combineddepartments += hidden_admin_departments destination = input(usr, "To which department?", "Choose a department", "") as null|anything in combineddepartments - if(!destination) + if(!destination) destination = lastdestination if(href_list["auth"]) @@ -130,21 +130,21 @@ var/list/alldepartments = list() authenticated = 1 else if(authenticated) authenticated = 0 - + if(href_list["rename"]) if(copyitem) var/n_name = copytext(sanitize(input(usr, "What would you like to label the fax?", "Fax Labelling", copyitem.name) as text), 1, MAX_MESSAGE_LEN) if((copyitem && copyitem.loc == src && usr.stat == 0)) - if (istype(copyitem, /obj/item/weapon/paper)) - copyitem.name = "[(n_name ? text("[n_name]") : initial(copyitem.name))]" - copyitem.desc = "This is a paper titled '" + copyitem.name + "'." - else if(istype(copyitem, /obj/item/weapon/photo)) + if (istype(copyitem, /obj/item/weapon/paper)) + copyitem.name = "[(n_name ? text("[n_name]") : initial(copyitem.name))]" + copyitem.desc = "This is a paper titled '" + copyitem.name + "'." + else if(istype(copyitem, /obj/item/weapon/photo)) copyitem.name = "[(n_name ? text("[n_name]") : "photo")]" else if(istype(copyitem, /obj/item/weapon/paper_bundle)) - copyitem.name = "[(n_name ? text("[n_name]") : "paper")]" + copyitem.name = "[(n_name ? text("[n_name]") : "paper")]" nanomanager.update_uis(src) - + /obj/machinery/photocopier/faxmachine/proc/scan(var/obj/item/weapon/card/id/card = null) if(scan) // Card is in machine if(ishuman(usr)) @@ -172,14 +172,14 @@ var/list/alldepartments = list() /obj/machinery/photocopier/faxmachine/proc/sendfax(var/destination,var/mob/sender) if(stat & (BROKEN|NOPOWER)) return - + use_power(200) - + var/success = 0 for(var/obj/machinery/photocopier/faxmachine/F in allfaxes) if( F.department == destination ) success = F.receivefax(copyitem) - + if (success) var/datum/fax/F = new /datum/fax() F.name = copyitem.name @@ -189,7 +189,7 @@ var/list/alldepartments = list() F.message = copyitem F.sent_by = sender F.sent_at = world.time - + visible_message("[src] beeps, \"Message transmitted successfully.\"") //sendcooldown = 600 else @@ -198,16 +198,16 @@ var/list/alldepartments = list() /obj/machinery/photocopier/faxmachine/proc/receivefax(var/obj/item/incoming) if(stat & (BROKEN|NOPOWER)) return 0 - + if(department == "Unknown") return 0 //You can't send faxes to "Unknown" flick("faxreceive", src) playsound(loc, "sound/items/polaroid1.ogg", 50, 1) - + // give the sprite some time to flick sleep(20) - + if (istype(incoming, /obj/item/weapon/paper)) copy(incoming) else if (istype(incoming, /obj/item/weapon/photo)) @@ -223,7 +223,7 @@ var/list/alldepartments = list() /obj/machinery/photocopier/faxmachine/proc/send_admin_fax(var/mob/sender, var/destination) if(stat & (BROKEN|NOPOWER)) return - + use_power(200) var/obj/item/rcvdcopy @@ -236,9 +236,9 @@ var/list/alldepartments = list() else visible_message("[src] beeps, \"Error transmitting message.\"") return - + rcvdcopy.loc = null //hopefully this shouldn't cause trouble - + var/datum/fax/admin/A = new /datum/fax/admin() A.name = rcvdcopy.name A.from_department = department @@ -247,7 +247,7 @@ var/list/alldepartments = list() A.message = rcvdcopy A.sent_by = sender A.sent_at = world.time - + //message badmins that a fax has arrived switch(destination) if ("Central Command") @@ -257,11 +257,11 @@ var/list/alldepartments = list() sendcooldown = 1800 sleep(50) visible_message("[src] beeps, \"Message transmitted successfully.\"") - + /obj/machinery/photocopier/faxmachine/proc/message_admins(var/mob/sender, var/faxname, var/faxtype, var/obj/item/sent, font_colour="#006100") var/msg = "\blue [faxname]: [key_name(sender, 1)] (PP) (VV) (SM) (JMP) (CA) (BSA) (REPLY): Receiving '[sent.name]' via secure connection... view message" for(var/client/C in admins) - if(R_ADMIN & C.holder.rights) + if(R_EVENT & C.holder.rights) C << msg From db02e873d5f7987661eb35cb0c8ba364d449e34e Mon Sep 17 00:00:00 2001 From: Markolie Date: Fri, 20 Feb 2015 20:38:57 +0100 Subject: [PATCH 32/39] Respawn as the new cargo mobs --- code/modules/mob/transform_procs.dm | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index 4910b47817c..ce0591f6bd9 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -435,6 +435,12 @@ return 1 // ZOMG PONIES WHEEE if(ispath(MP, /mob/living/simple_animal/fox)) return 1 + if(ispath(MP, /mob/living/simple_animal/chick)) + return 1 + if(ispath(MP, /mob/living/simple_animal/pug)) + return 1 + if(ispath(MP, /mob/living/simple_animal/butterfly)) + return 1 //Not in here? Must be untested! return 0 @@ -460,6 +466,12 @@ return 1 if(ispath(MP, /mob/living/simple_animal/fox)) return 1 + if(ispath(MP, /mob/living/simple_animal/chick)) + return 1 + if(ispath(MP, /mob/living/simple_animal/pug)) + return 1 + if(ispath(MP, /mob/living/simple_animal/butterfly)) + return 1 //Antag Creatures! /* if(ispath(MP, /mob/living/simple_animal/hostile/carp) && !jobban_isbanned(src, "Syndicate")) From 8e265002db382de5b18ef5e2dccac48b3837fb0d Mon Sep 17 00:00:00 2001 From: Markolie Date: Fri, 20 Feb 2015 21:07:44 +0100 Subject: [PATCH 33/39] Ensure silicons have galactic common --- code/modules/mob/living/silicon/ai/ai.dm | 1 + code/modules/mob/living/silicon/pai/pai.dm | 1 + code/modules/mob/living/silicon/robot/robot_modules.dm | 4 +++- 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index a7fb2ada618..e343cdf4f18 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -114,6 +114,7 @@ var/list/ai_list = list() //Languages add_language("Robot Talk", 1) + add_language("Galactic Common", 1) add_language("Sol Common", 1) add_language("Tradeband", 1) add_language("Sinta'unathi", 0) diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm index 85c15c7989a..9edeb1ed082 100644 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -84,6 +84,7 @@ radio = card.radio //Default languages without universal translator software + add_language("Galactic Common", 1) add_language("Sol Common", 1) add_language("Tradeband", 1) add_language("Gutter", 1) diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index a6b9d46f19a..78fa731e685 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -59,6 +59,7 @@ /obj/item/weapon/robot_module/proc/add_languages(var/mob/living/silicon/robot/R) //full set of languages + R.add_language("Galactic Common", 1) R.add_language("Sol Common", 1) R.add_language("Tradeband", 1) R.add_language("Sinta'unathi", 0) @@ -266,6 +267,7 @@ /obj/item/weapon/robot_module/butler/add_languages(var/mob/living/silicon/robot/R) //full set of languages + R.add_language("Galactic Common", 1) R.add_language("Sol Common", 1) R.add_language("Tradeband", 1) R.add_language("Sinta'unathi", 1) @@ -371,7 +373,7 @@ src.emag.reagents.add_reagent("pacid", 125) src.emag.reagents.add_reagent("sacid", 125) -/obj/item/weapon/robot_module/butler/add_languages(var/mob/living/silicon/robot/R) +/obj/item/weapon/robot_module/alien/hunter/add_languages(var/mob/living/silicon/robot/R) ..() R.add_language("xenocommon", 1) From 533afdcdfe4fc0d893b3cc1e4526b03f1458bb5b Mon Sep 17 00:00:00 2001 From: ZomgPonies Date: Fri, 20 Feb 2015 15:12:23 -0500 Subject: [PATCH 34/39] Last saycode fixes --- code/modules/mob/typing_indicator.dm | 4 ++-- interface/skin.dmf | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/code/modules/mob/typing_indicator.dm b/code/modules/mob/typing_indicator.dm index c104aa839a4..b6ac81e2ce9 100644 --- a/code/modules/mob/typing_indicator.dm +++ b/code/modules/mob/typing_indicator.dm @@ -32,7 +32,7 @@ var/global/image/typing_indicator set_typing_indicator(1) hud_typing = 1 - var/message = input("","say (text)") as text + var/message = input("","say (text)") as null|text hud_typing = 0 set_typing_indicator(0) if(message) @@ -44,7 +44,7 @@ var/global/image/typing_indicator set_typing_indicator(1) hud_typing = 1 - var/message = input("","me (text)") as text + var/message = input("","me (text)") as null|text hud_typing = 0 set_typing_indicator(0) if(message) diff --git a/interface/skin.dmf b/interface/skin.dmf index 152619144ee..43b7d523b66 100644 --- a/interface/skin.dmf +++ b/interface/skin.dmf @@ -581,7 +581,7 @@ macro "macro" is-disabled = false elem name = "F3" - command = "say" + command = ".say" is-disabled = false elem name = "F4" From f17c266919716368a83cb5f48657b8e9d243f17b Mon Sep 17 00:00:00 2001 From: Markolie Date: Fri, 20 Feb 2015 21:13:51 +0100 Subject: [PATCH 35/39] Fix lobby chatter --- code/modules/mob/living/say.dm | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 51988feaf22..b5ec333f1fa 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -107,7 +107,11 @@ proc/get_radio_key_from_channel(var/channel) listening_obj |= O for(var/mob/M in player_list) - if(M.stat == DEAD && M.client && (M.client.prefs.toggles & CHAT_GHOSTEARS)) + if (!M.client) + continue //skip monkeys and leavers + if (istype(M, /mob/new_player)) + continue + if(M.stat == DEAD && M.client && (M.client.prefs.toggles & CHAT_GHOSTEARS) && src.client) // src.client is so that ghosts don't have to listen to mice listening |= M continue if(M.loc && M.locs[1] in hearturfs) From 9fedfc7c6270b3aef93a9d241e7c885e3dd07b0d Mon Sep 17 00:00:00 2001 From: Markolie Date: Fri, 20 Feb 2015 22:17:13 +0100 Subject: [PATCH 36/39] Switch copytext and sanitize proc --- code/__HELPERS/mobs.dm | 2 ++ code/__HELPERS/text.dm | 7 ++--- code/datums/datumvars.dm | 2 +- code/datums/mind.dm | 4 +-- code/game/gamemodes/blob/overmind.dm | 2 +- code/game/gamemodes/events/ninja_equipment.dm | 2 +- code/game/gamemodes/events/space_ninja.dm | 2 +- code/game/gamemodes/nuclear/nuclear.dm | 2 +- code/game/gamemodes/objective.dm | 2 +- code/game/gamemodes/wizard/artefact.dm | 2 +- code/game/gamemodes/wizard/wizard.dm | 2 +- code/game/jobs/job/support_chaplain.dm | 4 +-- code/game/machinery/atmoalter/canister.dm | 2 +- code/game/machinery/bots/farmbot.dm | 2 +- code/game/machinery/bots/mulebot.dm | 2 +- code/game/machinery/computer/card.dm | 2 +- code/game/machinery/computer/message.dm | 2 +- code/game/machinery/computer/prisoner.dm | 2 +- code/game/machinery/magnet.dm | 2 +- code/game/machinery/navbeacon.dm | 2 +- code/game/machinery/newscaster.dm | 2 +- code/game/machinery/portable_turret.dm | 2 +- code/game/objects/items/bodybag.dm | 2 +- code/game/objects/items/devices/PDA/PDA.dm | 4 +-- code/game/objects/items/devices/flash.dm | 5 ++-- code/game/objects/items/devices/megaphone.dm | 2 +- code/game/objects/items/devices/paicard.dm | 2 +- code/game/objects/items/weapons/cards_ids.dm | 6 ++-- .../items/weapons/implants/implantcase.dm | 2 +- code/game/objects/structures/morgue.dm | 4 +-- code/game/supplyshuttle.dm | 4 +-- code/game/verbs/ooc.dm | 4 +-- code/modules/admin/topic.dm | 2 +- code/modules/admin/verbs/adminsay.dm | 4 +-- code/modules/admin/verbs/deadsay.dm | 2 +- code/modules/admin/verbs/honksquad.dm | 2 +- code/modules/admin/verbs/pray.dm | 8 +++--- code/modules/admin/verbs/striketeam.dm | 2 +- .../admin/verbs/striketeam_syndicate.dm | 2 +- code/modules/computer3/computers/card.dm | 2 +- code/modules/computer3/computers/medical.dm | 28 +++++++++---------- code/modules/computer3/computers/message.dm | 2 +- code/modules/computer3/computers/prisoner.dm | 2 +- code/modules/computer3/computers/security.dm | 18 ++++++------ code/modules/library/lib_machines.dm | 6 ++-- code/modules/mob/emote.dm | 4 +-- code/modules/mob/living/carbon/human/emote.dm | 6 ++-- code/modules/mob/living/carbon/human/human.dm | 4 +-- .../mob/living/carbon/metroid/metroid.dm | 4 +-- .../modules/mob/living/silicon/pai/recruit.dm | 16 +++++------ .../modules/mob/living/silicon/robot/robot.dm | 2 +- code/modules/mob/living/silicon/silicon.dm | 4 +-- .../modules/mob/living/simple_animal/borer.dm | 2 +- code/modules/mob/mob_helpers.dm | 4 +-- code/modules/paperwork/faxmachine.dm | 2 +- code/modules/paperwork/folders.dm | 2 +- code/modules/paperwork/paper.dm | 4 +-- code/modules/paperwork/paper_bundle.dm | 2 +- code/modules/paperwork/photography.dm | 2 +- .../reagent_containers/food/snacks.dm | 2 +- code/modules/recycling/sortingmachinery.dm | 4 +-- code/modules/telesci/gps.dm | 2 +- 62 files changed, 117 insertions(+), 117 deletions(-) diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index 320e2ecd8d7..81ed859a7e5 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -132,6 +132,8 @@ Proc for attack log creation, because really why not proc/add_logs(mob/target, mob/user, what_done, var/object=null, var/addition=null) var/list/ignore=list("shaked","CPRed","grabbed","punched") + if(!user) + return if(ismob(user)) user.attack_log += text("\[[time_stamp()]\] Has [what_done] [target.name][ismob(target) ? "([target.ckey])" : ""][object ? " with [object]" : " "][addition]") if(ismob(target)) diff --git a/code/__HELPERS/text.dm b/code/__HELPERS/text.dm index 108246c5ad5..c6cd633398b 100644 --- a/code/__HELPERS/text.dm +++ b/code/__HELPERS/text.dm @@ -34,12 +34,9 @@ return t //Removes a few problematic characters -/proc/sanitize_simple(var/t,var/list/repl_chars = list("\n"="#","\t"="#","�"="�")) +/proc/sanitize_simple(var/t,var/list/repl_chars = list("\n"="#","\t"="#")) for(var/char in repl_chars) - var/index = findtext(t, char) - while(index) - t = copytext(t, 1, index) + repl_chars[char] + copytext(t, index+1) - index = findtext(t, char) + replacetext(t, char, repl_chars[char]) return t /proc/readd_quotes(var/t) diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm index d202f29d8f9..a7db9300c73 100644 --- a/code/datums/datumvars.dm +++ b/code/datums/datumvars.dm @@ -441,7 +441,7 @@ client usr << "This can only be used on instances of type /mob" return - var/new_name = copytext(sanitize(input(usr,"What would you like to name this mob?","Input a name",M.real_name) as text|null),1,MAX_NAME_LEN) + var/new_name = sanitize(copytext(input(usr,"What would you like to name this mob?","Input a name",M.real_name) as text|null,1,MAX_NAME_LEN)) if( !new_name || !M ) return message_admins("Admin [key_name_admin(usr)] renamed [key_name_admin(M)] to [new_name].") diff --git a/code/datums/mind.dm b/code/datums/mind.dm index caea97b2f7d..527ea37bb14 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -446,7 +446,7 @@ datum/mind assigned_role = new_role else if (href_list["memory_edit"]) - var/new_memo = copytext(sanitize(input("Write new memory", "Memory", memory) as null|message),1,MAX_MESSAGE_LEN) + var/new_memo = sanitize(copytext(input("Write new memory", "Memory", memory) as null|message,1,MAX_MESSAGE_LEN)) if (isnull(new_memo)) return memory = new_memo @@ -585,7 +585,7 @@ datum/mind new_objective.find_target() if ("custom") - var/expl = copytext(sanitize(input("Custom objective:", "Objective", objective ? objective.explanation_text : "") as text|null),1,MAX_MESSAGE_LEN) + var/expl = sanitize(copytext(input("Custom objective:", "Objective", objective ? objective.explanation_text : "") as text|null,1,MAX_MESSAGE_LEN)) if (!expl) return new_objective = new /datum/objective new_objective.owner = src diff --git a/code/game/gamemodes/blob/overmind.dm b/code/game/gamemodes/blob/overmind.dm index 8316c570f9a..5f3b1bf796e 100644 --- a/code/game/gamemodes/blob/overmind.dm +++ b/code/game/gamemodes/blob/overmind.dm @@ -65,7 +65,7 @@ /mob/camera/blob/proc/blob_talk(message) log_say("[key_name(src)] : [message]") - message = trim(copytext(sanitize(message), 1, MAX_MESSAGE_LEN)) + message = trim(sanitize(copytext(message, 1, MAX_MESSAGE_LEN))) if (!message) return diff --git a/code/game/gamemodes/events/ninja_equipment.dm b/code/game/gamemodes/events/ninja_equipment.dm index 95b3243ae84..a02fc5042e7 100644 --- a/code/game/gamemodes/events/ninja_equipment.dm +++ b/code/game/gamemodes/events/ninja_equipment.dm @@ -564,7 +564,7 @@ ________________________________________________________________________________ if("Message") var/obj/item/device/pda/P = locate(href_list["target"]) var/t = input(U, "Please enter untraceable message.") as text - t = copytext(sanitize(t), 1, MAX_MESSAGE_LEN) + t = sanitize(copytext(t, 1, MAX_MESSAGE_LEN)) if(!t||U.stat||U.wear_suit!=src||!s_initialized)//Wow, another one of these. Man... display_to << browse(null, "window=spideros") return diff --git a/code/game/gamemodes/events/space_ninja.dm b/code/game/gamemodes/events/space_ninja.dm index 9a17a188ec0..1792e573a5b 100644 --- a/code/game/gamemodes/events/space_ninja.dm +++ b/code/game/gamemodes/events/space_ninja.dm @@ -480,7 +480,7 @@ As such, it's hard-coded for now. No reason for it not to be, really. var/mission if(alert("Would you the Ninja to have a random or preset mission?",,"Random","Preset")=="Preset") while(!mission) - mission = copytext(sanitize(input(src, "Please specify which mission the space ninja shall undertake.", "Specify Mission", "")),1,MAX_MESSAGE_LEN) + mission = sanitize(copytext(input(src, "Please specify which mission the space ninja shall undertake.", "Specify Mission", ""),1,MAX_MESSAGE_LEN)) if(!mission) if(alert("Error, no mission set. Do you want to exit the setup process?",,"Yes","No")=="Yes") return diff --git a/code/game/gamemodes/nuclear/nuclear.dm b/code/game/gamemodes/nuclear/nuclear.dm index 6deb483f0fa..de5d25bd9d1 100644 --- a/code/game/gamemodes/nuclear/nuclear.dm +++ b/code/game/gamemodes/nuclear/nuclear.dm @@ -441,7 +441,7 @@ proc/issyndicate(mob/living/M as mob) /proc/nukelastname(var/mob/M as mob) //--All praise goes to NEO|Phyte, all blame goes to DH, and it was Cindi-Kate's idea. Also praise Urist for copypasta ho. var/randomname = pick(last_names) - var/newname = copytext(sanitize(input(M,"You are the nuke operative [pick("Czar", "Boss", "Commander", "Chief", "Kingpin", "Director", "Overlord")]. Please choose a last name for your family.", "Name change",randomname)),1,MAX_NAME_LEN) + var/newname = sanitize(copytext(input(M,"You are the nuke operative [pick("Czar", "Boss", "Commander", "Chief", "Kingpin", "Director", "Overlord")]. Please choose a last name for your family.", "Name change",randomname),1,MAX_NAME_LEN)) if (!newname) newname = randomname diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm index af9cfac6fbe..2a7d8b14368 100644 --- a/code/game/gamemodes/objective.dm +++ b/code/game/gamemodes/objective.dm @@ -619,7 +619,7 @@ datum/objective/steal var/tmp_obj = new O.typepath var/custom_name = tmp_obj:name del(tmp_obj) - O.name = copytext(sanitize(input("Enter target name:", "Objective target", custom_name) as text|null),1,MAX_NAME_LEN) + O.name = sanitize(copytext(input("Enter target name:", "Objective target", custom_name) as text|null,1,MAX_NAME_LEN)) if (!O.name) return steal_target = O explanation_text = "Steal [O.name]." diff --git a/code/game/gamemodes/wizard/artefact.dm b/code/game/gamemodes/wizard/artefact.dm index b0471908eaf..4bda30ebe02 100644 --- a/code/game/gamemodes/wizard/artefact.dm +++ b/code/game/gamemodes/wizard/artefact.dm @@ -87,7 +87,7 @@ var/wizard_name_first = pick(wizard_first) var/wizard_name_second = pick(wizard_second) var/randomname = "[wizard_name_first] [wizard_name_second]" - var/newname = copytext(sanitize(input(M, "You are the wizard's apprentice. Would you like to change your name to something else?", "Name change", randomname) as null|text),1,MAX_NAME_LEN) + var/newname = sanitize(copytext(input(M, "You are the wizard's apprentice. Would you like to change your name to something else?", "Name change", randomname) as null|text,1,MAX_NAME_LEN)) if (!newname) newname = randomname diff --git a/code/game/gamemodes/wizard/wizard.dm b/code/game/gamemodes/wizard/wizard.dm index cd59d23d0b5..78be858d796 100644 --- a/code/game/gamemodes/wizard/wizard.dm +++ b/code/game/gamemodes/wizard/wizard.dm @@ -116,7 +116,7 @@ var/wizard_name_second = pick(wizard_second) var/randomname = "[wizard_name_first] [wizard_name_second]" spawn(0) - var/newname = copytext(sanitize(input(wizard_mob, "You are the Space Wizard. Would you like to change your name to something else?", "Name change", randomname) as null|text),1,MAX_NAME_LEN) + var/newname = sanitize(copytext(input(wizard_mob, "You are the Space Wizard. Would you like to change your name to something else?", "Name change", randomname) as null|text,1,MAX_NAME_LEN)) if (!newname) newname = randomname diff --git a/code/game/jobs/job/support_chaplain.dm b/code/game/jobs/job/support_chaplain.dm index f02f111c0fb..d56f478fc42 100644 --- a/code/game/jobs/job/support_chaplain.dm +++ b/code/game/jobs/job/support_chaplain.dm @@ -24,7 +24,7 @@ H.equip_or_collect(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack) spawn(0) var/religion_name = "Christianity" - var/new_religion = copytext(sanitize(input(H, "You are the crew services officer. Would you like to change your religion? Default is Christianity, in SPACE.", "Name change", religion_name)),1,MAX_NAME_LEN) + var/new_religion = sanitize(copytext(input(H, "You are the crew services officer. Would you like to change your religion? Default is Christianity, in SPACE.", "Name change", religion_name),1,MAX_NAME_LEN)) if (!new_religion) new_religion = religion_name @@ -59,7 +59,7 @@ spawn(1) var/deity_name = "Space Jesus" - var/new_deity = copytext(sanitize(input(H, "Would you like to change your deity? Default is Space Jesus.", "Name change", deity_name)),1,MAX_NAME_LEN) + var/new_deity = sanitize(copytext(input(H, "Would you like to change your deity? Default is Space Jesus.", "Name change", deity_name),1,MAX_NAME_LEN)) if ((length(new_deity) == 0) || (new_deity == "Space Jesus") ) new_deity = deity_name diff --git a/code/game/machinery/atmoalter/canister.dm b/code/game/machinery/atmoalter/canister.dm index 17492a83ba4..8ae1166ff29 100644 --- a/code/game/machinery/atmoalter/canister.dm +++ b/code/game/machinery/atmoalter/canister.dm @@ -470,7 +470,7 @@ update_flag if (href_list["rename"]) if (can_label) - var/T = copytext(sanitize(input("Choose canister label", "Name", name) as text|null),1,MAX_NAME_LEN) + var/T = sanitize(copytext(input("Choose canister label", "Name", name) as text|null,1,MAX_NAME_LEN)) if (can_label) //Exploit prevention if (T) name = T diff --git a/code/game/machinery/bots/farmbot.dm b/code/game/machinery/bots/farmbot.dm index 3c13b04ff96..d5eff718549 100644 --- a/code/game/machinery/bots/farmbot.dm +++ b/code/game/machinery/bots/farmbot.dm @@ -585,7 +585,7 @@ else if(istype(W, /obj/item/weapon/pen)) var/t = input(user, "Enter new robot name", src.name, src.created_name) as text - t = copytext(sanitize(t), 1, MAX_NAME_LEN) + t = sanitize(copytext(t), 1, MAX_NAME_LEN) if (!t) return if (!in_range(src, usr) && src.loc != usr) diff --git a/code/game/machinery/bots/mulebot.dm b/code/game/machinery/bots/mulebot.dm index 4e15b07fe01..bbab6f7d9e7 100644 --- a/code/game/machinery/bots/mulebot.dm +++ b/code/game/machinery/bots/mulebot.dm @@ -324,7 +324,7 @@ var/global/mulebot_count = 0 if("setid") refresh=0 - var/new_id = copytext(sanitize(input("Enter new bot ID", "Mulebot [suffix ? "([suffix])" : ""]", suffix) as text|null),1,MAX_NAME_LEN) + var/new_id = sanitize(copytext(input("Enter new bot ID", "Mulebot [suffix ? "([suffix])" : ""]", suffix) as text|null,1,MAX_NAME_LEN)) refresh=1 if(new_id) suffix = new_id diff --git a/code/game/machinery/computer/card.dm b/code/game/machinery/computer/card.dm index 6298f0d7d89..87552942026 100644 --- a/code/game/machinery/computer/card.dm +++ b/code/game/machinery/computer/card.dm @@ -198,7 +198,7 @@ if (is_authenticated() && modify) var/t1 = href_list["assign_target"] if(t1 == "Custom") - var/temp_t = copytext(sanitize(input("Enter a custom job assignment.","Assignment")),1,MAX_MESSAGE_LEN) + var/temp_t = sanitize(copytext(input("Enter a custom job assignment.","Assignment"),1,MAX_MESSAGE_LEN)) //let custom jobs function as an impromptu alt title, mainly for sechuds if(temp_t && modify) modify.assignment = temp_t diff --git a/code/game/machinery/computer/message.dm b/code/game/machinery/computer/message.dm index 916b99e05c9..879e6b8f150 100644 --- a/code/game/machinery/computer/message.dm +++ b/code/game/machinery/computer/message.dm @@ -422,7 +422,7 @@ //Enter message if("Message") custommessage = input(usr, "Please enter your message.") as text|null - custommessage = copytext(sanitize(custommessage), 1, MAX_MESSAGE_LEN) + custommessage = sanitize(copytext(custommessage, 1, MAX_MESSAGE_LEN)) //Send message if("Send") diff --git a/code/game/machinery/computer/prisoner.dm b/code/game/machinery/computer/prisoner.dm index 8340838f6e2..7b4b37665b0 100644 --- a/code/game/machinery/computer/prisoner.dm +++ b/code/game/machinery/computer/prisoner.dm @@ -129,7 +129,7 @@ usr << "Unauthorized Access." else if(href_list["warn"]) - var/warning = copytext(sanitize(input(usr,"Message:","Enter your message here!","")),1,MAX_MESSAGE_LEN) + var/warning = sanitize(copytext(input(usr,"Message:","Enter your message here!",""),1,MAX_MESSAGE_LEN)) if(!warning) return var/obj/item/weapon/implant/I = locate(href_list["warn"]) if((I)&&(I.imp_in)) diff --git a/code/game/machinery/magnet.dm b/code/game/machinery/magnet.dm index a2dd432d991..8569ede3fd7 100644 --- a/code/game/machinery/magnet.dm +++ b/code/game/machinery/magnet.dm @@ -323,7 +323,7 @@ if(speed <= 0) speed = 1 if("setpath") - var/newpath = copytext(sanitize(input(usr, "Please define a new path!",,path) as text|null),1,MAX_MESSAGE_LEN) + var/newpath = sanitize(copytext(input(usr, "Please define a new path!",,path) as text|null,1,MAX_MESSAGE_LEN)) if(newpath && newpath != "") moving = 0 // stop moving path = newpath diff --git a/code/game/machinery/navbeacon.dm b/code/game/machinery/navbeacon.dm index 59bf0f2ea17..414c6c365b1 100644 --- a/code/game/machinery/navbeacon.dm +++ b/code/game/machinery/navbeacon.dm @@ -193,7 +193,7 @@ Transponder Codes:

    "} updateDialog() else if(href_list["locedit"]) - var/newloc = copytext(sanitize(input("Enter New Location", "Navigation Beacon", location) as text|null),1,MAX_MESSAGE_LEN) + var/newloc = sanitize(copytext(input("Enter New Location", "Navigation Beacon", location) as text|null,1,MAX_MESSAGE_LEN)) if(newloc) location = newloc updateDialog() diff --git a/code/game/machinery/newscaster.dm b/code/game/machinery/newscaster.dm index dd0e408fd60..85b4e35f7af 100644 --- a/code/game/machinery/newscaster.dm +++ b/code/game/machinery/newscaster.dm @@ -944,7 +944,7 @@ obj/item/weapon/newspaper/attackby(obj/item/weapon/W as obj, mob/user as mob) user << "There's already a scribble in this page... You wouldn't want to make things too cluttered, would you?" else var/s = strip_html( input(user, "Write something", "Newspaper", "") ) - s = copytext(sanitize(s), 1, MAX_MESSAGE_LEN) + s = sanitize(copytext(s, 1, MAX_MESSAGE_LEN)) if (!s) return if (!in_range(src, usr) && src.loc != usr) diff --git a/code/game/machinery/portable_turret.dm b/code/game/machinery/portable_turret.dm index f4829b57416..464144d832d 100644 --- a/code/game/machinery/portable_turret.dm +++ b/code/game/machinery/portable_turret.dm @@ -848,7 +848,7 @@ Status: []
    "}, if (istype(W, /obj/item/weapon/pen)) // you can rename turrets like bots! var/t = input(user, "Enter new turret name", src.name, src.finish_name) as text - t = copytext(sanitize(t), 1, MAX_MESSAGE_LEN) + t = sanitize(copytext(t, 1, MAX_MESSAGE_LEN)) if (!t) return if (!in_range(src, usr) && src.loc != usr) diff --git a/code/game/objects/items/bodybag.dm b/code/game/objects/items/bodybag.dm index 3ff89c5fd60..0bb680f069d 100644 --- a/code/game/objects/items/bodybag.dm +++ b/code/game/objects/items/bodybag.dm @@ -47,7 +47,7 @@ return if (!in_range(src, user) && src.loc != user) return - t = copytext(sanitize(t),1,MAX_MESSAGE_LEN) + t = sanitize(copytext(t,1,MAX_MESSAGE_LEN)) if (t) src.name = "body bag - " src.name += t diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index 728ecb5e9f7..a2d06058e08 100755 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -689,7 +689,7 @@ var/global/list/obj/item/device/pda/PDAs = list() U << "The PDA softly beeps." ui.close() else - t = copytext(sanitize(t), 1, 20) + t = sanitize(copytext(t, 1, 20)) ttone = t else ui.close() @@ -897,7 +897,7 @@ var/global/list/obj/item/device/pda/PDAs = list() /obj/item/device/pda/proc/create_message(var/mob/living/U = usr, var/obj/item/device/pda/P) var/t = input(U, "Please enter message", name, null) as text - t = copytext(sanitize(t), 1, MAX_MESSAGE_LEN) + t = sanitize(copytext(t, 1, MAX_MESSAGE_LEN)) t = readd_quotes(t) if (!t || !istype(P)) return diff --git a/code/game/objects/items/devices/flash.dm b/code/game/objects/items/devices/flash.dm index 09b5201fdb0..fe322e30dbd 100644 --- a/code/game/objects/items/devices/flash.dm +++ b/code/game/objects/items/devices/flash.dm @@ -66,10 +66,11 @@ if(user && convert) terrible_conversion_proc(M, user) M.Stun(1) - user.visible_message("[user] blinds [M] with the flash!") + user.visible_message("[user] blinds [M] with the flash!") return 1 else - user.visible_message("[user] fails to blind [M] with the flash!") + if(user) + user.visible_message("[user] fails to blind [M] with the flash!") return 0 /obj/item/device/flash/attack(mob/living/M, mob/user) diff --git a/code/game/objects/items/devices/megaphone.dm b/code/game/objects/items/devices/megaphone.dm index 3968ee1a441..11f706f01ba 100644 --- a/code/game/objects/items/devices/megaphone.dm +++ b/code/game/objects/items/devices/megaphone.dm @@ -26,7 +26,7 @@ user << "\red \The [src] needs to recharge!" return - var/message = copytext(sanitize(input(user, "Shout a message?", "Megaphone", null) as text),1,MAX_MESSAGE_LEN) + var/message = sanitize(copytext(input(user, "Shout a message?", "Megaphone", null) as text,1,MAX_MESSAGE_LEN)) if(!message) return message = capitalize(message) diff --git a/code/game/objects/items/devices/paicard.dm b/code/game/objects/items/devices/paicard.dm index e184b0fb066..b5d14aa8982 100644 --- a/code/game/objects/items/devices/paicard.dm +++ b/code/game/objects/items/devices/paicard.dm @@ -265,7 +265,7 @@ if(2) radio.ToggleReception() if(href_list["setlaws"]) - var/newlaws = copytext(sanitize(input("Enter any additional directives you would like your pAI personality to follow. Note that these directives will not override the personality's allegiance to its imprinted master. Conflicting directives will be ignored.", "pAI Directive Configuration", pai.pai_laws) as message),1,MAX_MESSAGE_LEN) + var/newlaws = sanitize(copytext(input("Enter any additional directives you would like your pAI personality to follow. Note that these directives will not override the personality's allegiance to its imprinted master. Conflicting directives will be ignored.", "pAI Directive Configuration", pai.pai_laws) as message,1,MAX_MESSAGE_LEN)) if(newlaws) pai.pai_laws = newlaws pai << "Your supplemental directives have been updated. Your new directives are:" diff --git a/code/game/objects/items/weapons/cards_ids.dm b/code/game/objects/items/weapons/cards_ids.dm index dd849488a3b..86d90735ad6 100644 --- a/code/game/objects/items/weapons/cards_ids.dm +++ b/code/game/objects/items/weapons/cards_ids.dm @@ -250,7 +250,7 @@ return src.registered_name = t - var u = copytext(sanitize(input(user, "What occupation would you like to put on this card?\nNote: This will not grant any access levels other than Maintenance.", "Agent card job assignment", "Civilian")),1,MAX_MESSAGE_LEN) + var u = sanitize(copytext(input(user, "What occupation would you like to put on this card?\nNote: This will not grant any access levels other than Maintenance.", "Agent card job assignment", "Civilian"),1,MAX_MESSAGE_LEN)) if(!u) alert("Invalid assignment.") src.registered_name = "" @@ -265,13 +265,13 @@ switch(alert("Would you like to display the ID, or retitle it?","Choose.","Rename","Show")) if("Rename") - var t = copytext(sanitize(input(user, "What name would you like to put on this card?", "Agent card name", ishuman(user) ? user.real_name : user.name)),1,26) + var t = sanitize(copytext(input(user, "What name would you like to put on this card?", "Agent card name", ishuman(user) ? user.real_name : user.name),1,26)) if(!t || t == "Unknown" || t == "floor" || t == "wall" || t == "r-wall") //Same as mob/new_player/prefrences.dm alert("Invalid name.") return src.registered_name = t - var u = copytext(sanitize(input(user, "What occupation would you like to put on this card?\nNote: This will not grant any access levels other than Maintenance.", "Agent card job assignment", "Civilian")),1,MAX_MESSAGE_LEN) + var u = sanitize(copytext(input(user, "What occupation would you like to put on this card?\nNote: This will not grant any access levels other than Maintenance.", "Agent card job assignment", "Civilian"),1,MAX_MESSAGE_LEN)) if(!u) alert("Invalid assignment.") src.registered_name = "" diff --git a/code/game/objects/items/weapons/implants/implantcase.dm b/code/game/objects/items/weapons/implants/implantcase.dm index f1db8bf0097..15713658712 100644 --- a/code/game/objects/items/weapons/implants/implantcase.dm +++ b/code/game/objects/items/weapons/implants/implantcase.dm @@ -29,7 +29,7 @@ return if((!in_range(src, usr) && src.loc != user)) return - t = copytext(sanitize(t),1,MAX_MESSAGE_LEN) + t = sanitize(copytext(t,1,MAX_MESSAGE_LEN)) if(t) src.name = text("Glass Case- '[]'", t) else diff --git a/code/game/objects/structures/morgue.dm b/code/game/objects/structures/morgue.dm index 1b0825f4f84..5708ed9c604 100644 --- a/code/game/objects/structures/morgue.dm +++ b/code/game/objects/structures/morgue.dm @@ -111,7 +111,7 @@ return if ((!in_range(src, usr) && src.loc != user)) return - t = copytext(sanitize(t),1,MAX_MESSAGE_LEN) + t = sanitize(copytext(t,1,MAX_MESSAGE_LEN)) if (t) src.name = text("Morgue- '[]'", t) src.overlays += image(src.icon, "morgue_label") @@ -285,7 +285,7 @@ return if ((!in_range(src, usr) > 1 && src.loc != user)) return - t = copytext(sanitize(t),1,MAX_MESSAGE_LEN) + t = sanitize(copytext(t,1,MAX_MESSAGE_LEN)) if (t) src.name = text("Crematorium- '[]'", t) else diff --git a/code/game/supplyshuttle.dm b/code/game/supplyshuttle.dm index 57216de9efd..9f938b58a3d 100644 --- a/code/game/supplyshuttle.dm +++ b/code/game/supplyshuttle.dm @@ -373,7 +373,7 @@ var/list/mechtoys = list( if(!istype(P)) return var/timeout = world.time + 600 - var/reason = copytext(sanitize(input(usr,"Reason:","Why do you require this item?","") as null|text),1,MAX_MESSAGE_LEN) + var/reason = sanitize(copytext(input(usr,"Reason:","Why do you require this item?","") as null|text,1,MAX_MESSAGE_LEN)) if(world.time > timeout) return if(!reason) return @@ -578,7 +578,7 @@ var/list/mechtoys = list( if(!istype(P)) return var/timeout = world.time + 600 - var/reason = copytext(sanitize(input(usr,"Reason:","Why do you require this item?","") as null|text),1,MAX_MESSAGE_LEN) + var/reason = sanitize(copytext(input(usr,"Reason:","Why do you require this item?","") as null|text,1,MAX_MESSAGE_LEN)) if(world.time > timeout) return if(!reason) return diff --git a/code/game/verbs/ooc.dm b/code/game/verbs/ooc.dm index 61ec3c862ee..093b139f677 100644 --- a/code/game/verbs/ooc.dm +++ b/code/game/verbs/ooc.dm @@ -10,7 +10,7 @@ var/global/normal_ooc_colour = "#002eb8" src << "Guests may not use OOC." return - msg = trim(copytext(sanitize(msg), 1, MAX_MESSAGE_LEN)) + msg = trim(sanitize(copytext(msg, 1, MAX_MESSAGE_LEN))) if(!msg) return if(!(prefs.toggles & CHAT_OOC)) @@ -92,7 +92,7 @@ var/global/normal_ooc_colour = "#002eb8" src << "Guests may not use OOC." return - msg = trim(copytext(sanitize(msg), 1, MAX_MESSAGE_LEN)) + msg = trim(sanitize(copytext(msg, 1, MAX_MESSAGE_LEN))) if(!msg) return if(!(prefs.toggles & CHAT_LOOC)) diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 3dcd7895dbb..07af614f498 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -2242,7 +2242,7 @@ if(!ticker) alert("The game hasn't started yet!") return - var/objective = copytext(sanitize(input("Enter an objective")),1,MAX_MESSAGE_LEN) + var/objective = sanitize(copytext(input("Enter an objective"),1,MAX_MESSAGE_LEN)) if(!objective) return feedback_inc("admin_secrets_fun_used",1) diff --git a/code/modules/admin/verbs/adminsay.dm b/code/modules/admin/verbs/adminsay.dm index ceefd17c3a6..cf3e5d951f9 100644 --- a/code/modules/admin/verbs/adminsay.dm +++ b/code/modules/admin/verbs/adminsay.dm @@ -5,7 +5,7 @@ if(!check_rights(R_ADMIN)) return - msg = copytext(sanitize(msg), 1, MAX_MESSAGE_LEN) + msg = sanitize(copytext(msg, 1, MAX_MESSAGE_LEN)) if(!msg) return log_admin("[key_name(src)] : [msg]") @@ -26,7 +26,7 @@ if(!check_rights(R_ADMIN|R_MOD)) return - msg = copytext(sanitize(msg), 1, MAX_MESSAGE_LEN) + msg = sanitize(copytext(msg, 1, MAX_MESSAGE_LEN)) log_admin("MOD: [key_name(src)] : [msg]") if (!msg) diff --git a/code/modules/admin/verbs/deadsay.dm b/code/modules/admin/verbs/deadsay.dm index b4253848893..1fe7e90105f 100644 --- a/code/modules/admin/verbs/deadsay.dm +++ b/code/modules/admin/verbs/deadsay.dm @@ -28,7 +28,7 @@ if (src.holder.rights & R_ADMIN) stafftype = "ADMIN" - msg = copytext(sanitize(msg), 1, MAX_MESSAGE_LEN) + msg = sanitize(copytext(msg, 1, MAX_MESSAGE_LEN)) log_admin("[key_name(src)] : [msg]") if (!msg) diff --git a/code/modules/admin/verbs/honksquad.dm b/code/modules/admin/verbs/honksquad.dm index beb903bf5b0..a56d6cd091f 100644 --- a/code/modules/admin/verbs/honksquad.dm +++ b/code/modules/admin/verbs/honksquad.dm @@ -19,7 +19,7 @@ var/global/sent_honksquad = 0 var/input = null while(!input) - input = copytext(sanitize(input(src, "Please specify which mission the HONKsquad shall undertake.", "Specify Mission", "")),1,MAX_MESSAGE_LEN) + input = sanitize(copytext(input(src, "Please specify which mission the HONKsquad shall undertake.", "Specify Mission", ""),1,MAX_MESSAGE_LEN)) if(!input) if(alert("Error, no mission set. Do you want to exit the setup process?",,"Yes","No")=="Yes") return diff --git a/code/modules/admin/verbs/pray.dm b/code/modules/admin/verbs/pray.dm index caab5c8b258..4ca805ac35c 100644 --- a/code/modules/admin/verbs/pray.dm +++ b/code/modules/admin/verbs/pray.dm @@ -2,7 +2,7 @@ set category = "IC" set name = "Pray" - msg = copytext(sanitize(msg), 1, MAX_MESSAGE_LEN) + msg = sanitize(copytext(msg, 1, MAX_MESSAGE_LEN)) if(!msg) return if(usr.client) @@ -39,7 +39,7 @@ //log_admin("HELP: [key_name(src)]: [msg]") /proc/Centcomm_announce(var/text , var/mob/Sender) - var/msg = copytext(sanitize(text), 1, MAX_MESSAGE_LEN) + var/msg = sanitize(copytext(text, 1, MAX_MESSAGE_LEN)) msg = "\blue CENTCOMM:[key_name(Sender, 1)] (PP) (VV) (SM) (JMP) (CA) (BSA) (RPLY): [msg]" var/list/eventholders = list() @@ -61,7 +61,7 @@ return /proc/Syndicate_announce(var/text , var/mob/Sender) - var/msg = copytext(sanitize(text), 1, MAX_MESSAGE_LEN) + var/msg = sanitize(copytext(text, 1, MAX_MESSAGE_LEN)) msg = "\blue SYNDICATE: [key_name(Sender, 1)] (PP) (VV) (SM) (JMP) (CA) (BSA) (REPLY): [msg]" var/list/eventholders = list() @@ -83,7 +83,7 @@ return /proc/HONK_announce(var/text , var/mob/Sender) - var/msg = copytext(sanitize(text), 1, MAX_MESSAGE_LEN) + var/msg = sanitize(copytext(text, 1, MAX_MESSAGE_LEN)) msg = "\blue HONK:[key_name(Sender, 1)] (PP) (VV) (SM) (JMP) (CA) (BSA) (RPLY): [msg]" var/list/eventholders = list() diff --git a/code/modules/admin/verbs/striketeam.dm b/code/modules/admin/verbs/striketeam.dm index b4821d699ad..3218678712c 100644 --- a/code/modules/admin/verbs/striketeam.dm +++ b/code/modules/admin/verbs/striketeam.dm @@ -19,7 +19,7 @@ var/global/sent_strike_team = 0 var/input = null while(!input) - input = copytext(sanitize(input(src, "Please specify which mission the death commando squad shall undertake.", "Specify Mission", "")),1,MAX_MESSAGE_LEN) + input = sanitize(copytext(input(src, "Please specify which mission the death commando squad shall undertake.", "Specify Mission", ""),1,MAX_MESSAGE_LEN)) if(!input) if(alert("Error, no mission set. Do you want to exit the setup process?",,"Yes","No")=="Yes") return diff --git a/code/modules/admin/verbs/striketeam_syndicate.dm b/code/modules/admin/verbs/striketeam_syndicate.dm index c43e93dde6c..755bc91817e 100644 --- a/code/modules/admin/verbs/striketeam_syndicate.dm +++ b/code/modules/admin/verbs/striketeam_syndicate.dm @@ -24,7 +24,7 @@ var/global/sent_syndicate_strike_team = 0 var/input = null while(!input) - input = copytext(sanitize(input(src, "Please specify which mission the syndicate strike team shall undertake.", "Specify Mission", "")),1,MAX_MESSAGE_LEN) + input = sanitize(copytext(input(src, "Please specify which mission the syndicate strike team shall undertake.", "Specify Mission", ""),1,MAX_MESSAGE_LEN)) if(!input) if(alert("Error, no mission set. Do you want to exit the setup process?",,"Yes","No")=="Yes") return diff --git a/code/modules/computer3/computers/card.dm b/code/modules/computer3/computers/card.dm index 7c928d2ebec..5c4a92f3227 100644 --- a/code/modules/computer3/computers/card.dm +++ b/code/modules/computer3/computers/card.dm @@ -304,7 +304,7 @@ if(auth) var/t1 = href_list["assign"] if(t1 == "Custom") - var/temp_t = copytext(sanitize(input("Enter a custom job assignment.","Assignment")),1,MAX_MESSAGE_LEN) + var/temp_t = sanitize(copytext(input("Enter a custom job assignment.","Assignment"),1,MAX_MESSAGE_LEN)) if(temp_t) t1 = temp_t set_default_access(t1) diff --git a/code/modules/computer3/computers/medical.dm b/code/modules/computer3/computers/medical.dm index 7fc5da12326..af2a3340ae3 100644 --- a/code/modules/computer3/computers/medical.dm +++ b/code/modules/computer3/computers/medical.dm @@ -263,7 +263,7 @@ switch(href_list["field"]) if("fingerprint") if (istype(src.active1, /datum/data/record)) - var/t1 = copytext(sanitize(input("Please input fingerprint hash:", "Med. records", src.active1.fields["fingerprint"], null) as text),1,MAX_MESSAGE_LEN) + var/t1 = trim(sanitize(copytext(input("Please input fingerprint hash:", "Med. records", src.active1.fields["fingerprint"], null) as text,1,MAX_MESSAGE_LEN))) if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!interactable() && (!istype(usr, /mob/living/silicon))) || src.active1 != a1)) return src.active1.fields["fingerprint"] = t1 @@ -281,55 +281,55 @@ src.active1.fields["age"] = t1 if("mi_dis") if (istype(src.active2, /datum/data/record)) - var/t1 = copytext(sanitize(input("Please input minor disabilities list:", "Med. records", src.active2.fields["mi_dis"], null) as text),1,MAX_MESSAGE_LEN) + var/t1 = sanitize(copytext(input("Please input minor disabilities list:", "Med. records", src.active2.fields["mi_dis"], null) as text,1,MAX_MESSAGE_LEN)) if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!interactable() && (!istype(usr, /mob/living/silicon))) || src.active2 != a2)) return src.active2.fields["mi_dis"] = t1 if("mi_dis_d") if (istype(src.active2, /datum/data/record)) - var/t1 = copytext(sanitize(input("Please summarize minor dis.:", "Med. records", src.active2.fields["mi_dis_d"], null) as message),1,MAX_MESSAGE_LEN) + var/t1 = sanitize(copytext(input("Please summarize minor dis.:", "Med. records", src.active2.fields["mi_dis_d"], null) as message,1,MAX_MESSAGE_LEN)) if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!interactable() && (!istype(usr, /mob/living/silicon))) || src.active2 != a2)) return src.active2.fields["mi_dis_d"] = t1 if("ma_dis") if (istype(src.active2, /datum/data/record)) - var/t1 = copytext(sanitize(input("Please input major diabilities list:", "Med. records", src.active2.fields["ma_dis"], null) as text),1,MAX_MESSAGE_LEN) + var/t1 = sanitize(copytext(input("Please input major diabilities list:", "Med. records", src.active2.fields["ma_dis"], null) as text,1,MAX_MESSAGE_LEN)) if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!interactable() && (!istype(usr, /mob/living/silicon))) || src.active2 != a2)) return src.active2.fields["ma_dis"] = t1 if("ma_dis_d") if (istype(src.active2, /datum/data/record)) - var/t1 = copytext(sanitize(input("Please summarize major dis.:", "Med. records", src.active2.fields["ma_dis_d"], null) as message),1,MAX_MESSAGE_LEN) + var/t1 = sanitize(copytext(input("Please summarize major dis.:", "Med. records", src.active2.fields["ma_dis_d"], null) as message,1,MAX_MESSAGE_LEN)) if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!interactable() && (!istype(usr, /mob/living/silicon))) || src.active2 != a2)) return src.active2.fields["ma_dis_d"] = t1 if("alg") if (istype(src.active2, /datum/data/record)) - var/t1 = copytext(sanitize(input("Please state allergies:", "Med. records", src.active2.fields["alg"], null) as text),1,MAX_MESSAGE_LEN) + var/t1 = sanitize(copytext(input("Please state allergies:", "Med. records", src.active2.fields["alg"], null) as text,1,MAX_MESSAGE_LEN)) if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!interactable() && (!istype(usr, /mob/living/silicon))) || src.active2 != a2)) return src.active2.fields["alg"] = t1 if("alg_d") if (istype(src.active2, /datum/data/record)) - var/t1 = copytext(sanitize(input("Please summarize allergies:", "Med. records", src.active2.fields["alg_d"], null) as message),1,MAX_MESSAGE_LEN) + var/t1 = sanitize(copytext(input("Please summarize allergies:", "Med. records", src.active2.fields["alg_d"], null) as message,1,MAX_MESSAGE_LEN)) if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!interactable() && (!istype(usr, /mob/living/silicon))) || src.active2 != a2)) return src.active2.fields["alg_d"] = t1 if("cdi") if (istype(src.active2, /datum/data/record)) - var/t1 = copytext(sanitize(input("Please state diseases:", "Med. records", src.active2.fields["cdi"], null) as text),1,MAX_MESSAGE_LEN) + var/t1 = sanitize(copytext(input("Please state diseases:", "Med. records", src.active2.fields["cdi"], null) as text,1,MAX_MESSAGE_LEN)) if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!interactable() && (!istype(usr, /mob/living/silicon))) || src.active2 != a2)) return src.active2.fields["cdi"] = t1 if("cdi_d") if (istype(src.active2, /datum/data/record)) - var/t1 = copytext(sanitize(input("Please summarize diseases:", "Med. records", src.active2.fields["cdi_d"], null) as message),1,MAX_MESSAGE_LEN) + var/t1 = sanitize(copytext(input("Please summarize diseases:", "Med. records", src.active2.fields["cdi_d"], null) as message,1,MAX_MESSAGE_LEN)) if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!interactable() && (!istype(usr, /mob/living/silicon))) || src.active2 != a2)) return src.active2.fields["cdi_d"] = t1 if("notes") if (istype(src.active2, /datum/data/record)) - var/t1 = copytext(html_encode(input("Please summarize notes:", "Med. records", html_decode(src.active2.fields["notes"]), null) as message),1,MAX_MESSAGE_LEN) + var/t1 = html_encode(trim(copytext(input("Please summarize notes:", "Med. records", html_decode(src.active2.fields["notes"]), null) as message,1,MAX_MESSAGE_LEN))) if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!interactable() && (!istype(usr, /mob/living/silicon))) || src.active2 != a2)) return src.active2.fields["notes"] = t1 @@ -344,21 +344,21 @@ src.temp = text("Blood Type:
    \n\tA- A+
    \n\tB- B+
    \n\tAB- AB+
    \n\tO- O+
    ", src, src, src, src, src, src, src, src) if("b_dna") if (istype(src.active1, /datum/data/record)) - var/t1 = copytext(sanitize(input("Please input DNA hash:", "Med. records", src.active1.fields["dna"], null) as text),1,MAX_MESSAGE_LEN) + var/t1 = sanitize(copytext(input("Please input DNA hash:", "Med. records", src.active1.fields["dna"], null) as text,1,MAX_MESSAGE_LEN)) if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!interactable() && (!istype(usr, /mob/living/silicon))) || src.active1 != a1)) return src.active1.fields["dna"] = t1 if("vir_name") var/datum/data/record/v = locate(href_list["edit_vir"]) if (v) - var/t1 = copytext(sanitize(input("Please input pathogen name:", "VirusDB", v.fields["name"], null) as text),1,MAX_MESSAGE_LEN) + var/t1 = sanitize(copytext(input("Please input pathogen name:", "VirusDB", v.fields["name"], null) as text,1,MAX_MESSAGE_LEN)) if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!interactable() && (!istype(usr, /mob/living/silicon))) || src.active1 != a1)) return v.fields["name"] = t1 if("vir_desc") var/datum/data/record/v = locate(href_list["edit_vir"]) if (v) - var/t1 = copytext(sanitize(input("Please input information about pathogen:", "VirusDB", v.fields["description"], null) as message),1,MAX_MESSAGE_LEN) + var/t1 = sanitize(copytext(input("Please input information about pathogen:", "VirusDB", v.fields["description"], null) as message,1,MAX_MESSAGE_LEN)) if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!interactable() && (!istype(usr, /mob/living/silicon))) || src.active1 != a1)) return v.fields["description"] = t1 @@ -461,7 +461,7 @@ if (!( istype(src.active2, /datum/data/record) )) return var/a2 = src.active2 - var/t1 = copytext(sanitize(input("Add Comment:", "Med. records", null, null) as message),1,MAX_MESSAGE_LEN) + var/t1 = sanitize(copytext(input("Add Comment:", "Med. records", null, null) as message,1,MAX_MESSAGE_LEN)) if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!interactable() && (!istype(usr, /mob/living/silicon))) || src.active2 != a2)) return var/counter = 1 diff --git a/code/modules/computer3/computers/message.dm b/code/modules/computer3/computers/message.dm index 3bbb580f5e9..3eab3f59269 100644 --- a/code/modules/computer3/computers/message.dm +++ b/code/modules/computer3/computers/message.dm @@ -383,7 +383,7 @@ //Enter message if("Message") custommessage = input(usr, "Please enter your message.") as text|null - custommessage = copytext(sanitize(custommessage), 1, MAX_MESSAGE_LEN) + custommessage = sanitize(copytext(custommessage), 1, MAX_MESSAGE_LEN) //Send message if("Send") diff --git a/code/modules/computer3/computers/prisoner.dm b/code/modules/computer3/computers/prisoner.dm index 11aa5ebd6e9..4bb238852fc 100644 --- a/code/modules/computer3/computers/prisoner.dm +++ b/code/modules/computer3/computers/prisoner.dm @@ -90,7 +90,7 @@ screen = !screen else if(href_list["warn"]) - var/warning = trim(copytext(sanitize(input(usr,"Message:","Enter your message here!","")),1,MAX_MESSAGE_LEN)) + var/warning = trim(sanitize(copytext(input(usr,"Message:","Enter your message here!",""),1,MAX_MESSAGE_LEN))) if(!warning) return var/obj/item/weapon/implant/I = locate(href_list["warn"]) if( istype(I) && I.imp_in) diff --git a/code/modules/computer3/computers/security.dm b/code/modules/computer3/computers/security.dm index 477f7c7f972..cccfaca2d6e 100644 --- a/code/modules/computer3/computers/security.dm +++ b/code/modules/computer3/computers/security.dm @@ -404,7 +404,7 @@ What a mess.*/ if (!( istype(active2, /datum/data/record) )) return var/a2 = active2 - var/t1 = copytext(sanitize(input("Add Comment:", "Secure. records", null, null) as message),1,MAX_MESSAGE_LEN) + var/t1 = sanitize(copytext(input("Add Comment:", "Secure. records", null, null) as message,1,MAX_MESSAGE_LEN)) if ((!( t1 ) || !( authenticated ) || usr.stat || usr.restrained() || (!interactable() && (!istype(usr, /mob/living/silicon))) || active2 != a2)) return var/counter = 1 @@ -473,13 +473,13 @@ What a mess.*/ active1.fields["name"] = t1 if("id") if (istype(active2, /datum/data/record)) - var/t1 = copytext(sanitize(input("Please input id:", "Secure. records", active1.fields["id"], null) as text),1,MAX_MESSAGE_LEN) + var/t1 = sanitize(copytext(input("Please input id:", "Secure. records", active1.fields["id"], null) as text,1,MAX_MESSAGE_LEN)) if ((!( t1 ) || !( authenticated ) || usr.stat || usr.restrained() || (!interactable() && (!istype(usr, /mob/living/silicon))) || active1 != a1)) return active1.fields["id"] = t1 if("fingerprint") if (istype(active1, /datum/data/record)) - var/t1 = copytext(sanitize(input("Please input fingerprint hash:", "Secure. records", active1.fields["fingerprint"], null) as text),1,MAX_MESSAGE_LEN) + var/t1 = sanitize(copytext(input("Please input fingerprint hash:", "Secure. records", active1.fields["fingerprint"], null) as text,1,MAX_MESSAGE_LEN)) if ((!( t1 ) || !( authenticated ) || usr.stat || usr.restrained() || (!interactable() && (!istype(usr, /mob/living/silicon))) || active1 != a1)) return active1.fields["fingerprint"] = t1 @@ -497,31 +497,31 @@ What a mess.*/ active1.fields["age"] = t1 if("mi_crim") if (istype(active2, /datum/data/record)) - var/t1 = copytext(sanitize(input("Please input minor disabilities list:", "Secure. records", active2.fields["mi_crim"], null) as text),1,MAX_MESSAGE_LEN) + var/t1 = sanitize(copytext(input("Please input minor disabilities list:", "Secure. records", active2.fields["mi_crim"], null) as text,1,MAX_MESSAGE_LEN)) if ((!( t1 ) || !( authenticated ) || usr.stat || usr.restrained() || (!interactable() && (!istype(usr, /mob/living/silicon))) || active2 != a2)) return active2.fields["mi_crim"] = t1 if("mi_crim_d") if (istype(active2, /datum/data/record)) - var/t1 = copytext(sanitize(input("Please summarize minor dis.:", "Secure. records", active2.fields["mi_crim_d"], null) as message),1,MAX_MESSAGE_LEN) + var/t1 = sanitize(copytext(input("Please summarize minor dis.:", "Secure. records", active2.fields["mi_crim_d"], null) as message,1,MAX_MESSAGE_LEN)) if ((!( t1 ) || !( authenticated ) || usr.stat || usr.restrained() || (!interactable() && (!istype(usr, /mob/living/silicon))) || active2 != a2)) return active2.fields["mi_crim_d"] = t1 if("ma_crim") if (istype(active2, /datum/data/record)) - var/t1 = copytext(sanitize(input("Please input major diabilities list:", "Secure. records", active2.fields["ma_crim"], null) as text),1,MAX_MESSAGE_LEN) + var/t1 = sanitize(copytext(input("Please input major diabilities list:", "Secure. records", active2.fields["ma_crim"], null) as text,1,MAX_MESSAGE_LEN)) if ((!( t1 ) || !( authenticated ) || usr.stat || usr.restrained() || (!interactable() && (!istype(usr, /mob/living/silicon))) || active2 != a2)) return active2.fields["ma_crim"] = t1 if("ma_crim_d") if (istype(active2, /datum/data/record)) - var/t1 = copytext(sanitize(input("Please summarize major dis.:", "Secure. records", active2.fields["ma_crim_d"], null) as message),1,MAX_MESSAGE_LEN) + var/t1 = sanitize(copytext(input("Please summarize major dis.:", "Secure. records", active2.fields["ma_crim_d"], null) as message,1,MAX_MESSAGE_LEN)) if ((!( t1 ) || !( authenticated ) || usr.stat || usr.restrained() || (!interactable() && (!istype(usr, /mob/living/silicon))) || active2 != a2)) return active2.fields["ma_crim_d"] = t1 if("notes") if (istype(active2, /datum/data/record)) - var/t1 = copytext(html_encode(input("Please summarize notes:", "Secure. records", html_decode(active2.fields["notes"]), null) as message),1,MAX_MESSAGE_LEN) + var/t1 = trim(sanitize(copytext(input("Please summarize minor dis.:", "Secure. records", active2.fields["mi_crim_d"], null) as message,1,MAX_MESSAGE_LEN))) if ((!( t1 ) || !( authenticated ) || usr.stat || usr.restrained() || (!interactable() && (!istype(usr, /mob/living/silicon))) || active2 != a2)) return active2.fields["notes"] = t1 @@ -548,7 +548,7 @@ What a mess.*/ alert(usr, "You do not have the required rank to do this!") if("species") if (istype(active1, /datum/data/record)) - var/t1 = copytext(sanitize(input("Please enter race:", "General records", active1.fields["species"], null) as message),1,MAX_MESSAGE_LEN) + var/t1 = sanitize(copytext(input("Please enter race:", "General records", active1.fields["species"], null) as message,1,MAX_MESSAGE_LEN)) if ((!( t1 ) || !( authenticated ) || usr.stat || usr.restrained() || (!interactable() && (!istype(usr, /mob/living/silicon))) || active1 != a1)) return active1.fields["species"] = t1 diff --git a/code/modules/library/lib_machines.dm b/code/modules/library/lib_machines.dm index 66c19bfcda0..74436079af6 100644 --- a/code/modules/library/lib_machines.dm +++ b/code/modules/library/lib_machines.dm @@ -302,9 +302,9 @@ datum/borrowbook // Datum used to keep track of who has borrowed what when and f if(checkoutperiod < 1) checkoutperiod = 1 if(href_list["editbook"]) - buffer_book = copytext(sanitize(input("Enter the book's title:") as text|null),1,MAX_MESSAGE_LEN) + buffer_book = sanitize(copytext(input("Enter the book's title:") as text|null,1,MAX_MESSAGE_LEN)) if(href_list["editmob"]) - buffer_mob = copytext(sanitize(input("Enter the recipient's name:") as text|null),1,MAX_NAME_LEN) + buffer_mob = sanitize(copytext(input("Enter the recipient's name:") as text|null,1,MAX_NAME_LEN)) if(href_list["checkout"]) var/datum/borrowbook/b = new /datum/borrowbook b.bookname = sanitize(buffer_book) @@ -319,7 +319,7 @@ datum/borrowbook // Datum used to keep track of who has borrowed what when and f var/obj/item/weapon/book/b = locate(href_list["delbook"]) inventory.Remove(b) if(href_list["setauthor"]) - var/newauthor = copytext(sanitize(input("Enter the author's name: ") as text|null),1,MAX_MESSAGE_LEN) + var/newauthor = sanitize(copytext(input("Enter the author's name: ") as text|null,1,MAX_MESSAGE_LEN)) if(newauthor) scanner.cache.author = newauthor if(href_list["setcategory"]) diff --git a/code/modules/mob/emote.dm b/code/modules/mob/emote.dm index 07e8d5c6dee..32af0998702 100644 --- a/code/modules/mob/emote.dm +++ b/code/modules/mob/emote.dm @@ -10,7 +10,7 @@ var/input if(!message) - input = copytext(sanitize(input(src,"Choose an emote to display.") as text|null),1,MAX_MESSAGE_LEN) + input = sanitize(copytext(input(src,"Choose an emote to display.") as text|null,1,MAX_MESSAGE_LEN)) else input = message if(input) @@ -85,7 +85,7 @@ var/input if(!message) - input = copytext(sanitize(input(src, "Choose an emote to display.") as text|null), 1, MAX_MESSAGE_LEN) + input = sanitize(copytext(input(src, "Choose an emote to display.") as text|null, 1, MAX_MESSAGE_LEN)) else input = message diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm index 28afe49ab45..40dd8959564 100644 --- a/code/modules/mob/living/carbon/human/emote.dm +++ b/code/modules/mob/living/carbon/human/emote.dm @@ -113,7 +113,7 @@ m_type = 1 if ("custom") - var/input = copytext(sanitize(input("Choose an emote to display.") as text|null),1,MAX_MESSAGE_LEN) + var/input = sanitize(copytext(input("Choose an emote to display.") as text|null,1,MAX_MESSAGE_LEN)) if (!input) return var/input2 = input("Is this a visible or hearable emote?") in list("Visible","Hearable") @@ -740,11 +740,11 @@ set desc = "Sets a description which will be shown when someone examines you." set category = "IC" - pose = copytext(sanitize(input(usr, "This is [src]. \He is...", "Pose", null) as text), 1, MAX_MESSAGE_LEN) + pose = sanitize(copytext(input(usr, "This is [src]. \He is...", "Pose", null) as text, 1, MAX_MESSAGE_LEN)) /mob/living/carbon/human/verb/set_flavor() set name = "Set Flavour Text" set desc = "Sets an extended description of your character's features." set category = "IC" - flavor_text = copytext(sanitize(input(usr, "Please enter your new flavour text.", "Flavour text", null) as text), 1) + flavor_text = sanitize(copytext(input(usr, "Please enter your new flavour text.", "Flavour text", null) as text, 1)) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index ff64560fbbe..1435949c6a6 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -853,7 +853,7 @@ for (var/datum/data/record/R in data_core.security) if (R.fields["id"] == E.fields["id"]) if(hasHUD(usr,"security")) - var/t1 = copytext(sanitize(input("Add Comment:", "Sec. records", null, null) as message),1,MAX_MESSAGE_LEN) + var/t1 = sanitize(copytext(input("Add Comment:", "Sec. records", null, null) as message,1,MAX_MESSAGE_LEN)) if ( !(t1) || usr.stat || usr.restrained() || !(hasHUD(usr,"security")) ) return var/counter = 1 @@ -985,7 +985,7 @@ for (var/datum/data/record/R in data_core.medical) if (R.fields["id"] == E.fields["id"]) if(hasHUD(usr,"medical")) - var/t1 = copytext(sanitize(input("Add Comment:", "Med. records", null, null) as message),1,MAX_MESSAGE_LEN) + var/t1 = sanitize(copytext(input("Add Comment:", "Med. records", null, null) as message,1,MAX_MESSAGE_LEN)) if ( !(t1) || usr.stat || usr.restrained() || !(hasHUD(usr,"medical")) ) return var/counter = 1 diff --git a/code/modules/mob/living/carbon/metroid/metroid.dm b/code/modules/mob/living/carbon/metroid/metroid.dm index dbdeb728fa6..5ed4f781cae 100644 --- a/code/modules/mob/living/carbon/metroid/metroid.dm +++ b/code/modules/mob/living/carbon/metroid/metroid.dm @@ -803,7 +803,7 @@ mob/living/carbon/slime/var/temperature_resistance = T0C+75 pet.colour = "[M.colour]" user <<"You feed the slime the potion, removing it's powers and calming it." del(M) - var/newname = copytext(sanitize(input(user, "Would you like to give the slime a name?", "Name your new pet", "pet slime") as null|text),1,MAX_NAME_LEN) + var/newname = sanitize(copytext(input(user, "Would you like to give the slime a name?", "Name your new pet", "pet slime") as null|text,1,MAX_NAME_LEN)) if (!newname) newname = "pet slime" @@ -834,7 +834,7 @@ mob/living/carbon/slime/var/temperature_resistance = T0C+75 pet.colour = "[M.colour]" user <<"You feed the slime the potion, removing it's powers and calming it." del(M) - var/newname = copytext(sanitize(input(user, "Would you like to give the slime a name?", "Name your new pet", "pet slime") as null|text),1,MAX_NAME_LEN) + var/newname = sanitize(copytext(input(user, "Would you like to give the slime a name?", "Name your new pet", "pet slime") as null|text,1,MAX_NAME_LEN)) if (!newname) newname = "pet slime" diff --git a/code/modules/mob/living/silicon/pai/recruit.dm b/code/modules/mob/living/silicon/pai/recruit.dm index 9ffc8e0a003..1b4b2fb1d40 100644 --- a/code/modules/mob/living/silicon/pai/recruit.dm +++ b/code/modules/mob/living/silicon/pai/recruit.dm @@ -64,32 +64,32 @@ var/datum/paiController/paiController // Global handler for pAI candidates if("name") t = input("Enter a name for your pAI", "pAI Name", candidate.name) as text if(t) - candidate.name = copytext(sanitize(t),1,MAX_NAME_LEN) + candidate.name = sanitize(copytext(t,1,MAX_NAME_LEN)) if("desc") t = input("Enter a description for your pAI", "pAI Description", candidate.description) as message if(t) - candidate.description = copytext(sanitize(t),1,MAX_MESSAGE_LEN) + candidate.description = sanitize(copytext(t,1,MAX_MESSAGE_LEN)) if("role") t = input("Enter a role for your pAI", "pAI Role", candidate.role) as text if(t) - candidate.role = copytext(sanitize(t),1,MAX_MESSAGE_LEN) + candidate.role = sanitize(copytext(t,1,MAX_MESSAGE_LEN)) if("ooc") t = input("Enter any OOC comments", "pAI OOC Comments", candidate.comments) as message if(t) - candidate.comments = copytext(sanitize(t),1,MAX_MESSAGE_LEN) + candidate.comments = sanitize(copytext(t,1,MAX_MESSAGE_LEN)) if("save") candidate.savefile_save(usr) if("load") candidate.savefile_load(usr) //In case people have saved unsanitized stuff. if(candidate.name) - candidate.name = copytext(sanitize(candidate.name),1,MAX_NAME_LEN) + candidate.name = sanitize(copytext(candidate.name,1,MAX_NAME_LEN)) if(candidate.description) - candidate.description = copytext(sanitize(candidate.description),1,MAX_MESSAGE_LEN) + candidate.description = sanitize(copytext(candidate.description,1,MAX_MESSAGE_LEN)) if(candidate.role) - candidate.role = copytext(sanitize(candidate.role),1,MAX_MESSAGE_LEN) + candidate.role = sanitize(copytext(candidate.role,1,MAX_MESSAGE_LEN)) if(candidate.comments) - candidate.comments = copytext(sanitize(candidate.comments),1,MAX_MESSAGE_LEN) + candidate.comments = sanitize(copytext(candidate.comments,1,MAX_MESSAGE_LEN)) if("submit") if(candidate) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index ae42fbc4697..d446be62095 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -361,7 +361,7 @@ spawn(0) var/newname - newname = copytext(sanitize(input(src,"You are a robot. Enter a name, or leave blank for the default name.", "Name change","") as text),1,MAX_NAME_LEN) + newname = sanitize(copytext(input(src,"You are a robot. Enter a name, or leave blank for the default name.", "Name change","") as text,1,MAX_NAME_LEN)) if (newname != "") notify_ai(3, name, newname) custom_name = newname diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index 86da14df0e7..1eb36aa0c19 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -282,14 +282,14 @@ set desc = "Sets a description which will be shown when someone examines you." set category = "IC" - pose = copytext(sanitize(input(usr, "This is [src]. It is...", "Pose", null) as text), 1, MAX_MESSAGE_LEN) + pose = sanitize(copytext(input(usr, "This is [src]. It is...", "Pose", null) as text, 1, MAX_MESSAGE_LEN)) /mob/living/silicon/verb/set_flavor() set name = "Set Flavour Text" set desc = "Sets an extended description of your character's features." set category = "IC" - flavor_text = copytext(sanitize(input(usr, "Please enter your new flavour text.", "Flavour text", null) as text), 1) + flavor_text = sanitize(copytext(input(usr, "Please enter your new flavour text.", "Flavour text", null) as text, 1)) /mob/living/silicon/binarycheck() return 1 diff --git a/code/modules/mob/living/simple_animal/borer.dm b/code/modules/mob/living/simple_animal/borer.dm index 50334dbdf27..f8dd9e5c6fe 100644 --- a/code/modules/mob/living/simple_animal/borer.dm +++ b/code/modules/mob/living/simple_animal/borer.dm @@ -12,7 +12,7 @@ return if(istype(src.loc,/mob/living/simple_animal/borer)) - message = trim(copytext(sanitize(message), 1, MAX_MESSAGE_LEN)) + message = trim(sanitize(copytext(message, 1, MAX_MESSAGE_LEN))) if (!message) return log_say("[key_name(src)] : [message]") diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index d3abbfc1776..4c5a6d09372 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -278,7 +278,7 @@ proc/slur(phrase) n_letter = text("[n_letter]-[n_letter]") t = text("[t][n_letter]")//since the above is ran through for each letter, the text just adds up back to the original word. p++//for each letter p is increased to find where the next letter will be. - return copytext(sanitize(t),1,MAX_MESSAGE_LEN) + return sanitize(copytext(t,1,MAX_MESSAGE_LEN)) proc/Gibberish(t, p)//t is the inputted message, and any value higher than 70 for p will cause letters to be replaced instead of added @@ -325,7 +325,7 @@ It's fairly easy to fix if dealing with single letters but not so much with comp n_letter = text("[n_letter]") t = text("[t][n_letter]") p=p+n_mod - return copytext(sanitize(t),1,MAX_MESSAGE_LEN) + return sanitize(copytext(t,1,MAX_MESSAGE_LEN)) /proc/shake_camera(mob/M, duration, strength=1) diff --git a/code/modules/paperwork/faxmachine.dm b/code/modules/paperwork/faxmachine.dm index 7beff751760..d1de4684eb4 100644 --- a/code/modules/paperwork/faxmachine.dm +++ b/code/modules/paperwork/faxmachine.dm @@ -133,7 +133,7 @@ var/list/alldepartments = list() if(href_list["rename"]) if(copyitem) - var/n_name = copytext(sanitize(input(usr, "What would you like to label the fax?", "Fax Labelling", copyitem.name) as text), 1, MAX_MESSAGE_LEN) + var/n_name = sanitize(copytext(input(usr, "What would you like to label the fax?", "Fax Labelling", copyitem.name) as text, 1, MAX_MESSAGE_LEN)) if((copyitem && copyitem.loc == src && usr.stat == 0)) if (istype(copyitem, /obj/item/weapon/paper)) copyitem.name = "[(n_name ? text("[n_name]") : initial(copyitem.name))]" diff --git a/code/modules/paperwork/folders.dm b/code/modules/paperwork/folders.dm index 828c9f90d29..c8b674fe5f3 100644 --- a/code/modules/paperwork/folders.dm +++ b/code/modules/paperwork/folders.dm @@ -37,7 +37,7 @@ user << "You put the [W] into \the [src]." update_icon() else if(istype(W, /obj/item/weapon/pen)) - var/n_name = copytext(sanitize(input(usr, "What would you like to label the folder?", "Folder Labelling", null) as text), 1, MAX_NAME_LEN) + var/n_name = sanitize(copytext(input(usr, "What would you like to label the folder?", "Folder Labelling", null) as text, 1, MAX_NAME_LEN)) if((loc == usr && usr.stat == 0)) name = "folder[(n_name ? text("- '[n_name]'") : null)]" return diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index fce6c2acda6..e1727a18ad7 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -76,7 +76,7 @@ if((M_CLUMSY in usr.mutations) && prob(50)) usr << "You cut yourself on the paper." return - var/n_name = copytext(sanitize(input(usr, "What would you like to label the paper?", "Paper Labelling", name) as text), 1, MAX_MESSAGE_LEN) + var/n_name = sanitize(copytext(input(usr, "What would you like to label the paper?", "Paper Labelling", name) as text, 1, MAX_MESSAGE_LEN)) if((loc == usr && usr.stat == 0)) name = "[(n_name ? text("[n_name]") : initial(name))]" if(name != "paper") @@ -185,7 +185,7 @@ /obj/item/weapon/paper/proc/parsepencode(var/t, var/obj/item/weapon/pen/P, mob/user as mob, var/iscrayon = 0) -// t = copytext(sanitize(t),1,MAX_MESSAGE_LEN) +// t = sanitize(copytext(t),1,MAX_MESSAGE_LEN) t = replacetext(t, "\[center\]", "
    ") t = replacetext(t, "\[/center\]", "
    ") diff --git a/code/modules/paperwork/paper_bundle.dm b/code/modules/paperwork/paper_bundle.dm index f821871069c..a3add5a8aa7 100644 --- a/code/modules/paperwork/paper_bundle.dm +++ b/code/modules/paperwork/paper_bundle.dm @@ -189,7 +189,7 @@ set category = "Object" set src in usr - var/n_name = copytext(sanitize(input(usr, "What would you like to label the bundle?", "Bundle Labelling", name) as text), 1, MAX_MESSAGE_LEN) + var/n_name = sanitize(copytext(input(usr, "What would you like to label the bundle?", "Bundle Labelling", name) as text, 1, MAX_MESSAGE_LEN)) if((loc == usr && usr.stat == 0)) name = "[(n_name ? text("[n_name]") : "paper bundle")]" add_fingerprint(usr) diff --git a/code/modules/paperwork/photography.dm b/code/modules/paperwork/photography.dm index 479d2510605..111acf13f5f 100644 --- a/code/modules/paperwork/photography.dm +++ b/code/modules/paperwork/photography.dm @@ -90,7 +90,7 @@ set category = "Object" set src in usr - var/n_name = copytext(sanitize(input(usr, "What would you like to label the photo?", "Photo Labelling", name) as text), 1, MAX_MESSAGE_LEN) + var/n_name = sanitize(copytext(input(usr, "What would you like to label the photo?", "Photo Labelling", name) as text, 1, MAX_MESSAGE_LEN)) //loc.loc check is for making possible renaming photos in clipboards if(( (loc == usr || (loc.loc && loc.loc == usr)) && usr.stat == 0)) name = "[(n_name ? text("[n_name]") : "photo")]" diff --git a/code/modules/reagents/reagent_containers/food/snacks.dm b/code/modules/reagents/reagent_containers/food/snacks.dm index 93841370d75..ceedd371255 100644 --- a/code/modules/reagents/reagent_containers/food/snacks.dm +++ b/code/modules/reagents/reagent_containers/food/snacks.dm @@ -136,7 +136,7 @@ /obj/item/weapon/reagent_containers/food/snacks/attackby(obj/item/weapon/W, mob/user) if(istype(W,/obj/item/weapon/pen)) - var/n_name = copytext(sanitize(input(usr, "What would you like to name this dish?", "Food Renaming", null) as text), 1, MAX_NAME_LEN) + var/n_name = sanitize(copytext(input(usr, "What would you like to name this dish?", "Food Renaming", null) as text, 1, MAX_NAME_LEN)) if((loc == usr && usr.stat == 0)) name = "[n_name]" return diff --git a/code/modules/recycling/sortingmachinery.dm b/code/modules/recycling/sortingmachinery.dm index 17f62fc9c67..7f3689cc99b 100755 --- a/code/modules/recycling/sortingmachinery.dm +++ b/code/modules/recycling/sortingmachinery.dm @@ -29,7 +29,7 @@ playsound(src.loc, 'sound/machines/twobeep.ogg', 100, 1) else if(istype(W, /obj/item/weapon/pen)) - var/str = copytext(sanitize(input(usr,"Label text?","Set label","")),1,MAX_NAME_LEN) + var/str = sanitize(copytext(input(usr,"Label text?","Set label",""),1,MAX_NAME_LEN)) if(!str || !length(str)) usr << "\red Invalid text." return @@ -69,7 +69,7 @@ playsound(src.loc, 'sound/machines/twobeep.ogg', 100, 1) else if(istype(W, /obj/item/weapon/pen)) - var/str = copytext(sanitize(input(usr,"Label text?","Set label","")),1,MAX_NAME_LEN) + var/str = sanitize(copytext(input(usr,"Label text?","Set label",""),1,MAX_NAME_LEN)) if(!str || !length(str)) usr << "\red Invalid text." return diff --git a/code/modules/telesci/gps.dm b/code/modules/telesci/gps.dm index 25c5bb154e6..c0a3e9fd58f 100644 --- a/code/modules/telesci/gps.dm +++ b/code/modules/telesci/gps.dm @@ -61,7 +61,7 @@ var/list/GPS_list = list() ..() if(href_list["tag"] ) var/a = input("Please enter desired tag.", name, gpstag) as text - a = uppertext(copytext(sanitize(a), 1, 5)) + a = uppertext(sanitize(copytext(a, 1, 5))) if(src.loc == usr) gpstag = a name = "global positioning system ([gpstag])" From 567036791a8c1ea04eb6f8436c3bf7d1f3e5f0e4 Mon Sep 17 00:00:00 2001 From: Markolie Date: Fri, 20 Feb 2015 22:34:28 +0100 Subject: [PATCH 37/39] Mapfix --- maps/cyberiad.dmm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maps/cyberiad.dmm b/maps/cyberiad.dmm index 77c8ce078cd..6012a798fc9 100644 --- a/maps/cyberiad.dmm +++ b/maps/cyberiad.dmm @@ -6783,7 +6783,7 @@ "cAw" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating,/area/maintenance/engi_shuttle) "cAx" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/engi_shuttle) "cAy" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/engi_shuttle) -"cAz" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/maintenance{name = "Engineering Maintenance"; req_access_txt = "10"; req_one_access_txt = null},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/engine/engineering) +"cAz" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/maintenance{name = "Engineering Maintenance"; req_access_txt = "10"; req_one_access_txt = null},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/maintenance/engi_shuttle) "cAA" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/engine/engineering) "cAB" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/wall/r_wall,/area) "cAC" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/engine/chiefs_office) From ed213963407fccb64730ada51c1362f64577f352 Mon Sep 17 00:00:00 2001 From: Markolie Date: Sat, 21 Feb 2015 01:15:25 +0100 Subject: [PATCH 38/39] Fix absorb language update --- code/game/gamemodes/changeling/powers/absorb.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/gamemodes/changeling/powers/absorb.dm b/code/game/gamemodes/changeling/powers/absorb.dm index bb9785286dc..115a5ae59d2 100644 --- a/code/game/gamemodes/changeling/powers/absorb.dm +++ b/code/game/gamemodes/changeling/powers/absorb.dm @@ -94,7 +94,7 @@ for(var/language in T.languages) if(!(language in absorbed_languages)) absorbed_languages += language - T.changeling_update_languages(absorbed_languages) + user.changeling_update_languages(absorbed_languages) absorbedcount++ store_dna(new_dna, user) From c93bc2acf86965e99aa18a455f6ba3bd30ba841c Mon Sep 17 00:00:00 2001 From: Artorp Date: Sat, 21 Feb 2015 01:36:14 +0100 Subject: [PATCH 39/39] Fixed autolathe merge conflict --- code/game/machinery/autolathe.dm | 69 -------------------------------- 1 file changed, 69 deletions(-) diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index 1774a349e63..7eb1b51da9e 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -179,75 +179,6 @@ /obj/machinery/autolathe/Topic(href, href_list) if(..()) return 1 - if (!busy) - if(href_list["menu"]) - screen = text2num(href_list["menu"]) - - if(href_list["category"]) - selected_category = href_list["category"] - - if(href_list["make"]) - - var/turf/T = get_step(src.loc, get_dir(src,usr)) - - ///////////////// - //href protection - being_built = files.FindDesignByID(href_list["make"]) //check if it's a valid design - if(!being_built) - return - - //multiplier checks : only stacks can have one and its value is 1, 10 ,25 or max_multiplier - var/multiplier = text2num(href_list["multiplier"]) - var/max_multiplier = min(50, being_built.materials["$metal"] ?round(m_amount/being_built.materials["$metal"]):INFINITY,being_built.materials["$glass"]?round(g_amount/being_built.materials["$glass"]):INFINITY) - var/is_stack = ispath(being_built.build_path, /obj/item/stack) - - if(!is_stack && (multiplier > 1)) - return - if (!(multiplier in list(1,10,25,max_multiplier))) //"enough materials ?" is checked further down - return - ///////////////// - - var/coeff = (is_stack ? 1 : 2 ** prod_coeff) //stacks are unaffected by production coefficient - var/metal_cost = being_built.materials["$metal"] - var/glass_cost = being_built.materials["$glass"] - - var/power = max(2000, (metal_cost+glass_cost)*multiplier/5) - - if((m_amount >= metal_cost*multiplier/coeff) && (g_amount >= glass_cost*multiplier/coeff)) - busy = 1 - use_power(power) - icon_state = "autolathe" - flick("autolathe_n",src) - spawn(32/coeff) - use_power(power) - if(is_stack) - m_amount -= metal_cost*multiplier - g_amount -= glass_cost*multiplier - var/obj/item/stack/S = new being_built.build_path(T) - S.amount = multiplier - else - m_amount -= metal_cost/coeff - g_amount -= glass_cost/coeff - var/obj/item/new_item = new being_built.build_path(T) - new_item.m_amt /= coeff - new_item.g_amt /= coeff - if(m_amount < 0) - m_amount = 0 - if(g_amount < 0) - g_amount = 0 - busy = 0 - src.updateUsrDialog() - - if(href_list["search"]) - matching_designs.Cut() - - for(var/datum/design/D in files.known_designs) - if(findtext(D.name,href_list["to_search"])) - matching_designs.Add(D) - - else - usr << "The autolathe is busy. Please wait for completion of previous operation." - if(href_list["menu"]) screen = text2num(href_list["menu"])