Added sandstone. You get it by clicking a sand... block, I guess? with itself, and it'll convert the sand and all sand on that tile to sandstone bricks.
Added mineral doors. They have a cool sound effect, can't be opened by AI or critters (including bots, carps and huggers), but can't be locked either.
Blatantly stole DF music for ambience because I'm a dick :33
 Chapel
Removed imperium something robes. Just... no.
 Crayons
Added the ability to draw graffiti and letters.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@1594 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
uporotiy
2011-05-16 12:42:12 +00:00
parent 54c3b3ad90
commit e086aadfaf
17 changed files with 7997 additions and 7638 deletions
+83
View File
@@ -0,0 +1,83 @@
/proc/carpetsplosion(turf/location as turf,range = 10)
var/obj/effects/spreader/spreadEpicentre = new /obj/effects/spreader(location,range)
var/list/turf/spreadTurfs = list()
sleep(5)
for(var/obj/effects/spreader/spread in spreadEpicentre.spreadList)
spreadTurfs += get_turf(spread)
del(spreadEpicentre)
return
//DEBUG START
/obj/carpetnade
New()
..()
carpetsplosion(loc)
//DEBUG END
/obj/effects/spreader
var/list/obj/effects/spreader/spreadList = list()
/obj/effects/spreader/Del()
for(var/obj/effects/spreader/spread in spreadList)
if(spread != src)
del(spread)
..()
/obj/effects/spreader/New(location,var/amount = 1,obj/effects/spreader/source = src) //just a copypaste job from foam
if(amount <= 0)
del(src)
return
else
..()
for(var/direction in cardinal)
var/turf/T = get_step(src,direction)
if(!T)
continue
if(!T.Enter(src))
continue
var/obj/effects/spreader/S = locate() in T
if(S)
continue
new /obj/effects/spreader(T,amount-1,source)
source.spreadList += src
/*
/obj/effects/foam/proc/process()
if(--amount < 0)
return
while(expand) // keep trying to expand while true
for(var/direction in cardinal)
var/turf/T = get_step(src,direction)
if(!T)
continue
if(!T.Enter(src))
continue
var/obj/effects/foam/F = locate() in T
if(F)
continue
F = new(T, metal)
F.amount = amount
if(!metal)
F.create_reagents(10)
if (reagents)
for(var/datum/reagent/R in reagents.reagent_list)
F.reagents.add_reagent(R.id,1)
sleep(15)
*/
+1 -1
View File
@@ -76,7 +76,7 @@
return
/obj/closet/wardrobe/chaplain_black/New()
new /obj/item/clothing/suit/imperium_monk( src )
//new /obj/item/clothing/suit/imperium_monk( src ) //No. -- Urist
new /obj/item/clothing/under/rank/chaplain( src )
new /obj/item/clothing/under/rank/chaplain( src )
new /obj/item/clothing/shoes/black( src )
+165
View File
@@ -0,0 +1,165 @@
//NOT using the existing /obj/machinery/door type, since that has some complications on its own, mainly based on its
//machineryness
/obj/mineral_door
name = "mineral door"
density = 1
anchored = 1
opacity = 1
icon = 'mineral_doors.dmi'
icon_state = "iron"
var/mineralType = "iron"
var/state = 0 //closed, 1 == open
var/isSwitchingStates = 0
New(location)
..()
icon_state = mineralType
update_nearby_tiles(need_rebuild=1)
Del()
update_nearby_tiles()
..()
Bumped(atom/user)
..()
if(!state)
return TryToSwitchState(user)
return
attack_ai(mob/user as mob) //those aren't machinery, they're just big fucking slabs of a mineral
if(isAI(user)) //so the AI can't open it
return
else if(isrobot(user)) //but cyborgs can
if(get_dist(user,src) <= 1) //not remotely though
return TryToSwitchState(user)
attack_paw(mob/user as mob)
return TryToSwitchState(user)
attack_hand(mob/user as mob)
return TryToSwitchState(user)
CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
if(air_group) return 0
if(istype(mover, /obj/beam))
return !opacity
return !density
proc/TryToSwitchState(atom/user)
if(isSwitchingStates) return
if(ismob(user))
var/mob/M = user
if(world.time - user.last_bumped <= 60) return //NOTE do we really need that?
if(M.client && !M:handcuffed)
SwitchState()
else if(istype(user, /obj/mecha))
SwitchState()
proc/SwitchState()
if(state)
Close()
else
Open()
proc/Open()
isSwitchingStates = 1
playsound(loc, 'stonedoor_openclose.wav', 100, 1)
flick("[mineralType]opening",src)
sleep(10)
density = 0
opacity = 0
state = 1
update_icon()
isSwitchingStates = 0
proc/Close()
isSwitchingStates = 1
playsound(loc, 'stonedoor_openclose.wav', 100, 1)
flick("[mineralType]closing",src)
sleep(10)
density = 1
opacity = 1
state = 0
update_icon()
isSwitchingStates = 0
update_icon()
if(state)
icon_state = "[mineralType]open"
else
icon_state = mineralType
proc/update_nearby_tiles(need_rebuild) //Copypasta from airlock code
if(!air_master) return 0
var/turf/simulated/source = loc
var/turf/simulated/north = get_step(source,NORTH)
var/turf/simulated/south = get_step(source,SOUTH)
var/turf/simulated/east = get_step(source,EAST)
var/turf/simulated/west = get_step(source,WEST)
if(need_rebuild)
if(istype(source)) //Rebuild/update nearby group geometry
if(source.parent)
air_master.groups_to_rebuild += source.parent
else
air_master.tiles_to_update += source
if(istype(north))
if(north.parent)
air_master.groups_to_rebuild += north.parent
else
air_master.tiles_to_update += north
if(istype(south))
if(south.parent)
air_master.groups_to_rebuild += south.parent
else
air_master.tiles_to_update += south
if(istype(east))
if(east.parent)
air_master.groups_to_rebuild += east.parent
else
air_master.tiles_to_update += east
if(istype(west))
if(west.parent)
air_master.groups_to_rebuild += west.parent
else
air_master.tiles_to_update += west
else
if(istype(source)) air_master.tiles_to_update += source
if(istype(north)) air_master.tiles_to_update += north
if(istype(south)) air_master.tiles_to_update += south
if(istype(east)) air_master.tiles_to_update += east
if(istype(west)) air_master.tiles_to_update += west
return 1
/obj/mineral_door/iron
mineralType = "iron"
/obj/mineral_door/silver
mineralType = "silver"
/obj/mineral_door/gold
mineralType = "gold"
/obj/mineral_door/uranium
mineralType = "uranium"
/obj/mineral_door/sandstone
mineralType = "sandstone"
/obj/mineral_door/transparent
opacity = 0
Close()
..()
opacity = 0
/obj/mineral_door/transparent/plasma
mineralType = "plasma"
/obj/mineral_door/transparent/diamond
mineralType = "diamond"
+2
View File
@@ -77,6 +77,8 @@ var/global/list/datum/stack_recipe/metal_recipes = list ( \
null, \
new/datum/stack_recipe("apc frame", /obj/item/apc_frame, 2), \
new/datum/stack_recipe("grenade casing", /obj/item/weapon/chem_grenade), \
null, \
new/datum/stack_recipe("iron door", /obj/mineral_door/iron, 20), \
)
/obj/item/stack/sheet/metal
+71
View File
@@ -0,0 +1,71 @@
/*
CONTAINS:
SANDSTONE
DIAMOND
URANIUM
PLASMA
GOLD
SILVER
*/
//Sandstone
var/global/list/datum/stack_recipe/sandstone_recipes = list ( \
new/datum/stack_recipe("sandstone door", /obj/mineral_door/sandstone, 20), \
/* new/datum/stack_recipe("sandstone wall", ???), \
new/datum/stack_recipe("sandstone floor", ???),\*/
)
/obj/item/stack/sheet/sandstone
New(var/loc, var/amount=null)
recipes = sandstone_recipes
return ..()
//Diamond
var/global/list/datum/stack_recipe/diamond_recipes = list ( \
new/datum/stack_recipe("diamond door", /obj/mineral_door/transparent/diamond, 20), \
)
/obj/item/stack/sheet/diamond
New(var/loc, var/amount=null)
recipes = diamond_recipes
return ..()
//Uranium
var/global/list/datum/stack_recipe/uranium_recipes = list ( \
new/datum/stack_recipe("uranium door", /obj/mineral_door/uranium, 20), \
)
/obj/item/stack/sheet/uranium
New(var/loc, var/amount=null)
recipes = uranium_recipes
return ..()
//Plasma
var/global/list/datum/stack_recipe/plasma_recipes = list ( \
new/datum/stack_recipe("plasma door", /obj/mineral_door/transparent/plasma, 20), \
)
/obj/item/stack/sheet/plasma
New(var/loc, var/amount=null)
recipes = plasma_recipes
return ..()
//Gold
var/global/list/datum/stack_recipe/gold_recipes = list ( \
new/datum/stack_recipe("golden door", /obj/mineral_door/gold, 20), \
)
/obj/item/stack/sheet/gold
New(var/loc, var/amount=null)
recipes = gold_recipes
return ..()
//Silver
var/global/list/datum/stack_recipe/silver_recipes = list ( \
new/datum/stack_recipe("silver door", /obj/mineral_door/silver, 20), \
)
/obj/item/stack/sheet/silver
New(var/loc, var/amount=null)
recipes = silver_recipes
return ..()
+23 -7
View File
@@ -129,10 +129,18 @@ CRAYONS
/obj/item/toy/crayon/afterattack(atom/target, mob/user as mob)
if(istype(target,/turf/simulated/floor))
user << "You start drawing a rune on the [target.name]."
var/drawtype = input("Choose what you'd like to draw.", "Crayon scribbles") in list("graffiti","rune","letter")
switch(drawtype)
if("letter")
drawtype = input("Choose the letter.", "Crayon scribbles") in list("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z")
user << "You start drawing a letter on the [target.name]."
if("graffiti")
user << "You start drawing graffiti on the [target.name]."
if("rune")
user << "You start drawing a rune on the [target.name]."
if(instant || do_after(user, 50))
new /obj/decal/cleanable/crayon(target,colour,shadeColour)
user << "You draw a rune on the [target.name]."
new /obj/decal/cleanable/crayon(target,colour,shadeColour,drawtype)
user << "You finish drawing."
if(uses)
uses--
if(!uses)
@@ -159,13 +167,21 @@ CRAYONS
layer = 2.1
anchored = 1
/obj/decal/cleanable/crayon/New(location,main = "#FFFFFF",shade = "#000000")
/obj/decal/cleanable/crayon/New(location,main = "#FFFFFF",shade = "#000000",var/type = "rune")
..()
loc = location
var/runeShape = rand(1,6)
var/icon/mainOverlay = new/icon('rune.dmi',"main[runeShape]",2.1)
var/icon/shadeOverlay = new/icon('rune.dmi',"shade[runeShape]",2.1)
name = type
desc = "A [type] drawn in crayon."
switch(type)
if("rune")
type = "rune[rand(1,6)]"
if("graffiti")
type = pick("amyjon","face","matt","revolution","engie","guy","end")
var/icon/mainOverlay = new/icon('crayondecal.dmi',"[type]",2.1)
var/icon/shadeOverlay = new/icon('crayondecal.dmi',"[type]s",2.1)
mainOverlay.Blend(main,ICON_ADD)
shadeOverlay.Blend(shade,ICON_ADD)