From 1f39768ce1de98c1747c34874bfca9f446774c8c Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Fri, 4 Sep 2015 08:09:05 +0200 Subject: [PATCH 01/15] Vent crawling now explicitly checks for equipped items. Fixes #10991. --- code/modules/mob/inventory.dm | 15 +++++++++------ code/modules/mob/living/living.dm | 22 +++++----------------- 2 files changed, 14 insertions(+), 23 deletions(-) diff --git a/code/modules/mob/inventory.dm b/code/modules/mob/inventory.dm index 1115826be8..754d3cfa7b 100644 --- a/code/modules/mob/inventory.dm +++ b/code/modules/mob/inventory.dm @@ -221,18 +221,21 @@ var/list/slot_equipment_priority = list( \ if(!I) //If there's nothing to drop, the drop is automatically successful. return 1 - var/slot - for(var/s in slot_back to slot_tie) //kind of worries me - if(get_equipped_item(s) == I) - slot = s - break - + var/slot = get_inventory_slot(I) if(slot && !I.mob_can_unequip(src, slot)) return 0 drop_from_inventory(I) return 1 +/mob/proc/get_inventory_slot(obj/item/I) + var/slot + for(var/s in slot_back to slot_tie) //kind of worries me + if(get_equipped_item(s) == I) + slot = s + break + return slot + //Attemps to remove an object on a mob. /mob/proc/remove_from_mob(var/obj/O) src.u_equip(O) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index e5b5f858d8..7beb7ee356 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -656,27 +656,15 @@ default behaviour is: set category = "IC" resting = !resting - src << "\blue You are now [resting ? "resting" : "getting up"]" + src << "You are now [resting ? "resting" : "getting up"]" /mob/living/proc/is_allowed_vent_crawl_item(var/obj/item/carried_item) - if(istype(carried_item, /obj/item/weapon/implant)) - return 1 - if(istype(carried_item, /obj/item/clothing/mask/facehugger)) - return 1 - return 0 - -/mob/living/carbon/is_allowed_vent_crawl_item(var/obj/item/carried_item) - if(carried_item in internal_organs) - return 1 - return ..() - -/mob/living/carbon/human/is_allowed_vent_crawl_item(var/obj/item/carried_item) - if(carried_item in organs) - return 1 - return ..() + return isnull(get_inventory_slot(carried_item)) /mob/living/simple_animal/spiderbot/is_allowed_vent_crawl_item(var/obj/item/carried_item) - return carried_item != held_item + if(carried_item == held_item) + return 0 + return ..() /mob/living/proc/handle_ventcrawl(var/obj/machinery/atmospherics/unary/vent_pump/vent_found = null, var/ignore_items = 0) // -- TLE -- Merged by Carn if(stat) From 89a7c9667b5ae12cc1f2a61ee85c84f4c0514438 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Sat, 5 Sep 2015 17:31:27 +0930 Subject: [PATCH 02/15] Reverts a testing value. --- code/game/gamemodes/traitor/traitor.dm | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/code/game/gamemodes/traitor/traitor.dm b/code/game/gamemodes/traitor/traitor.dm index d4b93665ce..587a05bbd9 100644 --- a/code/game/gamemodes/traitor/traitor.dm +++ b/code/game/gamemodes/traitor/traitor.dm @@ -8,10 +8,9 @@ uplink_welcome = "AntagCorp Portable Teleportation Relay:" end_on_antag_death = 1 antag_tags = list(MODE_TRAITOR) - antag_scaling_coeff = 10 + antag_scaling_coeff = 8 /datum/game_mode/traitor/auto name = "autotraitor" config_tag = "autotraitor" round_autoantag = 1 - antag_scaling_coeff = 1 \ No newline at end of file From 90c9d317828bc20a04a1f3cdc52eb001b38f5d29 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Sat, 5 Sep 2015 18:40:32 +0930 Subject: [PATCH 03/15] Refactored the antagHUD to work better with the new antagonist system. --- code/game/antagonist/alien/borer.dm | 1 + code/game/antagonist/alien/xenomorph.dm | 1 + code/game/antagonist/antagonist.dm | 6 ++++ code/game/antagonist/outsider/deathsquad.dm | 1 + code/game/antagonist/outsider/ert.dm | 1 + code/game/antagonist/outsider/mercenary.dm | 1 + code/game/antagonist/outsider/ninja.dm | 1 + code/game/antagonist/outsider/raider.dm | 1 + code/game/antagonist/outsider/wizard.dm | 1 + code/game/antagonist/station/changeling.dm | 1 + code/game/antagonist/station/cultist.dm | 1 + code/game/antagonist/station/loyalist.dm | 1 + code/game/antagonist/station/revolutionary.dm | 1 + code/game/antagonist/station/rogue_ai.dm | 2 +- code/global.dm | 1 + code/modules/mob/dead/observer/observer.dm | 2 +- code/modules/mob/living/carbon/human/life.dm | 34 +++--------------- icons/mob/hud.dmi | Bin 3643 -> 3686 bytes 18 files changed, 26 insertions(+), 31 deletions(-) diff --git a/code/game/antagonist/alien/borer.dm b/code/game/antagonist/alien/borer.dm index aabb6bd7e3..f43550dc6a 100644 --- a/code/game/antagonist/alien/borer.dm +++ b/code/game/antagonist/alien/borer.dm @@ -8,6 +8,7 @@ var/datum/antagonist/xenos/borer/borers bantype = "Borer" welcome_text = "Use your Infest power to crawl into the ear of a host and fuse with their brain. You can only take control temporarily, and at risk of hurting your host, so be clever and careful; your host is encouraged to help you however they can. Talk to your fellow borers with :x." antag_indicator = "brainworm" + antaghud_indicator = "hudborer" faction_role_text = "Borer Thrall" faction_descriptor = "Unity" diff --git a/code/game/antagonist/alien/xenomorph.dm b/code/game/antagonist/alien/xenomorph.dm index f6a8bc5cb1..4603fc5d1c 100644 --- a/code/game/antagonist/alien/xenomorph.dm +++ b/code/game/antagonist/alien/xenomorph.dm @@ -9,6 +9,7 @@ var/datum/antagonist/xenos/xenomorphs bantype = "Xenomorph" flags = ANTAG_OVERRIDE_MOB | ANTAG_RANDSPAWN | ANTAG_OVERRIDE_JOB | ANTAG_VOTABLE welcome_text = "Hiss! You are a larval alien. Hide and bide your time until you are ready to evolve." + antaghud_indicator = "hudalien" hard_cap = 5 hard_cap_round = 8 diff --git a/code/game/antagonist/antagonist.dm b/code/game/antagonist/antagonist.dm index 3be89beba1..faf7526a9c 100644 --- a/code/game/antagonist/antagonist.dm +++ b/code/game/antagonist/antagonist.dm @@ -19,6 +19,7 @@ var/role_text_plural = "Traitors" // As above but plural. // Visual references. + var/antaghud_indicator = "hudsyndicate" // Used by the ghost antagHUD. var/antag_indicator // icon_state for icons/mob/mob.dm visual indicator. var/faction_indicator // See antag_indicator, but for factionalized people only. var/faction_invisible // Can members of the faction identify other antagonists? @@ -76,6 +77,11 @@ role_text_plural = role_text if(config.protect_roles_from_antagonist) restricted_jobs |= protected_jobs + if(antaghud_indicator) + if(!hud_icon_reference) + hud_icon_reference = list() + if(role_text) hud_icon_reference[role_text] = antaghud_indicator + if(faction_role_text) hud_icon_reference[faction_role_text] = antaghud_indicator /datum/antagonist/proc/tick() return 1 diff --git a/code/game/antagonist/outsider/deathsquad.dm b/code/game/antagonist/outsider/deathsquad.dm index afd1d8b253..2740adf8ae 100644 --- a/code/game/antagonist/outsider/deathsquad.dm +++ b/code/game/antagonist/outsider/deathsquad.dm @@ -9,6 +9,7 @@ var/datum/antagonist/deathsquad/deathsquad landmark_id = "Commando" flags = ANTAG_OVERRIDE_JOB | ANTAG_OVERRIDE_MOB | ANTAG_HAS_NUKE | ANTAG_HAS_LEADER default_access = list(access_cent_general, access_cent_specops, access_cent_living, access_cent_storage) + antaghud_indicator = "huddeathsquad" hard_cap = 4 hard_cap_round = 8 diff --git a/code/game/antagonist/outsider/ert.dm b/code/game/antagonist/outsider/ert.dm index 64338c5a93..67d98f8ae5 100644 --- a/code/game/antagonist/outsider/ert.dm +++ b/code/game/antagonist/outsider/ert.dm @@ -10,6 +10,7 @@ var/datum/antagonist/ert/ert leader_welcome_text = "As leader of the Emergency Response Team, you answer only to CentComm, and have authority to override the Captain where it is necessary to achieve your mission goals. It is recommended that you attempt to cooperate with the captain where possible, however." landmark_id = "Response Team" flags = ANTAG_OVERRIDE_JOB | ANTAG_SET_APPEARANCE | ANTAG_HAS_LEADER | ANTAG_CHOOSE_NAME + antaghud_indicator = "hudloyalist" hard_cap = 5 hard_cap_round = 7 diff --git a/code/game/antagonist/outsider/mercenary.dm b/code/game/antagonist/outsider/mercenary.dm index 69d9f60420..a8b03e605d 100644 --- a/code/game/antagonist/outsider/mercenary.dm +++ b/code/game/antagonist/outsider/mercenary.dm @@ -12,6 +12,7 @@ var/datum/antagonist/mercenary/mercs welcome_text = "To speak on the strike team's private channel use :t." flags = ANTAG_OVERRIDE_JOB | ANTAG_CLEAR_EQUIPMENT | ANTAG_CHOOSE_NAME | ANTAG_HAS_NUKE | ANTAG_SET_APPEARANCE | ANTAG_HAS_LEADER id_type = /obj/item/weapon/card/id/syndicate + antaghud_indicator = "hudoperative" hard_cap = 4 hard_cap_round = 8 diff --git a/code/game/antagonist/outsider/ninja.dm b/code/game/antagonist/outsider/ninja.dm index d44f9c545a..7a4b135db5 100644 --- a/code/game/antagonist/outsider/ninja.dm +++ b/code/game/antagonist/outsider/ninja.dm @@ -9,6 +9,7 @@ var/datum/antagonist/ninja/ninjas landmark_id = "ninjastart" welcome_text = "You are an elite mercenary assassin of the Spider Clan. You have a variety of abilities at your disposal, thanks to your nano-enhanced cyber armor." flags = ANTAG_OVERRIDE_JOB | ANTAG_CLEAR_EQUIPMENT | ANTAG_CHOOSE_NAME | ANTAG_RANDSPAWN | ANTAG_VOTABLE | ANTAG_SET_APPEARANCE + antaghud_indicator = "hudninja" initial_spawn_req = 1 initial_spawn_target = 1 diff --git a/code/game/antagonist/outsider/raider.dm b/code/game/antagonist/outsider/raider.dm index 9f93d39738..c74afc2acd 100644 --- a/code/game/antagonist/outsider/raider.dm +++ b/code/game/antagonist/outsider/raider.dm @@ -10,6 +10,7 @@ var/datum/antagonist/raider/raiders landmark_id = "voxstart" welcome_text = "Use :H to talk on your encrypted channel." flags = ANTAG_OVERRIDE_JOB | ANTAG_CLEAR_EQUIPMENT | ANTAG_CHOOSE_NAME | ANTAG_VOTABLE | ANTAG_SET_APPEARANCE | ANTAG_HAS_LEADER + antaghud_indicator = "hudmutineer" hard_cap = 6 hard_cap_round = 10 diff --git a/code/game/antagonist/outsider/wizard.dm b/code/game/antagonist/outsider/wizard.dm index af1fc09e8e..f6741cafa0 100644 --- a/code/game/antagonist/outsider/wizard.dm +++ b/code/game/antagonist/outsider/wizard.dm @@ -9,6 +9,7 @@ var/datum/antagonist/wizard/wizards landmark_id = "wizard" welcome_text = "You will find a list of available spells in your spell book. Choose your magic arsenal carefully.
In your pockets you will find a teleport scroll. Use it as needed." flags = ANTAG_OVERRIDE_JOB | ANTAG_CLEAR_EQUIPMENT | ANTAG_CHOOSE_NAME | ANTAG_VOTABLE | ANTAG_SET_APPEARANCE + antaghud_indicator = "hudwizard" hard_cap = 1 hard_cap_round = 3 diff --git a/code/game/antagonist/station/changeling.dm b/code/game/antagonist/station/changeling.dm index f6307b8ae8..a592bc03c1 100644 --- a/code/game/antagonist/station/changeling.dm +++ b/code/game/antagonist/station/changeling.dm @@ -9,6 +9,7 @@ protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain") welcome_text = "Use say \":g message\" to communicate with your fellow changelings. Remember: you get all of their absorbed DNA if you absorb them." flags = ANTAG_SUSPICIOUS | ANTAG_RANDSPAWN | ANTAG_VOTABLE + antaghud_indicator = "hudchangeling" /datum/antagonist/changeling/get_special_objective_text(var/datum/mind/player) return "
Changeling ID: [player.changeling.changelingID].
Genomes Absorbed: [player.changeling.absorbedcount]" diff --git a/code/game/antagonist/station/cultist.dm b/code/game/antagonist/station/cultist.dm index ff0d049b67..dda799ba11 100644 --- a/code/game/antagonist/station/cultist.dm +++ b/code/game/antagonist/station/cultist.dm @@ -26,6 +26,7 @@ var/datum/antagonist/cultist/cult hard_cap_round = 6 initial_spawn_req = 4 initial_spawn_target = 6 + antaghud_indicator = "hudcultist" var/allow_narsie = 1 var/datum/mind/sacrifice_target diff --git a/code/game/antagonist/station/loyalist.dm b/code/game/antagonist/station/loyalist.dm index 4b95467691..fddf0c3796 100644 --- a/code/game/antagonist/station/loyalist.dm +++ b/code/game/antagonist/station/loyalist.dm @@ -13,6 +13,7 @@ var/datum/antagonist/loyalists/loyalists loss_text = "The heads of staff did not stop the revolution!" victory_feedback_tag = "win - rev heads killed" loss_feedback_tag = "loss - heads killed" + antaghud_indicator = "hudloyalist" flags = 0 hard_cap = 2 diff --git a/code/game/antagonist/station/revolutionary.dm b/code/game/antagonist/station/revolutionary.dm index f3454cf756..96e3752991 100644 --- a/code/game/antagonist/station/revolutionary.dm +++ b/code/game/antagonist/station/revolutionary.dm @@ -14,6 +14,7 @@ var/datum/antagonist/revolutionary/revs victory_feedback_tag = "win - heads killed" loss_feedback_tag = "loss - rev heads killed" flags = ANTAG_SUSPICIOUS | ANTAG_VOTABLE + antaghud_indicator = "hudrevolutionary" hard_cap = 2 hard_cap_round = 4 diff --git a/code/game/antagonist/station/rogue_ai.dm b/code/game/antagonist/station/rogue_ai.dm index c8dcaff19e..52fa7e3f38 100644 --- a/code/game/antagonist/station/rogue_ai.dm +++ b/code/game/antagonist/station/rogue_ai.dm @@ -15,7 +15,7 @@ var/datum/antagonist/rogue_ai/malf hard_cap_round = 1 initial_spawn_req = 1 initial_spawn_target = 1 - + antaghud_indicator = "hudmalai" /datum/antagonist/rogue_ai/New() ..() diff --git a/code/global.dm b/code/global.dm index bfb1806b80..7d7b21970a 100644 --- a/code/global.dm +++ b/code/global.dm @@ -12,6 +12,7 @@ var/global/list/processing_power_items = list() var/global/list/active_diseases = list() var/global/list/med_hud_users = list() // List of all entities using a medical HUD. var/global/list/sec_hud_users = list() // List of all entities using a security HUD. +var/global/list/hud_icon_reference = list() // Those networks can only be accessed by pre-existing terminals. AIs and new terminals can't use them. var/list/restricted_camera_networks = list("thunder","ERT","NUKE","Secret") diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index 25ba18a479..675b017936 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -123,7 +123,7 @@ Works together with spawning an observer, noted above. if(antagHUD) var/list/target_list = list() for(var/mob/living/target in oview(src, 14)) - if(target.mind&&(target.mind.special_role||issilicon(target)) ) + if(target.mind && target.mind.special_role) target_list += target if(target_list.len) assess_targets(target_list, src) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 75a07a528c..b9f5b513e8 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -1679,35 +1679,11 @@ if (BITTEST(hud_updateflag, SPECIALROLE_HUD)) var/image/holder = hud_list[SPECIALROLE_HUD] holder.icon_state = "hudblank" - if(mind) - - // TODO: Update to new antagonist system. - switch(mind.special_role) - if("traitor","Mercenary") - holder.icon_state = "hudsyndicate" - if("Revolutionary") - holder.icon_state = "hudrevolutionary" - if("Head Revolutionary") - holder.icon_state = "hudheadrevolutionary" - if("Cultist") - holder.icon_state = "hudcultist" - if("Changeling") - holder.icon_state = "hudchangeling" - if("Wizard","Fake Wizard") - holder.icon_state = "hudwizard" - if("Death Commando") - holder.icon_state = "huddeathsquad" - if("Ninja") - holder.icon_state = "hudninja" - if("head_loyalist") - holder.icon_state = "hudloyalist" - if("loyalist") - holder.icon_state = "hudloyalist" - if("head_mutineer") - holder.icon_state = "hudmutineer" - if("mutineer") - holder.icon_state = "hudmutineer" - + if(mind && mind.special_role) + if(hud_icon_reference[mind.special_role]) + holder.icon_state = hud_icon_reference[mind.special_role] + else + holder.icon_state = "hudsyndicate" hud_list[SPECIALROLE_HUD] = holder hud_updateflag = 0 diff --git a/icons/mob/hud.dmi b/icons/mob/hud.dmi index f6da88ca3543acee4986735693f7464798cbe103..0d3e68db0363128a4ba568200dc400f0da03ffbc 100644 GIT binary patch delta 3007 zcmZ9Mc{~#g7{?>avDZ2GF_WV;A&faP8@XT15h5)|v2x{X!ZZ|0?L|~9b44j~Ge-)w z2y;Zj6h@9Lw>jVU{jX2YU(e_H{Qh{p-#>m$va_dOqx`6T)4$SW?QdW$m5Zhl|I3vQ+(4A{eMhWiLi=_Fv@oYSE{oc($%+#Eah}36Sy={=yW=;_?=T ztn@wFUhXLV5+y_l!}YCW6lw90M-8W{D(4`T+;h28)t_BTpDQn_aLpy`)!mDqGS9c- z8@&eQr_1KXOfiG--V` zf26D=`@^98GvjOnHV$vK<6i&OMWheEHh^!xt_x%|7BjD{pZ)(g70ZEzt~0g_IJ&Qx9GfG(i_SS*iiHSDL!+K<`{! z^ruZm3$(YV5gD7(!3a2?wY&LMxUzq{*^U_jxT=;*>5sZsMRd$AddEX;uqAqDeRd^P z*!Yvg;Be}FF;RPEUv!{iB86YZ4IK)2H4P{hkyC>%h{(XjI@T!;fyo};Cj+4!BG+X4 zb7~-#5_ITD(H+MW=VX-$WTGcSI1+F1g(>Hi9rf<#>XAQ&5bqL#Gva3({ttJ~-t=jC zi2@OM#IvN-18EvfOR;lw=#TvfINuIRE{%wEvnZszH5j&| zZ<`m7>Z!C=x&qR0hF=|$MHU?1r%}=rV5P27K(2fu^nHTzZN36Y;1f73xnp_N^8yMa z)y?&g5d1Y@bf`-|LKI|;Gfoxvbs;TWN2f~E;Hw>l&N53W_jEd3G4@*!IPMlNkQ`i9 z6NLN?AspdxDqNkMH@_ZJc6o!H6(~MHZ@`E4V6;Jk56c>#gBG!M+tUc0OApQGEsBkekS?8l(sw2M$)wU~FF$MtD8 z=n~rQ0Tzfh7j{AqAWpeT8X|={Jo8=&;r52DVs~K$kig`5bR;nVaCTleR8RzFsi#nP zZn7n^jaMs#xUC{LC6gI_wgar>0^Ma(iEv?<<@jvznl|~V#l$QJ;WwE7*B`uz+UvQ$Q?7wUY@N zQ>#%}8LidgoWFB;o?xL;odCLY&>P5wwiY?9#y7af`taZ&a0_g9 z`$I?MF6K-(m~Drf{ayh0}Zzs zyslx;mDzS}ZSD16MMmiTLi0z`-O%Zf zc33oqv9f4!H@to9G*Amd#=W@XjgKO2Rz$&k|clAjBO?XG`MG$Hh>nuC0^ ze~ju3uZwuNL9->qk#@|FWPSeFR`VB-mUlH2HV<)0rr=a1mG9~k6Gk@`Jdu!YHF0!L zNsU%(RBFjA#!tl0K2}x%daqr%i5V2_+Bq24QllZbNioleRdKqD1BiwX@Oh}s-v&26 z&!`W>qh)+_HGOE#Lgbql3FqI?8l1m4(KV`wCIM?pe2ZK$Zzi<=uzQ4Z{z>c&`J~QH z|Hf(AQZ#d9*zMKp{N@_z4_nKZ@Gm~ zXN7S7xJGx+gN_q@2k+S`G={t)Z8n!;dhBX5AuNRb%WMAyBV@C_w@mq2Fn#EOH`n7G zhkKAZPI9p#0{jZxvO;t4I!^AA=Has@i8>oq#RRY|H=M3%O$<9Vp+i$>HlNB*+hI1I zwIj}zAu2wGd)U)W-OzRM{%FlQ&Iph}O!YzItyDv@dq!Gw2hDToTjfGYS>AJS2LA?u z`>@N?_@TUD-Qe_8(s1TT9e&|hXW#*b- ziabmjYo)bJZyGKW8ptWTQ!8hWgIVsT*qv3^)}7i4!gS7z%yRSMaubW1(Tc*JiLiQc z7ZAHRHpyPzYCTLC3sP9Ux!l4!*kv_sfmb6cT7Q!D(!mQ<{IeDwz8b@<~GRw%z-3%QJL^;zliEauZY{vnMAS;wUF$g zL3`tfbZ~i2IP4$kg)8V2c6$dO{SHu_C-P#K8~vov6Rkalz4GLTPJMaNw^Qv~Lw44I zxfJj>dky5_+#Aey8;v)sUELbBA-d%M+VRW=LhH=_LRpE2UiN)oChKt9uW63n|8j3} x@({Nrt7(w)@bI8w!s$nd%U2_g-@Ktz*~VZB%5^KT%=7=Vm6_eya+6EMe*rB`m8<{& delta 2964 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 e(0>Oha1#qXc=jiAh Date: Sat, 5 Sep 2015 18:51:39 +0930 Subject: [PATCH 04/15] Removed an unused file. --- baystation12.dme | 1 - code/game/gamemodes/intercept_report.dm | 187 ------------------------ 2 files changed, 188 deletions(-) delete mode 100644 code/game/gamemodes/intercept_report.dm diff --git a/baystation12.dme b/baystation12.dme index 22c7a86c52..38b9f77d96 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -256,7 +256,6 @@ #include "code\game\gamemodes\game_mode.dm" #include "code\game\gamemodes\game_mode_latespawn.dm" #include "code\game\gamemodes\gameticker.dm" -#include "code\game\gamemodes\intercept_report.dm" #include "code\game\gamemodes\objective.dm" #include "code\game\gamemodes\setupgame.dm" #include "code\game\gamemodes\blob\blob.dm" diff --git a/code/game/gamemodes/intercept_report.dm b/code/game/gamemodes/intercept_report.dm deleted file mode 100644 index bfe0e1d90d..0000000000 --- a/code/game/gamemodes/intercept_report.dm +++ /dev/null @@ -1,187 +0,0 @@ -/datum/intercept_text - var/text - /* - var/prob_correct_person_lower = 20 - var/prob_correct_person_higher = 80 - var/prob_correct_job_lower = 20 - var/prob_correct_job_higher = 80 - var/prob_correct_prints_lower = 20 - var/prob_correct_print_higher = 80 - var/prob_correct_objective_lower = 20 - var/prob_correct_objective_higher = 80 - */ - var/list/org_names_1 = list( - "Blighted", - "Defiled", - "Unholy", - "Murderous", - "Ugly", - "French", - "Blue", - "Farmer" - ) - var/list/org_names_2 = list( - "Reapers", - "Swarm", - "Rogues", - "Menace", - "Jeff Worshippers", - "Drunks", - "Strikers", - "Creed" - ) - var/list/anomalies = list( - "Huge electrical storm", - "Photon emitter", - "Meson generator", - "Blue swirly thing" - ) - var/list/SWF_names = list( - "Grand Wizard", - "His Most Unholy Master", - "The Most Angry", - "Bighands", - "Tall Hat", - "Deadly Sandals" - ) - var/list/changeling_names = list( - "Odo", - "The Thing", - "Booga", - "The Goatee of Wrath", - "Tam Lin", - "Species 3157", - "Small Prick" - ) - -// TODO: Update to new antagonist system. -/datum/intercept_text/proc/build(var/mode_type, datum/mind/correct_person) - switch(mode_type) - if("revolution") - src.text = "" - src.build_rev(correct_person) - return src.text - if("cult") - src.text = "" - src.build_cult(correct_person) - return src.text - if("wizard") - src.text = "" - src.build_wizard(correct_person) - return src.text - if("nuke") - src.text = "" - src.build_nuke(correct_person) - return src.text - if("traitor") - src.text = "" - src.build_traitor(correct_person) - return src.text - if("malf") - src.text = "" - src.build_malf(correct_person) - return src.text - if("changeling","traitorchan") - src.text = "" - src.build_changeling(correct_person) - return src.text - else - return null - -/datum/intercept_text/proc/get_suspect() - var/list/dudes = list() - for(var/mob/living/carbon/human/man in player_list) if(man.client && man.client.prefs.nanotrasen_relation == "Opposed") - dudes += man - for(var/i = 0, i < max(player_list.len/10,2), i++) - dudes += pick(player_list) - return pick(dudes) - -/datum/intercept_text/proc/build_traitor(datum/mind/correct_person) - var/name_1 = pick(src.org_names_1) - var/name_2 = pick(src.org_names_2) - - var/mob/living/carbon/human/H = get_suspect() - if(!H) return - - var/fingerprints = num2text(md5(H.dna.uni_identity)) - var/traitor_name = H.real_name - var/prob_right_dude = rand(1, 100) - - src.text += "

The [name_1] [name_2] implied an undercover operative was acting on their behalf on the station currently." - src.text += "It would be in your best interests to suspect everybody, as these undercover operatives could have implants which trigger them to have their memories removed until they are needed. He, or she, could even be a high ranking officer." - - src.text += "After some investigation, we " - if(prob(50)) - src.text += "are [prob_right_dude]% sure that [traitor_name] may have been involved, and should be closely observed." - src.text += "
Note: This group are known to be untrustworthy, so do not act on this information without proper discourse." - else - src.text += "discovered the following set of fingerprints ([fingerprints]) on sensitive materials, and their owner should be closely observed." - src.text += "However, these could also belong to a current Cent. Com employee, so do not act on this without reason." - - - -/datum/intercept_text/proc/build_cult(datum/mind/correct_person) - var/name_1 = pick(src.org_names_1) - var/name_2 = pick(src.org_names_2) - - var/prob_right_dude = rand(1, 100) - var/mob/living/carbon/human/H = get_suspect() - if(!H) return - var/traitor_job = H.mind.assigned_role - - src.text += "

It has been brought to our attention that the [name_1] [name_2] have stumbled upon some dark secrets. They apparently want to spread the dangerous knowledge onto as many stations as they can." - src.text += "Watch out for the following: praying to an unfamilar god, preaching the word of \[REDACTED\], sacrifices, magical dark power, living constructs of evil and a portal to the dimension of the underworld." - - src.text += "Based on our intelligence, we are [prob_right_dude]% sure that if true, someone doing the job of [traitor_job] on your station may have been converted " - src.text += "and instilled with the idea of the flimsiness of the real world, seeking to destroy it. " - - src.text += "
However, if this information is acted on without substantial evidence, those responsible will face severe repercussions." - - - -/datum/intercept_text/proc/build_rev(datum/mind/correct_person) - var/name_1 = pick(src.org_names_1) - var/name_2 = pick(src.org_names_2) - - var/prob_right_dude = rand(1, 100) - var/mob/living/carbon/human/H = get_suspect() - if(!H) return - var/traitor_job = H.mind.assigned_role - - src.text += "

It has been brought to our attention that the [name_1] [name_2] are attempting to stir unrest on one of our stations in your sector." - src.text += "Watch out for suspicious activity among the crew and make sure that all heads of staff report in periodically." - - src.text += "Based on our intelligence, we are [prob_right_dude]% sure that if true, someone doing the job of [traitor_job] on your station may have been brainwashed " - src.text += "at a recent conference, and their department should be closely monitored for signs of mutiny. " - - src.text += "
However, if this information is acted on without substantial evidence, those responsible will face severe repercussions." - - - -/datum/intercept_text/proc/build_wizard(datum/mind/correct_person) - var/SWF_desc = pick(SWF_names) - - src.text += "

The evil Space Wizards Federation have recently broke their most feared wizard, known only as \"[SWF_desc]\" out of space jail. " - src.text += "He is on the run, last spotted in a system near your present location. If anybody suspicious is located aboard, please " - src.text += "approach with EXTREME caution. Cent. Com also recommends that it would be wise to not inform the crew of this, due to their fearful nature." - src.text += "Known attributes include: Brown sandals, a large blue hat, a voluptous white beard, and an inclination to cast spells." - -/datum/intercept_text/proc/build_nuke(datum/mind/correct_person) - src.text += "

Cent. Com recently recieved a report of a plot to destroy one of our stations in your area. We believe the Nuclear Authentication Disc " - src.text += "that is standard issue aboard your vessel may be a target. We recommend removal of this object, and it's storage in a safe " - src.text += "environment. As this may cause panic among the crew, all efforts should be made to keep this information a secret from all but " - src.text += "the most trusted crew-members." - -/datum/intercept_text/proc/build_malf(datum/mind/correct_person) - var/a_name = pick(src.anomalies) - src.text += "

A [a_name] was recently picked up by a nearby stations sensors in your sector. If it came into contact with your ship or " - src.text += "electrical equipment, it may have had hazardarous and unpredictable effect. Closely observe any non carbon based life forms " - src.text += "for signs of unusual behaviour, but keep this information discreet at all times due to this possibly dangerous scenario." - -/datum/intercept_text/proc/build_changeling(datum/mind/correct_person) - var/cname = pick(src.changeling_names) - var/orgname1 = pick(src.org_names_1) - var/orgname2 = pick(src.org_names_2) - src.text += "

We have received a report that a dangerous alien lifeform known only as \"[cname]\" may have infiltrated your crew. " - src.text += "These lifeforms are assosciated with the [orgname1] [orgname2] and may be attempting to acquire sensitive materials on their behalf. " - src.text += "Please take care not to alarm the crew, as [cname] may take advantage of a panic situation. Remember, they can be anybody, suspect everybody!" From d77f0f3997c95e7a0b52e50477885951372d742a Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Sat, 5 Sep 2015 12:00:39 +0200 Subject: [PATCH 05/15] Status display alarms now clear properly on all mode changes. Previously one had to first set the display mode to Clear before the overlays would go away. This corrects situations where, for example, the emergency shuttle ETA could be covered by a NT logo. --- code/game/machinery/status_display.dm | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/code/game/machinery/status_display.dm b/code/game/machinery/status_display.dm index cf67c4d01f..2c72743bd2 100644 --- a/code/game/machinery/status_display.dm +++ b/code/game/machinery/status_display.dm @@ -28,6 +28,7 @@ var/message2 = "" // message line 2 var/index1 // display index for scrolling messages or 0 if non-scrolling var/index2 + var/picture = null var/frequency = 1435 // radio frequency @@ -72,13 +73,13 @@ // set what is displayed /obj/machinery/status_display/proc/update() + remove_display() if(friendc && !ignore_friendc) set_picture("ai_friend") return 1 switch(mode) if(STATUS_DISPLAY_BLANK) //blank - remove_display() return 1 if(STATUS_DISPLAY_TRANSFER_SHUTTLE_TIME) //emergency shuttle timer if(emergency_shuttle.waiting_to_leave()) @@ -96,8 +97,6 @@ if(length(message2) > CHARS_PER_LINE) message2 = "Error" update_display(message1, message2) - else - remove_display() return 1 if(STATUS_DISPLAY_MESSAGE) //custom messages var/line1 @@ -122,6 +121,9 @@ index2 -= message2_len update_display(line1, line2) return 1 + if(STATUS_DISPLAY_ALERT) + set_picture(picture_state) + return 1 if(STATUS_DISPLAY_TIME) message1 = "TIME" message2 = worldtime2text() @@ -150,9 +152,11 @@ index2 = 0 /obj/machinery/status_display/proc/set_picture(state) - picture_state = state remove_display() - overlays += image('icons/obj/status_display.dmi', icon_state=picture_state) + if(!picture || picture_state != state) + picture_state = state + picture = image('icons/obj/status_display.dmi', icon_state=picture_state) + overlays |= picture /obj/machinery/status_display/proc/update_display(line1, line2) var/new_text = {"
[line1]
[line2]
"} @@ -207,7 +211,7 @@ if("time") mode = STATUS_DISPLAY_TIME - + update() #undef CHARS_PER_LINE #undef FOND_SIZE From aa1485696f7617d3868b93f4975712994ddec4bd Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Sat, 5 Sep 2015 14:02:45 +0200 Subject: [PATCH 06/15] Changelog entry. --- html/changelogs/Zuhayr-Secret.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/Zuhayr-Secret.yml diff --git a/html/changelogs/Zuhayr-Secret.yml b/html/changelogs/Zuhayr-Secret.yml new file mode 100644 index 0000000000..1cdc707817 --- /dev/null +++ b/html/changelogs/Zuhayr-Secret.yml @@ -0,0 +1,5 @@ +author: Zuhayr +delete-after: true +changes: + - bugfix: "Auto-traitor should now be fixed." + - bugfix: "The Secret game mode should now be fixed." From 646a7a1d9689bff439d96cefc0647cc9ca0b8821 Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Sat, 5 Sep 2015 14:04:13 +0200 Subject: [PATCH 07/15] Updates changelog. --- html/changelog.html | 7 +++++++ html/changelogs/.all_changelog.yml | 4 ++++ html/changelogs/Zuhayr-Secret.yml | 5 ----- 3 files changed, 11 insertions(+), 5 deletions(-) delete mode 100644 html/changelogs/Zuhayr-Secret.yml diff --git a/html/changelog.html b/html/changelog.html index 9f115c0a58..32d976f24e 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -56,6 +56,13 @@ -->
+

05 September 2015

+

Zuhayr updated:

+
    +
  • Auto-traitor should now be fixed.
  • +
  • The Secret game mode should now be fixed.
  • +
+

24 August 2015

HarpyEagle updated:

    diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index 4e6af19c5d..b8b1a1d3e1 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -2010,3 +2010,7 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. useless brain, and lower health. - rscadd: Leap now only gives a passive grab and has a shorter range. It also stuns Pariahs longer than it does their target. +2015-09-05: + Zuhayr: + - bugfix: Auto-traitor should now be fixed. + - bugfix: The Secret game mode should now be fixed. diff --git a/html/changelogs/Zuhayr-Secret.yml b/html/changelogs/Zuhayr-Secret.yml deleted file mode 100644 index 1cdc707817..0000000000 --- a/html/changelogs/Zuhayr-Secret.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: Zuhayr -delete-after: true -changes: - - bugfix: "Auto-traitor should now be fixed." - - bugfix: "The Secret game mode should now be fixed." From 5ae74883d29ccb22704700aac4e5ad5b608dddd3 Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Sat, 5 Sep 2015 16:49:15 +0200 Subject: [PATCH 08/15] Hull shields should no longer prevent the departure shuttle from leaving. If hull shields are left alone by the crew (due to being, for example, all dead) the departure shuttle is unable to leave. This should destroy any shields faster than they can regenerate, thus ensuring a safe and pleasant departure. --- code/game/machinery/doors/airlock.dm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 000c374598..0f5eeb48b7 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -911,6 +911,9 @@ About the new airlock wires panel: health -= crush_damage healthcheck() +/obj/effect/energy_field/airlock_crush(var/crush_damage) + Stress(crush_damage) + /obj/structure/closet/airlock_crush(var/crush_damage) ..() damage(crush_damage) From 12a0bae5bd9667881360b68a4407928e8cc3dbd7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20Nov=C3=A1k?= Date: Sat, 5 Sep 2015 21:53:21 +0200 Subject: [PATCH 09/15] Stop resting when pAI chassis collapses --- code/modules/mob/living/silicon/pai/pai.dm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm index aa6ab23a94..d3b80f2d4a 100644 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -390,6 +390,9 @@ src.client.perspective = EYE_PERSPECTIVE src.client.eye = card + //stop resting + resting = 0 + //This seems redundant but not including the forced loc setting messes the behavior up. src.loc = card card.loc = get_turf(card) From efa995b372c67ee9dc557f1aa1e728da51761ec7 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Sun, 6 Sep 2015 10:53:32 +0930 Subject: [PATCH 10/15] Should fix antag scaling. --- code/game/antagonist/antagonist_update.dm | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/code/game/antagonist/antagonist_update.dm b/code/game/antagonist/antagonist_update.dm index 59e3489587..c7c3017129 100644 --- a/code/game/antagonist/antagonist_update.dm +++ b/code/game/antagonist/antagonist_update.dm @@ -75,10 +75,18 @@ qdel(I) /datum/antagonist/proc/update_current_antag_max() - var/main_type + cur_max = hard_cap if(ticker && ticker.mode) if(ticker.mode.antag_tags && (id in ticker.mode.antag_tags)) - main_type = 1 - cur_max = (main_type ? hard_cap_round : hard_cap) + cur_max = hard_cap_round + if(ticker.mode.antag_scaling_coeff) - cur_max = Clamp((ticker.mode.num_players()/ticker.mode.antag_scaling_coeff), 1, cur_max) + + var/count = 0 + for(var/mob/living/M in player_list) + if(M.client) + count++ + + // Minimum: initial_spawn_target + // Maximum: hard_cap or hard_cap_round + cur_max = max(initial_spawn_target,min(round(count/ticker.mode.antag_scaling_coeff),cur_max)) From 111ff9631239e67163ddead15727147df373a6e9 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Sun, 6 Sep 2015 10:59:59 +0930 Subject: [PATCH 11/15] Should fix antag candidate selection. --- code/game/gamemodes/game_mode.dm | 41 +++++++++++++++++++------------- 1 file changed, 25 insertions(+), 16 deletions(-) diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index 9005650650..391d8a4b42 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -508,26 +508,35 @@ var/global/list/additional_antag_types = list() if(!antag_template) return candidates - // Assemble a list of active players without jobbans. - for(var/mob/new_player/player in player_list) - if( player.client && player.ready ) - players += player + // If this is being called post-roundstart then it doesn't care about ready status. + if(ticker && ticker.current_state == GAME_STATE_PLAYING) + for(var/mob/player in player_list) + if(!player.client) + continue + if(!role || (player.client.prefs.be_special & role)) + log_debug("[player.key] had [antag_id] enabled, so we are drafting them.") + candidates |= player.mind + else + // Assemble a list of active players without jobbans. + for(var/mob/new_player/player in player_list) + if( player.client && player.ready ) + players += player - // Get a list of all the people who want to be the antagonist for this round - for(var/mob/new_player/player in players) - if(!role || (player.client.prefs.be_special & role)) - log_debug("[player.key] had [antag_id] enabled, so we are drafting them.") - candidates += player.mind - players -= player - - // If we don't have enough antags, draft people who voted for the round. - if(candidates.len < required_enemies) + // Get a list of all the people who want to be the antagonist for this round for(var/mob/new_player/player in players) - if(player.ckey in round_voters) - log_debug("[player.key] voted for this round, so we are drafting them.") + if(!role || (player.client.prefs.be_special & role)) + log_debug("[player.key] had [antag_id] enabled, so we are drafting them.") candidates += player.mind players -= player - break + + // If we don't have enough antags, draft people who voted for the round. + if(candidates.len < required_enemies) + for(var/mob/new_player/player in players) + if(player.ckey in round_voters) + log_debug("[player.key] voted for this round, so we are drafting them.") + candidates += player.mind + players -= player + break return candidates // Returns: The number of people who had the antagonist role set to yes, regardless of recomended_enemies, if that number is greater than required_enemies // required_enemies if the number of people with that role set to yes is less than recomended_enemies, From eacc1e7da750911cb28883e955f95379d17b3d73 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Sun, 6 Sep 2015 11:19:28 +0930 Subject: [PATCH 12/15] Tweaks. --- code/game/gamemodes/game_mode.dm | 2 ++ code/game/gamemodes/game_mode_latespawn.dm | 7 ++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index 391d8a4b42..4325cde9ce 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -185,6 +185,8 @@ var/global/list/additional_antag_types = list() return var/datum/antagonist/antag = all_antag_types[choice] if(antag) + if(!islist(ticker.mode.antag_templates)) + ticker.mode.antag_templates = list() ticker.mode.antag_templates |= antag message_admins("Admin [key_name_admin(usr)] added [antag.role_text] template to game mode.") diff --git a/code/game/gamemodes/game_mode_latespawn.dm b/code/game/gamemodes/game_mode_latespawn.dm index f849f7133d..038cf351ab 100644 --- a/code/game/gamemodes/game_mode_latespawn.dm +++ b/code/game/gamemodes/game_mode_latespawn.dm @@ -1,6 +1,7 @@ /datum/game_mode/var/next_spawn = 0 /datum/game_mode/var/min_autotraitor_delay = 4200 // Approx 7 minutes. /datum/game_mode/var/max_autotraitor_delay = 12000 // Approx 20 minutes. +/datum/game_mode/var/process_count = 0 /datum/game_mode/proc/get_usable_templates(var/list/supplied_templates) var/list/usable_templates = list() @@ -13,7 +14,11 @@ ///process() ///Called by the gameticker /datum/game_mode/proc/process() - try_latespawn() + // Slow this down a bit so latejoiners have a chance of being antags. + process_count++ + if(process_count >= 10) + process_count = 0 + try_latespawn() /datum/game_mode/proc/latespawn(var/mob/living/carbon/human/character) if(!character.mind) From cc960624b97107355f876e63efbd34692fcf68f7 Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Sun, 6 Sep 2015 10:07:39 +0200 Subject: [PATCH 13/15] Fixes mercenary mode not listing bought items. The mercenary leader now spawns with the uplink, as is set as its owner. --- code/game/antagonist/outsider/mercenary.dm | 15 +++++++-------- code/game/objects/items/devices/uplinks.dm | 2 +- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/code/game/antagonist/outsider/mercenary.dm b/code/game/antagonist/outsider/mercenary.dm index a8b03e605d..f703818e47 100644 --- a/code/game/antagonist/outsider/mercenary.dm +++ b/code/game/antagonist/outsider/mercenary.dm @@ -43,16 +43,15 @@ var/datum/antagonist/mercenary/mercs if(player.backbag == 4) player.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(player), slot_back) player.equip_to_slot_or_del(new /obj/item/weapon/storage/box/engineer(player.back), slot_in_backpack) player.equip_to_slot_or_del(new /obj/item/weapon/reagent_containers/pill/cyanide(player), slot_in_backpack) + + if (player.mind == leader) + var/obj/item/device/radio/uplink/U = new(player.loc) + U.hidden_uplink.uplink_owner = player.mind + U.hidden_uplink.uses = 40 + player.put_in_hands(U) + player.update_icons() create_id("Mercenary", player) create_radio(SYND_FREQ, player) return 1 - -/datum/antagonist/mercenary/create_nuke() - ..() - // Create the radio. - var/obj/effect/landmark/uplinkdevice = locate("landmark*Syndicate-Uplink") - if(uplinkdevice) - var/obj/item/device/radio/uplink/U = new(uplinkdevice.loc) - U.hidden_uplink.uses = 40 \ No newline at end of file diff --git a/code/game/objects/items/devices/uplinks.dm b/code/game/objects/items/devices/uplinks.dm index 96874bd946..45db522463 100644 --- a/code/game/objects/items/devices/uplinks.dm +++ b/code/game/objects/items/devices/uplinks.dm @@ -50,7 +50,7 @@ datum/nano_item_lists var/list/nanoui_data = new // Additional data for NanoUI use var/list/purchase_log = new - var/uplink_owner = null//text-only + var/datum/mind/uplink_owner = null var/used_TC = 0 /obj/item/device/uplink/nano_host() From 5a335c9140b057bcbd893c97bece8d8e960a8b20 Mon Sep 17 00:00:00 2001 From: GinjaNinja32 Date: Sun, 6 Sep 2015 20:41:06 +0100 Subject: [PATCH 14/15] Improve formatting of admin announcements --- code/modules/admin/admin.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index c8a23881c3..b2d43b08e4 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -750,7 +750,8 @@ proc/admin_notice(var/message, var/rights) if(message) if(!check_rights(R_SERVER,0)) message = sanitize(message, 500, extra = 0) - world << "\blue [usr.client.holder.fakekey ? "Administrator" : usr.key] Announces:\n \t [message]" + message = replacetext(message, "\n", "
    ") // required since we're putting it in a

    tag + world << "[usr.client.holder.fakekey ? "Administrator" : usr.key] Announces:

    [message]

    " log_admin("Announce: [key_name(usr)] : [message]") feedback_add_details("admin_verb","A") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! From 05a29f8f3a1e9f859f3be9c29347da11b052e7a2 Mon Sep 17 00:00:00 2001 From: Datraen Date: Sun, 6 Sep 2015 16:42:58 -0400 Subject: [PATCH 15/15] [BOTANY] Fixes plant storage nutrient check Reported only high, low or none with previous system. --- code/modules/hydroponics/seed_storage.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/hydroponics/seed_storage.dm b/code/modules/hydroponics/seed_storage.dm index a4f91ce94c..448173104b 100644 --- a/code/modules/hydroponics/seed_storage.dm +++ b/code/modules/hydroponics/seed_storage.dm @@ -101,7 +101,7 @@ if(seed.get_trait(TRAIT_REQUIRES_NUTRIENTS)) if(seed.get_trait(TRAIT_NUTRIENT_CONSUMPTION) < 0.05) dat += "Low" - else if(seed.get_trait(TRAIT_REQUIRES_NUTRIENTS) > 0.2) + else if(seed.get_trait(TRAIT_NUTRIENT_CONSUMPTION) > 0.2) dat += "High" else dat += "Norm"