From 9bece71e1d57cb6eba922d476297a83fd8ee3b68 Mon Sep 17 00:00:00 2001 From: paprka Date: Wed, 28 Jan 2015 20:27:44 -0800 Subject: [PATCH 001/127] adds a simple overlay system for belts --- .../objects/items/weapons/storage/belt.dm | 6 ++++++ icons/obj/clothing/belts.dmi | Bin 3392 -> 3733 bytes 2 files changed, 6 insertions(+) diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm index 81c473f0364..9e4a54053d3 100644 --- a/code/game/objects/items/weapons/storage/belt.dm +++ b/code/game/objects/items/weapons/storage/belt.dm @@ -7,6 +7,12 @@ slot_flags = SLOT_BELT attack_verb = list("whipped", "lashed", "disciplined") +/obj/item/weapon/storage/belt/update_icon() + overlays.Cut() + for(var/obj/item/I in contents) + overlays += "[I.name]" + ..() + /obj/item/weapon/storage/belt/utility name = "toolbelt" //Carn: utility belt is nicer, but it bamboozles the text parsing. desc = "Holds tools." diff --git a/icons/obj/clothing/belts.dmi b/icons/obj/clothing/belts.dmi index 6fe896b2bb1bdc7f3e46b1b4f8fb112ef2a2464a..e2e63dda13734e907e038edd87113e58c1e6648c 100644 GIT binary patch delta 3485 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 delta 3114 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 From b9e3bf4829e7c0ef0f296b699a7e76a810eb7c24 Mon Sep 17 00:00:00 2001 From: paprka Date: Fri, 30 Jan 2015 17:57:52 -0800 Subject: [PATCH 002/127] fixes sec belt having baton overlay --- icons/obj/clothing/belts.dmi | Bin 3733 -> 3720 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/obj/clothing/belts.dmi b/icons/obj/clothing/belts.dmi index e2e63dda13734e907e038edd87113e58c1e6648c..97cb9ce3371b08b034b2f9b6541d2df0cddc47cd 100644 GIT binary patch delta 2704 zcmYk5c{J1u8^eBH7oQY;hA~=Kf|(vNx1ax2 z9=v43I-fBw;9zfUaXGeNjg}UF-&Fy^`gX5rEPHlNT~y~zOnB%)aN9ZOstbuJdYDn$kZ;! zWv25qn}c$g)Ram7=_Tb_W#aiN#g=L){=tqPfn^SwMLAp&b&-C>4+7DDLl0CxwdQSU zECAM`qAPP#x*iGdy%-#f*0Sw#*bk#MQVh!hl$PXH3iC{P7eYT7zqCelcqCTH7oqe6!tZ|9MAJ>pqgk&MAgB6% zq1%=6H+vC+c~%%LmPPJmH}HJoddN045LM|~T@_Q~)jsQ);aW#o1uCw1EwpXglm`z# z(oecweFEDUz_Qmz<8k@&sx(+%osTWBbr4C;&QA&z{R^!z8gtGKnLTS1NbjVke z+kG&P4$Mo)24P1-JxjkO{5{#dO>7pW4vl3=^7Qfz4n(!cW-1^)EZ}RkaD84Da?mLO zC{071zlY4D94`-XA#SP?m2zc|J|J+YiY*x60EXR zk?=3u;6Bl_RNu*|{N^KTcDSvf&q`f;jtMAHmGnd)+Gff_}Vt z^Sfrlws9QMBb<5xef=^BnLT}1N}cZ3x7VKms?p_2?b8v zZ%chTu?=YBM^Z0|Khx8@CQ6RP^1mFEVdHJC!hG9ND%J^qOz!Hl9YtNTr=?aI+-pmd zOYRwWaEGx-(!+Mb@T1XY9hA=k#H>*Vn+Q8nFU_YR-kzYOc`Ii+dwhf2NTps91-RvU z5ed^{kk>)*HeCLrQyl%YuKaKg5DE5ae^W*~i;sm5jpN)Xu*SJH7#;FrdHI}s!*r`J zVS27AEM!FFowDFzv#qzpQcuL+Ce8B@G#k>=WS#2;;cxe_nR?IO<~w%fM=U31G-G~9 zuHw`CkW2geE~Tj&s;67cuuWCqI`c&jBBIB0RF#Vj zu7W2lqtxK1`0py3!apcy-#=1u+?!#&6i3ky=|n*!p3RjE6crx3@}Pym;S=f`VgW zzLpB`y*C~gCUuw;BP;ogjmbtv#zylIQFvVI92E%&o>n5Rb_eoa0p^wj?$NuzzOGM$ zWqDVl9jjxC!L35iu8M8mEEk~9-#>SwzSHFzUV$TK^CD$jmF!UHUx(594R$ucM^7Fz{9Fgo$C%rXrf0g zQ5bj`z_KrIIlB>&|HFHA<&z`lN&85(R$KPmEINVVvziq)i8qhXrg^_1xl?@xNhcWZ z!fEgx2aM8}ot#3&)r%49#2%eX%k>i~2A;r~P^h}(7SUC!cyxD0Sq8BVNc7hgQ^9?RHS-~Rq(bA!c@)jezx!`%j0 zUG#SCKY^K05Um4ihN3@VgZx)E zO`S?$7{Ad4yF+02=iTk`aPuDIlTz514FD>nft6Ac(om> zWsw>LXYGe0pEZ~GjCXAX!+f|>aX@7-Qu75UuQ1H>Yo@69p z2>Wqj@FLAcAwv;$ep4rngl6AD-zl}Vk6qkG+Z;tg3ps>BXKL|LKSy0JDtRm~;K!aE zV6Gzbe-q`irI}L@O&&|ew2dZXO#G~oih9a$*NgunE;u;5*UacRoLI;9*V&0J=!Fvp zDUzCd)_ytUVD6b1&XC-Gj~j~jdtA6XPK#!azG6q~G>8X`a^vLr7Dg$_lBKPqv+3}>+f`MyUh3}M z_JLe|BhIHhrS!+xjFTs1;@7H_(utiTxiZ8~En!K?2v#XVA|l|JJU06D8ev9Y;t(3z zc}SM>mhc*}sAJj(l2=i}-tC{v-#1NV<^dj_U7`}1NXp_T0nZU1ij z938X<&q*9BG%|Hbvt1e|YjH-gAV{vfnU5tQsFrX_Q}Ua>hLWHfcOX#0DegJ;~b?tKzb_@xhAI;tCaeDRl3L_9o>SB=08c$ghFSvM1X`EQMP zDdmLzy@0DXm31T?zZ(pa&|BVU)qQuNpBU(}5?gx=#|&MDKte};xQ-50{ZsP&p6`#Y y@sqm2fHP?bW`S0E`FFVr?X210%fFx>+kp#nCmeik{5;09kNw&6*436i3I7HyCof|F delta 2718 zcmYk8dpOhm8^>p4bC@=#%3^Zpz;a3^GIJ(Hzf?LpZ8{)DLM&f2g&v0`BV=g}l`>%@ z=N!r*IYrLeoM|)6>A`RH{I2Kvy|4Se?)$#3&wsD?{rP;N6_XVc+lAHD)yeINg#@7o zLL#keoV3DUU}GV`+0N4Jba2L8Z%pWudPNAgwZKjpdCee(gzleve9lS}TK;3Ve*Ni! zqV6Gm%e2e=$6{>KMLz8{Dg4nb|Muj4NUxV_+AZ}cCX?QiG*~Po(c2rWnMey-cV5IC z;#3+hgihSUe321bYjGYmu^wdw4F!q1KD4mJ8i5I zEB#BhA6^kk*w;-R<}5#1LEKW`1H3g^$;+Rxh$ ziG3@Pj2_$OeEH1C$B^#sO3$5>`Jfk9+Yk4kd9LeO-WzgPl;JVneq(p&J!gK3UVf+1 zGp*S?0uvqeaz5jZ0AE2+cM!j+%gI{=XXOu+_^iI?oq5xA&-;7cd@`$~mopDI=jC!Q z0Tqo^fpZtCAXW96cRa3NA1k{vqhUXPaW+yeyXB0fW`JDUFu5FEX=WĭTFKEfMo zz89?6GB2azeXBlJF05Q?{M}2-zLB-18O?d4N%RZcNR1;%RsyZ{^`{b!nH-(~sSOpf zK37~V7O)1aaq<5Q?= z8A3|2Wd1;?nAF;<^v~+=gMP6nRhUz)m+~_xLjizW{6*QxTk?L}!IlG21L zG>@n%jnC!)-xRXQpqrbTc~=DP0k7&2w^YaI$S!d40y>ZXQ`E{`aOMKeN9Uw*Tau(w zff-z)T5@=+$f&7PyILG`#V$9$1QN2^7%#gYd}4S@{5VY1;N?4m>M(n>aLG7I!CG z)P6v2+uE{e>*ZhHHS|Twv)(y)6WX4Kr9R`(Fhg#xS=Q0Bum}voBvLsbbU@B`ZNu?m zS-`6YRa@8NFg5sd5N1PJ^F7VK|qneKEHb>YygHI&`wGuNo zH@b4>BL4au&ufi`zp~=@BhwjvjI4GlQpA1Z>NGZ83|jP?l7Y^+E-;$itx@{Q{kAZ< z{ZT8J`@QYnro^s@1$pH2`%S4%sjP#p9h-7(8BcM$u_v%vL~DqgqoFR1VKp&<{0 zNS{wVfkjMa?aG6bduj5y#q+K7YKk$Z%y@8QFlaD_l=c04Xa{Vlv(HPrNaWOTPkMUQ z9+a;)=a!*SUw=#Gvt=H=xM<*`6Z}D70FNGJ{><1X>MROq%WZpI&1c3l`OLtT^bF;Z zck=znECsgiU@9VUspN!<@)XPm9=JCoP&yIY$oARc#YhS_T7tXg9Aq#Z4C-HPrqQ=C zr%ZQt?{PR39#}jp8B{R)G6l>KB|RJUr8tCKhdc=zV9d3dWnyh0L9rSG-AgC5E(bSR z93CA0*#X?(B!TDFX>oTZClp^HUnENK|Fb7W5<4Y}ncBFKyrp?Vaqa-BsAs4>!gY*7 zdB-g|Uq-OMv%gExVJXG$6-B={;9_SG^F03{LmCDBSotQ$zATwkR+W=u%sQ(gte0s8 z?AJqq;?9BM2%^WZ)WfZ*kn2gHxHEe{xn%fJ3jvT(+Le|<&{sU#l-g>TV!~C7Us|qc zRx=o0)=J3bglhaFPQxNYBs7H0LQve)R8SmGF+RVkk%q3hb{eaM7i;j4FI)e$wYfcz zBPHO~gExqrjer0v-!e^fHgR=6B0q*IOhZcZw>K>F)8dr-mp{`IOg0Vw;sB3+k0@hq zT>=1Rt>drY+mb#~k6~82e(fXcfQtg|hw_h-NEJAHOmEM!j z{r(Ha1l&tI*{ZqOuh}oiMy(lG*shkurR|mTN!Nc=X9ri-KkXrmGwO}_b#lu~=ktRIKLJPOE zgiC8`WD07yZRbVt`$YZdCJ!Hk)p$Z3@3OgEK>LFv>i}mi^q2Fc%uh~ACSmNJOYyrK zwZFvBsz&`6Nvnsk`gPmZa|OmgjM{1S+C*JqB#3`Vy~l1<6yKtF+A>eusC*hd4ZNq9 zl`IpyVjY_()7KVlSAx(s0;8Y<^$*wE9HdNV4bSX)?5j>5HJ#i=S-}PK5<(n~l{^M= zb-%16e~)TVV@004 zy6%9$DD(CQ?}L>^1m4^8;x1O*F>^bYBthGpdP=%d-lr{Od}~8 z(XcQc=hEK!C;POHZ`^N|&E&D`rvU$_nQsN;+)#4wrg$*no7eK4)0+x>35tTDG zshLwpRzcV5!2b(^FAkslg|Wk)f8=tiZT_KC?s^qp|Gc{8&O9I@q*vBCqdpfTke!u- L Date: Sun, 1 Feb 2015 13:31:29 -0500 Subject: [PATCH 003/127] Adds the RPG loot wizard event at an uncommon (3) weight All items in the world at the time of event gain a small bonus/penalty to force and throwforce, and a corresponding silly name. Taking all suggestions for more prefixes and suffixes. Prefixes should imply a positive or negative quality, but suffixes shouldn't. --- code/modules/events/wizard/rpgloot.dm | 27 +++++++++++++++++++++++++++ tgstation.dme | 1 + 2 files changed, 28 insertions(+) create mode 100644 code/modules/events/wizard/rpgloot.dm diff --git a/code/modules/events/wizard/rpgloot.dm b/code/modules/events/wizard/rpgloot.dm new file mode 100644 index 00000000000..14fef002093 --- /dev/null +++ b/code/modules/events/wizard/rpgloot.dm @@ -0,0 +1,27 @@ +/datum/round_event_control/wizard/rpgloot //its time to minmax your shit + name = "RPG Loot" + weight = 3 + typepath = /datum/round_event/wizard/rpgloot/ + max_occurrences = 1 + earliest_start = 0 + +/datum/round_event/wizard/rpgloot/start() + var/list/prefixespositive = list("greater", "major", "blessed", "superior", "enpowered", "honed", "true", "glorious") + var/list/prefixesnegative = list("lesser", "minor", "blighted", "inferior", "enfeebled", "rusted", "unsteady", "tragic") + var/list/suffixes = list("orc-slaying", "elf-slaying", "corgi-slaying", "strength", "dexterity", "constitution", "intelligence", "wisdom", "charisma", "the forest", "the hills", "the plains", "the sea", "the sun", "the moon", "the void", "the world", "the fool", "many secrets", "many tales", "many colors", "rending", "sundering", "the night", "the day") + + for(var/obj/item/I in world) + if(istype(I,/obj/item/organ/)) + continue + var/quality = rand(-5,5) + if(quality > 0) + I.name = "[pick(prefixespositive)] [I.name] of [pick(suffixes)] +[quality]" + else if(quality < 0) + I.name = "[pick(prefixesnegative)] [I.name] of [pick(suffixes)] [quality]" + else + I.name = "[I.name] of [pick(suffixes)]" + + I.force += quality + I.force = max(0,quality) + I.throwforce += quality + I.throwforce = max(0,quality) \ No newline at end of file diff --git a/tgstation.dme b/tgstation.dme index fadad95ebc8..acc8c7e5a42 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -928,6 +928,7 @@ #include "code\modules\events\wizard\magicarp.dm" #include "code\modules\events\wizard\petsplosion.dm" #include "code\modules\events\wizard\race.dm" +#include "code\modules\events\wizard\rpgloot.dm" #include "code\modules\events\wizard\shuffle.dm" #include "code\modules\events\wizard\summons.dm" #include "code\modules\flufftext\Dreaming.dm" From ad07210e99c2689ffbd1296a7610860a77b0a1cb Mon Sep 17 00:00:00 2001 From: Incoming Date: Sun, 1 Feb 2015 14:07:49 -0500 Subject: [PATCH 004/127] Accidentally set the maximum force of all weapons to 5 #justwizbiz --- code/modules/events/wizard/rpgloot.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/events/wizard/rpgloot.dm b/code/modules/events/wizard/rpgloot.dm index 14fef002093..3d6fb8ca12f 100644 --- a/code/modules/events/wizard/rpgloot.dm +++ b/code/modules/events/wizard/rpgloot.dm @@ -22,6 +22,6 @@ I.name = "[I.name] of [pick(suffixes)]" I.force += quality - I.force = max(0,quality) + I.force = max(0,I.force) I.throwforce += quality - I.throwforce = max(0,quality) \ No newline at end of file + I.throwforce = max(0,I.throwforce) \ No newline at end of file From 3b0d593cd1b3e2faba6b29ffaab66390646bd434 Mon Sep 17 00:00:00 2001 From: paprka Date: Mon, 2 Feb 2015 20:35:48 -0800 Subject: [PATCH 005/127] removes ugly cuff overlay --- icons/obj/clothing/belts.dmi | Bin 3720 -> 3619 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/obj/clothing/belts.dmi b/icons/obj/clothing/belts.dmi index 97cb9ce3371b08b034b2f9b6541d2df0cddc47cd..092a08e959613fa2cbe0806093b86128fbf78003 100644 GIT binary patch delta 3245 zcmYk8c{J4BAIHBK84Qzc8YDbstYIu;&AwBJED0&=Sffam84ZnnnPeGavV>%L8Z8Kg zNkj-)BYK4FW=ba8PtWr^&w0+d=e*zd+;i_ApZDu??@baZJDG)GY9u0SSdd60@dE<- zkqDd+kvnJWE+V0XMx(R2m^AgS13=~_AnyuLC!NEaJPEKB4UQtmok%J?P zlQRbbDTF|ZAdm-sz{3FGQ4pY{q(p*1$Ph^OH72-W8~~(oa#C&p)m&V|!^6$D0Cjcs zC*0iBI6zZVvjqz6zyi%sXq_K0k^<=I>Gd8zejd0EaQF+e0~88H<&s!7l}Qt)>@13Q z7gxV3q3Mm#@p<{w^!4=(3=A0Dkn!b;7CP5_^1@p^1niS z#o{RqIRGLlr%)`h?2nA9>^satR`rPd&T>FHx9ov<>a#omnUecLlHB*0Nw(;5i&Xhw zJ+s_{x-OZTxmH$%+SVcY#)VD+MM{VJic&NH08BURtnC5)g>j!F56?biK8fqGPuO

`uHfG5T@#N=Lw6rm48(MJ=z3 z-tp-tsX~3FQWr*8e4n%udLH7q>8IK>j*%A`oRF{R#Mtjm*>E_1{dL;UZp%yT{qC^g z^_y$G>y8$s-^AXBI!MY$_a-M9xQNGNZ@-Lq{(dWFXV(SGq(a5n#e`e|fdPR1 zhlR1hg~U#%5o@E><@X z84sRa_-!9%P`n><KJ74rWd;C}$ew#vZ#XCGi#eobqWUUzv7e0tJcE|+3+}m5uF>Np4 z2%Qq(Z*&xIw>&a1N1>bIAA3*n(Wn9Uo#xdflUR#3YU}zJ7Plg+i%#8}-F2-C#Jbmy zIn3cq@Q;)KD0}|=d6*3Bw40;vi_2~fCMOz$Nu7uttoj}kdh#wf$}#S0cn^B)USyry z^;%z6*!R)6(tw`uG5Ia`!`myZXdeSxgu7KhNL5P-Ols-ch~}uf8>oEYa#NznWR;sEkBA z)zs8X|9QnI2&wyqy9(uyp)6EVHWFi+LZgC8Sffl0O1pVoo5CKljkPl?p7&y}b9weI zb;V=OzuKJdQ)8&7d|mvuvMe}ilM9s2l$*E6E}Z3toR#9}XaY>0vwGvNDd-b}3`ky{<@1-vPWpE zk^xE$+`oBXL$}wN5l_LM9v_dC!S4+JcoQ5tMFi6EN5>*7K(U1sT-coh7LXC? z!9v6sCr_!To$dL%(T8lDOV!T7{3B{1qe6{y6~~4;@uL1u-%oBzzPbhVHzt}luk2si zs{qN}Mz{Z>*c-UAajM$Zc(PBf zMR1K7)IP!#j?UAACceI`jS zAQroguaIrtR1H4tSj9yuffU(;8hGyuw<&+VDt9)sbJ02Q&bKYix=m1!Q#1K@oE4Q# zx6FF4YM(WuZ(q6@{JCiyHX8RiBR5x3;W+_0>-(|=U`g{36C*>F@FiI>x_w|mrwYT( zIu7R%F_qW0mopUtUFVpAp|tT674_@EK|yyI=foQ%@~5|+)#E$|PUXLn2wXGYQ;>T7 zy6EO~k=5q<%XMQy$>?Zw82ildWD2D7=X#T3-fV32`ZH8H_UDVIG4{ICqcc|;!k@k% z?QiRf5n$jme~x*;C#PiyFpltbH8|m?jx>${} z5Gy|fOzoVoeRxBEwFpuh-uY~i`7f} zPtxKGqh;TK6~BRB22pDwB0JJ-%x=UDVZFiOP!G7nMg6HOtBwBuGc%QAHisC+1#M)1+1 zL~@zU!RjIkhq!VytHge|xw;dYkCVkjq~To@+T+rsQwx@UCJV1mPG)Hvp9eJqa_4S7n0` zlG`OpalGZ4eyFqCI#Pt(v$|uxs%g5Jyhbcf-0#7KlF0hWCAX;-N7lU9FnR8_pB~Th z;&HwEVmw;!#jzR&f2h9xN4ozO>RA3$YZ5Q0^Pu~9899Or-|7*mMU(5oOrnpep-ze> zK~#=?>15GpZ&yif@2(e&PgaS?X&9hZQ`1nt{Knvz?~IbqV8|RY^GDm}rQ0Vq@4ij6 z*|VOdqI40y)(7sh^MWzv*6Di&9-x0ffDCYW==n>>?N^lm+hqi1AHA@!#6KqXju3!p z7rK3EpxB9Il9Tp`p@xpte974pNL?AZk3I9|^EPQbsdhTwefx1)-({1F_Bj`8j&vn8 zEmKu}>u+AA7i;5m8|8MczFP(RDDKBX;uv{DK4z$B97FUkpzqav67KCt z6TN<(H|Fb}rdR$c;b?T;>|;;QZj_4d!BOyIU2hjBQ0QOHa2MGhzpC0%I@<)ei`G8j z14`wf0`4M7UpOONF=Kg7JF6}3C_qwb_ghtznO&K2QoRzU^$s7xFecq%h1og_yoHvm zO{Eu$!81%H;kdG=0moYaf+x|U3x3p{iuk!muM{QgmvmV$f$xw%|Fuh(dDBh05VuyE7g4YdI~fIg^dkZY}~9z6Om0~RLM#&w1s G`2PWCF!_T3 delta 3364 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 From 7903aba6d30a2b20782cd2aaecb41a1b2c8f3b75 Mon Sep 17 00:00:00 2001 From: Incoming Date: Wed, 4 Feb 2015 01:58:02 -0500 Subject: [PATCH 006/127] Adds optional population caps for those that want them. These be dark measures, so tread carefully ye who dare enter this place. There are three "levels" of popcaps, and you can use them in any assortment you like: The "soft" cap produces a message on join, and takes no action. The "hard" cap disallows joining whilst too many other people are alive and playing in game, but allows observing. The "extreme" cap prevents people from joining the server at all while the cap is exceeded. It won't kick out people who failed to qualify during roundstart, but if they leave they won't be able to get back in. In each case a customizable message config option has been given. Admins are also immune to most population caps (they still are hit by the ones in job shuffling, but can late join as normal afterwards) --- code/__HELPERS/unsorted.dm | 6 ++++ code/controllers/configuration.dm | 20 +++++++++++++ code/controllers/subsystem/jobs.dm | 34 +++++++++++++++++++---- code/modules/admin/IsBanned.dm | 5 ++++ code/modules/mob/new_player/login.dm | 3 ++ code/modules/mob/new_player/new_player.dm | 4 +++ config/config.txt | 20 +++++++++++++ 7 files changed, 87 insertions(+), 5 deletions(-) diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index d7a9b4c3afb..f5c9a6b0391 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -1449,3 +1449,9 @@ var/list/WALLITEMS = list( chance = max(chance - (initial_chance / steps), 0) steps-- +/proc/living_player_count() + var/living_player_count = 0 + for(var/mob in player_list) + if(mob in living_mob_list) + living_player_count += 1 + return living_player_count \ No newline at end of file diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm index ad92db7f1b6..22705c54267 100644 --- a/code/controllers/configuration.dm +++ b/code/controllers/configuration.dm @@ -67,6 +67,14 @@ var/use_age_restriction_for_jobs = 0 //Do jobs use account age restrictions? --requires database var/see_own_notes = 0 //Can players see their own admin notes (read-only)? Config option in config.txt + //Population cap vars + var/soft_popcap = 0 + var/hard_popcap = 0 + var/extreme_popcap = 0 + var/soft_popcap_message = "Be warned that the server is currently serving a high number of users, consider using alternative game servers." + var/hard_popcap_message = "The server is currently serving a high number of users, You cannot currently join. You may wait for the number of living crew to decline, observe, or find alternative servers." + var/extreme_popcap_message = "The server is currently serving a high number of users, find alternative servers." + //game_options.txt configs var/force_random_names = 0 var/list/mode_names = list() @@ -292,6 +300,18 @@ global.comms_allowed = 1 if("see_own_notes") config.see_own_notes = 1 + if("soft_popcap") + config.soft_popcap = text2num(value) + if("hard_popcap") + config.hard_popcap = text2num(value) + if("extreme_popcap") + config.extreme_popcap = text2num(value) + if("soft_popcap_message") + config.soft_popcap_message = value + if("hard_popcap_message") + config.hard_popcap_message = value + if("extreme_popcap_message") + config.extreme_popcap_message = value else diary << "Unknown setting in configuration: '[name]'" diff --git a/code/controllers/subsystem/jobs.dm b/code/controllers/subsystem/jobs.dm index 178d194afd5..ef35a1923ee 100644 --- a/code/controllers/subsystem/jobs.dm +++ b/code/controllers/subsystem/jobs.dm @@ -4,9 +4,10 @@ var/datum/subsystem/job/SSjob name = "Jobs" priority = 5 - var/list/occupations = list() //List of all jobs - var/list/unassigned = list() //Players who need jobs - var/list/job_debug = list() //Debug info + var/list/occupations = list() //List of all jobs + var/list/unassigned = list() //Players who need jobs + var/list/job_debug = list() //Debug info + var/initial_players_to_assign = 0 //used for checking against population caps /datum/subsystem/job/New() NEW_SS_GLOBAL(SSjob) @@ -205,6 +206,8 @@ var/datum/subsystem/job/SSjob if(player.ready && player.mind && !player.mind.assigned_role) unassigned += player + initial_players_to_assign = unassigned.len + Debug("DO, Len: [unassigned.len]") if(unassigned.len == 0) return 0 @@ -260,6 +263,8 @@ var/datum/subsystem/job/SSjob // Loop through all unassigned players for(var/mob/new_player/player in unassigned) + if(PopcapReached()) + RejectPlayer(player) // Loop through all jobs for(var/datum/job/job in shuffledoccupations) // SHUFFLE ME BABY @@ -292,11 +297,15 @@ var/datum/subsystem/job/SSjob // Hand out random jobs to the people who didn't get any in the last check // Also makes sure that they got their preference correct for(var/mob/new_player/player in unassigned) - if(jobban_isbanned(player, "Assistant")) + if(PopcapReached()) + RejectPlayer(player) + else if(jobban_isbanned(player, "Assistant")) GiveRandomJob(player) //you get to roll for random before everyone else just to be sure you don't get assistant. you're so speshul for(var/mob/new_player/player in unassigned) - if(player.client.prefs.userandomjob) + if(PopcapReached()) + RejectPlayer(player) + else if(player.client.prefs.userandomjob) GiveRandomJob(player) Debug("DO, Standard Check end") @@ -305,6 +314,8 @@ var/datum/subsystem/job/SSjob // For those who wanted to be assistant if their preferences were filled, here you go. for(var/mob/new_player/player in unassigned) + if(PopcapReached()) + RejectPlayer(player) Debug("AC2 Assistant located, Player: [player]") AssignRole(player, "Assistant") return 1 @@ -431,3 +442,16 @@ var/datum/subsystem/job/SSjob tmp_str += "HIGH=[level1]|MEDIUM=[level2]|LOW=[level3]|NEVER=[level4]|BANNED=[level5]|YOUNG=[level6]|-" feedback_add_details("job_preferences",tmp_str) + +/datum/subsystem/job/proc/PopcapReached() + if(config.hard_popcap || config.extreme_popcap) + var/relevent_cap = max(config.hard_popcap, config.extreme_popcap) + if((initial_players_to_assign - unassigned.len) >= relevent_cap) + return 1 + return 0 + +/datum/subsystem/job/proc/RejectPlayer(var/mob/new_player/player) + Debug("Popcap overflow Check observer located, Player: [player]") + player << "You have failed to qualify for any job you desired." + unassigned -= player + player.ready = 0 \ No newline at end of file diff --git a/code/modules/admin/IsBanned.dm b/code/modules/admin/IsBanned.dm index 404d7c07a06..4a6433fe273 100644 --- a/code/modules/admin/IsBanned.dm +++ b/code/modules/admin/IsBanned.dm @@ -47,6 +47,11 @@ world/IsBanned(key,address,computer_id) message_admins("Failed Login: [key] - Guests not allowed") return list("reason"="guest", "desc"="\nReason: Guests not allowed. Please sign in with a byond account.") + //Population Cap Checking + if(config.extreme_popcap && living_player_count() >= config.extreme_popcap && !(ckey(key) in admin_datums)) + log_access("Failed Login: [key] - Population cap reached") + return list("reason"="popcap", "desc"= "\nReason: [config.extreme_popcap_message]") + if(config.ban_legacy_system) //Ban Checking diff --git a/code/modules/mob/new_player/login.dm b/code/modules/mob/new_player/login.dm index 280e4e70347..979e77b2855 100644 --- a/code/modules/mob/new_player/login.dm +++ b/code/modules/mob/new_player/login.dm @@ -6,6 +6,9 @@ if(admin_notice) src << "Admin Notice:\n \t [admin_notice]" + if(config.soft_popcap && living_player_count() >= config.soft_popcap) + src << "Server Notice:\n \t [config.soft_popcap_message]" + if(!mind) mind = new /datum/mind(key) mind.active = 1 diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index 6af82653cfc..d5582392910 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -126,6 +126,10 @@ if(!ticker || ticker.current_state != GAME_STATE_PLAYING) usr << "The round is either not ready, or has already finished..." return + var/relevent_cap = max(config.hard_popcap, config.extreme_popcap) + if(relevent_cap && living_player_count() >= relevent_cap && !(ckey(key) in admin_datums)) + usr << "[config.hard_popcap_message]" + return LateChoices() if(href_list["manifest"]) diff --git a/config/config.txt b/config/config.txt index 0d112194334..412245906b1 100644 --- a/config/config.txt +++ b/config/config.txt @@ -156,3 +156,23 @@ TICKCOMP 0 ## Uncomment this to let players see their own notes (they can still be set by admins only) #SEE_OWN_NOTES + +##Note: all population caps can be used with each other if desired. + +## Uncomment for 'soft' population caps, players will be warned while joining if the living crew exceeds the listed number. +#SOFT_POPCAP 100 + +## Message for soft cap +SOFT_MESSAGE Be warned that the server is currently serving a high number of users, consider using alternative game servers. + +## Uncomment for 'hard' population caps, players will not be allowed to spawn if the living crew exceeds the listed number, though they may still observe or wait for the living crew to decrease in size. +#HARD_POPCAP 150 + +## Message for hard cap +HARD_MESSAGE The server is currently serving a high number of users, You cannot currently join. You may wait for the number of living crew to decline, observe, or find alternative servers. + +## Uncomment for 'extreme' population caps, players will not be allowed to join the server if living crew exceeds the listed number. +#EXTREME_POPCAP 200 + +## Message for extreme cap +EXTREME_MESSAGE The server is currently serving a high number of users, find alternative servers. \ No newline at end of file From bf0aa3572ada19c735be6a18b140510a076eb31d Mon Sep 17 00:00:00 2001 From: paprka Date: Wed, 4 Feb 2015 13:33:03 -0800 Subject: [PATCH 007/127] assistant cap config --- code/controllers/configuration.dm | 4 ++++ code/game/jobs/job/assistant.dm | 4 ++-- config/game_options.txt | 4 +++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm index ad92db7f1b6..21b6de8f5a3 100644 --- a/code/controllers/configuration.dm +++ b/code/controllers/configuration.dm @@ -137,6 +137,8 @@ var/default_laws = 0 //Controls what laws the AI spawns with. var/silicon_max_law_amount = 12 + var/assistant_cap = -1 + /datum/configuration/New() var/list/L = typesof(/datum/game_mode) - /datum/game_mode for(var/T in L) @@ -420,6 +422,8 @@ config.mutant_races = 1 if("mutant_colors") config.mutant_colors = 1 + if("assistant_cap") + config.assistant_cap = text2num(value) else diary << "Unknown setting in configuration: '[name]'" diff --git a/code/game/jobs/job/assistant.dm b/code/game/jobs/job/assistant.dm index b5fd935fbbe..888943c440e 100644 --- a/code/game/jobs/job/assistant.dm +++ b/code/game/jobs/job/assistant.dm @@ -6,8 +6,8 @@ Assistant flag = ASSISTANT department_flag = CIVILIAN faction = "Station" - total_positions = -1 - spawn_positions = -1 + total_positions = config.assistant_cap + spawn_positions = config.assistant_cap supervisors = "absolutely everyone" selection_color = "#dddddd" access = list() //See /datum/job/assistant/get_access() diff --git a/config/game_options.txt b/config/game_options.txt index 8280e42debf..d2204a8ca61 100644 --- a/config/game_options.txt +++ b/config/game_options.txt @@ -215,5 +215,7 @@ SILICON_MAX_LAW_AMOUNT 12 #JOIN_WITH_MUTANT_RACE ## Uncomment to allow certain species to have custom colors - #MUTANT_COLORS + +## Assistant slot cap. Set to -1 for unlimited. +ASSISTANT_CAP -1 From f63dfa0c3e942248945e21a3321fc838f74e4109 Mon Sep 17 00:00:00 2001 From: paprka Date: Wed, 4 Feb 2015 13:59:50 -0800 Subject: [PATCH 008/127] fixes --- code/game/jobs/job/assistant.dm | 13 ++++++++++--- config/game_options.txt | 2 +- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/code/game/jobs/job/assistant.dm b/code/game/jobs/job/assistant.dm index 888943c440e..0491890c566 100644 --- a/code/game/jobs/job/assistant.dm +++ b/code/game/jobs/job/assistant.dm @@ -6,8 +6,8 @@ Assistant flag = ASSISTANT department_flag = CIVILIAN faction = "Station" - total_positions = config.assistant_cap - spawn_positions = config.assistant_cap + total_positions = -1 + spawn_positions = -1 supervisors = "absolutely everyone" selection_color = "#dddddd" access = list() //See /datum/job/assistant/get_access() @@ -22,4 +22,11 @@ Assistant . = ..() . |= list(access_maint_tunnels) else - return ..() \ No newline at end of file + return ..() + +/datum/job/assistant/config_check() + if(config && !(config.assistant_cap == 0)) + total_positions = config.assistant_cap + spawn_positions = config.assistant_cap + return 1 + return 0 \ No newline at end of file diff --git a/config/game_options.txt b/config/game_options.txt index d2204a8ca61..d9ced39c265 100644 --- a/config/game_options.txt +++ b/config/game_options.txt @@ -218,4 +218,4 @@ SILICON_MAX_LAW_AMOUNT 12 #MUTANT_COLORS ## Assistant slot cap. Set to -1 for unlimited. -ASSISTANT_CAP -1 +ASSISTANT_CAP 10 From c23dc82609e08b2ce4277d994d4116cb774a903f Mon Sep 17 00:00:00 2001 From: Xhuis Date: Sun, 25 Jan 2015 20:36:02 -0500 Subject: [PATCH 009/127] Adds malicious modes to air and fire alarms. --- .../gamemodes/malfunction/Malf_Modules.dm | 45 ++++++++++- code/game/machinery/alarm.dm | 76 ++++++++++++++++--- 2 files changed, 109 insertions(+), 12 deletions(-) diff --git a/code/game/gamemodes/malfunction/Malf_Modules.dm b/code/game/gamemodes/malfunction/Malf_Modules.dm index 28b8b8224fb..567ca502af3 100644 --- a/code/game/gamemodes/malfunction/Malf_Modules.dm +++ b/code/game/gamemodes/malfunction/Malf_Modules.dm @@ -150,6 +150,50 @@ src << "Out of uses." +/datum/AI_Module/large/break_fire_alarms + module_name = "Thermal Sensor Override" + mod_pick_name = "burnpigs" + description = "Gives you the ability to override the thermal sensors on all fire alarms. This will remove their ability to scan for fire and thus their ability to alert. \ + Anyone can check the fire alarm's interface and may be tipped off by its status." + one_time = 1 + cost = 25 + + power_type = /mob/living/silicon/ai/proc/break_fire_alarms + +/mob/living/silicon/ai/proc/break_fire_alarms() + set name = "Override Thermal Sensors" + set category = "Malfunction" + + for(var/obj/machinery/firealarm/F in world) + if(F.z != ZLEVEL_STATION) + continue + F.emagged = 1 + src << "All thermal sensors on the station have been disabled. Fire alerts will no longer be recognized." + src.verbs -= /mob/living/silicon/ai/proc/break_fire_alarms + +/datum/AI_Module/large/break_air_alarms + module_name = "Air Alarm Safety Override" + mod_pick_name = "allow_flooding" + description = "Gives you the ability to disable safeties on all air alarms. This will allow you to use the environmental mode Flood, which disables scrubbers as well as pressure checks on vents. \ + Anyone can check the air alarm's interface and may be tipped off by their nonfunctionality." + one_time = 1 + cost = 50 + + power_type = /mob/living/silicon/ai/proc/break_air_alarms + +/mob/living/silicon/ai/proc/break_air_alarms() + set name = "Disable Air Alarm Safeties" + set category = "Malfunction" + + for(var/obj/machinery/alarm/A in world) + if(A.z != ZLEVEL_STATION) + continue + A.emagged = 1 + src << "All air alarm safeties on the station have been overriden. Air alarms may now use the Flood environmental mode." + src.verbs -= /mob/living/silicon/ai/proc/break_air_alarms + + + /datum/AI_Module/small/overload_machine module_name = "Machine overload" mod_pick_name = "overload" @@ -352,7 +396,6 @@ else src << "Out of uses." - /datum/module_picker var/temp = null var/processing_time = 100 diff --git a/code/game/machinery/alarm.dm b/code/game/machinery/alarm.dm index 18ab0009f58..ab73442d851 100644 --- a/code/game/machinery/alarm.dm +++ b/code/game/machinery/alarm.dm @@ -35,6 +35,7 @@ #define AALARM_MODE_PANIC 3 //constantly sucks all air #define AALARM_MODE_REPLACEMENT 4 //sucks off all air, then refill and swithes to scrubbing #define AALARM_MODE_OFF 5 +#define AALARM_MODE_FLOOD 6 //Emagged mode; turns off scrubbers and pressure checks on vents #define AALARM_SCREEN_MAIN 1 #define AALARM_SCREEN_VENT 2 @@ -252,7 +253,7 @@ if(!usr.has_unlimited_silicon_privilege && locked) dat += "[return_status()]" else - dat += "[return_status()]


[return_controls()]" + dat += "[return_safety()][return_status()]
[return_controls()]" return dat /obj/machinery/alarm/proc/return_status() @@ -337,6 +338,15 @@ Temperature: [environment.temperature] return output +/obj/machinery/alarm/proc/return_safety() + var/output = "" + if(src.emagged) + output += "NOTICE: Safety measures nonfunctional. Device may exhibit abnormal behavior.

" + else + output += "Safety measures functioning properly.

" + return output + + /obj/machinery/alarm/proc/return_controls() var/output = ""//"[alarm_zone] Air [name]
" @@ -443,13 +453,24 @@ Nitrous Oxide output += {" << Main Menu

Air machinery mode for the area: