mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-22 03:27:05 +01:00
Merge branch 'master' of git://github.com/Baystation12/Baystation12
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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..."
|
||||
@@ -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
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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."
|
||||
|
||||
|
||||
@@ -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()
|
||||
..()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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"])
|
||||
|
||||
Reference in New Issue
Block a user