Merge branch 'master' of github.com:tgstation/-tg-station into taperecorder

Conflicts:
	icons/obj/device.dmi
	tgstation.dme
This commit is contained in:
Pete Goodfellow
2013-06-19 17:05:47 +01:00
202 changed files with 4808 additions and 3998 deletions
+14
View File
@@ -649,6 +649,20 @@ client
if("left") A.dir = turn(A.dir, 45)
href_list["datumrefresh"] = href_list["rotatedatum"]
else if(href_list["makehuman"])
if(!check_rights(0)) return
var/mob/living/carbon/monkey/Mo = locate(href_list["makehuman"])
if(!istype(Mo))
usr << "This can only be done to instances of type /mob/living/carbon/monkey"
return
if(alert("Confirm mob type change?",,"Transform","Cancel") != "Transform") return
if(!Mo)
usr << "Mob doesn't exist anymore"
return
holder.Topic(href, list("humanone"=href_list["makehuman"]))
else if(href_list["makemonkey"])
if(!check_rights(0)) return
@@ -26,7 +26,7 @@ Bonus
/datum/symptom/damage_converter/Activate(var/datum/disease/advance/A)
..()
if(prob(SYMPTOM_ACTIVATION_PROB))
if(prob(SYMPTOM_ACTIVATION_PROB * 10))
var/mob/living/M = A.affected_mob
switch(A.stage)
if(4, 5)
@@ -35,7 +35,7 @@ Bonus
/datum/symptom/damage_converter/proc/Convert(var/mob/living/M)
if(M.getFireLoss() < M.getMaxHealth() || M.getBruteLoss() < M.getMaxHealth())
if(M.getFireLoss() > 0 || M.getBruteLoss() > 0)
var/get_damage = rand(1, 2)
M.adjustFireLoss(-get_damage)
M.adjustBruteLoss(-get_damage)
@@ -0,0 +1,41 @@
/*
//////////////////////////////////////
Vitiligo
Extremely Noticable.
Decreases resistance slightly.
Reduces stage speed slightly.
Reduces transmission.
Critical Level.
BONUS
Makes the mob lose skin pigmentation.
//////////////////////////////////////
*/
/datum/symptom/vitiligo
name = "Vitiligo"
stealth = -3
resistance = -1
stage_speed = -1
transmittable = -2
level = 5
/datum/symptom/vitiligo/Activate(var/datum/disease/advance/A)
..()
if(prob(SYMPTOM_ACTIVATION_PROB))
var/mob/living/M = A.affected_mob
if(istype(M, /mob/living/carbon/human))
var/mob/living/carbon/human/H = M
if(H.skin_tone == "albino")
return
switch(A.stage)
if(5)
H.skin_tone = "albino"
H.update_body(0)
else
H.visible_message("<span class='warning'>[H] looks a bit pale...</span>", "<span class='notice'>You look a bit pale...</span>")
return
+1
View File
@@ -34,5 +34,6 @@ client/verb/showrevinfo()
var/output = revdata.showinfo
output += "<b>Current Infomational Settings:</b><br>"
output += "Protect Authority Roles From Traitor: [config.protect_roles_from_antagonist]<br>"
output += "Allow Latejoin Antagonists: [config.allow_latejoin_antagonists]<br>"
usr << browse(output,"window=revdata");
return
+1 -1
View File
@@ -170,7 +170,7 @@
teleatom.visible_message("\red <B>The [teleatom] bounces off of the portal!</B>")
return 0
if(destination.z == 2) //centcomm z-level
if(destination.z == 2) //centcom z-level
if(istype(teleatom, /obj/mecha))
var/obj/mecha/MM = teleatom
MM.occupant << "\red <B>The mech would not survive the jump to a location so far away!</B>"
+2 -2
View File
@@ -175,7 +175,7 @@ var/datum/global_hud/global_hud = new()
var/list/other
var/list/obj/screen/hotkeybuttons
var/list/obj/screen/item_action/item_action_list //Used for the item action ui buttons.
var/list/obj/screen/item_action/item_action_list //Used for the item action ui buttons.
datum/hud/New(mob/owner)
@@ -191,7 +191,7 @@ datum/hud/New(mob/owner)
if(ishuman(mymob))
var/mob/living/carbon/human/H = mymob
if(H.handcuffed)
H.handcuffed.screen_loc = null //no handcuffs in my UI!
H.handcuffed.screen_loc = null //no handcuffs in my UI!
if(inventory_shown && hud_shown)
if(H.shoes) H.shoes.screen_loc = ui_shoes
if(H.gloves) H.gloves.screen_loc = ui_gloves
+14 -17
View File
@@ -765,7 +765,7 @@ datum/mind
return
switch(href_list["monkey"])
if("healthy")
if (usr.client.holder.rights & R_ADMIN)
if (check_rights(R_ADMIN))
var/mob/living/carbon/human/H = current
var/mob/living/carbon/monkey/M = current
if (istype(H))
@@ -780,7 +780,7 @@ datum/mind
D.cure(0)
sleep(0) //because deleting of virus is done through spawn(0)
if("infected")
if (usr.client.holder.rights & R_ADMIN)
if (check_rights(R_ADMIN, 0))
var/mob/living/carbon/human/H = current
var/mob/living/carbon/monkey/M = current
if (istype(H))
@@ -793,21 +793,18 @@ datum/mind
else if (istype(M))
current.contract_disease(new /datum/disease/jungle_fever,1,0)
if("human")
var/mob/living/carbon/monkey/M = current
if (istype(M))
for(var/datum/disease/D in M.viruses)
if (istype(D,/datum/disease/jungle_fever))
D.cure(0)
sleep(0) //because deleting of virus is doing throught spawn(0)
log_admin("[key_name(usr)] attempting to humanize [key_name(current)]")
message_admins("\blue [key_name_admin(usr)] attempting to humanize [key_name_admin(current)]")
var/obj/item/weapon/dnainjector/m2h/m2h = new
var/obj/item/weapon/implant/mobfinder = new(M) //hack because humanizing deletes mind --rastaf0
src = null
m2h.inject(M)
src = mobfinder.loc:mind
del(mobfinder)
current.radiation -= 50
if (check_rights(R_ADMIN, 0))
var/mob/living/carbon/human/H = current
var/mob/living/carbon/monkey/M = current
if (istype(M))
for(var/datum/disease/D in M.viruses)
if (istype(D,/datum/disease/jungle_fever))
D.cure(0)
sleep(0) //because deleting of virus is doing throught spawn(0)
log_admin("[key_name(usr)] attempting to humanize [key_name(current)]")
message_admins("\blue [key_name_admin(usr)] attempting to humanize [key_name_admin(current)]")
H = M.humanize(TR_KEEPITEMS | TR_KEEPIMPLANTS | TR_KEEPDAMAGE | TR_KEEPVIRUS | TR_DEFAULTMSG)
src = H.mind
else if (href_list["silicon"])
switch(href_list["silicon"])
+2 -2
View File
@@ -38,7 +38,7 @@ var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin
var/smoke_amt = 0 //cropped at 10
var/critfailchance = 0
var/centcomm_cancast = 1 //Whether or not the spell should be allowed on z2
var/centcom_cancast = 1 //Whether or not the spell should be allowed on z2
/obj/effect/proc_holder/spell/proc/cast_check(skipcharge = 0,mob/user = usr) //checks if the spell can be cast based on its settings; skipcharge is used when an additional cast_check is called inside the spell
@@ -46,7 +46,7 @@ var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin
user << "<span class='warning'>You shouldn't have this spell! Something's wrong.</span>"
return 0
if(user.z == 2 && !centcomm_cancast) //Certain spells are not allowed on the centcomm zlevel
if(user.z == 2 && !centcom_cancast) //Certain spells are not allowed on the centcom zlevel
return 0
if(!skipcharge)
+4 -4
View File
@@ -14,7 +14,7 @@
invocation_type = "none"
range = 0
summon_type = list(/turf/simulated/floor/engine/cult)
centcomm_cancast = 0 //Stop crashing the server by spawning turfs on transit tiles
centcom_cancast = 0 //Stop crashing the server by spawning turfs on transit tiles
/obj/effect/proc_holder/spell/aoe_turf/conjure/wall
name = "Lesser Construction"
@@ -27,7 +27,7 @@
invocation_type = "none"
range = 0
summon_type = list(/turf/simulated/wall/cult)
centcomm_cancast = 0 //Stop crashing the server by spawning turfs on transit tiles
centcom_cancast = 0 //Stop crashing the server by spawning turfs on transit tiles
/obj/effect/proc_holder/spell/aoe_turf/conjure/wall/reinforced
name = "Greater Construction"
@@ -39,7 +39,7 @@
invocation = "none"
invocation_type = "none"
range = 0
centcomm_cancast = 0 //Stop crashing the server by spawning turfs on transit tiles
centcom_cancast = 0 //Stop crashing the server by spawning turfs on transit tiles
delay = 50
summon_type = list(/turf/simulated/wall/r_wall)
@@ -85,4 +85,4 @@
include_user = 1
phaseshift = 1
jaunt_duration = 50 //in deciseconds
centcomm_cancast = 0 //Stop people from getting to centcomm
centcom_cancast = 0 //Stop people from getting to centcom
+1 -1
View File
@@ -9,7 +9,7 @@
invocation_type = "none"
range = -1
include_user = 1
centcomm_cancast = 0 //Prevent people from getting to centcomm
centcom_cancast = 0 //Prevent people from getting to centcom
var phaseshift = 0
var/jaunt_duration = 50 //in deciseconds
+1 -1
View File
@@ -105,7 +105,7 @@
inner_tele_radius = 0
outer_tele_radius = 6
centcomm_cancast = 0 //prevent people from getting to centcomm
centcom_cancast = 0 //prevent people from getting to centcom
/obj/effect/proc_holder/spell/targeted/area_teleport/teleport
name = "Teleport"
+7 -2
View File
@@ -43,9 +43,11 @@
name = "Food crate"
contains = list(/obj/item/weapon/reagent_containers/food/drinks/flour,
/obj/item/weapon/reagent_containers/food/drinks/milk,
/obj/item/weapon/reagent_containers/food/drinks/milk,
/obj/item/weapon/reagent_containers/food/drinks/soymilk,
/obj/item/weapon/storage/fancy/egg_box,
/obj/item/weapon/reagent_containers/food/condiment/enzyme,
/obj/item/weapon/reagent_containers/food/condiment/sugar,
/obj/item/weapon/reagent_containers/food/snacks/meat/monkey,
/obj/item/weapon/reagent_containers/food/snacks/grown/banana,
/obj/item/weapon/reagent_containers/food/snacks/grown/banana,
/obj/item/weapon/reagent_containers/food/snacks/grown/banana)
@@ -530,7 +532,10 @@
/obj/item/weapon/gun/energy/taser,
/obj/item/weapon/gun/energy/taser,
/obj/item/weapon/storage/box/flashbangs,
/obj/item/weapon/storage/box/teargas)
/obj/item/weapon/storage/box/teargas,
/obj/item/device/flash,
/obj/item/device/flash,
/obj/item/device/flash)
cost = 30
containertype = /obj/structure/closet/crate/secure/weapon
containername = "weapons crate"
+13
View File
@@ -115,6 +115,10 @@ var/list/uplink_items = list()
item = /obj/item/weapon/storage/box/emps
cost = 3
/datum/uplink_item/dangerous/syndicate_minibomb
name = "Syndicate Minibomb"
item = /obj/item/weapon/grenade/syndieminibomb
cost = 3
// STEALTHY WEAPONS
@@ -167,6 +171,10 @@ var/list/uplink_items = list()
item = /obj/item/device/chameleon
cost = 4
/datum/uplink_item/stealthy_tools/camera_bug
name = "Camera Bug"
item = /obj/item/device/camera_bug
cost = 2
// DEVICE AND TOOLS
@@ -218,6 +226,11 @@ var/list/uplink_items = list()
item = /obj/item/device/sbeacondrop
cost = 7
/datum/uplink_item/device_tools/syndicate_bomb
name = "Syndicate Bomb (DANGER!)"
item = /obj/item/weapon/syndicatebomb
cost = 5
/datum/uplink_item/device_tools/teleporter
name = "Teleporter Circuit Board"
item = /obj/item/weapon/circuitboard/teleporter
+74
View File
@@ -0,0 +1,74 @@
/datum/wires/syndicatebomb
random = 1
holder_type = /obj/item/weapon/syndicatebomb
wire_count = 5
var/const/WIRE_BOOM = 1 // Explodes if pulsed or cut while active, defuses a bomb that isn't active on cut
var/const/WIRE_UNBOLT = 2 // Unbolts the bomb if cut, hint on pulsed
var/const/WIRE_DELAY = 4 // Raises the timer on pulse, does nothing on cut
var/const/WIRE_PROCEED = 8 // Lowers the timer, explodes if cut while the bomb is active
var/const/WIRE_ACTIVATE = 16 // Will start a bombs timer if pulsed, will hint if pulsed while already active, will stop a timer a bomb on cut
/datum/wires/syndicatebomb/UpdatePulsed(var/index)
var/obj/item/weapon/syndicatebomb/P = holder
switch(index)
if(WIRE_BOOM)
if (P.active)
P.loc.visible_message("\red \icon[holder] An alarm sounds! It's go-")
P.timer = 0
if(WIRE_UNBOLT)
P.loc.visible_message("\blue \icon[holder] The bolts spin in place for a moment.")
if(WIRE_DELAY)
playsound(P.loc, 'sound/machines/chime.ogg', 30, 1)
P.loc.visible_message("\blue \icon[holder] The bomb chirps.")
P.timer += 10
if(WIRE_PROCEED)
playsound(P.loc, 'sound/machines/buzz-sigh.ogg', 30, 1)
P.loc.visible_message("\red \icon[holder] The bomb buzzes ominously!")
if (P.timer >= 61) //Long fuse bombs can suddenly become more dangerous if you tinker with them
P.timer = 60
if (P.timer >= 21)
P.timer -= 10
else if (P.timer >= 11) //both to prevent negative timers and to have a little mercy
P.timer = 10
if(WIRE_ACTIVATE)
if(!P.active && !P.defused)
playsound(P.loc, 'sound/machines/click.ogg', 30, 1)
P.loc.visible_message("\red \icon[holder] You hear the bomb start ticking!")
P.active = 1
if(!P.open_panel) //Needs to exist in case the wire is pulsed with a signaler while the panel is closed
P.icon_state = "syndicate-bomb-active"
else
P.icon_state = "syndicate-bomb-active-wires"
processing_objects.Add(P)
else
P.loc.visible_message("\blue \icon[holder] The bomb seems to hesitate for a moment.")
P.timer += 5
/datum/wires/syndicatebomb/UpdateCut(var/index, var/mended)
var/obj/item/weapon/syndicatebomb/P = holder
switch(index)
if(WIRE_EXPLODE)
if(!mended)
if(P.active)
P.loc.visible_message("\red \icon[holder] An alarm sounds! It's go-")
P.timer = 0
else
P.defused = 1
if(mended)
P.defused = 0 //cutting and mending all the wires of an inactive bomb will thus cure any sabotage
if(WIRE_UNBOLT)
if (!mended && P.anchored)
playsound(P.loc, 'sound/effects/stealthoff.ogg', 30, 1)
P.loc.visible_message("\blue \icon[holder] The bolts lift out of the ground!")
P.anchored = 0
if(WIRE_PROCEED)
if(!mended && P.active)
P.loc.visible_message("\red \icon[holder] An alarm sounds! It's go-")
P.timer = 0
if(WIRE_ACTIVATE)
if (!mended && P.active)
P.loc.visible_message("\blue \icon[holder] The timer stops! The bomb has been defused!")
P.icon_state = "syndicate-bomb-inactive-wires" //no cutting possible with the panel closed
P.active = 0
P.defused = 1
+2 -2
View File
@@ -105,14 +105,14 @@ var/list/wireColours = list("red", "blue", "green", "black", "orange", "brown",
var/obj/item/I = L.get_active_hand()
holder.add_hiddenprint(L)
if(href_list["cut"]) // Toggles the cut/mend status
if(iswirecutter(I))
if(istype(I, /obj/item/weapon/wirecutters))
var/colour = href_list["cut"]
CutWireColour(colour)
else
L << "<span class='error'>You need wirecutters!</span>"
else if(href_list["pulse"])
if(ismultitool(I))
if(istype(I, /obj/item/device/multitool))
var/colour = href_list["pulse"]
PulseColour(colour)
else