mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-21 12:04:48 +01:00
Mining
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:
@@ -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)
|
||||
*/
|
||||
@@ -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 )
|
||||
|
||||
@@ -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"
|
||||
@@ -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
|
||||
|
||||
@@ -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 ..()
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user