Merge remote-tracking branch 'refs/remotes/ParadiseSS13/master'

# Conflicts:
#	icons/mob/human_face.dmi
This commit is contained in:
KasparoVy
2015-12-27 18:42:59 -05:00
211 changed files with 2948 additions and 2790 deletions
+1 -1
View File
@@ -51,7 +51,7 @@
/obj/effect/overlay/temp/emp/pulse
name = "emp pulse"
icon_state = "emp pulse"
duration = 20
duration = 8
randomdir = 0
/obj/effect/overlay/palmtree_r
+12 -17
View File
@@ -9,24 +9,18 @@
var/obj/item/target = null
var/creator = null
anchored = 1.0
var/precision = 1 // how close to the portal you will teleport. 0 = on the portal, 1 = adjacent
/obj/effect/portal/Bumped(mob/M as mob|obj)
spawn(0)
src.teleport(M)
return
return
src.teleport(M)
/obj/effect/portal/Crossed(AM as mob|obj)
spawn(0)
src.teleport(AM)
return
return
/obj/effect/portal/New()
/obj/effect/portal/New(loc, turf/target, creator)
portals += src
src.loc = loc
src.target = target
src.creator = creator
spawn(300)
qdel(src)
return
return
/obj/effect/portal/Destroy()
@@ -34,14 +28,16 @@
if(istype(creator, /obj/item/weapon/hand_tele))
var/obj/item/weapon/hand_tele/O = creator
O.active_portals--
else if(istype(creator, /obj/item/weapon/gun/energy/wormhole_projector))
var/obj/item/weapon/gun/energy/wormhole_projector/P = creator
P.portal_destroyed(src)
creator = null
return ..()
/obj/effect/portal/proc/teleport(atom/movable/M as mob|obj)
if(istype(M, /obj/effect)) //sparks don't teleport
return
if (M.anchored&&istype(M, /obj/mecha))
return
if (icon_state == "portal1")
if(M.anchored&&istype(M, /obj/mecha))
return
if (!( target ))
qdel(src)
@@ -51,5 +47,4 @@
src.icon_state = "portal1"
do_teleport(M, locate(rand(5, world.maxx - 5), rand(5, world.maxy -5), 3), 0)
else
do_teleport(M, target, 1) ///You will appear adjacent to the beacon
do_teleport(M, target, precision) ///You will appear adjacent to the beacon
+1 -1
View File
@@ -1,4 +1,4 @@
proc/empulse(turf/epicenter, heavy_range, light_range, log=0)
/proc/empulse(turf/epicenter, heavy_range, light_range, log=0)
if(!epicenter) return
if(!istype(epicenter, /turf))
@@ -196,6 +196,7 @@ var/global/list/datum/stack_recipe/cardboard_recipes = list ( \
new/datum/stack_recipe("pizza box", /obj/item/pizzabox), \
new/datum/stack_recipe("folder", /obj/item/weapon/folder), \
new/datum/stack_recipe("cardboard tube", /obj/item/weapon/c_tube), \
new/datum/stack_recipe("large box", /obj/structure/closet/cardboard, 4), \
)
/obj/item/stack/sheet/cardboard //BubbleWrap
@@ -4,6 +4,8 @@
icon = 'icons/obj/flamethrower.dmi'
icon_state = "flamethrowerbase"
item_state = "flamethrower_0"
lefthand_file = 'icons/mob/inhands/guns_lefthand.dmi'
righthand_file = 'icons/mob/inhands/guns_righthand.dmi'
flags = CONDUCT
force = 3.0
throwforce = 10.0
@@ -66,7 +66,6 @@
/obj/item/weapon/storage/photo_album,
/obj/item/weapon/storage/box/snappops,
/obj/item/weapon/storage/fancy/crayons,
/obj/item/weapon/storage/backpack/holding,
/obj/item/weapon/storage/belt/champion,
/obj/item/weapon/soap/deluxe,
/obj/item/weapon/pickaxe/silver,
@@ -75,8 +74,6 @@
/obj/item/weapon/grenade/smokebomb,
/obj/item/weapon/corncob,
/obj/item/weapon/contraband/poster,
/obj/item/weapon/book/manual/barman_recipes,
/obj/item/weapon/book/manual/chef_recipes,
/obj/item/weapon/bikehorn,
/obj/item/weapon/beach_ball,
/obj/item/weapon/beach_ball/holoball,
@@ -86,25 +83,40 @@
/obj/item/toy/crossbow,
/obj/item/toy/gun,
/obj/item/toy/katana,
/obj/item/toy/prize/deathripley,
/obj/item/toy/prize/durand,
/obj/item/toy/prize/fireripley,
/obj/item/toy/prize/gygax,
/obj/item/toy/prize/honk,
/obj/item/toy/prize/marauder,
/obj/item/toy/prize/mauler,
/obj/item/toy/prize/odysseus,
/obj/item/toy/prize/phazon,
/obj/item/toy/prize/ripley,
/obj/item/toy/prize/seraph,
/obj/random/prize,
/obj/item/toy/spinningtoy,
/obj/item/toy/sword,
/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiadeus,
/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiavulgaris,
/obj/item/device/paicard,
/obj/item/device/violin,
/obj/item/device/guitar,
/obj/item/weapon/storage/belt/utility/full,
/obj/item/clothing/accessory/horrible)
/obj/item/clothing/accessory/horrible,
/obj/random/carp_plushie,
/obj/random/plushie,
/obj/random/figure,
/obj/item/toy/minimeteor,
/obj/item/toy/redbutton,
/obj/item/toy/owl,
/obj/item/toy/griffin,
/obj/item/clothing/head/blob,
/obj/item/weapon/id_decal/gold,
/obj/item/weapon/id_decal/silver,
/obj/item/weapon/id_decal/prisoner,
/obj/item/weapon/id_decal/centcom,
/obj/item/weapon/id_decal/emag,
/obj/item/weapon/spellbook/oneuse/fake_gib,
/obj/item/toy/foamblade,
/obj/item/toy/flash,
/obj/item/toy/minigibber,
/obj/item/toy/nuke,
/obj/item/toy/cards/deck,
/obj/item/toy/AI,
/obj/item/clothing/under/syndicate/tacticool,
/obj/item/weapon/storage/box/fakesyndiesuit,
/obj/item/toy/crossbow/tommygun,
)
if(!ispath(gift_type,/obj/item)) return
@@ -111,7 +111,6 @@
gender = NEUTER
icon = 'icons/obj/weapons.dmi'
icon_state = "bolas"
siemens_coefficient = 1
slot_flags = SLOT_BELT
throwforce = 2
w_class = 2
@@ -27,3 +27,13 @@
throwforce = 10
w_class = 2
attack_verb = list("stabbed", "jabbed", "iced,")
/obj/item/weapon/melee/candy_sword
name = "candy cane sword"
desc = "A large candy cane with a sharpened point. Definitely too dangerous for schoolchildren."
icon_state = "candy_sword"
item_state = "candy_sword"
force = 10
throwforce = 7
w_class = 3
attack_verb = list("slashed", "stabbed", "sliced", "caned")
@@ -46,12 +46,12 @@ Frequency:
/obj/item/weapon/locator/Topic(href, href_list)
if(..())
return 1
var/turf/current_location = get_turf(usr)//What turf is the user on?
if(!current_location ||( current_location.z in config.admin_levels))//If turf was not found or they're on z level 2.
usr << "<span class='warning'>\The [src] is malfunctioning.</span>"
return 1
if (href_list["refresh"])
temp = "<B>Persistent Signal Locator</B><HR>"
var/turf/sr = get_turf(src)
@@ -135,9 +135,7 @@ Frequency:
return
var/T = L[t1]
user.show_message("<span class='notice'>Locked In.</span>", 2)
var/obj/effect/portal/P = new /obj/effect/portal( get_turf(src) )
P.target = T
P.creator = src
var/obj/effect/portal/P = new /obj/effect/portal(get_turf(src), T, src)
try_move_adjacent(P)
active_portals++
add_fingerprint(user)
+10
View File
@@ -16,6 +16,9 @@
var/Mtoollink = 0 // variable to decide if an object should show the multitool menu linking menu, not all objects use it
var/being_shocked = 0
// What reagents should be logged when transferred TO this object?
// Reagent ID => friendly name
var/list/reagents_to_log=list()
@@ -258,3 +261,10 @@ a {
/obj/proc/container_resist(var/mob/living)
return
/obj/proc/tesla_act(var/power)
being_shocked = 1
var/power_bounced = power * 0.76923
tesla_zap(src, 5, power_bounced)
spawn(10)
being_shocked = 0
@@ -0,0 +1,59 @@
/obj/structure/closet/cardboard
name = "large cardboard box"
desc = "Just a box..."
icon_state = "cardboard"
icon_opened = "cardboard_open"
icon_closed = "cardboard"
health = 10
var/move_delay = 0
var/egged = 0
/obj/structure/closet/cardboard/relaymove(mob/user, direction)
if(opened || move_delay || user.stat || user.stunned || user.weakened || user.paralysis || !isturf(loc) || !has_gravity(loc))
return
move_delay = 1
if(step(src, direction))
spawn(config.walk_speed)
move_delay = 0
else
move_delay = 0
/obj/structure/closet/cardboard/open()
if(opened || !can_open())
return 0
if(!egged)
var/mob/living/Snake = null
for(var/mob/living/L in src.contents)
Snake = L
break
if(Snake)
var/list/alerted = viewers(7,src)
if(alerted)
for(var/mob/living/L in alerted)
if(!L.stat)
L.do_alert_animation(L)
egged = 1
alerted << sound('sound/machines/chime.ogg')
..()
/mob/living/proc/do_alert_animation(atom/A)
var/image/I
I = image('icons/obj/closet.dmi', A, "cardboard_special", A.layer+1)
var/list/viewing = list()
for(var/mob/M in viewers(A))
if(M.client)
viewing |= M.client
flick_overlay(I,viewing,8)
I.alpha = 0
animate(I, pixel_z = 32, alpha = 255, time = 5, easing = ELASTIC_EASING)
/obj/structure/closet/cardboard/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
if(src.opened)
if(istype(W, /obj/item/weapon/weldingtool))
return
if(istype(W, /obj/item/weapon/wirecutters))
var/obj/item/weapon/wirecutters/WC = W
new /obj/item/stack/sheet/cardboard(src.loc)
for(var/mob/M in viewers(src))
M.show_message("<span class='notice'>\The [src] has been cut apart by [user] with \the [WC].</span>", 3, "You hear cutting.", 2)
qdel(src)
+52 -1
View File
@@ -255,4 +255,55 @@
icon_state = "strawbail2"
/obj/structure/flora/straw_bail/alt_2
icon_state = "strawbail3"
icon_state = "strawbail3"
/obj/structure/bush
name = "foliage"
desc = "Pretty thick scrub, it'll take something sharp and a lot of determination to clear away."
icon = 'icons/obj/flora/plants.dmi'
icon_state = "bush1"
density = 1
anchored = 1
layer = 3.2
var/indestructable = 0
var/stump = 0
/obj/structure/bush/New()
if(prob(20))
opacity = 1
/*
/obj/structure/bush/Bumped(M as mob)
if (istype(M, /mob/living/simple_animal))
var/mob/living/simple_animal/A = M
A.loc = get_turf(src)
else if (istype(M, /mob/living/carbon/monkey))
var/mob/living/carbon/monkey/A = M
A.loc = get_turf(src)
*/
/obj/structure/bush/attackby(var/obj/I as obj, var/mob/user as mob, params)
//hatchets can clear away undergrowth
if(istype(I, /obj/item/weapon/hatchet) && !stump)
if(indestructable)
//this bush marks the edge of the map, you can't destroy it
user << "\red You flail away at the undergrowth, but it's too thick here."
else
user.visible_message("\red <b>[user] begins clearing away [src].</b>","\red <b>You begin clearing away [src].</b>")
spawn(rand(15,30))
if(get_dist(user,src) < 2)
user << "\blue You clear away [src]."
var/obj/item/stack/sheet/wood/W = new(src.loc)
W.amount = rand(3,15)
if(prob(50))
icon_state = "stump[rand(1,2)]"
name = "cleared foliage"
desc = "There used to be dense undergrowth here."
density = 0
stump = 1
pixel_x = rand(-6,6)
pixel_y = rand(-6,6)
else
qdel(src)
else
return ..()