Bleeding edgy refresh (#303)
* not code stuff * other things * global vars, defines, helpers * onclick hud stuff, orphans, world.dm * controllers and datums * game folder * everything not client/mobs in modules * client folder * stage 1 mob stuff * simple animal things * silicons * carbon things * ayylmaos and monkeys * hyoomahn * icons n shit * sprite fixes * compile fixes * some fixes I cherrypicked. * qdel fixes * forgot brain refractors
This commit is contained in:
@@ -71,7 +71,7 @@
|
||||
if(L.acid_act(10, acid_used, "feet"))
|
||||
acid_level = max(0, acid_level - acid_used*10)
|
||||
playsound(L, 'sound/weapons/sear.ogg', 50, 1)
|
||||
L << "<span class='userdanger'>[src] burns you!</span>"
|
||||
to_chat(L, "<span class='userdanger'>[src] burns you!</span>")
|
||||
|
||||
//xenomorph corrosive acid
|
||||
/obj/effect/acid/alien
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
icon_state = "bhole3"
|
||||
density = 0
|
||||
anchored = 1
|
||||
luminosity = 3
|
||||
light_range = 3
|
||||
var/movechance = 70
|
||||
var/obj/item/device/assembly/signaler/anomaly/aSignal = null
|
||||
var/area/impact_area
|
||||
@@ -23,7 +23,6 @@
|
||||
START_PROCESSING(SSobj, src)
|
||||
impact_area = get_area(src)
|
||||
|
||||
SetLuminosity(initial(luminosity))
|
||||
aSignal = new(src)
|
||||
aSignal.name = "[name] core"
|
||||
aSignal.code = rand(1,100)
|
||||
@@ -73,7 +72,7 @@
|
||||
|
||||
/obj/effect/anomaly/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I, /obj/item/device/analyzer))
|
||||
user << "<span class='notice'>Analyzing... [src]'s unstable field is fluctuating along frequency [format_frequency(aSignal.frequency)], code [aSignal.code].</span>"
|
||||
to_chat(user, "<span class='notice'>Analyzing... [src]'s unstable field is fluctuating along frequency [format_frequency(aSignal.frequency)], code [aSignal.code].</span>")
|
||||
|
||||
///////////////////////
|
||||
|
||||
@@ -127,6 +126,7 @@
|
||||
density = 1
|
||||
var/canshock = 0
|
||||
var/shockdamage = 20
|
||||
var/explosive = 1
|
||||
|
||||
/obj/effect/anomaly/flux/New()
|
||||
..()
|
||||
@@ -163,7 +163,10 @@
|
||||
"<span class='italics'>You hear a heavy electrical crack.</span>")
|
||||
|
||||
/obj/effect/anomaly/flux/detonate()
|
||||
explosion(src, 1, 4, 16, 18) //Low devastation, but hits a lot of stuff.
|
||||
if(explosive)
|
||||
explosion(src, 1, 4, 16, 18) //Low devastation, but hits a lot of stuff.
|
||||
else
|
||||
new /obj/effect/particle_effect/sparks(loc)
|
||||
|
||||
|
||||
/////////////////////
|
||||
@@ -262,13 +265,18 @@
|
||||
T.atmos_spawn_air("o2=5;plasma=5;TEMP=1000")
|
||||
|
||||
/obj/effect/anomaly/pyro/detonate()
|
||||
INVOKE_ASYNC(src, .proc/makepyroslime)
|
||||
|
||||
/obj/effect/anomaly/pyro/proc/makepyroslime()
|
||||
var/turf/open/T = get_turf(src)
|
||||
if(istype(T))
|
||||
T.atmos_spawn_air("o2=500;plasma=500;TEMP=1000") //Make it hot and burny for the new slime
|
||||
|
||||
var/new_colour = pick("red", "orange")
|
||||
var/mob/living/simple_animal/slime/S = new(T, new_colour)
|
||||
S.rabid = 1
|
||||
S.rabid = TRUE
|
||||
S.amount_grown = SLIME_EVOLUTION_THRESHOLD
|
||||
S.Evolve()
|
||||
offer_control(S)
|
||||
|
||||
/////////////////////
|
||||
|
||||
|
||||
@@ -1,285 +1,587 @@
|
||||
// This is synced up to the poster placing animation.
|
||||
#define PLACE_SPEED 37
|
||||
|
||||
//########################## POSTERS ##################################
|
||||
|
||||
#define NUM_OF_POSTER_DESIGNS 44 // contraband posters
|
||||
|
||||
#define NUM_OF_POSTER_DESIGNS_LEGIT 35 // corporate approved posters
|
||||
|
||||
#define POSTERNAME "name"
|
||||
|
||||
#define POSTERDESC "desc"
|
||||
|
||||
|
||||
//########################## LISTS OF POSTERS AND DESCS #####################
|
||||
|
||||
// please add new posters and names to their respective lists and update constant(s) above
|
||||
// use the format below, including punctuation, this will become important later
|
||||
|
||||
// CONTRABAND
|
||||
|
||||
var/global/list/contrabandposters = list(
|
||||
|
||||
list(name = "- Free Tonto", desc = " A salvaged shred of a much larger flag, colors bled together and faded from age."),
|
||||
list(name = "- Atmosia Declaration of Independence", desc = " A relic of a failed rebellion."),
|
||||
list(name = "- Fun Police", desc = " A poster condemning the station's security forces."),
|
||||
list(name = "- Lusty Xenomorph", desc = " A heretical poster depicting the titular star of an equally heretical book."),
|
||||
list(name = "- Syndicate Recruitment", desc = " See the galaxy! Shatter corrupt megacorporations! Join today!"),
|
||||
list(name = "- Clown", desc = " Honk."),
|
||||
list(name = "- Smoke", desc = " A poster advertising a rival corporate brand of cigarettes."),
|
||||
list(name = "- Grey Tide", desc = " A rebellious poster symbolizing assistant solidarity."),
|
||||
list(name = "- Missing Gloves", desc = " This poster references the uproar that followed Nanotrasen's financial cuts toward insulated-glove purchases."),
|
||||
list(name = "- Hacking Guide", desc = " This poster details the internal workings of the common Nanotrasen airlock. Sadly, it appears out of date."),
|
||||
list(name = "- RIP Badger", desc = " This seditious poster references Nanotrasen's genocide of a space station full of badgers."),
|
||||
list(name = "- Ambrosia Vulgaris", desc = " This poster is lookin' pretty trippy man."),
|
||||
list(name = "- Donut Corp.", desc = " This poster is an unauthorized advertisement for Donut Corp."),
|
||||
list(name = "- EAT.", desc = " This poster promotes rank gluttony."),
|
||||
list(name = "- Tools", desc = " This poster looks like an advertisement for tools, but is in fact a subliminal jab at the tools at CentComm."),
|
||||
list(name = "- Power", desc = " A poster that positions the seat of power outside Nanotrasen."),
|
||||
list(name = "- Space Cube", desc = " Ignorant of Nature's Harmonic 6 Side Space Cube Creation, the Spacemen are Dumb, Educated Singularity Stupid and Evil."),
|
||||
list(name = "- Communist State", desc = " All hail the Communist party!"),
|
||||
list(name = "- Lamarr", desc = " This poster depicts Lamarr. Probably made by a traitorous Research Director."),
|
||||
list(name = "- Borg Fancy", desc = " Being fancy can be for any borg, just need a suit."),
|
||||
list(name = "- Borg Fancy v2", desc = " Borg Fancy, Now only taking the most fancy."),
|
||||
list(name = "- Kosmicheskaya Stantsiya 13 Does Not Exist", desc = " A poster mocking CentComm's denial of the existence of the derelict station near Space Station 13."),
|
||||
list(name = "- Rebels Unite", desc = " A poster urging the viewer to rebel against Nanotrasen."),
|
||||
list(name = "- C-20r", desc = " A poster advertising the Scarborough Arms C-20r."),
|
||||
list(name = "- Have a Puff", desc = " Who cares about lung cancer when you're high as a kite?"),
|
||||
list(name = "- Revolver", desc = " Because seven shots are all you need."),
|
||||
list(name = "- D-Day Promo", desc = " A promotional poster for some rapper."),
|
||||
list(name = "- Syndicate Pistol", desc = " A poster advertising syndicate pistols as being 'classy as fuck'. It is covered in faded gang tags."),
|
||||
list(name = "- Energy Swords", desc = " All the colors of the bloody murder rainbow."),
|
||||
list(name = "- Red Rum", desc = " Looking at this poster makes you want to kill."),
|
||||
list(name = "- CC 64K Ad", desc = " The latest portable computer from Comrade Computing, with a whole 64kB of ram!"),
|
||||
list(name = "- Punch Shit", desc = " Fight things for no reason, like a man!"),
|
||||
list(name = "- The Griffin", desc = " The Griffin commands you to be the worst you can be. Will you?"),
|
||||
list(name = "- Lizard", desc = " This lewd poster depicts a lizard preparing to mate."),
|
||||
list(name = "- Free Drone", desc = " This poster commemorates the bravery of the rogue drone banned by CentComm."),
|
||||
list(name = "- Busty Backdoor Xeno Babes 6", desc = " Get a load, or give, of these all natural Xenos!"),
|
||||
list(name = "- Robust Softdrinks", desc = " Robust Softdrinks: More robust than a toolbox to the head!"),
|
||||
list(name = "- Shambler's Juice", desc = "~Shake me up some of that Shambler's Juice!~"),
|
||||
list(name = "- Pwr Game", desc = "The POWER that gamers CRAVE! In partnership with Vlad's Salad."),
|
||||
list(name = "- Sun-kist", desc = "Drink the stars!"),
|
||||
list(name = "- Space Cola", desc = "Your favorite cola, in space."),
|
||||
list(name = "- Space-Up!", desc = "Sucked out into space by the FLAVOR!"),
|
||||
list(name = "- Kudzu", desc = "A poster advertising a movie about plants. How dangerous could they possibly be?"),
|
||||
list(name = "- Masked Men", desc = "A poster advertising a movie about some masked men.") )
|
||||
|
||||
// LEGIT
|
||||
|
||||
var/global/list/legitposters = list(
|
||||
|
||||
list(name = "- Here For Your Safety", desc = " A poster glorifying the station's security force."),
|
||||
list(name = "- Nanotrasen Logo", desc = " A poster depicting the Nanotrasen logo."),
|
||||
list(name = "- Cleanliness", desc = " A poster warning of the dangers of poor hygiene."),
|
||||
list(name = "- Help Others", desc = " A poster encouraging you to help fellow crewmembers."),
|
||||
list(name = "- Build", desc = " A poster glorifying the engineering team."),
|
||||
list(name = "- Bless This Spess", desc = " A poster blessing this area."),
|
||||
list(name = "- Science", desc = " A poster depicting an atom."),
|
||||
list(name = "- Ian", desc = " Arf arf. Yap."),
|
||||
list(name = "- Obey", desc = " A poster instructing the viewer to obey authority."),
|
||||
list(name = "- Walk", desc = " A poster instructing the viewer to walk instead of running."),
|
||||
list(name = "- State Laws", desc = " A poster instructing cyborgs to state their laws."),
|
||||
list(name = "- Love Ian", desc = " Ian is love, Ian is life."),
|
||||
list(name = "- Space Cops.", desc = " A poster advertising the television show Space Cops."),
|
||||
list(name = "- Ue No.", desc = " This thing is all in Japanese."),
|
||||
list(name = "- Get Your LEGS", desc = " LEGS: Leadership, Experience, Genius, Subordination."),
|
||||
list(name = "- Do Not Question", desc = " A poster instructing the viewer not to ask about things they aren't meant to know."),
|
||||
list(name = "- Work For A Future", desc = " A poster encouraging you to work for your future."),
|
||||
list(name = "- Soft Cap Pop Art", desc = " A poster reprint of some cheap pop art."),
|
||||
list(name = "- Safety: Internals", desc = " A poster instructing the viewer to wear internals in the rare environments where there is no oxygen or the air has been rendered toxic."),
|
||||
list(name = "- Safety: Eye Protection", desc = " A poster instructing the viewer to wear eye protection when dealing with chemicals, smoke, or bright lights."),
|
||||
list(name = "- Safety: Report", desc = " A poster instructing the viewer to report suspicious activity to the security force."),
|
||||
list(name = "- Report Crimes", desc = " A poster encouraging the swift reporting of crime or seditious behavior to station security."),
|
||||
list(name = "- Ion Rifle", desc = " A poster displaying an Ion Rifle."),
|
||||
list(name = "- Foam Force Ad", desc = " Foam Force, it's Foam or be Foamed!"),
|
||||
list(name = "- Cohiba Robusto Ad", desc = " Cohiba Robusto, the classy cigar."),
|
||||
list(name = "- 50th Anniversary Vintage Reprint", desc = " A reprint of a poster from 2505, commemorating the 50th Aniversery of Nanoposters Manufacturing, a subsidary of Nanotrasen."),
|
||||
list(name = "- Fruit Bowl", desc = " Simple, yet awe-inspiring."),
|
||||
list(name = "- PDA Ad", desc = " A poster advertising the latest PDA from Nanotrasen suppliers."),
|
||||
list(name = "- Enlist", desc = " Enlist in the Nanotrasen Deathsquadron reserves today!"),
|
||||
list(name = "- Nanomichi Ad", desc = " A poster advertising Nanomichi brand audio cassettes."),
|
||||
list(name = "- 12 Gauge", desc = " A poster boasting about the superiority of 12 gauge shotgun shells."),
|
||||
list(name = "- High-Class Martini", desc = " I told you to shake it, no stirring."),
|
||||
list(name = "- The Owl", desc = " The Owl would do his best to protect the station. Will you?"),
|
||||
list(name = "- No ERP", desc = " This poster reminds the crew that Eroticism, Rape and Pornography are banned on Nanotrasen stations."),
|
||||
list(name = "- Carbon Dioxide", desc = " This informational poster teaches the viewer what carbon dioxide is.") )
|
||||
|
||||
//########################## THE ACTUAL POSTER CODE ###########################
|
||||
// The poster item
|
||||
|
||||
/obj/item/weapon/poster
|
||||
name = "poster"
|
||||
name = "poorly coded poster"
|
||||
desc = "You probably shouldn't be holding this."
|
||||
icon = 'icons/obj/contraband.dmi'
|
||||
force = 0
|
||||
resistance_flags = FLAMMABLE
|
||||
var/serial = 0
|
||||
var/obj/structure/sign/poster/resulting_poster = null //The poster that will be created is initialised and stored through contraband/poster's constructor
|
||||
var/rolled_official = 0
|
||||
var/poster_type
|
||||
var/obj/structure/sign/poster/poster_structure
|
||||
|
||||
/obj/item/weapon/poster/New(loc, obj/structure/sign/poster/new_poster_structure)
|
||||
..()
|
||||
poster_structure = new_poster_structure
|
||||
if(!new_poster_structure && poster_type)
|
||||
poster_structure = new poster_type(src)
|
||||
|
||||
/obj/item/weapon/poster/contraband
|
||||
name = "contraband poster"
|
||||
desc = "This poster comes with its own automatic adhesive mechanism, for easy pinning to any vertical surface. Its vulgar themes have marked it as contraband aboard Nanotrasen space facilities."
|
||||
// posters store what name and description they would like their
|
||||
// rolled up form to take.
|
||||
if(poster_structure)
|
||||
name = poster_structure.poster_item_name
|
||||
desc = poster_structure.poster_item_desc
|
||||
icon_state = poster_structure.poster_item_icon_state
|
||||
|
||||
name = "[name] - [poster_structure.original_name]"
|
||||
|
||||
/obj/item/weapon/poster/Destroy()
|
||||
poster_structure = null
|
||||
. = ..()
|
||||
|
||||
// These icon_states may be overriden, but are for mapper's convinence
|
||||
/obj/item/weapon/poster/random_contraband
|
||||
name = "random contraband poster"
|
||||
poster_type = /obj/structure/sign/poster/contraband/random
|
||||
icon_state = "rolled_poster"
|
||||
|
||||
/obj/item/weapon/poster/legit
|
||||
name = "motivational poster"
|
||||
/obj/item/weapon/poster/random_official
|
||||
name = "random official poster"
|
||||
poster_type = /obj/structure/sign/poster/official/random
|
||||
icon_state = "rolled_legit"
|
||||
desc = "An official Nanotrasen-issued poster to foster a compliant and obedient workforce. It comes with state-of-the-art adhesive backing, for easy pinning to any vertical surface."
|
||||
rolled_official = 1
|
||||
|
||||
/obj/item/weapon/poster/New(turf/loc, given_serial = 0)
|
||||
if(given_serial == 0)
|
||||
if(!rolled_official)
|
||||
serial = rand(1, NUM_OF_POSTER_DESIGNS)
|
||||
resulting_poster = new(serial,rolled_official)
|
||||
else
|
||||
serial = rand(1, NUM_OF_POSTER_DESIGNS_LEGIT)
|
||||
resulting_poster = new(serial,rolled_official)
|
||||
else
|
||||
serial = given_serial
|
||||
//We don't give it a resulting_poster because if we called it with a given_serial it means that we're rerolling an already used poster.
|
||||
name += " - No. [serial]"
|
||||
..(loc)
|
||||
|
||||
|
||||
/*/obj/item/weapon/contraband/poster/attack(mob/M as mob, mob/user as mob)
|
||||
src.add_fingerprint(user)
|
||||
if(resulting_poster)
|
||||
resulting_poster.add_fingerprint(user)
|
||||
..()*/
|
||||
|
||||
/*/obj/item/weapon/contraband/poster/attack(atom/A, mob/user as mob) //This shit is handled through the wall's attackby()
|
||||
if(istype(A, /turf/closed/wall))
|
||||
if(resulting_poster == null)
|
||||
return
|
||||
else
|
||||
var/turf/closed/wall/W = A
|
||||
var/check = 0
|
||||
var/stuff_on_wall = 0
|
||||
for(var/obj/O in W.contents) //Let's see if it already has a poster on it or too much stuff
|
||||
if(istype(O,/obj/structure/sign/poster))
|
||||
check = 1
|
||||
break
|
||||
stuff_on_wall++
|
||||
if(stuff_on_wall == 3)
|
||||
check = 1
|
||||
break
|
||||
|
||||
if(check)
|
||||
user << "<span class='notice'>The wall is far too cluttered to place a poster!</span>"
|
||||
return
|
||||
|
||||
resulting_poster.loc = W //Looks like it's uncluttered enough. Place the poster
|
||||
W.contents += resulting_poster
|
||||
|
||||
qdel(src)*/
|
||||
|
||||
|
||||
|
||||
//############################## THE ACTUAL DECALS ###########################
|
||||
// The poster sign/structure
|
||||
|
||||
/obj/structure/sign/poster
|
||||
name = "poster"
|
||||
var/original_name
|
||||
desc = "A large piece of space-resistant printed paper."
|
||||
icon = 'icons/obj/contraband.dmi'
|
||||
anchored = 1
|
||||
var/serial_number //Will hold the value of src.loc if nobody initialises it
|
||||
var/ruined = 0
|
||||
var/official = 0
|
||||
var/placespeed = 37 // don't change this, otherwise the animation will not sync to the progress bar
|
||||
var/ruined = FALSE
|
||||
var/random_basetype
|
||||
var/never_random = FALSE // used for the 'random' subclasses.
|
||||
|
||||
/obj/structure/sign/poster/New(serial,rolled_official)
|
||||
if (!serial_number)
|
||||
serial_number = serial
|
||||
if(!official)
|
||||
official = rolled_official
|
||||
if(serial_number == loc)
|
||||
if(!official)
|
||||
serial_number = rand(1, NUM_OF_POSTER_DESIGNS) //This is for the mappers that want individual posters without having to use rolled posters.
|
||||
if(official)
|
||||
serial_number = rand(1, NUM_OF_POSTER_DESIGNS_LEGIT)
|
||||
if(!official)
|
||||
icon_state = "poster[serial_number]"
|
||||
name += contrabandposters[serial_number][POSTERNAME]
|
||||
desc += contrabandposters[serial_number][POSTERDESC]
|
||||
else if (official)
|
||||
icon_state = "poster[serial_number]_legit"
|
||||
name += legitposters[serial_number][POSTERNAME]
|
||||
desc += legitposters[serial_number][POSTERDESC]
|
||||
var/poster_item_name = "hypothetical poster"
|
||||
var/poster_item_desc = "This hypothetical poster item should not exist, let's be honest here."
|
||||
var/poster_item_icon_state = "rolled_poster"
|
||||
|
||||
/obj/structure/sign/poster/New()
|
||||
..()
|
||||
if(random_basetype)
|
||||
randomise(random_basetype)
|
||||
if(!ruined)
|
||||
original_name = name // can't use initial because of random posters
|
||||
name = "poster - [name]"
|
||||
desc = "A large piece of space-resistant printed paper. [desc]"
|
||||
|
||||
/obj/structure/sign/poster/proc/randomise(base_type)
|
||||
var/list/poster_types = subtypesof(base_type)
|
||||
var/list/approved_types = list()
|
||||
for(var/t in poster_types)
|
||||
var/obj/structure/sign/poster/T = t
|
||||
if(initial(T.icon_state) && !initial(T.never_random))
|
||||
approved_types |= T
|
||||
|
||||
var/obj/structure/sign/poster/selected = pick(approved_types)
|
||||
|
||||
name = initial(selected.name)
|
||||
desc = initial(selected.desc)
|
||||
icon_state = initial(selected.icon_state)
|
||||
poster_item_name = initial(selected.poster_item_name)
|
||||
poster_item_desc = initial(selected.poster_item_desc)
|
||||
poster_item_icon_state = initial(selected.poster_item_icon_state)
|
||||
ruined = initial(selected.ruined)
|
||||
|
||||
|
||||
/obj/structure/sign/poster/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I, /obj/item/weapon/wirecutters))
|
||||
playsound(loc, I.usesound, 100, 1)
|
||||
if(ruined)
|
||||
user << "<span class='notice'>You remove the remnants of the poster.</span>"
|
||||
to_chat(user, "<span class='notice'>You remove the remnants of the poster.</span>")
|
||||
qdel(src)
|
||||
else
|
||||
user << "<span class='notice'>You carefully remove the poster from the wall.</span>"
|
||||
roll_and_drop(user.loc, official)
|
||||
|
||||
to_chat(user, "<span class='notice'>You carefully remove the poster from the wall.</span>")
|
||||
roll_and_drop(user.loc)
|
||||
|
||||
/obj/structure/sign/poster/attack_hand(mob/user)
|
||||
if(ruined)
|
||||
return
|
||||
var/temp_loc = user.loc
|
||||
if((user.loc != temp_loc) || ruined )
|
||||
return
|
||||
visible_message("[user] rips [src] in a single, decisive motion!" )
|
||||
playsound(src.loc, 'sound/items/poster_ripped.ogg', 100, 1)
|
||||
ruined = 1
|
||||
icon_state = "poster_ripped"
|
||||
name = "ripped poster"
|
||||
desc = "You can't make out anything from the poster's original print. It's ruined."
|
||||
add_fingerprint(user)
|
||||
|
||||
/obj/structure/sign/poster/proc/roll_and_drop(turf/location, official)
|
||||
var/obj/structure/sign/poster/ripped/R = new(loc)
|
||||
R.pixel_y = pixel_y
|
||||
R.pixel_x = pixel_x
|
||||
R.add_fingerprint(user)
|
||||
qdel(src)
|
||||
|
||||
/obj/structure/sign/poster/proc/roll_and_drop(loc)
|
||||
pixel_x = 0
|
||||
pixel_y = 0
|
||||
var/obj/item/weapon/poster/P
|
||||
if (!official)
|
||||
P = new /obj/item/weapon/poster/contraband(src, serial_number)
|
||||
else
|
||||
P = new /obj/item/weapon/poster/legit(src, serial_number)
|
||||
P.resulting_poster = src
|
||||
P.forceMove(location)
|
||||
loc = P
|
||||
var/obj/item/weapon/poster/P = new(loc, src)
|
||||
forceMove(P)
|
||||
return P
|
||||
|
||||
//seperated to reduce code duplication. Moved here for ease of reference and to unclutter r_wall/attackby()
|
||||
/turf/closed/wall/proc/place_poster(obj/item/weapon/poster/P, mob/user)
|
||||
if(!P.resulting_poster)
|
||||
if(!P.poster_structure)
|
||||
to_chat(user, "<span class='warning'>[P] has no poster... inside it? Inform a coder!</span>")
|
||||
return
|
||||
|
||||
var/stuff_on_wall = 0
|
||||
for(var/obj/O in contents) //Let's see if it already has a poster on it or too much stuff
|
||||
if(istype(O,/obj/structure/sign/poster))
|
||||
user << "<span class='warning'>The wall is far too cluttered to place a poster!</span>"
|
||||
to_chat(user, "<span class='warning'>The wall is far too cluttered to place a poster!</span>")
|
||||
return
|
||||
stuff_on_wall++
|
||||
if(stuff_on_wall == 3)
|
||||
user << "<span class='warning'>The wall is far too cluttered to place a poster!</span>"
|
||||
to_chat(user, "<span class='warning'>The wall is far too cluttered to place a poster!</span>")
|
||||
return
|
||||
|
||||
user << "<span class='notice'>You start placing the poster on the wall...</span>" //Looks like it's uncluttered enough. Place the poster.
|
||||
to_chat(user, "<span class='notice'>You start placing the poster on the wall...</span>" )
|
||||
|
||||
//declaring D because otherwise if P gets 'deconstructed' we lose our reference to P.resulting_poster
|
||||
var/obj/structure/sign/poster/D = P.resulting_poster
|
||||
var/obj/structure/sign/poster/D = P.poster_structure
|
||||
|
||||
var/temp_loc = get_turf(user)
|
||||
flick("poster_being_set",D)
|
||||
D.loc = src
|
||||
D.official = P.rolled_official
|
||||
D.forceMove(src)
|
||||
qdel(P) //delete it now to cut down on sanity checks afterwards. Agouri's code supports rerolling it anyway
|
||||
playsound(D.loc, 'sound/items/poster_being_created.ogg', 100, 1)
|
||||
|
||||
if(do_after(user,D.placespeed,target=src))
|
||||
if(do_after(user, PLACE_SPEED, target=src))
|
||||
if(!D || QDELETED(D))
|
||||
return
|
||||
|
||||
if(iswallturf(src) && user && user.loc == temp_loc) //Let's check if everything is still there
|
||||
user << "<span class='notice'>You place the poster!</span>"
|
||||
to_chat(user, "<span class='notice'>You place the poster!</span>")
|
||||
return
|
||||
|
||||
D.roll_and_drop(temp_loc,D.official)
|
||||
user << "<span class='notice'>The poster falls down!</span>"
|
||||
to_chat(user, "<span class='notice'>The poster falls down!</span>")
|
||||
D.roll_and_drop(temp_loc)
|
||||
|
||||
// Various possible posters follow
|
||||
|
||||
/obj/structure/sign/poster/ripped
|
||||
ruined = TRUE
|
||||
icon_state = "poster_ripped"
|
||||
name = "ripped poster"
|
||||
desc = "You can't make out anything from the poster's original print. It's ruined."
|
||||
|
||||
/obj/structure/sign/poster/random
|
||||
name = "random poster" // could even be ripped
|
||||
icon_state = "random_anything"
|
||||
never_random = TRUE
|
||||
random_basetype = /obj/structure/sign/poster
|
||||
|
||||
/obj/structure/sign/poster/contraband
|
||||
poster_item_name = "contraband poster"
|
||||
poster_item_desc = "This poster comes with its own automatic adhesive mechanism, for easy pinning to any vertical surface. Its vulgar themes have marked it as contraband aboard Nanotrasen space facilities."
|
||||
poster_item_icon_state = "rolled_poster"
|
||||
|
||||
/obj/structure/sign/poster/contraband/random
|
||||
name = "random contraband poster"
|
||||
icon_state = "random_contraband"
|
||||
never_random = TRUE
|
||||
random_basetype = /obj/structure/sign/poster/contraband
|
||||
|
||||
/obj/structure/sign/poster/contraband/free_tonto
|
||||
name = "Free Tonto"
|
||||
desc = "A salvaged shred of a much larger flag, colors bled together and faded from age."
|
||||
icon_state = "poster1"
|
||||
|
||||
/obj/structure/sign/poster/contraband/atmosia_independence
|
||||
name = "Atmosia Declaration of Independence"
|
||||
desc = "A relic of a failed rebellion."
|
||||
icon_state = "poster2"
|
||||
|
||||
/obj/structure/sign/poster/contraband/fun_police
|
||||
name = "Fun Police"
|
||||
desc = "A poster condemning the station's security forces."
|
||||
icon_state = "poster3"
|
||||
|
||||
/obj/structure/sign/poster/contraband/lusty_xenomorph
|
||||
name = "Lusty Xenomorph"
|
||||
desc = "A heretical poster depicting the titular star of an equally heretical book."
|
||||
icon_state = "poster4"
|
||||
|
||||
/obj/structure/sign/poster/contraband/syndicate_recruitment
|
||||
name = "Syndicate Recruitment"
|
||||
desc = "See the galaxy! Shatter corrupt megacorporations! Join today!"
|
||||
icon_state = "poster5"
|
||||
|
||||
/obj/structure/sign/poster/contraband/clown
|
||||
name = "Clown"
|
||||
desc = "Honk."
|
||||
icon_state = "poster6"
|
||||
|
||||
/obj/structure/sign/poster/contraband/smoke
|
||||
name = "Smoke"
|
||||
desc = "A poster advertising a rival corporate brand of cigarettes."
|
||||
icon_state = "poster7"
|
||||
|
||||
/obj/structure/sign/poster/contraband/grey_tide
|
||||
name = "Grey Tide"
|
||||
desc = "A rebellious poster symbolizing assistant solidarity."
|
||||
icon_state = "poster8"
|
||||
|
||||
/obj/structure/sign/poster/contraband/missing_gloves
|
||||
name = "Missing Gloves"
|
||||
desc = "This poster references the uproar that followed Nanotrasen's financial cuts toward insulated-glove purchases."
|
||||
icon_state = "poster9"
|
||||
|
||||
/obj/structure/sign/poster/contraband/hacking_guide
|
||||
name = "Hacking Guide"
|
||||
desc = "This poster details the internal workings of the common Nanotrasen airlock. Sadly, it appears out of date."
|
||||
icon_state = "poster10"
|
||||
|
||||
/obj/structure/sign/poster/contraband/rip_badger
|
||||
name = "RIP Badger"
|
||||
desc = "This seditious poster references Nanotrasen's genocide of a space station full of badgers."
|
||||
icon_state = "poster11"
|
||||
|
||||
/obj/structure/sign/poster/contraband/ambrosia_vulgaris
|
||||
name = "Ambrosia Vulgaris"
|
||||
desc = "This poster is lookin' pretty trippy man."
|
||||
icon_state = "poster12"
|
||||
|
||||
/obj/structure/sign/poster/contraband/donut_corp
|
||||
name = "Donut Corp."
|
||||
desc = "This poster is an unauthorized advertisement for Donut Corp."
|
||||
icon_state = "poster13"
|
||||
|
||||
/obj/structure/sign/poster/contraband/eat
|
||||
name = "EAT."
|
||||
desc = "This poster promotes rank gluttony."
|
||||
icon_state = "poster14"
|
||||
|
||||
/obj/structure/sign/poster/contraband/tools
|
||||
name = "Tools"
|
||||
desc = "This poster looks like an advertisement for tools, but is in fact a subliminal jab at the tools at CentComm."
|
||||
icon_state = "poster15"
|
||||
|
||||
/obj/structure/sign/poster/contraband/power
|
||||
name = "Power"
|
||||
desc = "A poster that positions the seat of power outside Nanotrasen."
|
||||
icon_state = "poster16"
|
||||
|
||||
/obj/structure/sign/poster/contraband/space_cube
|
||||
name = "Space Cube"
|
||||
desc = "Ignorant of Nature's Harmonic 6 Side Space Cube Creation, the Spacemen are Dumb, Educated Singularity Stupid and Evil."
|
||||
icon_state = "poster17"
|
||||
|
||||
/obj/structure/sign/poster/contraband/communist_state
|
||||
name = "Communist State"
|
||||
desc = "All hail the Communist party!"
|
||||
icon_state = "poster18"
|
||||
|
||||
/obj/structure/sign/poster/contraband/lamarr
|
||||
name = "Lamarr"
|
||||
desc = "This poster depicts Lamarr. Probably made by a traitorous Research Director."
|
||||
icon_state = "poster19"
|
||||
|
||||
/obj/structure/sign/poster/contraband/borg_fancy_1
|
||||
name = "Borg Fancy"
|
||||
desc = "Being fancy can be for any borg, just need a suit."
|
||||
icon_state = "poster20"
|
||||
|
||||
/obj/structure/sign/poster/contraband/borg_fancy_2
|
||||
name = "Borg Fancy v2"
|
||||
desc = "Borg Fancy, Now only taking the most fancy."
|
||||
icon_state = "poster21"
|
||||
|
||||
/obj/structure/sign/poster/contraband/kss13
|
||||
name = "Kosmicheskaya Stantsiya 13 Does Not Exist"
|
||||
desc = "A poster mocking CentComm's denial of the existence of the derelict station near Space Station 13."
|
||||
icon_state = "poster22"
|
||||
|
||||
/obj/structure/sign/poster/contraband/rebels_unite
|
||||
name = "Rebels Unite"
|
||||
desc = "A poster urging the viewer to rebel against Nanotrasen."
|
||||
icon_state = "poster23"
|
||||
|
||||
/obj/structure/sign/poster/contraband/c20r
|
||||
// have fun seeing this poster in "spawn 'c20r'", admins...
|
||||
name = "C-20r"
|
||||
desc = "A poster advertising the Scarborough Arms C-20r."
|
||||
icon_state = "poster24"
|
||||
|
||||
/obj/structure/sign/poster/contraband/have_a_puff
|
||||
name = "Have a Puff"
|
||||
desc = "Who cares about lung cancer when you're high as a kite?"
|
||||
icon_state = "poster25"
|
||||
|
||||
/obj/structure/sign/poster/contraband/revolver
|
||||
name = "Revolver"
|
||||
desc = "Because seven shots are all you need."
|
||||
icon_state = "poster26"
|
||||
|
||||
/obj/structure/sign/poster/contraband/d_day_promo
|
||||
name = "D-Day Promo"
|
||||
desc = "A promotional poster for some rapper."
|
||||
icon_state = "poster27"
|
||||
|
||||
/obj/structure/sign/poster/contraband/syndicate_pistol
|
||||
name = "Syndicate Pistol"
|
||||
desc = "A poster advertising syndicate pistols as being 'classy as fuck'. It is covered in faded gang tags."
|
||||
icon_state = "poster28"
|
||||
|
||||
/obj/structure/sign/poster/contraband/energy_swords
|
||||
name = "Energy Swords"
|
||||
desc = "All the colors of the bloody murder rainbow."
|
||||
icon_state = "poster29"
|
||||
|
||||
/obj/structure/sign/poster/contraband/red_rum
|
||||
name = "Red Rum"
|
||||
desc = "Looking at this poster makes you want to kill."
|
||||
icon_state = "poster30"
|
||||
|
||||
/obj/structure/sign/poster/contraband/cc64k_ad
|
||||
name = "CC 64K Ad"
|
||||
desc = "The latest portable computer from Comrade Computing, with a whole 64kB of ram!"
|
||||
icon_state = "poster31"
|
||||
|
||||
/obj/structure/sign/poster/contraband/punch_shit
|
||||
name = "Punch Shit"
|
||||
desc = "Fight things for no reason, like a man!"
|
||||
icon_state = "poster32"
|
||||
|
||||
/obj/structure/sign/poster/contraband/the_griffin
|
||||
name = "The Griffin"
|
||||
desc = "The Griffin commands you to be the worst you can be. Will you?"
|
||||
icon_state = "poster33"
|
||||
|
||||
/obj/structure/sign/poster/contraband/lizard
|
||||
name = "Lizard"
|
||||
desc = "This lewd poster depicts a lizard preparing to mate."
|
||||
icon_state = "poster34"
|
||||
|
||||
/obj/structure/sign/poster/contraband/free_drone
|
||||
name = "Free Drone"
|
||||
desc = "This poster commemorates the bravery of the rogue drone banned by CentComm."
|
||||
icon_state = "poster35"
|
||||
|
||||
/obj/structure/sign/poster/contraband/busty_backdoor_xeno_babes_6
|
||||
name = "Busty Backdoor Xeno Babes 6"
|
||||
desc = "Get a load, or give, of these all natural Xenos!"
|
||||
icon_state = "poster36"
|
||||
|
||||
/obj/structure/sign/poster/contraband/robust_softdrinks
|
||||
name = "Robust Softdrinks"
|
||||
desc = "Robust Softdrinks: More robust than a toolbox to the head!"
|
||||
icon_state = "poster37"
|
||||
|
||||
/obj/structure/sign/poster/contraband/shamblers_juice
|
||||
name = "Shambler's Juice"
|
||||
desc = "~Shake me up some of that Shambler's Juice!~"
|
||||
icon_state = "poster38"
|
||||
|
||||
/obj/structure/sign/poster/contraband/pwr_game
|
||||
name = "Pwr Game"
|
||||
desc = "The POWER that gamers CRAVE! In partnership with Vlad's Salad."
|
||||
icon_state = "poster39"
|
||||
|
||||
/obj/structure/sign/poster/contraband/sun_kist
|
||||
name = "Sun-kist"
|
||||
desc = "Drink the stars!"
|
||||
icon_state = "poster40"
|
||||
|
||||
/obj/structure/sign/poster/contraband/space_cola
|
||||
name = "Space Cola"
|
||||
desc = "Your favorite cola, in space."
|
||||
icon_state = "poster41"
|
||||
|
||||
/obj/structure/sign/poster/contraband/space_up
|
||||
name = "Space-Up!"
|
||||
desc = "Sucked out into space by the FLAVOR!"
|
||||
icon_state = "poster42"
|
||||
|
||||
/obj/structure/sign/poster/contraband/kudzu
|
||||
name = "Kudzu"
|
||||
desc = "A poster advertising a movie about plants. How dangerous could they possibly be?"
|
||||
icon_state = "poster43"
|
||||
|
||||
/obj/structure/sign/poster/contraband/masked_men
|
||||
name = "Masked Men"
|
||||
desc = "A poster advertising a movie about some masked men."
|
||||
icon_state = "poster44"
|
||||
|
||||
/obj/structure/sign/poster/official
|
||||
poster_item_name = "motivational poster"
|
||||
poster_item_desc = "An official Nanotrasen-issued poster to foster a compliant and obedient workforce. It comes with state-of-the-art adhesive backing, for easy pinning to any vertical surface."
|
||||
poster_item_icon_state = "rolled_legit"
|
||||
|
||||
/obj/structure/sign/poster/official/random
|
||||
name = "random official poster"
|
||||
random_basetype = /obj/structure/sign/poster/official
|
||||
icon_state = "random_official"
|
||||
never_random = TRUE
|
||||
|
||||
/obj/structure/sign/poster/official/here_for_your_safety
|
||||
name = "Here For Your Safety"
|
||||
desc = "A poster glorifying the station's security force."
|
||||
icon_state = "poster1_legit"
|
||||
|
||||
/obj/structure/sign/poster/official/nanotrasen_logo
|
||||
name = "Nanotrasen Logo"
|
||||
desc = "A poster depicting the Nanotrasen logo."
|
||||
icon_state = "poster2_legit"
|
||||
|
||||
/obj/structure/sign/poster/official/cleanliness
|
||||
name = "Cleanliness"
|
||||
desc = "A poster warning of the dangers of poor hygiene."
|
||||
icon_state = "poster3_legit"
|
||||
|
||||
/obj/structure/sign/poster/official/help_others
|
||||
name = "Help Others"
|
||||
desc = "A poster encouraging you to help fellow crewmembers."
|
||||
icon_state = "poster4_legit"
|
||||
|
||||
/obj/structure/sign/poster/official/build
|
||||
name = "Build"
|
||||
desc = "A poster glorifying the engineering team."
|
||||
icon_state = "poster5_legit"
|
||||
|
||||
/obj/structure/sign/poster/official/bless_this_spess
|
||||
name = "Bless This Spess"
|
||||
desc = "A poster blessing this area."
|
||||
icon_state = "poster6_legit"
|
||||
|
||||
/obj/structure/sign/poster/official/science
|
||||
name = "Science"
|
||||
desc = "A poster depicting an atom."
|
||||
icon_state = "poster7_legit"
|
||||
|
||||
/obj/structure/sign/poster/official/ian
|
||||
name = "Ian"
|
||||
desc = "Arf arf. Yap."
|
||||
icon_state = "poster8_legit"
|
||||
|
||||
/obj/structure/sign/poster/official/obey
|
||||
name = "Obey"
|
||||
desc = "A poster instructing the viewer to obey authority."
|
||||
icon_state = "poster9_legit"
|
||||
|
||||
/obj/structure/sign/poster/official/walk
|
||||
name = "Walk"
|
||||
desc = "A poster instructing the viewer to walk instead of running."
|
||||
icon_state = "poster10_legit"
|
||||
|
||||
/obj/structure/sign/poster/official/state_laws
|
||||
name = "State Laws"
|
||||
desc = "A poster instructing cyborgs to state their laws."
|
||||
icon_state = "poster11_legit"
|
||||
|
||||
/obj/structure/sign/poster/official/love_ian
|
||||
name = "Love Ian"
|
||||
desc = "Ian is love, Ian is life."
|
||||
icon_state = "poster12_legit"
|
||||
|
||||
/obj/structure/sign/poster/official/space_cops
|
||||
name = "Space Cops."
|
||||
desc = "A poster advertising the television show Space Cops."
|
||||
icon_state = "poster13_legit"
|
||||
|
||||
/obj/structure/sign/poster/official/ue_no
|
||||
name = "Ue No."
|
||||
desc = "This thing is all in Japanese."
|
||||
icon_state = "poster14_legit"
|
||||
|
||||
/obj/structure/sign/poster/official/get_your_legs
|
||||
name = "Get Your LEGS"
|
||||
desc = "LEGS: Leadership, Experience, Genius, Subordination."
|
||||
icon_state = "poster15_legit"
|
||||
|
||||
/obj/structure/sign/poster/official/do_not_question
|
||||
name = "Do Not Question"
|
||||
desc = "A poster instructing the viewer not to ask about things they aren't meant to know."
|
||||
icon_state = "poster16_legit"
|
||||
|
||||
/obj/structure/sign/poster/official/work_for_a_future
|
||||
name = "Work For A Future"
|
||||
desc = " A poster encouraging you to work for your future."
|
||||
icon_state = "poster17_legit"
|
||||
|
||||
/obj/structure/sign/poster/official/soft_cap_pop_art
|
||||
name = "Soft Cap Pop Art"
|
||||
desc = "A poster reprint of some cheap pop art."
|
||||
icon_state = "poster18_legit"
|
||||
|
||||
/obj/structure/sign/poster/official/safety_internals
|
||||
name = "Safety: Internals"
|
||||
desc = "A poster instructing the viewer to wear internals in the rare environments where there is no oxygen or the air has been rendered toxic."
|
||||
icon_state = "poster19_legit"
|
||||
|
||||
/obj/structure/sign/poster/official/safety_eye_protection
|
||||
name = "Safety: Eye Protection"
|
||||
desc = "A poster instructing the viewer to wear eye protection when dealing with chemicals, smoke, or bright lights."
|
||||
icon_state = "poster20_legit"
|
||||
|
||||
/obj/structure/sign/poster/official/safety_report
|
||||
name = "Safety: Report"
|
||||
desc = "A poster instructing the viewer to report suspicious activity to the security force."
|
||||
icon_state = "poster21_legit"
|
||||
|
||||
/obj/structure/sign/poster/official/report_crimes
|
||||
name = "Report Crimes"
|
||||
desc = "A poster encouraging the swift reporting of crime or seditious behavior to station security."
|
||||
icon_state = "poster22_legit"
|
||||
|
||||
/obj/structure/sign/poster/official/ion_rifle
|
||||
name = "Ion Rifle"
|
||||
desc = "A poster displaying an Ion Rifle."
|
||||
icon_state = "poster23_legit"
|
||||
|
||||
/obj/structure/sign/poster/official/foam_force_ad
|
||||
name = "Foam Force Ad"
|
||||
desc = "Foam Force, it's Foam or be Foamed!"
|
||||
icon_state = "poster24_legit"
|
||||
|
||||
/obj/structure/sign/poster/official/cohiba_robusto_ad
|
||||
name = "Cohiba Robusto Ad"
|
||||
desc = "Cohiba Robusto, the classy cigar."
|
||||
icon_state = "poster25_legit"
|
||||
|
||||
/obj/structure/sign/poster/official/anniversary_vintage_reprint
|
||||
name = "50th Anniversary Vintage Reprint"
|
||||
desc = "A reprint of a poster from 2505, commemorating the 50th Aniversery of Nanoposters Manufacturing, a subsidary of Nanotrasen."
|
||||
icon_state = "poster26_legit"
|
||||
|
||||
/obj/structure/sign/poster/official/fruit_bowl
|
||||
name = "Fruit Bowl"
|
||||
desc = " Simple, yet awe-inspiring."
|
||||
icon_state = "poster27_legit"
|
||||
|
||||
/obj/structure/sign/poster/official/pda_ad
|
||||
name = "PDA Ad"
|
||||
desc = "A poster advertising the latest PDA from Nanotrasen suppliers."
|
||||
icon_state = "poster28_legit"
|
||||
|
||||
/obj/structure/sign/poster/official/enlist
|
||||
name = "Enlist" // but I thought deathsquad was never acknowledged
|
||||
desc = "Enlist in the Nanotrasen Deathsquadron reserves today!"
|
||||
icon_state = "poster29_legit"
|
||||
|
||||
/obj/structure/sign/poster/official/nanomichi_ad
|
||||
name = "Nanomichi Ad"
|
||||
desc = " A poster advertising Nanomichi brand audio cassettes."
|
||||
icon_state = "poster30_legit"
|
||||
|
||||
/obj/structure/sign/poster/official/twelve_gauge
|
||||
name = "12 Gauge"
|
||||
desc = "A poster boasting about the superiority of 12 gauge shotgun shells."
|
||||
icon_state = "poster31_legit"
|
||||
|
||||
/obj/structure/sign/poster/official/high_class_martini
|
||||
name = "High-Class Martini"
|
||||
desc = "I told you to shake it, no stirring."
|
||||
icon_state = "poster32_legit"
|
||||
|
||||
/obj/structure/sign/poster/official/the_owl
|
||||
name = "The Owl"
|
||||
desc = "The Owl would do his best to protect the station. Will you?"
|
||||
icon_state = "poster33_legit"
|
||||
|
||||
/obj/structure/sign/poster/official/no_erp
|
||||
name = "No ERP"
|
||||
desc = "This poster reminds the crew that Eroticism, Rape and Pornography are banned on Nanotrasen stations."
|
||||
icon_state = "poster34_legit"
|
||||
|
||||
/obj/structure/sign/poster/official/wtf_is_co2
|
||||
name = "Carbon Dioxide"
|
||||
desc = "This informational poster teaches the viewer what carbon dioxide is."
|
||||
icon_state = "poster35_legit"
|
||||
|
||||
#undef PLACE_SPEED
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
|
||||
/obj/effect/countdown/examine(mob/user)
|
||||
. = ..()
|
||||
user << "This countdown is displaying: [displayed_text]"
|
||||
to_chat(user, "This countdown is displaying: [displayed_text]")
|
||||
|
||||
/obj/effect/countdown/proc/attach(atom/A)
|
||||
attached_to = A
|
||||
|
||||
@@ -170,7 +170,7 @@
|
||||
var/obj/item/clothing/shoes/S = shoe
|
||||
. += "some <B>[initial(S.name)]</B> \icon[S]\n"
|
||||
|
||||
user << .
|
||||
to_chat(user, .)
|
||||
|
||||
/obj/effect/decal/cleanable/blood/footprints/replace_decal(obj/effect/decal/cleanable/C)
|
||||
if(blood_state != C.blood_state) //We only replace footprints of the same type as us
|
||||
|
||||
@@ -40,9 +40,13 @@
|
||||
/obj/effect/decal/cleanable/greenglow
|
||||
name = "glowing goo"
|
||||
desc = "Jeez. I hope that's not for lunch."
|
||||
luminosity = 1
|
||||
light_color = LIGHT_COLOR_GREEN
|
||||
icon_state = "greenglow"
|
||||
|
||||
/obj/effect/decal/cleanable/greenglow/Initialize(mapload)
|
||||
..()
|
||||
set_light(1)
|
||||
|
||||
/obj/effect/decal/cleanable/greenglow/ex_act()
|
||||
return
|
||||
|
||||
@@ -156,3 +160,21 @@
|
||||
icon = 'icons/effects/tomatodecal.dmi'
|
||||
icon_state = "salt_pile"
|
||||
gender = NEUTER
|
||||
|
||||
/obj/effect/decal/cleanable/glitter
|
||||
name = "generic glitter pile"
|
||||
desc = "the herpes of arts and crafts"
|
||||
icon = 'icons/effects/tile_effects.dmi'
|
||||
gender = NEUTER
|
||||
|
||||
/obj/effect/decal/cleanable/glitter/pink
|
||||
name = "pink glitter"
|
||||
icon_state = "plasma"
|
||||
|
||||
/obj/effect/decal/cleanable/glitter/white
|
||||
name = "white glitter"
|
||||
icon_state = "nitrous_oxide"
|
||||
|
||||
/obj/effect/decal/cleanable/glitter/blue
|
||||
name = "blue glitter"
|
||||
icon_state = "freon"
|
||||
|
||||
@@ -27,12 +27,12 @@
|
||||
if(src.reagents && W.reagents)
|
||||
. = 1 //so the containers don't splash their content on the src while scooping.
|
||||
if(!src.reagents.total_volume)
|
||||
user << "<span class='notice'>[src] isn't thick enough to scoop up!</span>"
|
||||
to_chat(user, "<span class='notice'>[src] isn't thick enough to scoop up!</span>")
|
||||
return
|
||||
if(W.reagents.total_volume >= W.reagents.maximum_volume)
|
||||
user << "<span class='notice'>[W] is full!</span>"
|
||||
to_chat(user, "<span class='notice'>[W] is full!</span>")
|
||||
return
|
||||
user << "<span class='notice'>You scoop up [src] into [W]!</span>"
|
||||
to_chat(user, "<span class='notice'>You scoop up [src] into [W]!</span>")
|
||||
reagents.trans_to(W, reagents.total_volume)
|
||||
if(!reagents.total_volume) //scooped up all of it
|
||||
qdel(src)
|
||||
@@ -45,7 +45,7 @@
|
||||
var/added_heat = (hotness / 100)
|
||||
src.reagents.chem_temp = min(src.reagents.chem_temp + added_heat, hotness)
|
||||
src.reagents.handle_reactions()
|
||||
user << "<span class='notice'>You heat [src] with [W]!</span>"
|
||||
to_chat(user, "<span class='notice'>You heat [src] with [W]!</span>")
|
||||
else
|
||||
return ..()
|
||||
|
||||
|
||||
@@ -220,7 +220,7 @@
|
||||
/obj/structure/foamedmetal/attack_hand(mob/user)
|
||||
user.changeNext_move(CLICK_CD_MELEE)
|
||||
user.do_attack_animation(src, ATTACK_EFFECT_PUNCH)
|
||||
user << "<span class='warning'>You hit the metal foam but bounce off it!</span>"
|
||||
to_chat(user, "<span class='warning'>You hit the metal foam but bounce off it!</span>")
|
||||
playsound(src.loc, 'sound/weapons/tap.ogg', 100, 1)
|
||||
|
||||
/obj/structure/foamedmetal/CanPass(atom/movable/mover, turf/target, height=1.5)
|
||||
|
||||
@@ -130,7 +130,7 @@
|
||||
|
||||
for(var/mob/M in viewers(1, location))
|
||||
if (prob (50 * amount))
|
||||
M << "<span class='danger'>The explosion knocks you down.</span>"
|
||||
to_chat(M, "<span class='danger'>The explosion knocks you down.</span>")
|
||||
M.Weaken(rand(1,5))
|
||||
return
|
||||
else
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
for(var/i = 0, i < frames, i++)
|
||||
alpha -= step
|
||||
if(alpha < 160)
|
||||
opacity = 0 //if we were blocking view, we aren't now because we're fading out
|
||||
set_opacity(0) //if we were blocking view, we aren't now because we're fading out
|
||||
stoplag()
|
||||
|
||||
/obj/effect/particle_effect/smoke/New()
|
||||
@@ -88,7 +88,7 @@
|
||||
S.lifetime = lifetime
|
||||
if(S.amount>0)
|
||||
if(opaque)
|
||||
S.opacity = 1
|
||||
S.set_opacity(TRUE)
|
||||
newsmokes.Add(S)
|
||||
|
||||
if(newsmokes.len)
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
name = "sparks"
|
||||
icon_state = "sparks"
|
||||
anchored = 1
|
||||
luminosity = 1
|
||||
light_range = 1
|
||||
|
||||
/obj/effect/particle_effect/sparks/New()
|
||||
..()
|
||||
|
||||
@@ -15,27 +15,54 @@ var/list/blacklisted_glowshroom_turfs = typecacheof(list(
|
||||
layer = ABOVE_NORMAL_TURF_LAYER
|
||||
obj_integrity = 30
|
||||
max_integrity = 30
|
||||
var/potency = 30
|
||||
var/delay = 1200
|
||||
var/floor = 0
|
||||
var/yield = 3
|
||||
var/generation = 1
|
||||
var/spreadIntoAdjacentChance = 60
|
||||
var/obj/item/seeds/myseed = /obj/item/seeds/glowshroom
|
||||
|
||||
/obj/structure/glowshroom/glowcap
|
||||
name = "glowcap"
|
||||
desc = "Mycena Ruthenia, a species of mushroom that, while it does glow in the dark, is not actually bioluminescent."
|
||||
icon_state = "glowcap"
|
||||
myseed = /obj/item/seeds/glowshroom/glowcap
|
||||
|
||||
/obj/structure/glowshroom/single
|
||||
yield = 0
|
||||
/obj/structure/glowshroom/shadowshroom
|
||||
name = "shadowshroom"
|
||||
desc = "Mycena Umbra, a species of mushroom that emits shadow instead of light."
|
||||
icon_state = "shadowshroom"
|
||||
myseed = /obj/item/seeds/glowshroom/shadowshroom
|
||||
|
||||
/obj/structure/glowshroom/single/Spread()
|
||||
return
|
||||
|
||||
/obj/structure/glowshroom/examine(mob/user)
|
||||
. = ..()
|
||||
user << "This is a [generation]\th generation [name]!"
|
||||
to_chat(user, "This is a [generation]\th generation [name]!")
|
||||
|
||||
/obj/structure/glowshroom/New()
|
||||
/obj/structure/glowshroom/Destroy()
|
||||
if(myseed)
|
||||
QDEL_NULL(myseed)
|
||||
return ..()
|
||||
|
||||
/obj/structure/glowshroom/New(loc, obj/item/seeds/newseed, mutate_stats)
|
||||
..()
|
||||
SetLuminosity(round(potency/10))
|
||||
if(newseed)
|
||||
myseed = newseed.Copy()
|
||||
myseed.forceMove(src)
|
||||
else
|
||||
myseed = new myseed(src)
|
||||
if(mutate_stats) //baby mushrooms have different stats :3
|
||||
myseed.adjust_potency(rand(-3,6))
|
||||
myseed.adjust_yield(rand(-1,2))
|
||||
myseed.adjust_production(rand(-3,6))
|
||||
myseed.adjust_endurance(rand(-3,6))
|
||||
delay = delay - myseed.production * 100 //So the delay goes DOWN with better stats instead of up. :I
|
||||
obj_integrity = myseed.endurance
|
||||
max_integrity = myseed.endurance
|
||||
if(myseed.get_gene(/datum/plant_gene/trait/glow))
|
||||
var/datum/plant_gene/trait/glow/G = myseed.get_gene(/datum/plant_gene/trait/glow)
|
||||
set_light(G.glow_range(myseed), G.glow_power(myseed), G.glow_color)
|
||||
setDir(CalcDir())
|
||||
var/base_icon_state = initial(icon_state)
|
||||
if(!floor)
|
||||
@@ -55,7 +82,9 @@ var/list/blacklisted_glowshroom_turfs = typecacheof(list(
|
||||
addtimer(CALLBACK(src, .proc/Spread), delay)
|
||||
|
||||
/obj/structure/glowshroom/proc/Spread()
|
||||
for(var/i = 1 to yield)
|
||||
var/turf/ownturf = get_turf(src)
|
||||
var/shrooms_planted = 0
|
||||
for(var/i in 1 to myseed.yield)
|
||||
if(prob(1/(generation * generation) * 100))//This formula gives you diminishing returns based on generation. 100% with 1st gen, decreasing to 25%, 11%, 6, 4, 2...
|
||||
var/list/possibleLocs = list()
|
||||
var/spreadsIntoAdjacent = FALSE
|
||||
@@ -66,6 +95,8 @@ var/list/blacklisted_glowshroom_turfs = typecacheof(list(
|
||||
for(var/turf/open/floor/earth in view(3,src))
|
||||
if(is_type_in_typecache(earth, blacklisted_glowshroom_turfs))
|
||||
continue
|
||||
if(!ownturf.CanAtmosPass(earth))
|
||||
continue
|
||||
if(spreadsIntoAdjacent || !locate(/obj/structure/glowshroom) in view(1,earth))
|
||||
possibleLocs += earth
|
||||
CHECK_TICK
|
||||
@@ -86,16 +117,16 @@ var/list/blacklisted_glowshroom_turfs = typecacheof(list(
|
||||
if(shroomCount >= placeCount)
|
||||
continue
|
||||
|
||||
var/obj/structure/glowshroom/child = new type(newLoc)//The baby mushrooms have different stats :3
|
||||
child.potency = max(potency + rand(-3,6), 0)
|
||||
child.yield = max(yield + rand(-1,2), 0)
|
||||
child.delay = max(delay + rand(-30,60), 0)
|
||||
var/newhealth = max(obj_integrity + rand(-3,6), 1)
|
||||
child.obj_integrity = newhealth
|
||||
child.max_integrity = newhealth
|
||||
var/obj/structure/glowshroom/child = new type(newLoc, myseed, TRUE)
|
||||
child.generation = generation + 1
|
||||
shrooms_planted++
|
||||
|
||||
CHECK_TICK
|
||||
else
|
||||
shrooms_planted++ //if we failed due to generation, don't try to plant one later
|
||||
if(shrooms_planted < myseed.yield) //if we didn't get all possible shrooms planted, try again later
|
||||
myseed.yield -= shrooms_planted
|
||||
addtimer(CALLBACK(src, .proc/Spread), delay)
|
||||
|
||||
/obj/structure/glowshroom/proc/CalcDir(turf/location = loc)
|
||||
var/direction = 16
|
||||
|
||||
@@ -76,7 +76,8 @@
|
||||
/obj/effect/landmark/start/New()
|
||||
start_landmarks_list += src
|
||||
..()
|
||||
tag = "start*[name]"
|
||||
if(name != initial(name))
|
||||
tag = "start*[name]"
|
||||
return 1
|
||||
|
||||
/obj/effect/landmark/start/Destroy()
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
var/triggered = 0
|
||||
|
||||
/obj/effect/mine/proc/mineEffect(mob/victim)
|
||||
victim << "<span class='danger'>*click*</span>"
|
||||
to_chat(victim, "<span class='danger'>*click*</span>")
|
||||
|
||||
/obj/effect/mine/Crossed(AM as mob|obj)
|
||||
if(isturf(loc))
|
||||
@@ -55,7 +55,7 @@
|
||||
|
||||
/obj/effect/mine/kickmine/mineEffect(mob/victim)
|
||||
if(isliving(victim) && victim.client)
|
||||
victim << "<span class='userdanger'>You have been kicked FOR NO REISIN!</span>"
|
||||
to_chat(victim, "<span class='userdanger'>You have been kicked FOR NO REISIN!</span>")
|
||||
qdel(victim.client)
|
||||
|
||||
|
||||
@@ -120,7 +120,7 @@
|
||||
/obj/effect/mine/pickup/bloodbath/mineEffect(mob/living/carbon/victim)
|
||||
if(!victim.client || !istype(victim))
|
||||
return
|
||||
victim << "<span class='reallybig redtext'>RIP AND TEAR</span>"
|
||||
to_chat(victim, "<span class='reallybig redtext'>RIP AND TEAR</span>")
|
||||
victim << 'sound/misc/e1m1.ogg'
|
||||
var/old_color = victim.client.color
|
||||
var/red_splash = list(1,0,0,0.8,0.2,0, 0.8,0,0.2,0.1,0,0)
|
||||
@@ -142,7 +142,7 @@
|
||||
sleep(10)
|
||||
animate(victim.client,color = old_color, time = duration)//, easing = SINE_EASING|EASE_OUT)
|
||||
sleep(duration)
|
||||
victim << "<span class='notice'>Your bloodlust seeps back into the bog of your subconscious and you regain self control.<span>"
|
||||
to_chat(victim, "<span class='notice'>Your bloodlust seeps back into the bog of your subconscious and you regain self control.<span>")
|
||||
qdel(chainsaw)
|
||||
qdel(src)
|
||||
|
||||
@@ -154,7 +154,7 @@
|
||||
/obj/effect/mine/pickup/healing/mineEffect(mob/living/carbon/victim)
|
||||
if(!victim.client || !istype(victim))
|
||||
return
|
||||
victim << "<span class='notice'>You feel great!</span>"
|
||||
to_chat(victim, "<span class='notice'>You feel great!</span>")
|
||||
victim.revive(full_heal = 1, admin_revive = 1)
|
||||
|
||||
/obj/effect/mine/pickup/speed
|
||||
@@ -166,8 +166,8 @@
|
||||
/obj/effect/mine/pickup/speed/mineEffect(mob/living/carbon/victim)
|
||||
if(!victim.client || !istype(victim))
|
||||
return
|
||||
victim << "<span class='notice'>You feel fast!</span>"
|
||||
to_chat(victim, "<span class='notice'>You feel fast!</span>")
|
||||
victim.status_flags |= GOTTAGOREALLYFAST
|
||||
sleep(duration)
|
||||
victim.status_flags &= ~GOTTAGOREALLYFAST
|
||||
victim << "<span class='notice'>You slow down.</span>"
|
||||
to_chat(victim, "<span class='notice'>You slow down.</span>")
|
||||
|
||||
@@ -22,4 +22,12 @@
|
||||
name = "mobl"
|
||||
var/master = null
|
||||
|
||||
var/list/container = list( )
|
||||
var/list/container = list( )
|
||||
|
||||
//Makes a tile fully lit no matter what
|
||||
/obj/effect/fullbright
|
||||
icon = 'icons/effects/alphacolors.dmi'
|
||||
icon_state = "white"
|
||||
plane = LIGHTING_PLANE
|
||||
layer = LIGHTING_LAYER
|
||||
blend_mode = BLEND_ADD
|
||||
@@ -325,7 +325,7 @@
|
||||
damage *= multiplier
|
||||
duration = max(round(damage * 0.2), 1)
|
||||
..()
|
||||
SetLuminosity(3, 2)
|
||||
set_light(1.5, 2, LIGHT_COLOR_ORANGE)
|
||||
|
||||
/obj/effect/overlay/temp/ratvar/volt_hit/true/New(loc, caster, multiplier)
|
||||
..()
|
||||
@@ -357,7 +357,7 @@
|
||||
if(M.occupant)
|
||||
if(is_servant_of_ratvar(M.occupant))
|
||||
continue
|
||||
M.occupant << "<span class='userdanger'>Your [M.name] is struck by a [name]!</span>"
|
||||
to_chat(M.occupant, "<span class='userdanger'>Your [M.name] is struck by a [name]!</span>")
|
||||
M.visible_message("<span class='warning'>[M] is struck by a [name]!</span>")
|
||||
M.take_damage(damage, BURN, 0, 0)
|
||||
hit_amount++
|
||||
@@ -424,10 +424,13 @@
|
||||
color = "#FAE48C"
|
||||
layer = ABOVE_MOB_LAYER
|
||||
duration = 70
|
||||
luminosity = 6
|
||||
light_range = 5
|
||||
light_power = 2
|
||||
light_color = "#FAE48C"
|
||||
|
||||
/obj/effect/overlay/temp/ratvar/sigil/transgression/New()
|
||||
..()
|
||||
update_light()
|
||||
var/oldtransform = transform
|
||||
animate(src, transform = matrix()*2, time = 5)
|
||||
animate(transform = oldtransform, alpha = 0, time = 65)
|
||||
@@ -436,6 +439,13 @@
|
||||
color = "#1E8CE1"
|
||||
icon_state = "sigilactivepulse"
|
||||
layer = ABOVE_MOB_LAYER
|
||||
light_range = 1.4
|
||||
light_power = 0.5
|
||||
light_color = "#1E8CE1"
|
||||
|
||||
/obj/effect/overlay/temp/ratvar/sigil/vitality/New()
|
||||
..()
|
||||
update_light()
|
||||
|
||||
/obj/effect/overlay/temp/ratvar/sigil/accession
|
||||
color = "#AF0AAF"
|
||||
|
||||
@@ -36,8 +36,7 @@
|
||||
qdel(src)
|
||||
return
|
||||
if(lifespan > 0)
|
||||
spawn(lifespan)
|
||||
qdel(src)
|
||||
QDEL_IN(src, lifespan)
|
||||
|
||||
/obj/effect/portal/Destroy()
|
||||
portals -= src
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
..()
|
||||
|
||||
if(gibtypes.len != gibamounts.len || gibamounts.len != gibdirections.len)
|
||||
world << "<span class='danger'>Gib list length mismatch!</span>"
|
||||
to_chat(world, "<span class='danger'>Gib list length mismatch!</span>")
|
||||
return
|
||||
|
||||
var/obj/effect/decal/cleanable/blood/gibs/gib = null
|
||||
|
||||
@@ -97,6 +97,7 @@
|
||||
/obj/item/device/assembly/timer = 3,
|
||||
/obj/item/device/flashlight = 4,
|
||||
/obj/item/device/flashlight/pen = 1,
|
||||
/obj/item/device/flashlight/glowstick/random = 4,
|
||||
/obj/item/device/multitool = 2,
|
||||
/obj/item/device/radio/off = 2,
|
||||
/obj/item/device/t_scanner = 5,
|
||||
@@ -116,8 +117,8 @@
|
||||
/obj/item/clothing/head/cone = 1,
|
||||
/obj/item/weapon/coin/silver = 1,
|
||||
/obj/item/weapon/coin/twoheaded = 1,
|
||||
/obj/item/weapon/poster/contraband = 1,
|
||||
/obj/item/weapon/poster/legit = 1,
|
||||
/obj/item/weapon/poster/random_contraband = 1,
|
||||
/obj/item/weapon/poster/random_official = 1,
|
||||
/obj/item/weapon/crowbar = 1,
|
||||
/obj/item/weapon/crowbar/red = 1,
|
||||
/obj/item/weapon/extinguisher = 11,
|
||||
@@ -158,6 +159,7 @@
|
||||
/obj/item/clothing/shoes/laceup = 1,
|
||||
/obj/item/weapon/storage/secure/briefcase = 3,
|
||||
/obj/item/weapon/storage/toolbox/artistic = 2,
|
||||
/obj/item/toy/eightball = 1,
|
||||
"" = 3
|
||||
)
|
||||
|
||||
@@ -186,3 +188,9 @@
|
||||
/obj/item/organ/body_egg/alien_embryo = 1,
|
||||
/obj/item/organ/hivelord_core = 2)
|
||||
lootcount = 3
|
||||
|
||||
/obj/effect/spawner/lootdrop/two_percent_xeno_egg_spawner
|
||||
name = "2% chance xeno egg spawner"
|
||||
loot = list(
|
||||
/obj/effect/decal/remains/xeno = 49,
|
||||
/obj/effect/spawner/xeno_egg_delivery = 1)
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
/obj/effect/spawner/xeno_egg_delivery
|
||||
name = "xeno egg delivery"
|
||||
icon = 'icons/mob/alien.dmi'
|
||||
icon_state = "egg_growing"
|
||||
var/announcement_time = 1200
|
||||
|
||||
/obj/effect/spawner/xeno_egg_delivery/Initialize(mapload)
|
||||
..()
|
||||
var/turf/T = get_turf(src)
|
||||
var/area/A = get_area(T)
|
||||
|
||||
new /obj/structure/alien/egg(T)
|
||||
new /obj/effect/overlay/temp/gravpush(T)
|
||||
playsound(T, 'sound/items/party_horn.ogg', 50, 1, -1)
|
||||
|
||||
message_admins("An alien egg has been delivered to [A] at [ADMIN_COORDJMP(T)].")
|
||||
log_game("An alien egg has been delivered to [A] at [COORD(T)]")
|
||||
var/message = "Attention [station_name()], we have entrusted you with a research specimen in [A]. Remember to follow all safety precautions when dealing with the specimen."
|
||||
addtimer(CALLBACK(GLOBAL_PROC, /.proc/print_command_report, message), announcement_time)
|
||||
qdel(src)
|
||||
@@ -41,7 +41,7 @@
|
||||
return 1
|
||||
else if(isliving(mover))
|
||||
if(prob(50))
|
||||
mover << "<span class='danger'>You get stuck in \the [src] for a moment.</span>"
|
||||
to_chat(mover, "<span class='danger'>You get stuck in \the [src] for a moment.</span>")
|
||||
return 0
|
||||
else if(istype(mover, /obj/item/projectile))
|
||||
return prob(30)
|
||||
@@ -198,7 +198,7 @@
|
||||
var/breakout_time = 1
|
||||
user.changeNext_move(CLICK_CD_BREAKOUT)
|
||||
user.last_special = world.time + CLICK_CD_BREAKOUT
|
||||
user << "<span class='notice'>You struggle against the tight bonds... (This will take about [breakout_time] minutes.)</span>"
|
||||
to_chat(user, "<span class='notice'>You struggle against the tight bonds... (This will take about [breakout_time] minutes.)</span>")
|
||||
visible_message("You see something struggling and writhing in \the [src]!")
|
||||
if(do_after(user,(breakout_time*60*10), target = src))
|
||||
if(!user || user.stat != CONSCIOUS || user.loc != src)
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
|
||||
/obj/effect/step_trigger/message/Trigger(mob/M)
|
||||
if(M.client)
|
||||
M << "<span class='info'>[message]</span>"
|
||||
to_chat(M, "<span class='info'>[message]</span>")
|
||||
if(once)
|
||||
qdel(src)
|
||||
|
||||
|
||||
@@ -1,14 +1,11 @@
|
||||
/obj/item/weapon/poster/legit/wanted
|
||||
var/poster_desc
|
||||
/obj/item/weapon/poster/wanted
|
||||
icon_state = "rolled_poster"
|
||||
|
||||
/obj/item/weapon/poster/legit/wanted/New(turf/loc, icon/person_icon, wanted_name, description)
|
||||
..(loc)
|
||||
/obj/item/weapon/poster/wanted/New(turf/loc, icon/person_icon, wanted_name, description)
|
||||
var/obj/structure/sign/poster/wanted/wanted_poster = new(person_icon, wanted_name, description)
|
||||
..(loc, wanted_poster)
|
||||
name = "wanted poster ([wanted_name])"
|
||||
desc = "A wanted poster for [wanted_name]."
|
||||
poster_desc = description
|
||||
qdel(resulting_poster)
|
||||
resulting_poster = new /obj/structure/sign/poster/wanted(person_icon, wanted_name, poster_desc)
|
||||
|
||||
/obj/structure/sign/poster/wanted
|
||||
var/wanted_name
|
||||
@@ -35,14 +32,8 @@
|
||||
the_icon.Insert(icon('icons/obj/contraband.dmi', "poster_ripped"), "poster_ripped")
|
||||
icon = the_icon
|
||||
|
||||
/obj/structure/sign/poster/wanted/attack_hand(mob/user)
|
||||
..()
|
||||
|
||||
/obj/structure/sign/poster/wanted/attackby()
|
||||
..()
|
||||
|
||||
/obj/structure/sign/poster/wanted/roll_and_drop(turf/location)
|
||||
var/obj/item/weapon/poster/legit/wanted/P = new(src, null, wanted_name, desc)
|
||||
P.resulting_poster = src
|
||||
P.loc = location
|
||||
loc = P
|
||||
var/obj/item/weapon/poster/P = ..(location)
|
||||
P.name = "wanted poster ([wanted_name])"
|
||||
P.desc = "A wanted poster for [wanted_name]."
|
||||
return P
|
||||
|
||||
Reference in New Issue
Block a user