diff --git a/.travis.yml b/.travis.yml
index 80998aac8f..73732e3083 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -7,10 +7,12 @@ env:
- BYOND_MINOR="1346"
- NODE_VERSION="4"
- BUILD_TOOLS=false
- - DM_MAPFILE=""
+ - BUILD_TESTING=false
+ - DM_MAPFILE="loadallmaps"
matrix:
- BUILD_TOOLS=true
- - DM_MAPFILE="loadallmaps"
+ - BUILD_TESTING=true
+ - BUILD_TESTING=false
cache:
directories:
@@ -18,6 +20,7 @@ cache:
- $HOME/BYOND-${BYOND_MAJOR}.${BYOND_MINOR}
+
addons:
apt:
packages:
@@ -27,9 +30,6 @@ addons:
- python
- python-pip
-before_install:
- - chmod +x tools/travis/before_build_tools.sh
-
install:
- tools/travis/install_build_tools.sh
diff --git a/code/_onclick/ai.dm b/code/_onclick/ai.dm
index 4036470cf7..0cc5cecb9d 100644
--- a/code/_onclick/ai.dm
+++ b/code/_onclick/ai.dm
@@ -38,13 +38,14 @@
var/turf_visible
if(pixel_turf)
turf_visible = cameranet.checkTurfVis(pixel_turf)
- if(istype(loc, /obj/item/device/aicard) && (pixel_turf in view(client.view, loc)))
- turf_visible = TRUE
if(!turf_visible)
- log_admin("[key_name_admin(src)] might be running a modified client! (failed checkTurfVis on AI click of [A]([COORD(pixel_turf)])")
- message_admins("[key_name_admin(src)] might be running a modified client! (failed checkTurfVis on AI click of [A]([ADMIN_COORDJMP(pixel_turf)]))")
- send2admindiscord("NOCHEAT", "[key_name(src)] might be running a modified client! (failed checkTurfVis on AI click of [A]([COORD(pixel_turf)]))")
- return
+ if(istype(loc, /obj/item/device/aicard) && (pixel_turf in view(client.view, loc)))
+ turf_visible = TRUE
+ else
+ log_admin("[key_name_admin(src)] might be running a modified client! (failed checkTurfVis on AI click of [A]([COORD(pixel_turf)])")
+ message_admins("[key_name_admin(src)] might be running a modified client! (failed checkTurfVis on AI click of [A]([ADMIN_COORDJMP(pixel_turf)]))")
+ send2irc_adminless_only("NOCHEAT", "[key_name(src)] might be running a modified client! (failed checkTurfVis on AI click of [A]([COORD(pixel_turf)]))")
+ return
var/list/modifiers = params2list(params)
if(modifiers["shift"] && modifiers["ctrl"])
diff --git a/code/game/objects/items/weapons/RPD.dm b/code/game/objects/items/weapons/RPD.dm
index baff623a2d..d444aa8bb3 100644
--- a/code/game/objects/items/weapons/RPD.dm
+++ b/code/game/objects/items/weapons/RPD.dm
@@ -571,7 +571,7 @@ var/global/list/RPD_recipes=list(
new /obj/item/pipe_meter(A)
if(DISPOSALS_MODE) //Making disposals pipes
- if(!is_anchored_dense_turf(A))
+ if(is_anchored_dense_turf(A))
user << "The [src]'s error light flickers; there's something in the way!"
return
user << "You start building a disposals pipe..."
@@ -609,4 +609,4 @@ var/global/list/RPD_recipes=list(
#undef METER_MODE
#undef DISPOSALS_MODE
#undef CATEGORY_ATMOS
-#undef CATEGORY_DISPOSALS
+#undef CATEGORY_DISPOSALS
\ No newline at end of file
diff --git a/code/modules/admin/verbs/adminhelp.dm b/code/modules/admin/verbs/adminhelp.dm
index 9717beb688..be7a264f97 100644
--- a/code/modules/admin/verbs/adminhelp.dm
+++ b/code/modules/admin/verbs/adminhelp.dm
@@ -76,6 +76,7 @@
src.verbs |= /client/verb/adminhelp
adminhelptimerid = 0
+
/client/verb/adminhelp(msg as text)
set category = "Admin"
set name = "Adminhelp"
@@ -91,19 +92,6 @@
if(src.handle_spam_prevention(msg,MUTE_ADMINHELP))
return
-
- //clean the input msg
- if(!msg)
- return
- msg = sanitize(copytext(msg,1,MAX_MESSAGE_LEN))
- if(!msg) return
- var/original_msg = msg
-
- msg = keywords_lookup(msg)
-
- if(!mob)
- return //this doesn't happen
-
var/ref_client = "\ref[src]"
for(var/datum/adminticket/T in admintickets)
if(T.permckey == src.ckey && T.resolved == "No")
@@ -129,10 +117,26 @@
src.verbs -= /client/verb/adminhelp
adminhelptimerid = addtimer(CALLBACK(src, .proc/giveadminhelpverb), 1200, TIMER_STOPPABLE)
- for(var/datum/adminticket/T in admintickets)
- msg = "HELP: [key_name(src)] [ADMIN_QUE(mob)] [ADMIN_PP(mob)] [ADMIN_VV(mob)] [ADMIN_SM(mob)] [ADMIN_FLW(mob)] [ADMIN_TP(mob)] (REJT) (IC) (R): [msg]"
+ //clean the input msg
+ if(!msg) return
+ msg = sanitize(copytext(msg,1,MAX_MESSAGE_LEN))
+ if(!msg) return
+ var/original_msg = msg
+
+ msg = keywords_lookup(msg)
+
+ if(!mob) return //this doesn't happen
createticket(src, msg, src.ckey, mob)
+
+ var/datum/adminticket/ticket
+
+ for(var/datum/adminticket/T in admintickets)
+ if(T.permckey == src.ckey)
+ ticket = T
+
+ msg = "HELP: [key_name(src)] [ADMIN_QUE(mob)] [ADMIN_PP(mob)] [ADMIN_VV(mob)] [ADMIN_SM(mob)] [ADMIN_FLW(mob)] [ADMIN_TP(mob)] (REJT) (IC) (R): [msg]"
+
//send this msg to all admins
for(var/client/X in admins)
@@ -146,13 +150,12 @@
src << "PM to-Admins: [original_msg]"
//send it to irc if nobody is on and tell us how many were on
- var/admin_number_present = send2admindiscord(ckey,original_msg)
- log_admin("HELP: [key_name(src)]: [original_msg] - heard by [admin_number_present] non-AFK admins who have +BAN.")
- if(admin_number_present <= 0)
- src << "No active admins are online, your adminhelp was sent to the admin irc."
+ var/admin_number_present = send2admindiscord("adminhelp", ckey, original_msg)
+ log_admin("ADMINHELP: [key_name(src)]: [original_msg] - heard by [admin_number_present] non-AFK admins who have +BAN.")
feedback_add_details("admin_verb","AH") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
return
+
/proc/get_admin_counts(requiredflags = R_BAN)
. = list("total" = list(), "noflags" = list(), "afk" = list(), "stealth" = list(), "present" = list())
for(var/client/X in admins)
diff --git a/code/modules/admin/verbs/adminpm.dm b/code/modules/admin/verbs/adminpm.dm
index e6134d0c83..6092d7e9b9 100644
--- a/code/modules/admin/verbs/adminpm.dm
+++ b/code/modules/admin/verbs/adminpm.dm
@@ -1,5 +1,4 @@
#define IRCREPLYCOUNT 2
-
//allows right clicking mobs to send an admin PM to their client, forwards the selected mob's client to cmd_admin_pm
/client/proc/cmd_admin_pm_context(mob/M in mob_list)
set category = null
@@ -7,8 +6,7 @@
if(!holder)
src << "Error: Admin-PM-Context: Only administrators may use this command."
return
- if( !ismob(M) || !M.client )
- return
+ if( !ismob(M) || !M.client ) return
cmd_admin_pm(M.client,null)
feedback_add_details("admin_verb","APMM") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
@@ -22,15 +20,16 @@
var/list/client/targets[0]
for(var/client/T)
if(T.mob)
- if(isnewplayer(T.mob))
+ if(istype(T.mob, /mob/new_player))
targets["(New Player) - [T]"] = T
- else if(isobserver(T.mob))
+ else if(istype(T.mob, /mob/dead/observer))
targets["[T.mob.name](Ghost) - [T]"] = T
else
targets["[T.mob.real_name](as [T.mob.name]) - [T]"] = T
else
targets["(No Mob) - [T]"] = T
- var/target = input(src,"To whom shall we send a message?","Admin PM",null) as null|anything in sortList(targets)
+ var/list/sorted = sortList(targets)
+ var/target = input(src,"To whom shall we send a message?","Admin PM",null) in sorted|null
cmd_admin_pm(targets[target],null)
feedback_add_details("admin_verb","APM") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
@@ -46,8 +45,7 @@
else if(istype(whom,/client))
C = whom
if(!C)
- if(holder)
- src << "Error: Admin-PM: Client not found."
+ if(holder) src << "Error: Admin-PM: Client not found."
return
var/datum/adminticket/ticket
diff --git a/code/modules/power/tesla/coil.dm b/code/modules/power/tesla/coil.dm
index 701e7baff7..ae6d9e8730 100644
--- a/code/modules/power/tesla/coil.dm
+++ b/code/modules/power/tesla/coil.dm
@@ -92,12 +92,10 @@
last_zap = world.time
var/coeff = (20 - ((input_power_multiplier - 1) * 3))
coeff = max(coeff, 10)
- var/shock_coeff = (4 - (input_power_multiplier - 2))
- shock_coeff = max(shock_coeff, 2)
- var/power = (powernet.avail/coeff)
+ var/power = (powernet.avail/2)
add_load(power)
playsound(src.loc, 'sound/magic/LightningShock.ogg', 100, 1, extrarange = 5)
- tesla_zap(src, 10, power/shock_coeff)
+ tesla_zap(src, 10, power/(coeff/2))
/obj/machinery/power/grounding_rod
name = "grounding rod"
@@ -154,4 +152,4 @@
if(anchored && !panel_open)
flick("grounding_rodhit", src)
else
- ..()
+ ..()
\ No newline at end of file
diff --git a/icons/mob/inhands/items_lefthand.dmi b/icons/mob/inhands/items_lefthand.dmi
index e53258905e..d9ca78e7ff 100644
Binary files a/icons/mob/inhands/items_lefthand.dmi and b/icons/mob/inhands/items_lefthand.dmi differ