Merge branch 'master' of git://github.com/Baystation12/Baystation12

This commit is contained in:
Ren Erthilo
2012-04-19 18:06:48 +01:00
54 changed files with 8744 additions and 7571 deletions
+4 -1
View File
@@ -142,6 +142,7 @@
verbs += /client/proc/callprocobj
verbs += /client/proc/rnd_check_designs
verbs += /client/proc/CarbonCopy
verbs += /client/proc/getruntimelog //used by coders to retrieve runtime logs
if (holder.level >= 5)//Game Admin********************************************************************
verbs += /obj/admins/proc/view_txt_log
@@ -172,6 +173,7 @@
verbs += /client/proc/toggle_clickproc //TODO ERRORAGE (Temporary proc while the enw clickproc is being tested)
verbs += /client/proc/toggle_gravity_on
verbs += /client/proc/toggle_gravity_off
verbs += /client/proc/toggle_random_events
// Moved over from tg's Game Master:
verbs += /client/proc/colorooc
verbs += /obj/admins/proc/toggle_aliens //toggle aliens
@@ -425,6 +427,7 @@
verbs -= /client/proc/tension_report
verbs -= /client/proc/toggle_gravity_on
verbs -= /client/proc/toggle_gravity_off
verbs -= /client/proc/toggle_random_events
verbs -= /client/proc/cmd_admin_change_custom_event
verbs -= /client/proc/admin_invis
verbs -= /client/proc/callprocgen
@@ -436,7 +439,7 @@
verbs -= /client/proc/rnd_check_designs
verbs -= /client/proc/make_tajaran
verbs -= /client/proc/CarbonCopy
verbs -= /client/proc/getruntimelog //used by coders to retrieve runtime logs
return
+53
View File
@@ -0,0 +1,53 @@
/*
HOW DO I LOG RUNTIMES?
Firstly, start dreamdeamon if it isn't already running. Then select "world>Log Session" (or press the F3 key)
navigate the popup window to the log/runtime/ folder from where your tgstation .dmb is located.
OPTIONAL: you can select the little checkbox down the bottom to make dreamdeamon save the log everytime you
start a world. Just remember to repeat these steps with a new name when you update to a new revision!
Save it with the name of the revision your server uses (e.g. r3459.txt).
Coders with the Game Master rank will now be able to access any runtime logs you have archived this way!
This will allow us to gather information on bugs across multiple servers and make maintaining the TG
codebase for the entire /TG/station commuity a TONNE easier :3 Thanks for your help!
*/
#define FTPDELAY 200 //20 second delay to prevent spam
//This proc allows GameMasters to download txt files saved to the log/runtime/ folder on the server.
//In effect this means the server owner can log game sessions through DreamDeamon to that folder and
//Coders (with access) can download logs (old and current).
//To make life easier on everyone please name logfiles according to the revision number in use!
//This proc has a failsafe built in to prevent spamming of ftp requests. As such it can only be used once every
//20 seconds. This can be changed by modifying FTPDELAY's value.
//PLEASE USE RESPONSIBLY, only download from the server if the log isn't already available elsewhere!
//Bandwidth is expensive and lags are lame. Although txt files of a few kB shouldn't cause problems really ~Carn
/client/proc/getruntimelog()
set name = "getruntimelog"
set desc = "Retrieve any session logfiles saved by dreamdeamon"
set category = "Debug"
set hidden = 1
if( !src.holder || holder.rank != "Game Master" )
src << "<font color='red'>Only Game Masters may use this command.</font>"
return
var/time_to_wait = fileaccess_timer - world.time
if(time_to_wait > 0)
src << "<font color='red'>Error: getruntimelog(): FTP-request spam prevention. Please wait [round(time_to_wait/10)] seconds.</font>"
return
fileaccess_timer = world.time + FTPDELAY
var/list/list_of_runtimelogs = flist("log/runtime/")
var/choice = input(src,"Choose a runtime-log to download:","Download",null) in list_of_runtimelogs
if(!choice || !fexists("log/runtime/[choice]"))
src << "<font color='red'>Error: getruntimelog(): Files not found/Invalid file([choice]).</font>"
return
src << ftp("log/runtime/[choice]")
return
+14
View File
@@ -902,6 +902,20 @@ Traitors and the like can also be revived with the previous role mostly intact.
A.gravitychange(0,A)
command_alert("For budget reasons, Centcomm is no longer beaming gravitons to your station. We appoligize for any inconvience.")
//CARN
/client/proc/toggle_random_events()
set category = "Server"
set name = "Toggle random events on/off"
set desc = "Toggles random events such as meteors, black holes, blob (but not space dust) on/off"
if(!config.allow_random_events)
config.allow_random_events = 1
usr << "Random events enabled"
message_admins("Admin [key_name_admin(usr)] has enabled random events.", 1)
else
config.allow_random_events = 0
usr << "Random events disabled"
message_admins("Admin [key_name_admin(usr)] has disabled random events.", 1)
feedback_add_details("admin_verb","TRE") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/rnd_check_designs()
set category = "Debug"
+42 -22
View File
@@ -1910,30 +1910,50 @@ datum
return
if(method == TOUCH)
if(istype(M, /mob/living/carbon/human))
if(M:wear_mask)
M << "\red Your mask protects you from the pepperspray!"
var/mob/living/carbon/human/victim = M
var/mouth_covered = 0
var/eyes_covered = 0
var/obj/item/safe_thing = null
if( victim.wear_mask )
if ( victim.wear_mask.flags & MASKCOVERSEYES )
eyes_covered = 1
safe_thing = victim.wear_mask
if ( victim.wear_mask.flags & MASKCOVERSMOUTH )
mouth_covered = 1
safe_thing = victim.wear_mask
if( victim.head )
if ( victim.head.flags & MASKCOVERSEYES )
eyes_covered = 1
safe_thing = victim.head
if ( victim.head.flags & MASKCOVERSMOUTH )
mouth_covered = 1
safe_thing = victim.head
if(victim.glasses)
eyes_covered = 1
if ( !safe_thing )
safe_thing = victim.glasses
if ( eyes_covered && mouth_covered )
victim << "\red Your [safe_thing] protects you from the pepperspray!"
return
if(M:glasses)
if(M.job in security_positions)
M:emote("me",1,"glares at you as the pepperspray drips off the lenses!")
M << "\red Your glasses protect you from most of the pepperspray, and your training takes care of the rest!"
M.eye_blurry = max(M.eye_blurry, 10)
M << "\red Your glasses protect you from most of the pepperspray!"
M:emote("scream")
M.eye_blurry = max(M.eye_blurry, 20)
M.eye_blind = max(M.eye_blind, 4)
else if ( mouth_covered ) // Reduced effects if partially protected
victim << "\red Your [safe_thing] protect you from most of the pepperspray!"
victim.eye_blurry = max(M.eye_blurry, 3)
victim.eye_blind = max(M.eye_blind, 1)
victim.Paralyse(1)
victim.drop_item()
return
if(M.job in security_positions)
M:emote("me",1,"shakes off most of the pepper spray's effects, at least they were trained!")
M << "\red Your training protects you from most of the pepperspray!"
M.eye_blurry = max(M.eye_blurry, 20)
M.eye_blind = max(M.eye_blind, 4)
M:emote("scream")
M << "\red You're sprayed directly in the eyes with pepperspray!"
M.eye_blurry = max(M.eye_blurry, 5)
M.eye_blind = max(M.eye_blind, 2)
M.Paralyse(1)
M.drop_item()
else if ( eyes_covered ) // Eye cover is better than mouth cover
victim << "\red Your [safe_thing] protects your eyes from the pepperspray!"
victim.emote("scream")
victim.eye_blurry = max(M.eye_blurry, 1)
return
else // Oh dear :D
victim.emote("scream")
victim << "\red You're sprayed directly in the eyes with pepperspray!"
victim.eye_blurry = max(M.eye_blurry, 5)
victim.eye_blind = max(M.eye_blind, 2)
victim.Paralyse(1)
victim.drop_item()
frostoil
name = "Frost Oil"
+3 -4
View File
@@ -12,10 +12,9 @@
new /obj/item/clothing/suit/chickensuit(src.loc)
del(src)
/obj/effect/landmark/costume/justice/New()
new /obj/item/clothing/suit/justice(src.loc)
var/CHOICE = pick( /obj/item/clothing/head/justice , /obj/item/clothing/head/justice/blue , /obj/item/clothing/head/justice/yellow , /obj/item/clothing/head/justice/green , /obj/item/clothing/head/justice/pink )
new CHOICE(src.loc)
/obj/effect/landmark/costume/gladiator/New()
new /obj/item/clothing/under/gladiator(src.loc)
new /obj/item/clothing/head/helmet/gladiator(src.loc)
del(src)
/obj/effect/landmark/costume/madscientist/New()
+37 -26
View File
@@ -6,8 +6,8 @@
var/list/allowed = list()
/obj/item/clothing/head/cakehat
name = "cakehat"
desc = "It is a cakehat!"
name = "cake-hat"
desc = "It's tasty looking!"
icon_state = "cake0"
var/onfire = 0.0
var/status = 0
@@ -15,17 +15,17 @@
var/fire_resist = T0C+1300 //this is the max temp it can stand before you start to cook. although it might not burn away, you take damage
/obj/item/clothing/head/caphat
name = "Captain's hat"
name = "captain's hat"
icon_state = "captain"
desc = "It's good being the king."
flags = FPRINT|TABLEPASS
flags = FPRINT|TABLEPASS|SUITSPACE
item_state = "caphat"
/obj/item/clothing/head/centhat
name = "Cent. Comm. hat"
name = "\improper CentComm. hat"
icon_state = "centcom"
desc = "It's even better to be the emperor."
flags = FPRINT|TABLEPASS
desc = "It's good to be emperor."
flags = FPRINT|TABLEPASS|SUITSPACE
item_state = "centhat"
/obj/item/clothing/head/deathsquad/beret
@@ -43,42 +43,43 @@
item_state = "pwig"
/obj/item/clothing/head/that
name = "Top hat"
desc = "An amish looking hat."
name = "top-hat"
desc = "It's an amish looking hat."
icon_state = "tophat"
item_state = "that"
flags = FPRINT|TABLEPASS
/obj/item/clothing/head/chefhat
name = "Chef's Hat"
name = "chef's hat"
desc = "It's a hat used by chefs to keep hair out of your food. Judging by the food in the mess, they don't work."
icon_state = "chef"
item_state = "chef"
desc = "The commander in chef's head wear."
flags = FPRINT | TABLEPASS
/obj/item/clothing/head/redcoat
name = "Redcoat hat"
name = "redcoat's hat"
icon_state = "redcoat"
desc = "I guess it's a redhead."
desc = "<i>'I guess it's a redhead.'</i>"
flags = FPRINT | TABLEPASS
/obj/item/clothing/head/mailman
name = "Mailman Hat"
name = "mailman's hat"
icon_state = "mailman"
desc = "Right-on-time mail service head wear."
desc = "<i>'Right-on-time'</i> mail service head wear."
flags = FPRINT | TABLEPASS
/obj/item/clothing/head/plaguedoctorhat
name = "Plague doctor's hat"
desc = "Once used by Plague doctors. Now useless."
name = "plague doctor's hat"
desc = "These were once used by Plague doctors. They're pretty much useless."
icon_state = "plaguedoctor"
flags = FPRINT | TABLEPASS
permeability_coefficient = 0.01
/obj/item/clothing/head/beret
name = "beret"
desc = "A beret. A mime's favorite headwear."
desc = "A beret, a mime's favorite headwear."
icon_state = "beret"
flags = FPRINT | TABLEPASS
@@ -91,10 +92,11 @@
icon_state = "cueball"
flags = FPRINT|TABLEPASS|SUITSPACE|HEADCOVERSEYES|HEADCOVERSMOUTH|BLOCKHAIR
item_state="cueball"
flags_inv = 0
/obj/item/clothing/head/secsoft
name = "Soft Cap"
desc = "A baseball hat in tasteful red."
name = "soft cap"
desc = "It's baseball hat in tasteful red colour."
icon_state = "secsoft"
flags = FPRINT|TABLEPASS|HEADCOVERSEYES
item_state = "helmet"
@@ -108,7 +110,7 @@
var/flipped = 0
/obj/item/clothing/head/syndicatefake
name = "red space helmet replica"
name = "red space-helmet replica"
desc = "A plastic replica of a red space space helmet. This is a toy, it is not made for use in space!"
icon_state = "syndicate"
item_state = "syndicate"
@@ -116,19 +118,28 @@
flags = FPRINT | TABLEPASS | BLOCKHAIR
/obj/item/clothing/head/chaplain_hood
name = "Chaplain's hood"
desc = "A hood that covers the head. Keeps you warm during the space winters."
name = "chaplain's hood"
desc = "It's hood that covers the head. It keeps you warm during the space winters."
icon_state = "chaplain_hood"
flags = FPRINT|TABLEPASS|HEADSPACE|HEADCOVERSEYES|BLOCKHAIR
/obj/item/clothing/head/hasturhood
name = "Hastur's Hood"
desc = "This hood is unspeakably stylish"
name = "hastur's hood"
desc = "It's unspeakably stylish"
icon_state = "hasturhood"
flags = FPRINT|TABLEPASS|HEADSPACE|HEADCOVERSEYES|BLOCKHAIR
/obj/item/clothing/head/nursehat
name = "Nurse Hat"
desc = "For quick identification of trained medical personnel."
name = "nurse's hat"
desc = "It allows quick identification of trained medical personnel."
icon_state = "nursehat"
flags = FPRINT|TABLEPASS
/obj/item/clothing/head/helmet/cardborg
name = "cardborg helmet"
desc = "A helmet made out of a box."
icon_state = "cardborg_h"
item_state = "cardborg_h"
flags = FPRINT | TABLEPASS | HEADCOVERSEYES | HEADCOVERSMOUTH
see_face = 0.0
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES
@@ -131,6 +131,15 @@
item_state = "holidaypriest"
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
// BubbleWrap - Nothing to see here
/obj/item/clothing/suit/cardborg
name = "cardborg suit"
desc = "An ordinary cardboard box with holes cut in the sides."
icon_state = "cardborg"
item_state = "cardborg"
body_parts_covered = UPPER_TORSO|LOWER_TORSO
flags_inv = HIDEJUMPSUIT
/obj/item/clothing/suit/patientgown
name = "patient gown"
+1 -1
View File
@@ -496,7 +496,7 @@
/obj/item/weapon/reagent_containers/food/snacks/burger/mime
name = "Mime Burger"
desc = "It's taste defies language."
desc = "Its taste defies language."
icon_state = "mimeburger"
/obj/item/weapon/reagent_containers/food/snacks/omelette
+5 -7
View File
@@ -126,26 +126,20 @@
//if(icon_state == initial(icon_state))
var/icontype = ""
var/list/icons = list("Blue", "HAL9000", "Monochrome", "Rainbow", "HAL9000 Mark2", "Inverted", "Firewall", "Green", "Text", "Smiley", "Angry", "Dorf", "Matrix", "Bliss")
var/list/icons = list("Blue", "Monochrome", "Rainbow", "Inverted", "Firewall", "Green", "Text", "Smiley", "Angry", "Dorf", "Matrix", "Bliss", "Red", "Static")
if (src.name == "B.A.N.N.E.D." && src.ckey == "spaceman96")
icons += "B.A.N.N.E.D."
icontype = input("Please, select a display!", "AI", null/*, null*/) in icons
if(icontype == "Blue")
icon_state = "ai"
else if(icontype == "HAL9000")
icon_state = "ai-hal9000-2"
else if(icontype == "Monochrome")
icon_state = "ai-mono"
else if(icontype == "Rainbow")
icon_state = "ai-clown"
else if(icontype == "HAL9000 Mark2")
icon_state = "ai-hal9000-3"
else if(icontype == "Inverted")
icon_state = "ai-u"
else if(icontype == "Firewall")
icon_state = "ai-magma"
else if(icontype == "Funny")
icon_state = "ai-yesman"
else if(icontype == "Green")
icon_state = "ai-wierd"
else if(icontype == "Text")
@@ -160,6 +154,10 @@
icon_state = "ai-bliss"
else if(icontype == "B.A.N.N.E.D.")
icon_state = "ai-banned"
else if(icontype == "Red")
icon_state = "ai-malf"
else if(icontype == "Static")
icon_state = "ai-static"
else//(icontype == "Matrix")
icon_state = "ai-matrix"
+1 -1
View File
@@ -9,7 +9,7 @@
speak = list("Meow!","Esp!","Purr!","HSSSSS")
speak_emote = list("purrs", "meows")
emote_hear = list("meows","mews")
emote_see = list("shakes it's head", "shivers")
emote_see = list("shakes its head", "shivers")
speak_chance = 1
turns_per_move = 5
meat_type = /obj/item/weapon/reagent_containers/food/snacks/sliceable/meat
+51 -32
View File
@@ -1,8 +1,8 @@
//Corgi
/mob/living/simple_animal/corgi
name = "corgi"
name = "\improper corgi"
real_name = "corgi"
desc = "Puppy!!"
desc = "It's a corgi."
icon = 'mob.dmi'
icon_state = "corgi"
icon_living = "corgi"
@@ -10,9 +10,9 @@
speak = list("YAP", "Woof!", "Bark!", "AUUUUUU")
speak_emote = list("barks", "woofs")
emote_hear = list("barks", "woofs", "yaps","pants")
emote_see = list("shakes it's head", "shivers")
emote_see = list("shakes its head", "shivers")
speak_chance = 1
turns_per_move = 5
turns_per_move = 10
meat_type = /obj/item/weapon/reagent_containers/food/snacks/sliceable/meat/corgi
meat_amount = 3
response_help = "pets the"
@@ -51,8 +51,9 @@
/mob/living/simple_animal/corgi/show_inv(mob/user as mob)
/*
user.machine = src
if(user.stat) return
var/dat = "<div align='center'><b>Inventory of [src]</b></div><p>"
var/dat = "<div align='center'><b>Inventory of [name]</b></div><p>"
if(inventory_head)
dat += "<br><b>Head:</b> [inventory_head] (<a href='?src=\ref[src];remove_inv=head'>Remove</a>)"
else
@@ -63,7 +64,7 @@
dat += "<br><b>Back:</b> <a href='?src=\ref[src];add_inv=back'>Nothing</a>"
user << browse(dat, text("window=mob[];size=325x500", name))
onclose(user, "mob[name]")
onclose(user, "mob[real_name]")
*/
return
@@ -72,22 +73,24 @@
//helmet and armor = 100% protection
if( istype(inventory_head,/obj/item/clothing/head/helmet) && istype(inventory_back,/obj/item/clothing/suit/armor) )
if( O.force )
usr << "\red This animal is wearing too much armor. You can't cause it any damage."
usr << "\red This animal is wearing too much armor. You can't cause /him any damage."
for (var/mob/M in viewers(src, null))
M.show_message("\red \b [user] hits [src] with the [O], however [src] is too armored.")
else
usr << "\red This animal is wearing too much armor. You can't reach it's skin."
usr << "\red This animal is wearing too much armor. You can't reach its skin."
for (var/mob/M in viewers(src, null))
M.show_message("\red [user] gently taps [src] with the [O]. ")
if(prob(15))
emote("looks at [user] with [pick("an amused","an annoyed","a confused","a resentful", "a happy", "an excited")] expression on it's face")
emote("looks at [user] with [pick("an amused","an annoyed","a confused","a resentful", "a happy", "an excited")] expression on \his face")
return
..()
/mob/living/simple_animal/corgi/Topic(href, href_list)
if(usr.stat) return
//Removing from inventory
if(href_list["remove_inv"])
if(get_dist(src,usr) > 1)
if(get_dist(src,usr) > 1 || !(ishuman(usr) || ismonkey(usr) || isrobot(usr) || isalienadult(usr)))
return
var/remove_from = href_list["remove_inv"]
switch(remove_from)
@@ -98,36 +101,36 @@
speak = list("YAP", "Woof!", "Bark!", "AUUUUUU")
speak_emote = list("barks", "woofs")
emote_hear = list("barks", "woofs", "yaps","pants")
emote_see = list("shakes it's head", "shivers")
emote_see = list("shakes its head", "shivers")
desc = "It's a corgi."
src.sd_SetLuminosity(0)
inventory_head.loc = src.loc
inventory_head = null
else
usr << "\red There is nothing on its [remove_from]."
usr << "\red There is nothing to remove from its [remove_from]."
return
if("back")
if(inventory_back)
inventory_back.loc = src.loc
inventory_back = null
else
usr << "\red There is nothing on its [remove_from]."
usr << "\red There is nothing to remove from its [remove_from]."
return
show_inv(usr)
//show_inv(usr) //Commented out because changing Ian's name and then calling up his inventory opens a new inventory...which is annoying.
//Adding things to inventory
else if(href_list["add_inv"])
if(get_dist(src,usr) > 1)
return
if(!usr.get_active_hand())
usr << "\red You have nothing in your active hand to put in the slot."
if(get_dist(src,usr) > 1 || !(ishuman(usr) || ismonkey(usr) || isrobot(usr) || isalienadult(usr)))
return
var/add_to = href_list["add_inv"]
if(!usr.get_active_hand())
usr << "\red You have nothing in your hand to put on its [add_to]."
return
switch(add_to)
if("head")
if(inventory_head)
usr << "\red The [inventory_head] is already in this slot."
usr << "\red It's is already wearing something."
return
else
var/obj/item/item_to_add = usr.get_active_hand()
@@ -171,7 +174,7 @@
)
if( ! ( item_to_add.type in allowed_types ) )
usr << "\red The corgi doesn't seem too keen on wearing that item."
usr << "\red It doesn't seem too keen on wearing that item."
return
usr.drop_item()
@@ -194,13 +197,13 @@
desc = "It's a cute little kitty-cat! ... wait ... what the hell?"
if(/obj/item/clothing/head/rabbitears, /obj/item/clothing/head/collectable/rabbitears)
name = "Hoppy"
emote_see = list("twitches his nose", "hops around a bit")
emote_see = list("twitches its nose", "hops around a bit")
desc = "This is hoppy. It's a corgi-...urmm... bunny rabbit"
if(/obj/item/clothing/head/beret, /obj/item/clothing/head/collectable/beret)
name = "Yann"
desc = "mon dieu! C'est un chien!"
desc = "Mon dieu! C'est un chien!"
speak = list("le woof!", "le bark!", "JAPPE!!")
emote_see = list("cowers in fear", "surrenders", "plays dead")
emote_see = list("cowers in fear", "surrenders", "plays dead","looks as though there is a wall in front of /him")
if(/obj/item/clothing/head/det_hat)
name = "Detective [real_name]"
desc = "[name] sees through your lies..."
@@ -209,13 +212,13 @@
name = "Nurse [real_name]"
desc = "[name] needs 100cc of beef jerky...STAT!"
if(/obj/item/clothing/head/pirate, /obj/item/clothing/head/collectable/pirate)
name = "'[pick("Ol'","Scurvy","Black","Rum","Gammy","Bloody","Gangrene","Death","Long-John")] [pick("kibbles","leg","beard","tooth","poop-deck","Threepwood","Le Chuck","corsair","Silver","Crusoe")]'"
name = "'[pick("Ol'","Scurvy","Black","Rum","Gammy","Bloody","Gangrene","Death","Long-John")] [pick("kibble","leg","beard","tooth","poop-deck","Threepwood","Le Chuck","corsair","Silver","Crusoe")]'"
desc = "Yaarghh!! Thar' be a scurvy dog!"
emote_see = list("hunts for treasure","stares coldly...","gnashes his tiny corgi teeth")
emote_hear = list("growls ferociously", "snarls")
speak = list("Arrrrgh!!","Grrrrrr!")
if(/obj/item/clothing/head/ushanka)
name = "[pick("Comrade","Commissar")] [real_name]"
name = "[pick("Comrade","Commissar","Glorious Leader")] [real_name]"
desc = "A follower of Karl Barx."
emote_see = list("contemplates the failings of the capitalist economic model", "ponders the pros and cons of vangaurdism")
if(/obj/item/clothing/head/collectable/police)
@@ -226,7 +229,7 @@
name = "Grandwizard [real_name]"
speak = list("YAP", "Woof!", "Bark!", "AUUUUUU", "EI NATH!")
if(/obj/item/weapon/bedsheet)
name = "The ghost"
name = "\improper Ghost"
speak = list("WoooOOOooo~","AUUUUUUUUUUUUUUUUUU")
emote_see = list("stumbles around", "shivers")
emote_hear = list("howls","groans")
@@ -239,7 +242,7 @@
if("back")
if(inventory_back)
usr << "\red The [inventory_back] is already in this slot."
usr << "\red It's already wearing something."
return
else
var/obj/item/item_to_add = usr.get_active_hand()
@@ -255,7 +258,7 @@
)
if( ! ( item_to_add.type in allowed_types ) )
usr << "\red The object cannot fit on this animal."
usr << "\red This object won't fit."
return
usr.drop_item()
@@ -271,6 +274,7 @@
/mob/living/simple_animal/corgi/Ian
name = "Ian"
real_name = "Ian" //Intended to hold the name without altering it.
gender = "male"
desc = "It's a corgi."
var/turns_since_scan = 0
var/obj/movement_target
@@ -323,7 +327,7 @@
emote("stares at the [movement_target] that [movement_target.loc] has with a sad puppy-face")
if(prob(1))
emote("dances around")
emote(pick("dances around","chases its tail"))
spawn(0)
for(var/i in list(1,2,4,8,4,2,1,2,4,8,4,2,1,2,4,8,4,2))
dir = i
@@ -343,11 +347,12 @@
var/mob/tmob = AM
if(istype(tmob, /mob/living/carbon/human) && tmob.mutations & FAT)
if(prob(70))
for(var/mob/M in viewers(src, null))
if(M.client)
M << "\red <B>[src] fails to push [tmob]'s fat ass out of the way.</B>"
src << "\red <B>You fail to push [tmob]'s fat ass out of the way.</B>"
now_pushing = 0
return
if(tmob.nopush)
now_pushing = 0
return
tmob.LAssailant = src
now_pushing = 0
@@ -375,6 +380,20 @@
mind.assigned_role = "Corgi"
mind.key = G.key
/mob/living/simple_animal/corgi/attackby(var/obj/item/O as obj, var/mob/user as mob) //Marker -Agouri
if(istype(O, /obj/item/weapon/newspaper))
if(alive)
for(var/mob/M in viewers(user, null))
if ((M.client && !( M.blinded )))
M.show_message("\blue [user] baps [name] on the nose with the rolled up [O]")
spawn(0)
for(var/i in list(1,2,4,8,4,2,1,2))
dir = i
sleep(1)
else
..()
/obj/item/weapon/reagent_containers/food/snacks/sliceable/meat/corgi
name = "Corgi meat"
desc = "Tastes like... well you know..."
+65 -12
View File
@@ -2,7 +2,7 @@
name = "animal"
var/icon_living = ""
var/icon_dead = ""
var/max_health = 20
maxHealth = 20
var/alive = 1
var/list/speak = list()
var/list/speak_emote = list()// Emotes while speaking IE: Ian [emote], [text] -- Ian barks, "WOOF!". Spoken text is generated from the speak variable.
@@ -50,6 +50,8 @@
var/wall_smash = 0 //if they can smash walls
var/speed = 0 //LETS SEE IF I CAN SET SPEEDS FOR SIMPLE MOBS WITHOUT DESTROYING EVERYTHING. Higher speed is slower, negative speed is faster
var/obj/item/device/radio/headset/ears = null
/mob/living/simple_animal/New()
..()
verbs -= /mob/verb/observe
@@ -70,24 +72,59 @@
density = 1
return
if(health < 1)
alive = 0
icon_state = icon_dead
stat = 2 //Dead
density = 0
return
Die()
if(health > max_health)
health = max_health
if(health > maxHealth)
health = maxHealth
/*
// Stun/Weaken
if (paralysis || stunned || weakened) //Stunned etc.
if (stunned > 0)
AdjustStunned(-1)
stat = 0
if (weakened > 0)
AdjustWeakened(-1)
lying = 1
stat = 0
if (paralysis > 0)
AdjustParalysis(-1)
blinded = 1
lying = 1
stat = 1
var/h = hand
hand = 0
drop_item()
hand = 1
drop_item()
hand = h
else //Not stunned.
lying = 0
stat = 0
if(paralysis || stunned || weakened || buckled)
canmove = 0
else
canmove = 1
*/
//Movement
if(!ckey && !stop_automated_movement)
if(isturf(src.loc) && !resting && !buckled) //This is so it only moves if it's not inside a closet, gentics machine, etc.
if(isturf(src.loc) && !resting && !buckled && canmove) //This is so it only moves if it's not inside a closet, gentics machine, etc.
turns_since_move++
if(turns_since_move >= turns_per_move)
Move(get_step(src,pick(cardinal)))
turns_since_move = 0
//Speaking
if(speak_chance)
if(prob(speak_chance))
@@ -201,6 +238,7 @@
/mob/living/simple_animal/emote(var/act)
if(act)
if(act == "scream") act = "makes a loud and pained whimper" //ugly hack to stop animals screaming when crushed :P
for (var/mob/O in viewers(src, null))
O.show_message("<B>[src]</B> [act].")
@@ -267,9 +305,9 @@
if(istype(O, /obj/item/stack/medical))
if(alive)
var/obj/item/stack/medical/MED = O
if(health < max_health)
if(health < maxHealth)
if(MED.amount >= 1)
health = min(max_health, health + MED.heal_brute)
health = min(maxHealth, health + MED.heal_brute)
MED.amount -= 1
if(MED.amount <= 0)
del(MED)
@@ -289,9 +327,24 @@
for(var/mob/M in viewers(src, null))
if ((M.client && !( M.blinded )))
M.show_message("\red [user] gently taps [src] with the [O]. ")
/mob/living/simple_animal/movement_delay()
var/tally = 0 //Incase I need to add stuff other than "speed" later
tally = speed
return tally
return tally
/mob/living/simple_animal/Stat()
..()
statpanel("Status")
stat(null, "Health: [round((health / maxHealth) * 100)]%")
/mob/living/simple_animal/proc/Die()
alive = 0
icon_state = icon_dead
stat = DEAD
density = 0
return
+1 -1
View File
@@ -5,7 +5,7 @@
icon_state = "shade"
icon_living = "shade"
icon_dead = "shade_dead"
max_health = 50
maxHealth = 50
health = 50
speak_emote = list("hisses")
emote_hear = list("wails","screeches")
+2 -2
View File
@@ -164,9 +164,9 @@
else
if (stat & MAINT)
usr << "The cover is closed. Something wrong with it: it's doesn't work."
usr << "The cover is closed. Something is wrong with it, it doesn't work."
else if (malfhack)
usr << "The cover is broken. It's may be hard to force it open."
usr << "The cover is broken. It may be hard to force it open."
else
usr << "The cover is closed."
+6 -3
View File
@@ -385,14 +385,12 @@
// use_power(luminosity * LIGHTING_POWER_FACTOR, LIGHT)
// called when area power state changes
/obj/machinery/light/power_change()
spawn(rand(0,15))
spawn(10)
var/area/A = src.loc.loc
A = A.master
seton(A.lightswitch && A.power_light)
// called when on fire
/obj/machinery/light/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
@@ -593,7 +591,12 @@
name = "replacement bulbs"
icon = 'storage.dmi'
icon_state = "light"
desc = "This box is shaped on the inside so that only light tubes and bulbs fit."
item_state = "syringe_kit"
foldable = /obj/item/stack/sheet/cardboard //BubbleWrap
storage_slots=21
can_hold = list("/obj/item/weapon/light/tube", "/obj/item/weapon/light/bulb")
max_combined_w_class = 21
/obj/item/weapon/storage/lightbox/bulbs/New()
..()
+1 -1
View File
@@ -188,7 +188,7 @@ display round(lastgen) and plasmatank amount
attackby(var/obj/item/O as obj, var/mob/user as mob)
if(istype(O, text2path(coin_path)))
if(coins >= max_coins)
user << "\red The generator already has it's maximum amount of fuel!"
user << "\red The generator already has its maximum amount of fuel!"
return
coins++
user.drop_item()
+2 -2
View File
@@ -217,7 +217,7 @@
temp_server.id_with_download += num
else if(href_list["reset_tech"])
var/choice = alert("Technology Data Rest", "Are you sure you want to reset this technology to it's default data? Data lost cannot be recovered.", "Continue", "Cancel")
var/choice = alert("Technology Data Rest", "Are you sure you want to reset this technology to its default data? Data lost cannot be recovered.", "Continue", "Cancel")
if(choice == "Continue")
for(var/datum/tech/T in temp_server.files.known_tech)
if(T.id == href_list["reset_tech"])
@@ -226,7 +226,7 @@
temp_server.files.RefreshResearch()
else if(href_list["reset_design"])
var/choice = alert("Design Data Deletion", "Are you sure you want to delete this design? If you still have the prerequisites for the design, it'll reset to it's base reliability. Data lost cannot be recovered.", "Continue", "Cancel")
var/choice = alert("Design Data Deletion", "Are you sure you want to delete this design? If you still have the prerequisites for the design, it'll reset to its base reliability. Data lost cannot be recovered.", "Continue", "Cancel")
if(choice == "Continue")
for(var/datum/design/D in temp_server.files.known_designs)
if(D.id == href_list["reset_design"])