Merge branch 'master' of https://github.com/ParadiseSS13/Paradise into intercom

This commit is contained in:
Markolie
2015-09-11 06:14:32 +02:00
293 changed files with 8118 additions and 7602 deletions
+9 -24
View File
@@ -42,7 +42,6 @@ var/list/admin_verbs_admin = list(
/client/proc/admin_cancel_shuttle, /*allows us to cancel the emergency shuttle, sending it back to centcomm*/
/client/proc/check_words, /*displays cult-words*/
/client/proc/check_ai_laws, /*shows AI and borg laws*/
/client/proc/rename_silicon, /*properly renames silicons*/
/client/proc/manage_silicon_laws, /* Allows viewing and editing silicon laws. */
/client/proc/admin_memo, /*admin memo system. show/delete/write. +SERVER needed to delete admin memos of others*/
/client/proc/dsay, /*talk in deadchat using our ckey/fakekey*/
@@ -154,6 +153,7 @@ var/list/admin_verbs_debug = list(
/client/proc/check_bomb_impacts,
/client/proc/test_movable_UI,
/client/proc/test_snap_UI,
/client/proc/cinematic,
/proc/machine_upgrade
)
var/list/admin_verbs_possess = list(
@@ -602,7 +602,7 @@ var/list/admin_verbs_mentor = list(
error("Error while re-adminning [src], admin rank ([rank]) does not exist.")
src << "Error while re-adminning, admin rank ([rank]) does not exist."
return
D = new(rank, admin_ranks[rank], ckey)
else
var/sql_ckey = sanitizeSQL(ckey)
@@ -617,14 +617,14 @@ var/list/admin_verbs_mentor = list(
return
if(admin_rank == "Removed") //This person was de-adminned. They are only in the admin list for archive purposes.
src << "Error while re-adminning, ckey [admin_ckey] is not an admin."
return
return
if(istext(flags))
if(istext(flags))
flags = text2num(flags)
D = new(admin_rank, flags, ckey)
var/client/C = directory[ckey]
D.associate(C)
D.associate(C)
message_admins("[key_name_admin(usr)] re-adminned themselves.")
log_admin("[key_name(usr)] re-adminned themselves.")
deadmins -= ckey
@@ -651,27 +651,12 @@ var/list/admin_verbs_mentor = list(
/client/proc/check_ai_laws()
set name = "Check AI Laws"
set category = "Admin"
if(!check_rights(R_ADMIN)) return
if(holder)
src.holder.output_ai_laws()
/client/proc/rename_silicon()
set name = "Rename Silicon"
set category = "Admin"
if(!check_rights(R_ADMIN)) return
var/mob/living/silicon/S = input("Select silicon.", "Rename Silicon.") as null|anything in silicon_mob_list
if(!S) return
var/new_name = sanitizeSafe(input(src, "Enter new name. Leave blank or as is to cancel.", "[S.real_name] - Enter new silicon name", S.real_name))
if(new_name && new_name != S.real_name)
log_and_message_admins("has renamed the silicon '[S.real_name]' to '[new_name]'")
S.SetName(new_name)
feedback_add_details("admin_verb","RAI") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/manage_silicon_laws()
set name = "Manage Silicon Laws"
set category = "Admin"
@@ -870,10 +855,10 @@ var/list/admin_verbs_mentor = list(
set category = "Admin"
set name = "Man Up Global"
set desc = "Tells everyone to man up and deal with it."
var/confirm = alert("Are you sure you want to send the global message?", "Confirm Man Up Global", "Yes", "No")
if(confirm == "Yes")
if(confirm == "Yes")
for (var/mob/T as mob in mob_list)
T << "<br><center><span class='notice'><b><font size=4>Man up.<br> Deal with it.</font></b><br>Move on.</span></center><br>"
T << 'sound/voice/ManUp1.ogg'
+3 -4
View File
@@ -1,8 +1,7 @@
/client/proc/cinematic(var/cinematic as anything in list("explosion",null))
set name = "cinematic"
set category = "Event"
set desc = "Shows a cinematic." // Intended for testing but I thought it might be nice for events on the rare occasion Feel free to comment it out if it's not wanted.
set hidden = 1
set name = "Play cinematic"
set category = "Debug"
set desc = "Shows a cinematic, will work like a normal nuke" // Intended for testing but I thought it might be nice for events on the rare occasion Feel free to comment it out if it's not wanted.
if(alert("Are you sure you want to run [cinematic]?","Confirmation","Yes","No")=="No") return
if(!ticker) return
switch(cinematic)
+1 -2
View File
@@ -5,8 +5,7 @@
icon_state = ""
flags = CONDUCT
w_class = 2.0
m_amt = 100
g_amt = 0
materials = list(MAT_METAL=100)
throwforce = 2
throw_speed = 3
throw_range = 10
+104
View File
@@ -0,0 +1,104 @@
/obj/item/device/assembly/health
name = "health sensor"
desc = "Used for scanning and monitoring health."
icon_state = "health"
materials = list(MAT_METAL=800, MAT_GLASS=200)
origin_tech = "magnets=1;biotech=1"
secured = 0
var/scanning = 0
var/health_scan
var/alarm_health = 0
/obj/item/device/assembly/health/activate()
if(!..()) return 0//Cooldown check
toggle_scan()
return 0
/obj/item/device/assembly/health/toggle_secure()
secured = !secured
if(secured && scanning)
processing_objects.Add(src)
else
scanning = 0
processing_objects.Remove(src)
update_icon()
return secured
/obj/item/device/assembly/health/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W, /obj/item/device/multitool))
if(alarm_health == 0)
alarm_health = -90
user.show_message("You toggle [src] to \"detect death\" mode.")
else
alarm_health = 0
user.show_message("You toggle [src] to \"detect critical state\" mode.")
return
else
return ..()
/obj/item/device/assembly/health/process()
if(!scanning || !secured)
return
var/atom/A = src
if(connected && connected.holder)
A = connected.holder
for(A, A && !ismob(A), A=A.loc);
// like get_turf(), but for mobs.
var/mob/living/M = A
if(M)
health_scan = M.health
if(health_scan <= alarm_health)
pulse()
audible_message("\icon[src] *beep* *beep*", "*beep* *beep*")
toggle_scan()
return
return
/obj/item/device/assembly/health/proc/toggle_scan()
if(!secured) return 0
scanning = !scanning
if(scanning)
processing_objects.Add(src)
else
processing_objects.Remove(src)
return
/obj/item/device/assembly/health/interact(mob/user as mob)//TODO: Change this to the wires thingy
if(!secured)
user.show_message("<span class='warning'>The [name] is unsecured!</span>")
return 0
var/dat = text("<TT><B>Health Sensor</B> <A href='?src=\ref[src];scanning=1'>[scanning?"On":"Off"]</A>")
if(scanning && health_scan)
dat += "<BR>Health: [health_scan]"
user << browse(dat, "window=hscan")
onclose(user, "hscan")
return
/obj/item/device/assembly/health/Topic(href, href_list)
..()
if(!ismob(usr))
return
var/mob/user = usr
if(!usr.canmove || usr.stat || usr.restrained() || !in_range(loc, usr))
usr << browse(null, "window=hscan")
onclose(usr, "hscan")
return
if(href_list["scanning"])
toggle_scan()
if(href_list["close"])
usr << browse(null, "window=hscan")
return
attack_self(user)
return
+1 -2
View File
@@ -2,8 +2,7 @@
name = "igniter"
desc = "A small electronic device able to ignite combustable substances."
icon_state = "igniter"
m_amt = 500
g_amt = 50
materials = list(MAT_METAL=500, MAT_GLASS=50)
w_amt = 10
origin_tech = "magnets=1"
+1 -2
View File
@@ -2,8 +2,7 @@
name = "infrared emitter"
desc = "Emits a visible or invisible beam and is triggered when the beam is interrupted."
icon_state = "infrared"
m_amt = 1000
g_amt = 500
materials = list(MAT_METAL=1000, MAT_GLASS=500)
origin_tech = "magnets=2"
bomb_name = "tripwire mine"
+1 -1
View File
@@ -2,7 +2,7 @@
name = "mousetrap"
desc = "A handy little spring-loaded trap for catching pesty rodents."
icon_state = "mousetrap"
m_amt = 100
materials = list(MAT_METAL=100)
origin_tech = "combat=1"
var/armed = 0
+1 -2
View File
@@ -2,8 +2,7 @@
name = "proximity sensor"
desc = "Used for scanning and alerting when someone enters a certain proximity."
icon_state = "prox"
m_amt = 800
g_amt = 200
materials = list(MAT_METAL=800, MAT_GLASS=200)
origin_tech = "magnets=1"
secured = 0
+2 -3
View File
@@ -3,8 +3,7 @@
desc = "Used to remotely activate devices."
icon_state = "signaller"
item_state = "signaler"
m_amt = 400
g_amt = 120
materials = list(MAT_METAL=400, MAT_GLASS=120)
origin_tech = "magnets=1"
wires = WIRE_RECEIVE | WIRE_PULSE | WIRE_RADIO_PULSE | WIRE_RADIO_RECEIVE
@@ -18,7 +17,7 @@
var/delay = 0
var/datum/radio_frequency/radio_connection
var/airlock_wire = null
New()
..()
if(!radio_controller)
+1 -2
View File
@@ -2,8 +2,7 @@
name = "timer"
desc = "Used to time things. Works well with contraptions which has to count down. Tick tock."
icon_state = "timer"
m_amt = 500
g_amt = 50
materials = list(MAT_METAL=500, MAT_GLASS=50)
origin_tech = "magnets=1"
secured = 0
+1 -2
View File
@@ -2,8 +2,7 @@
name = "voice analyzer"
desc = "A small electronic device able to record a voice sample, and send a signal when that sample is repeated."
icon_state = "voice"
m_amt = 500
g_amt = 50
materials = list(MAT_METAL=500, MAT_GLASS=50)
origin_tech = "magnets=1"
var/listening = 0
var/recorded = null //the activation message
+16 -7
View File
@@ -183,8 +183,8 @@
if(!prefs.unlock_content)
src << "Become a BYOND member to access member-perks and features, as well as support the engine that makes this game possible. <a href='http://www.byond.com/membership'>Click here to find out more</a>."
return 0
return 1
return 1
/client/proc/handle_spam_prevention(var/message, var/mute_type)
if(config.automute_on && !holder && src.last_message == message)
src.last_message_count++
@@ -330,8 +330,8 @@
related_accounts_cid = list()
while(query_cid.NextRow())
if(ckey != query_cid.item[1])
related_accounts_cid.Add("[query_cid.item[1]]")
related_accounts_cid.Add("[query_cid.item[1]]")
//Log all the alts
if(related_accounts_cid.len)
log_access("Alts: [key_name(src)]:[list2text(related_accounts_cid, " - ")]")
@@ -339,8 +339,8 @@
var/watchreason = check_watchlist(sql_ckey)
if(watchreason)
message_admins("<font color='red'><B>Notice: </B></font><font color='blue'>[key_name_admin(src)] is on the watchlist and has just connected - Reason: [watchreason]</font>")
send2irc_adminless_only("Watchlist", "[key_name(src)] is on the watchlist and has just connected - Reason: [watchreason]")
send2irc_adminless_only("Watchlist", "[key_name(src)] is on the watchlist and has just connected - Reason: [watchreason]")
//Just the standard check to see if it's actually a number
if(sql_id)
if(istext(sql_id))
@@ -389,6 +389,15 @@
'html/search.js', // Used in various non-NanoUI HTML windows for search functionality
'html/panels.css' // Used for styling certain panels, such as in the new player panel
)
// Send NanoUI resources to this client
spawn nanomanager.send_resources(src)
//For debugging purposes
/client/proc/list_all_languages()
for(var/L in all_languages)
var/datum/language/lang = all_languages[L]
var/message = "[lang.name] : [lang.type]"
if(lang.flags & RESTRICTED)
message += " (RESTRICTED)"
world << "[message]"
+28 -6
View File
@@ -108,6 +108,7 @@ datum/preferences
var/b_type = "A+" //blood type (not-chooseable)
var/underwear = "Nude" //underwear type
var/undershirt = "Nude" //undershirt type
var/socks = "Nude" //socks type
var/backbag = 2 //backpack type
var/h_style = "Bald" //Hair type
var/r_hair = 0 //Hair color
@@ -185,17 +186,17 @@ datum/preferences
// jukebox volume
var/volume = 100
// BYOND membership
var/unlock_content = 0
/datum/preferences/New(client/C)
b_type = pick(4;"O-", 36;"O+", 3;"A-", 28;"A+", 1;"B-", 20;"B+", 1;"AB-", 5;"AB+")
if(istype(C))
if(!IsGuestKey(C.key))
unlock_content = C.IsByondMember()
if(unlock_content)
max_save_slots = MAX_SAVE_SLOTS_MEMBER
max_save_slots = MAX_SAVE_SLOTS_MEMBER
var/loaded_preferences_successfully = load_preferences(C)
if(loaded_preferences_successfully)
if(load_character(C))
@@ -331,6 +332,7 @@ datum/preferences
dat += "<br><br>"
dat += "<b>Underwear:</b><BR><a href ='?_src_=prefs;preference=underwear;task=input'>[underwear]</a><BR>"
dat += "<b>Undershirt:</b><BR><a href ='?_src_=prefs;preference=undershirt;task=input'>[undershirt]</a><BR>"
dat += "<b>Socks:</b><BR><a href ='?_src_=prefs;preference=socks;task=input'>[socks]</a><BR>"
dat += "Backpack Type:<br><a href ='?_src_=prefs;preference=bag;task=input'><b>[backbaglist[backbag]]</b></a><br>"
dat += "Nanotrasen Relation:<br><a href ='?_src_=prefs;preference=nt_relation;task=input'><b>[nanotrasen_relation]</b></a><br>"
dat += "</td><td><b>Preview</b><br><img src=previewicon.png height=64 width=64><img src=previewicon2.png height=64 width=64></td></tr></table>"
@@ -385,7 +387,7 @@ datum/preferences
dat += "<b>Ghost radio:</b> <a href='?_src_=prefs;preference=ghost_radio'><b>[(toggles & CHAT_GHOSTRADIO) ? "Nearest Speakers" : "All Chatter"]</b></a><br>"
if(config.allow_Metadata)
dat += "<b>OOC notes:</b> <a href='?_src_=prefs;preference=metadata;task=input'><b>Edit</b></a><br>"
if(user.client)
if(user.client.holder)
dat += "<b>Adminhelp sound:</b> "
@@ -393,7 +395,7 @@ datum/preferences
if(check_rights(R_ADMIN,0))
dat += "<b>OOC:</b> <span style='border: 1px solid #161616; background-color: [ooccolor ? ooccolor : normal_ooc_colour];'>&nbsp;&nbsp;&nbsp;</span> <a href='?_src_=prefs;preference=ooccolor;task=input'><b>Change</b></a><br>"
if(unlock_content)
dat += "<b>BYOND Membership Publicity:</b> <a href='?_src_=prefs;preference=publicity'><b>[(toggles & MEMBER_PUBLIC) ? "Public" : "Hidden"]</b></a><br>"
@@ -1010,6 +1012,9 @@ datum/preferences
if("undershirt")
undershirt = random_undershirt(gender)
ShowChoices(user)
if("socks")
socks = random_socks(gender)
ShowChoices(user)
if("eyes")
r_eyes = rand(0,255)
g_eyes = rand(0,255)
@@ -1210,6 +1215,22 @@ datum/preferences
undershirt = new_undershirt
ShowChoices(user)
if("socks")
var/list/valid_sockstyles = list()
for(var/sockstyle in socks_list)
var/datum/sprite_accessory/S = socks_list[sockstyle]
if(gender == MALE && S.gender == FEMALE)
continue
if(gender == FEMALE && S.gender == MALE)
continue
if( !(species in S.species_allowed))
continue
valid_sockstyles[sockstyle] = socks_list[sockstyle]
var/new_socks = input(user, "Choose your character's socks:", "Character Preference") as null|anything in valid_sockstyles
ShowChoices(user)
if(new_socks)
socks = new_socks
if("eyes")
var/new_eyes = input(user, "Choose your character's eye colour:", "Character Preference") as color|null
if(new_eyes)
@@ -1360,7 +1381,7 @@ datum/preferences
if("publicity")
if(unlock_content)
toggles ^= MEMBER_PUBLIC
if("gender")
if(gender == MALE)
gender = FEMALE
@@ -1548,6 +1569,7 @@ datum/preferences
character.underwear = underwear
character.undershirt = undershirt
character.socks = socks
if(backbag > 4 || backbag < 1)
backbag = 1 //Same as above
+10 -3
View File
@@ -149,6 +149,9 @@
nanotrasen_relation = query.item[52]
speciesprefs = text2num(query.item[53])
//socks
socks = query.item[54]
//Sanitize
metadata = sanitize_text(metadata, initial(metadata))
real_name = reject_bad_name(real_name)
@@ -196,6 +199,9 @@
disabilities = sanitize_integer(disabilities, 0, 65535, initial(disabilities))
be_special = sanitize_integer(be_special, 0, 65535, initial(be_special))
socks = sanitize_text(socks, initial(socks))
// if(isnull(disabilities)) disabilities = 0
if(!player_alt_titles) player_alt_titles = new()
if(!organ_data) src.organ_data = list()
@@ -267,7 +273,8 @@
organ_data='[organlist]',
rlimb_data='[rlimblist]',
nanotrasen_relation='[nanotrasen_relation]',
speciesprefs='[speciesprefs]'
speciesprefs='[speciesprefs]',
socks='[socks]'
WHERE ckey='[C.ckey]'
AND slot='[default_slot]'"}
)
@@ -295,7 +302,7 @@
job_karma_high, job_karma_med, job_karma_low,
flavor_text, med_record, sec_record, gen_record,
player_alt_titles, be_special,
disabilities, organ_data, rlimb_data, nanotrasen_relation, speciesprefs)
disabilities, organ_data, rlimb_data, nanotrasen_relation, speciesprefs, socks)
VALUES
('[C.ckey]', '[default_slot]', '[sql_sanitize_text(metadata)]', '[sql_sanitize_text(real_name)]', '[be_random_name]','[gender]',
'[age]', '[sql_sanitize_text(species)]', '[sql_sanitize_text(language)]',
@@ -312,7 +319,7 @@
'[job_karma_high]', '[job_karma_med]', '[job_karma_low]',
'[sql_sanitize_text(flavor_text)]', '[sql_sanitize_text(med_record)]', '[sql_sanitize_text(sec_record)]', '[sql_sanitize_text(gen_record)]',
'[playertitlelist]', '[be_special]',
'[disabilities]', '[organlist]', '[rlimblist]', '[nanotrasen_relation]', '[speciesprefs]')
'[disabilities]', '[organlist]', '[rlimblist]', '[nanotrasen_relation]', '[speciesprefs]','[socks]')
"}
)
@@ -141,6 +141,7 @@
S["eyes_blue"] >> b_eyes
S["underwear"] >> underwear
S["undershirt"] >> undershirt
S["socks"] >> socks
S["backbag"] >> backbag
S["b_type"] >> b_type
S["accent"] >> accent
@@ -203,6 +204,7 @@
b_eyes = sanitize_integer(b_eyes, 0, 255, initial(b_eyes))
underwear = sanitize_integer(underwear, 1, underwear_m.len, initial(underwear))
undershirt = sanitize_integer(undershirt, 1, undershirt_t.len, initial(undershirt))
socks = sanitize_integer(socks,1 socks_t.len, initial(socks))
backbag = sanitize_integer(backbag, 1, backbaglist.len, initial(backbag))
b_type = sanitize_text(b_type, initial(b_type))
accent = sanitize_text(accent, initial(accent))
+5
View File
@@ -130,6 +130,7 @@
w_class = 2.0
flags = GLASSESCOVERSEYES
slot_flags = SLOT_EYES
materials = list(MAT_GLASS = 250)
var/vision_flags = 0
var/darkness_view = 0//Base human is 2
var/invisa_view = 0
@@ -370,6 +371,10 @@ BLIND // can't see anything
permeability_coefficient = 0.90
slot_flags = SLOT_ICLOTHING
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
species_fit = list("Vox")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/uniform.dmi'
)
var/has_sensor = 1//For the crew computer 2 = unable to change mode
var/sensor_mode = 0
/*
+1 -2
View File
@@ -17,8 +17,7 @@
icon_state = "welding"
flags = HEADCOVERSEYES | HEADCOVERSMOUTH
item_state = "welding"
m_amt = 1750
g_amt = 400
materials = list(MAT_METAL=1750, MAT_GLASS=400)
var/up = 0
flash_protect = 2
tint = 2
+1 -2
View File
@@ -21,8 +21,7 @@
desc = "A gas mask with built in welding goggles and face shield. Looks like a skull, clearly designed by a nerd."
icon_state = "weldingmask"
item_state = "weldingmask"
m_amt = 3000
g_amt = 1000
materials = list(MAT_METAL=4000, MAT_GLASS=2000)
var/up = 0
flash_protect = 2
tint = 2
+3 -3
View File
@@ -353,7 +353,7 @@
user << "<span class='notice'>You switch your helmet to combat mode. You will take damage in zero pressure environments, but you are more suited for a fight.</span>"
name = "blood-red hardsuit helmet (combat)"
desc = "A dual-mode advanced helmet designed for work in special operations. It is in combat mode. Property of Gorlex Marauders."
flags = BLOCKHAIR
flags = BLOCKHAIR | THICKMATERIAL
flags_inv = HIDEEARS
cold_protection = null
set_light(0)
@@ -393,7 +393,7 @@
name = "blood-red hardsuit helmet (combat)"
desc = "A dual-mode advanced hardsuit designed for work in special operations. It is in combat mode. Property of Gorlex Marauders."
slowdown = 0
flags = BLOCKHAIR
flags = THICKMATERIAL
flags_inv = null
cold_protection = null
@@ -450,7 +450,7 @@
desc = "A special helmet designed for work in a hazardous, low pressure environment. Built with lightweight materials for extra comfort."
item_state = "medical_hardsuit"
slowdown = 1
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/weapon/storage/firstaid,/obj/item/device/healthanalyzer,/obj/item/stack/medical)
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/weapon/storage/firstaid,/obj/item/device/healthanalyzer,/obj/item/stack/medical,/obj/item/device/rad_laser)
armor = list(melee = 10, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 50)
//Security
+3 -3
View File
@@ -8,7 +8,7 @@
icon_state = "paramedic-vest"
item_state = "paramedic-vest"
allowed = list(/obj/item/stack/medical, /obj/item/weapon/reagent_containers/dropper, /obj/item/weapon/reagent_containers/hypospray, /obj/item/weapon/reagent_containers/syringe, \
/obj/item/device/healthanalyzer, /obj/item/device/antibody_scanner, /obj/item/device/flashlight, /obj/item/device/radio, /obj/item/weapon/tank/emergency_oxygen)
/obj/item/device/healthanalyzer, /obj/item/device/antibody_scanner, /obj/item/device/flashlight, /obj/item/device/radio, /obj/item/weapon/tank/emergency_oxygen,/obj/item/device/rad_laser)
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 10, rad = 10)
species_fit = list("Vox")
sprite_sheets = list(
@@ -23,7 +23,7 @@
item_state = "brigphysician-vest"
allowed = list(/obj/item/stack/medical, /obj/item/weapon/reagent_containers/dropper, /obj/item/weapon/reagent_containers/hypospray, /obj/item/weapon/reagent_containers/syringe, \
/obj/item/device/healthanalyzer, /obj/item/device/antibody_scanner, /obj/item/device/flashlight, \
/obj/item/device/radio, /obj/item/weapon/tank/emergency_oxygen)
/obj/item/device/radio, /obj/item/weapon/tank/emergency_oxygen,/obj/item/device/rad_laser)
armor = list(melee = 10, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 10, rad = 0)
//Botonist
@@ -278,7 +278,7 @@
item_state = "fr_jacket"
blood_overlay_type = "armor"
allowed = list(/obj/item/stack/medical, /obj/item/weapon/reagent_containers/dropper, /obj/item/weapon/reagent_containers/hypospray, /obj/item/weapon/reagent_containers/syringe, \
/obj/item/device/healthanalyzer, /obj/item/device/antibody_scanner, /obj/item/device/flashlight, /obj/item/device/radio, /obj/item/weapon/tank/emergency_oxygen)
/obj/item/device/healthanalyzer, /obj/item/device/antibody_scanner, /obj/item/device/flashlight, /obj/item/device/radio, /obj/item/weapon/tank/emergency_oxygen,/obj/item/device/rad_laser)
verb/toggle()
set name = "Toggle Jacket Buttons"
+1 -1
View File
@@ -5,7 +5,7 @@
item_state = "labcoat"
blood_overlay_type = "coat"
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS
allowed = list(/obj/item/device/analyzer,/obj/item/device/antibody_scanner,/obj/item/stack/medical,/obj/item/weapon/dnainjector,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/syringe,/obj/item/weapon/reagent_containers/hypospray,/obj/item/device/healthanalyzer,/obj/item/device/flashlight/pen,/obj/item/weapon/reagent_containers/glass/bottle,/obj/item/weapon/reagent_containers/glass/beaker,/obj/item/weapon/reagent_containers/pill,/obj/item/weapon/storage/pill_bottle,/obj/item/weapon/paper)
allowed = list(/obj/item/device/analyzer,/obj/item/device/antibody_scanner,/obj/item/stack/medical,/obj/item/weapon/dnainjector,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/syringe,/obj/item/weapon/reagent_containers/hypospray,/obj/item/device/healthanalyzer,/obj/item/device/flashlight/pen,/obj/item/weapon/reagent_containers/glass/bottle,/obj/item/weapon/reagent_containers/glass/beaker,/obj/item/weapon/reagent_containers/pill,/obj/item/weapon/storage/pill_bottle,/obj/item/weapon/paper,/obj/item/device/rad_laser)
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 50, rad = 0)
species_fit = list("Vox")
sprite_sheets = list(
@@ -80,7 +80,7 @@
/obj/item/clothing/accessory/stethoscope/attack(mob/living/carbon/human/M, mob/living/user)
if(ishuman(M) && isliving(user))
if(user.a_intent == "help")
if(user.a_intent == I_HELP)
var/body_part = parse_zone(user.zone_sel.selecting)
if(body_part)
var/their = "their"
@@ -118,10 +118,11 @@
desc = "A bronze medal."
icon_state = "bronze"
_color = "bronze"
materials = list(MAT_METAL=1000)
/obj/item/clothing/accessory/medal/conduct
name = "distinguished conduct medal"
desc = "A bronze medal awarded for distinguished conduct. Whilst a great honor, this is most basic award given by Nanotrasen. It is often awarded by a captain to a member of his crew."
desc = "A bronze medal awarded for distinguished conduct. Whilst a great honor, this is the most basic award given by Nanotrasen. It is often awarded by a captain to a member of his crew."
/obj/item/clothing/accessory/medal/bronze_heart
name = "bronze heart medal"
@@ -137,6 +138,7 @@
desc = "A silver medal."
icon_state = "silver"
_color = "silver"
materials = list(MAT_SILVER=1000)
/obj/item/clothing/accessory/medal/silver/valor
name = "medal of valor"
@@ -151,6 +153,7 @@
desc = "A prestigious golden medal."
icon_state = "gold"
_color = "gold"
materials = list(MAT_GOLD=1000)
/obj/item/clothing/accessory/medal/gold/captain
name = "medal of captaincy"
@@ -52,7 +52,7 @@
if(istype(user.get_active_hand(),/obj) && istype(user.get_inactive_hand(),/obj))
user << "<span class='warning'>You need an empty hand to draw the [holstered]!</span>"
else
if(user.a_intent == "hurt")
if(user.a_intent == I_HARM)
usr.visible_message("\red [user] draws the [holstered], ready to shoot!</span>", \
"<span class='warning'>You draw the [holstered], ready to shoot!</span>")
else
-4
View File
@@ -1,9 +1,5 @@
/obj/item/clothing/under/color
desc = "A standard issue colored jumpsuit. Variety is the spice of life!"
species_fit = list("Vox")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/uniform.dmi'
)
/obj/item/clothing/under/color/random/New()
+1 -87
View File
@@ -7,10 +7,6 @@
item_state = "ba_suit"
_color = "ba_suit"
flags = ONESIZEFITSALL
species_fit = list("Vox")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/uniform.dmi'
)
/obj/item/clothing/under/rank/captain //Alright, technically not a 'civilian' but its better then giving a .dm file for a single define.
desc = "It's a blue jumpsuit with some gold markings denoting the rank of \"Captain\"."
@@ -19,11 +15,6 @@
item_state = "caparmor"
_color = "captain"
flags = ONESIZEFITSALL
species_fit = list("Vox")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/uniform.dmi'
)
/obj/item/clothing/under/rank/cargo
name = "quartermaster's jumpsuit"
@@ -32,10 +23,6 @@
item_state = "lb_suit"
_color = "qm"
flags = ONESIZEFITSALL
species_fit = list("Vox")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/uniform.dmi'
)
/obj/item/clothing/under/rank/cargotech
@@ -45,10 +32,6 @@
item_state = "lb_suit"
_color = "cargo"
flags = ONESIZEFITSALL
species_fit = list("Vox")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/uniform.dmi'
)
/obj/item/clothing/under/rank/chaplain
@@ -58,11 +41,6 @@
item_state = "bl_suit"
_color = "chapblack"
flags = ONESIZEFITSALL
species_fit = list("Vox")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/uniform.dmi'
)
/obj/item/clothing/under/rank/chef
desc = "It's an apron which is given only to the most <b>hardcore</b> chefs in space."
@@ -70,11 +48,6 @@
icon_state = "chef"
_color = "chef"
flags = ONESIZEFITSALL
species_fit = list("Vox")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/uniform.dmi'
)
/obj/item/clothing/under/rank/clown
name = "clown suit"
@@ -92,10 +65,6 @@
item_state = "b_suit"
_color = "hop"
flags = ONESIZEFITSALL
species_fit = list("Vox")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/uniform.dmi'
)
/obj/item/clothing/under/rank/head_of_personnel_whimsy
desc = "A blue jacket and red tie, with matching red cuffs! Snazzy. Wearing this makes you feel more important than your job title does."
@@ -113,11 +82,6 @@
_color = "hydroponics"
permeability_coefficient = 0.50
flags = ONESIZEFITSALL
species_fit = list("Vox")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/uniform.dmi'
)
/obj/item/clothing/under/rank/internalaffairs
desc = "The plain, professional attire of an Internal Affairs Agent. The collar is <i>immaculately</i> starched."
@@ -126,10 +90,6 @@
item_state = "internalaffairs"
_color = "internalaffairs"
flags = ONESIZEFITSALL
species_fit = list("Vox")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/uniform.dmi'
)
/obj/item/clothing/under/rank/ntrep
desc = "A well-ironed dress shirt and matching set of black pants."
@@ -138,11 +98,6 @@
item_state = "internalaffairs"
_color = "internalaffairs"
flags = ONESIZEFITSALL
species_fit = list("Vox")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/uniform.dmi'
)
/obj/item/clothing/under/rank/janitor
desc = "It's the official uniform of the station's janitor. It has minor protection from biohazards."
@@ -151,10 +106,6 @@
_color = "janitor"
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
flags = ONESIZEFITSALL
species_fit = list("Vox")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/uniform.dmi'
)
/obj/item/clothing/under/lawyer
@@ -166,37 +117,21 @@
icon_state = "lawyer_black"
item_state = "lawyer_black"
_color = "lawyer_black"
species_fit = list("Vox")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/uniform.dmi'
)
/obj/item/clothing/under/lawyer/female
icon_state = "black_suit_fem"
item_state = "black_suit_fem"
_color = "black_suit_fem"
species_fit = list("Vox")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/uniform.dmi'
)
/obj/item/clothing/under/lawyer/red
icon_state = "lawyer_red"
item_state = "lawyer_red"
_color = "lawyer_red"
species_fit = list("Vox")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/uniform.dmi'
)
/obj/item/clothing/under/lawyer/blue
icon_state = "lawyer_blue"
item_state = "lawyer_blue"
_color = "lawyer_blue"
species_fit = list("Vox")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/uniform.dmi'
)
/obj/item/clothing/under/lawyer/bluesuit
name = "Blue Suit"
@@ -204,20 +139,12 @@
icon_state = "bluesuit"
item_state = "bluesuit"
_color = "bluesuit"
species_fit = list("Vox")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/uniform.dmi'
)
/obj/item/clothing/under/lawyer/purpsuit
name = "Purple Suit"
icon_state = "lawyer_purp"
item_state = "lawyer_purp"
_color = "lawyer_purp"
species_fit = list("Vox")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/uniform.dmi'
)
/obj/item/clothing/under/lawyer/oldman
name = "Old Man's Suit"
@@ -225,10 +152,6 @@
icon_state = "oldman"
item_state = "oldman"
_color = "oldman"
species_fit = list("Vox")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/uniform.dmi'
)
/obj/item/clothing/under/librarian
@@ -238,11 +161,6 @@
item_state = "red_suit"
_color = "red_suit"
flags = ONESIZEFITSALL
species_fit = list("Vox")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/uniform.dmi'
)
/obj/item/clothing/under/mime
name = "mime's outfit"
@@ -260,14 +178,10 @@
item_state = "miner"
_color = "miner"
flags = ONESIZEFITSALL
species_fit = list("Vox")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/uniform.dmi'
)
/obj/item/clothing/under/barber
desc = "It's a barber's uniform."
name = "barber's uniform"
icon_state = "barber"
item_state = "barber"
_color = "barber"
_color = "barber"
@@ -7,10 +7,6 @@
_color = "chief"
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 10)
flags = ONESIZEFITSALL
species_fit = list("Vox")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/uniform.dmi'
)
/obj/item/clothing/under/rank/atmospheric_technician
desc = "It's a jumpsuit worn by atmospheric technicians."
@@ -19,10 +15,6 @@
item_state = "atmos_suit"
_color = "atmos"
flags = ONESIZEFITSALL
species_fit = list("Vox")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/uniform.dmi'
)
/obj/item/clothing/under/rank/engineer
desc = "It's an orange high visibility jumpsuit worn by engineers. It has minor radiation shielding."
@@ -32,10 +24,6 @@
_color = "engine"
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 10)
flags = ONESIZEFITSALL
species_fit = list("Vox")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/uniform.dmi'
)
/obj/item/clothing/under/rank/roboticist
desc = "It's a slimming black with reinforced seams; great for industrial work."
@@ -44,14 +32,10 @@
item_state = "robotics"
_color = "robotics"
flags = ONESIZEFITSALL
species_fit = list("Vox")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/uniform.dmi'
)
/obj/item/clothing/under/rank/mechanic
desc = "It's a pair of overalls worn by mechanics."
name = "mechanic's overalls"
icon_state = "mechanic"
item_state = "mechanic"
_color = "mechanic"
_color = "mechanic"
@@ -9,10 +9,6 @@
_color = "director"
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 10, bio = 10, rad = 0)
flags = ONESIZEFITSALL
species_fit = list("Vox")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/uniform.dmi'
)
/obj/item/clothing/under/rank/scientist
desc = "It's made of a special fiber that provides minor protection against biohazards. It has markings that denote the wearer as a scientist."
@@ -23,10 +19,6 @@
permeability_coefficient = 0.50
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 10, bio = 0, rad = 0)
flags = ONESIZEFITSALL
species_fit = list("Vox")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/uniform.dmi'
)
/obj/item/clothing/under/rank/chemist
desc = "It's made of a special fiber that gives special protection against biohazards. It has a chemist rank stripe on it."
@@ -37,10 +29,6 @@
permeability_coefficient = 0.50
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
flags = ONESIZEFITSALL
species_fit = list("Vox")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/uniform.dmi'
)
/*
* Medical
@@ -54,10 +42,6 @@
permeability_coefficient = 0.50
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
flags = ONESIZEFITSALL
species_fit = list("Vox")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/uniform.dmi'
)
/obj/item/clothing/under/rank/geneticist
desc = "It's made of a special fiber that gives special protection against biohazards. It has a genetics rank stripe on it."
@@ -68,10 +52,6 @@
permeability_coefficient = 0.50
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
flags = ONESIZEFITSALL
species_fit = list("Vox")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/uniform.dmi'
)
/obj/item/clothing/under/rank/virologist
desc = "It's made of a special fiber that gives special protection against biohazards. It has a virologist rank stripe on it."
@@ -82,10 +62,6 @@
permeability_coefficient = 0.50
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
flags = ONESIZEFITSALL
species_fit = list("Vox")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/uniform.dmi'
)
/obj/item/clothing/under/rank/nursesuit
desc = "It's a jumpsuit commonly worn by nursing staff in the medical department."
@@ -96,10 +72,6 @@
permeability_coefficient = 0.50
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
flags = ONESIZEFITSALL
species_fit = list("Vox")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/uniform.dmi'
)
/obj/item/clothing/under/rank/nurse
desc = "A dress commonly worn by the nursing staff in the medical department."
@@ -110,10 +82,6 @@
permeability_coefficient = 0.50
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
flags = ONESIZEFITSALL
species_fit = list("Vox")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/uniform.dmi'
)
/obj/item/clothing/under/rank/orderly
desc = "A white suit to be worn by orderly people who love orderly things."
@@ -124,10 +92,6 @@
permeability_coefficient = 0.50
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
flags = ONESIZEFITSALL
species_fit = list("Vox")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/uniform.dmi'
)
/obj/item/clothing/under/rank/medical
desc = "It's made of a special fiber that provides minor protection against biohazards. It has a cross on the chest denoting that the wearer is trained medical personnel."
@@ -138,10 +102,6 @@
permeability_coefficient = 0.50
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 0)
flags = ONESIZEFITSALL
species_fit = list("Vox")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/uniform.dmi'
)
/obj/item/clothing/under/rank/medical/blue
name = "medical scrubs"
@@ -149,10 +109,6 @@
icon_state = "scrubsblue"
_color = "scrubsblue"
flags = ONESIZEFITSALL
species_fit = list("Vox")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/uniform.dmi'
)
/obj/item/clothing/under/rank/medical/green
name = "medical scrubs"
@@ -160,10 +116,6 @@
icon_state = "scrubsgreen"
_color = "scrubsgreen"
flags = ONESIZEFITSALL
species_fit = list("Vox")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/uniform.dmi'
)
/obj/item/clothing/under/rank/medical/purple
name = "medical scrubs"
@@ -171,10 +123,6 @@
icon_state = "scrubspurple"
_color = "scrubspurple"
flags = ONESIZEFITSALL
species_fit = list("Vox")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/uniform.dmi'
)
/obj/item/clothing/under/rank/medical/mortician
name = "coroner's scrubs"
@@ -182,10 +130,6 @@
icon_state = "scrubsblack"
_color = "scrubsblack"
flags = ONESIZEFITSALL
species_fit = list("Vox")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/uniform.dmi'
)
//paramedic
/obj/item/clothing/under/rank/medical/paramedic
@@ -197,10 +141,6 @@
permeability_coefficient = 0.50
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 10)
flags = ONESIZEFITSALL
species_fit = list("Vox")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/uniform.dmi'
)
/obj/item/clothing/under/rank/psych
desc = "A basic white jumpsuit. It has turqouise markings that denote the wearer as a psychiatrist."
@@ -5,6 +5,7 @@
* Head of Security
*/
/*
* Security
*/
@@ -70,6 +71,10 @@
armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
flags = ONESIZEFITSALL
siemens_coefficient = 0.9
species_fit = list("Vox")
sprite_sheets = list(
"Vox" = 'icons/mob/species/vox/uniform.dmi'
)
/*
* Head of Security
+5 -6
View File
@@ -209,7 +209,7 @@
desc = "A formal black suit and red tie, intended for the station's finest."
icon_state = "really_black_suit"
item_state = "bl_suit"
_color = "black_suit"
_color = "really_black_suit"
/obj/item/clothing/under/suit_jacket/female
name = "executive suit"
@@ -224,7 +224,6 @@
icon_state = "red_suit"
item_state = "r_suit"
_color = "red_suit"
species_fit = list("Vox")
flags = ONESIZEFITSALL
/obj/item/clothing/under/suit_jacket/navy
@@ -563,17 +562,17 @@
_color = "vengine"
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 10)
/obj/item/clothing/under/vox_toxins
/obj/item/clothing/under/vox_sec
name = "Vox Security Jumpsuit"
desc = "A Security Uniform ripped to better fit a vox."
desc = "A Security officer's jumpsuit ripped to better fit a vox."
icon_state = "vred"
item_state = "vred"
_color = "vred"
armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
/obj/item/clothing/under/vox_toxins
/obj/item/clothing/under/vox_chem
name = "Vox Chemist Jumpsuit"
desc = "A Security Uniform ripped to better fit a vox."
desc = "A Chemist's jumpsuit ripped to better fit a vox."
icon_state = "vchem"
item_state = "vchem"
_color = "vchem"
+1 -1
View File
@@ -153,7 +153,7 @@ var/global/list/fish_items_list = list("goldfish" = /obj/item/weapon/fish/goldfi
icon_state = "teeth"
force = 2.0
throwforce = 5.0
g_amt = 0
materials = list()
/obj/item/weapon/shard/shark_teeth/New()
src.pixel_x = rand(-5,5)
+5 -5
View File
@@ -491,7 +491,7 @@
/obj/machinery/fishtank/attack_animal(mob/living/simple_animal/M as mob)
if(istype(M, /mob/living/simple_animal/pet/cat))
if(M.a_intent == "help") //Cats can try to fish in open tanks on help intent
if(M.a_intent == I_HELP) //Cats can try to fish in open tanks on help intent
if(lid_switch) //Can't fish in a closed tank. Fishbowls are ALWAYS open.
M.visible_message("[M.name] stares at into \the [src] while sitting perfectly still.", "The lid is closed, so you stare into \the [src] intently.")
else
@@ -513,7 +513,7 @@
else
attack_generic(M, M.harm_intent_damage)
else if(istype(M, /mob/living/simple_animal/hostile/bear))
if(M.a_intent == "help") //Bears can try to fish in open tanks on help intent
if(M.a_intent == I_HELP) //Bears can try to fish in open tanks on help intent
if(lid_switch) //Can't fish in a closed tank. Fishbowls are ALWAYS open.
M.visible_message("[M.name] scrapes it's claws along \the [src]'s lid.", "The lid is closed, so you scrape your claws against \the [src]'s lid.")
else
@@ -533,7 +533,7 @@
else
if(M.melee_damage_upper > 0) //If the simple_animal has a melee_damage_upper defined, use that for the damage
attack_generic(M, M.melee_damage_upper)
else if(M.a_intent == "harm") //Let any simple_animal try to break tanks when on harm intent
else if(M.a_intent == I_HARM) //Let any simple_animal try to break tanks when on harm intent
if(M.harm_intent_damage <= 0) return //If it doesn't do damage, don't bother with the attack
attack_generic(M, M.harm_intent_damage)
check_health()
@@ -553,7 +553,7 @@
user.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!"))
user.visible_message("<span class='danger'>[user] smashes through [src]!</span>")
destroy()
else if (usr.a_intent == "harm")
else if (usr.a_intent == I_HARM)
user.changeNext_move(CLICK_CD_MELEE)
playsound(get_turf(src), 'sound/effects/glassknock.ogg', 80, 1)
usr.visible_message("<span class='danger'>[usr.name] bangs against the [src.name]!</span>", \
@@ -589,7 +589,7 @@
//Welders repair damaged tanks on help intent, damage on all others
if(istype(O, /obj/item/weapon/weldingtool))
var/obj/item/weapon/weldingtool/W = O
if(user.a_intent == "help")
if(user.a_intent == I_HELP)
if(W.isOn())
if(cur_health < max_health)
usr << "You repair some of the cracks on \the [src]."
+1 -1
View File
@@ -632,7 +632,7 @@
result = /obj/item/weapon/reagent_containers/food/snacks/mint
/datum/recipe/microwave/boiled_shrimp
reagents = list("water" = 1)
reagents = list("water" = 5)
items = list(
/obj/item/weapon/reagent_containers/food/snacks/shrimp
)
+2 -2
View File
@@ -294,7 +294,7 @@
if(user == M)
return ..()
if(user.a_intent == "harm")
if(user.a_intent == I_HARM)
// This is being copypasted here because reagent_containers (WHY DOES FOOD DESCEND FROM THAT) overrides it completely.
// TODO: refactor all food paths to be less horrible and difficult to work with in this respect. ~Z
@@ -359,7 +359,7 @@
if(istype(user.loc,/turf/space))
return
if(user.a_intent == "harm")
if(user.a_intent == I_HARM)
user.visible_message("<span class='danger'>\The [user] squashes \the [src]!</span>")
seed.thrown_at(src,user)
sleep(-1)
+2 -2
View File
@@ -264,7 +264,7 @@
force = 5.0
throwforce = 7.0
w_class = 2.0
m_amt = 50
materials = list(MAT_METAL=50)
attack_verb = list("slashed", "sliced", "cut", "clawed")
//Hatchets and things to kill kudzu
@@ -281,7 +281,7 @@
throwforce = 15.0
throw_speed = 4
throw_range = 4
m_amt = 15000
materials = list(MAT_METAL=15000)
origin_tech = "materials=2;combat=1"
attack_verb = list("chopped", "torn", "cut")
hitsound = 'sound/weapons/bladeslice.ogg'
+7
View File
@@ -25,36 +25,43 @@
/obj/item/weapon/coin/gold
cmineral = "gold"
icon_state = "coin_gold_heads"
materials = list(MAT_GOLD = 200)
credits = 160
/obj/item/weapon/coin/silver
cmineral = "silver"
icon_state = "coin_silver_heads"
materials = list(MAT_SILVER = 200)
credits = 40
/obj/item/weapon/coin/diamond
cmineral = "diamond"
icon_state = "coin_diamond_heads"
materials = list(MAT_DIAMOND = 200)
credits = 120
/obj/item/weapon/coin/iron
cmineral = "iron"
icon_state = "coin_iron_heads"
materials = list(MAT_METAL = 200)
credits = 20
/obj/item/weapon/coin/plasma
cmineral = "plasma"
icon_state = "coin_plasma_heads"
materials = list(MAT_PLASMA = 200)
credits = 80
/obj/item/weapon/coin/uranium
cmineral = "uranium"
icon_state = "coin_uranium_heads"
materials = list(MAT_URANIUM = 200)
credits = 160
/obj/item/weapon/coin/clown
cmineral = "bananium"
icon_state = "coin_bananium_heads"
materials = list(MAT_BANANIUM = 200)
credits = 600 //makes the clown cri
/obj/item/weapon/coin/adamantine
+3 -3
View File
@@ -31,7 +31,7 @@
component_parts += new /obj/item/device/assembly/igniter(null)
component_parts += new /obj/item/weapon/stock_parts/console_screen(null)
RefreshParts()
/obj/machinery/mineral/ore_redemption/upgraded/New()
..()
component_parts = list()
@@ -604,7 +604,7 @@
stop_automated_movement_when_pulled = 1
mouse_opacity = 1
faction = list("neutral")
a_intent = "harm"
a_intent = I_HARM
min_oxy = 0
max_oxy = 0
min_tox = 0
@@ -668,7 +668,7 @@
SetCollectBehavior()
/mob/living/simple_animal/hostile/mining_drone/attack_hand(mob/living/carbon/human/M)
if(M.a_intent == "help")
if(M.a_intent == I_HELP)
switch(search_objects)
if(0)
SetCollectBehavior()
+2 -2
View File
@@ -58,7 +58,7 @@
throwforce = 10.0
item_state = "pickaxe"
w_class = 4.0
m_amt = 3750 //one sheet, but where can you make them?
materials = list(MAT_METAL=3750) //one sheet, but where can you make them?
var/digspeed = 40 //moving the delay to an item var so R&D can make improved picks. --NEO
origin_tech = "materials=1;engineering=1"
attack_verb = list("hit", "pierced", "sliced", "attacked")
@@ -151,7 +151,7 @@
throwforce = 4.0
item_state = "shovel"
w_class = 3.0
m_amt = 50
materials = list(MAT_METAL=50)
origin_tech = "materials=1;engineering=1"
attack_verb = list("bashed", "bludgeoned", "thrashed", "whacked")
+7
View File
@@ -393,6 +393,13 @@ var/global/list/rockTurfEdgeCache
gets_drilled()
..()
/turf/simulated/mineral/attack_alien(var/mob/living/carbon/alien/M)
M << "<span class='notice'>You start digging into the rock...</span>"
playsound(src, 'sound/effects/break_stone.ogg', 50, 1)
if(do_after(M, 40, target = src))
M << "<span class='notice'>You tunnel into the rock.</span>"
gets_drilled()
/turf/simulated/mineral/Bumped(AM as mob|obj)
. = ..()
if(istype(AM,/mob/living/carbon/human))
+2 -4
View File
@@ -19,6 +19,7 @@
var/list/syllables // Used when scrambling text for a non-speaker.
var/list/space_chance = 55 // Likelihood of getting a space in the random scramble string.
var/follow = 0 // Applies to HIVEMIND languages - should a follow link be included for dead mobs?
var/list/scramble_cache = list()
/datum/language/proc/get_random_name(var/gender, name_count=2, syllable_count=4)
if(!syllables || !syllables.len)
@@ -38,9 +39,6 @@
return "[trim(full_name)]"
/datum/language
var/list/scramble_cache = list()
/datum/language/proc/scramble(var/input)
if(!syllables || !syllables.len)
@@ -247,7 +245,7 @@
flags = RESTRICTED | WHITELISTED
syllables = list("02011","01222","10100","10210","21012","02011","21200","1002","2001","0002","0012","0012","000","120","121","201","220","10","11","0")
/datum/language/machine/get_random_name()
/datum/language/trinary/get_random_name()
var/new_name
if(prob(70))
new_name = "[pick(list("PBU","HIU","SINA","ARMA","OSI"))]-[rand(100, 999)]"
@@ -16,7 +16,7 @@ In all, this is a lot like the monkey code. /N
switch(M.a_intent)
if ("help")
if (I_HELP)
sleeping = max(0,sleeping-5)
resting = 0
AdjustParalysis(-3)
@@ -24,7 +24,7 @@ In all, this is a lot like the monkey code. /N
AdjustWeakened(-3)
visible_message("<span class='notice'>[M.name] nuzzles [src] trying to wake it up!</span>")
if ("grab")
if (I_GRAB)
src.grabbedby(M)
return 1
@@ -53,11 +53,11 @@ In all, this is a lot like the monkey code. /N
return 0 //this is horrible but 100% necessary
switch(M.a_intent)
if("help")
if(I_HELP)
help_shake_act(M)
if("grab")
if(I_GRAB)
src.grabbedby(M)
if ("harm", "disarm")
if (I_HARM, I_DISARM)
return 1
return 0
@@ -198,13 +198,13 @@
switch(M.a_intent)
if ("help")
if (I_HELP)
help_shake_act(M)
if ("grab")
if (I_GRAB)
grabbedby(M)
if ("harm")
if (I_HARM)
M.do_attack_animation(src)
var/damage = rand(1, 9)
if (prob(90))
@@ -229,7 +229,7 @@
playsound(loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1)
visible_message("<span class='danger'>[M] has attempted to punch [src]!</span>")
if ("disarm")
if (I_DISARM)
if (!lying)
if (prob(5))//Very small chance to push an alien down.
Paralyse(2)
@@ -265,7 +265,7 @@ In all, this is a lot like the monkey code. /N
switch(M.a_intent)
if ("help")
if (I_HELP)
sleeping = max(0,sleeping-5)
resting = 0
AdjustParalysis(-3)
@@ -291,7 +291,7 @@ In all, this is a lot like the monkey code. /N
/mob/living/carbon/alien/humanoid/attack_larva(mob/living/carbon/alien/larva/L as mob)
switch(L.a_intent)
if("help")
if(I_HELP)
visible_message("<span class='notice'>[L] rubs its head against [src].</span>")
@@ -159,22 +159,11 @@
switch(M.a_intent)
if ("help")
if (I_HELP)
help_shake_act(M)
if ("grab")
if (M == src || anchored)
return
var/obj/item/weapon/grab/G = new /obj/item/weapon/grab(M, src )
M.put_in_active_hand(G)
G.synch()
LAssailant = M
playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
visible_message("<span class='warning'>[M] has grabbed [src] passively!</span>")
if (I_GRAB)
grabbedby(M)
else
M.do_attack_animation(src)
@@ -216,7 +205,7 @@
switch(M.a_intent)
if ("help")
if (I_HELP)
sleeping = max(0,sleeping-5)
resting = 0
AdjustParalysis(-3)
@@ -8,10 +8,6 @@
w_class = 3
origin_tech = "biotech=3"
var/list/construction_cost = list("metal"=1000,"glass"=500)
var/construction_time = 75
//these vars are so the mecha fabricator doesn't shit itself anymore. --NEO
req_access = list(access_robotics)
//Revised. Brainmob is now contained directly within object of transfer. MMI in this case.
@@ -4,10 +4,8 @@
icon = 'icons/obj/assemblies.dmi'
icon_state = "posibrain"
w_class = 3
origin_tech = "engineering=4;materials=4;bluespace=2;programming=4"
origin_tech = "biotech=3;programming=2"
construction_cost = list("metal"=500,"glass"=500,"silver"=200,"gold"=200,"plasma"=100,"diamond"=10)
construction_time = 75
var/searching = 0
var/askDelay = 10 * 60 * 1
//var/mob/living/carbon/brain/brainmob = null
+18 -16
View File
@@ -181,7 +181,7 @@
return
//BubbleWrap: people in handcuffs are always switched around as if they were on 'help' intent to prevent a person being pulled from being seperated from their puller
if((tmob.a_intent == "help" || tmob.restrained()) && (a_intent == "help" || src.restrained()) && tmob.canmove && !tmob.buckled && canmove) // mutual brohugs all around!
if((tmob.a_intent == I_HELP || tmob.restrained()) && (a_intent == I_HELP || src.restrained()) && tmob.canmove && !tmob.buckled && canmove) // mutual brohugs all around!
var/turf/oldloc = loc
loc = tmob.loc
tmob.loc = oldloc
@@ -244,6 +244,8 @@
stat(null, eta_status)
if (client.statpanel == "Status")
if(locate(/obj/item/device/assembly/health) in src)
stat(null, "Health: [health]")
if (internal)
if (!internal.air_contents)
qdel(internal)
@@ -414,7 +416,7 @@
/mob/living/carbon/human/attack_larva(mob/living/carbon/alien/larva/L as mob)
switch(L.a_intent)
if("help")
if(I_HELP)
visible_message("<span class='notice'>[L] rubs its head against [src].</span>")
@@ -431,7 +433,7 @@
var/armor_block = run_armor_check(affecting, "melee")
apply_damage(damage, BRUTE, affecting, armor_block)
/mob/living/carbon/human/proc/is_loyalty_implanted()
/mob/living/carbon/human/proc/is_loyalty_implanted()
for(var/L in contents)
if(istype(L, /obj/item/weapon/implant/loyalty))
for(var/obj/item/organ/external/O in organs)
@@ -694,7 +696,7 @@
// if looting pockets with gloves, do it quietly
if(href_list["pockets"])
if(isanimal(usr))
if(isanimal(usr))
return //animals cannot strip people
if(frozen)
@@ -726,19 +728,19 @@
// Update strip window
if(usr.machine == src && in_range(src, usr))
show_inv(usr)
else if(!pickpocket)
// Display a warning if the user mocks up
src << "<span class='warning'>You feel your [pocket_side] pocket being fumbled with!</span>"
// if looting id with gloves, do it quietly - this allows pickpocket gloves to take/place id stealthily - Bone White
if(href_list["item"])
if(isanimal(usr))
if(isanimal(usr))
return //animals cannot strip people
if(frozen)
usr << "\red Do not attempt to strip frozen people."
return
return
var/itemTarget = href_list["item"]
if(itemTarget == "id")
if(pickpocket)
@@ -1158,7 +1160,7 @@
if(!fail_msg)
fail_msg = "There is no exposed flesh or thin material [target_zone == "head" ? "on their head" : "on their body"] to inject into."
user << "<span class='alert'>[fail_msg]</span>"
/mob/living/carbon/human/proc/check_has_mouth()
// Todo, check stomach organ when implemented.
var/obj/item/organ/external/head/H = get_organ("head")
@@ -1170,7 +1172,7 @@
if(stat==DEAD)return
if(!check_has_mouth())
return
return
if(!lastpuke)
lastpuke = 1
@@ -1517,16 +1519,16 @@
W.add_fingerprint(src)
// Allows IPC's to change their monitor display
// Allows IPC's to change their monitor display
/mob/living/carbon/human/proc/change_monitor()
set category = "IC"
set category = "IC"
set name = "Change Monitor Display"
set desc = "Change the display on your monitor."
if(stat || paralysis || stunned || weakened)
src << "<span class='warning'>You cannot change your monitor display in your current state.</span>"
return
return
var/list/hair = list()
for(var/i in hair_styles_list)
var/datum/sprite_accessory/hair/tmp_hair = hair_styles_list[i]
@@ -1540,7 +1542,7 @@
h_style = new_style
update_hair()
//Putting a couple of procs here that I don't know where else to dump.
//Mostly going to be used for Vox and Vox Armalis, but other human mobs might like them (for adminbuse).
/mob/living/carbon/human/proc/leap()
@@ -4,12 +4,12 @@
return 0
switch(M.a_intent)
if ("help")
if (I_HELP)
visible_message(text("\blue [M] caresses [src] with its scythe like arm."))
if ("grab")
if (I_GRAB)
grabbedby(M)
if("harm")
if(I_HARM)
M.do_attack_animation(src)
if (w_uniform)
w_uniform.add_fingerprint(M)
@@ -30,7 +30,7 @@
apply_effect(4, WEAKEN, armor_block)
updatehealth()
if("disarm")
if(I_DISARM)
M.do_attack_animation(src)
var/randn = rand(1, 100)
if (randn <= 80)
@@ -58,7 +58,7 @@
species.handle_attack_hand(src,M)
switch(M.a_intent)
if("help")
if(I_HELP)
if(health >= config.health_threshold_crit)
help_shake_act(M)
add_logs(src, M, "shaked")
@@ -88,14 +88,14 @@
add_logs(src, M, "CPRed")
return 1
if("grab")
if(I_GRAB)
if(attacker_style && attacker_style.grab_act(H, src))
return 1
else
src.grabbedby(M)
return 1
if("harm")
if(I_HARM)
if(attacker_style && attacker_style.harm_act(H, src))
return 1
else
@@ -163,7 +163,7 @@
forcesay(hit_appends)
if("disarm")
if(I_DISARM)
if(attacker_style && attacker_style.disarm_act(H, src))
return 1
else
@@ -35,10 +35,10 @@ emp_act
if(check_shields(P.damage, "the [P.name]", P))
P.on_hit(src, 100, def_zone)
return 2
var/obj/item/organ/external/organ = get_organ(check_zone(def_zone))
if(isnull(organ))
return
return
//Shrapnel
if (P.damage_type == BRUTE)
@@ -221,7 +221,7 @@ emp_act
/mob/living/carbon/human/proc/attacked_by(var/obj/item/I, var/mob/living/user, var/def_zone)
if(!I || !user) return 0
if((istype(I, /obj/item/weapon/butch/meatcleaver) || istype(I, /obj/item/weapon/twohanded/chainsaw)) && src.stat == DEAD && user.a_intent == "harm")
if((istype(I, /obj/item/weapon/butch/meatcleaver) || istype(I, /obj/item/weapon/twohanded/chainsaw)) && src.stat == DEAD && user.a_intent == I_HARM)
var/obj/item/weapon/reagent_containers/food/snacks/meat/human/newmeat = new /obj/item/weapon/reagent_containers/food/snacks/meat/human(get_turf(src.loc))
newmeat.name = src.real_name + newmeat.name
newmeat.subjectname = src.real_name
@@ -465,7 +465,7 @@ emp_act
if(penetrated_dam) SS.create_breaches(damtype, penetrated_dam)
/mob/living/carbon/human/mech_melee_attack(obj/mecha/M)
if(M.occupant.a_intent == "harm")
if(M.occupant.a_intent == I_HARM)
if(M.damtype == "brute")
step_away(src,M,15)
var/obj/item/organ/external/affecting = get_organ(pick("chest", "chest", "chest", "head"))
@@ -493,7 +493,7 @@ emp_act
attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been attacked by \the [M] controlled by [key_name(M.occupant)] (INTENT: [uppertext(M.occupant.a_intent)])</font>")
M.occupant.attack_log += text("\[[time_stamp()]\] <font color='red'>Attacked [src] with \the [M] (INTENT: [uppertext(M.occupant.a_intent)])</font>")
msg_admin_attack("[key_name_admin(M.occupant)] attacked [key_name_admin(src)] with \the [M] (INTENT: [uppertext(M.occupant.a_intent)])")
else
..()
@@ -30,7 +30,8 @@
var/b_type = "A+" //Player's bloodtype
var/underwear = "Nude" //Which underwear the player wants
var/undershirt = "Nude" //Which undershirt the player wants.
var/undershirt = "Nude" //Which undershirt the player wants
var/socks = "Nude" //Which socks the player wants
var/backbag = 2 //Which backpack type the player has chosen. Nothing, Satchel or Backpack.
//Equipment slots
@@ -51,7 +51,7 @@
C << "<span class='danger'>It feels like part of you has died.</span>"
/datum/species/wryn/handle_attack_hand(var/mob/living/carbon/human/H, var/mob/living/carbon/human/M)
if(M.a_intent == "harm")
if(M.a_intent == I_HARM)
if(H.handcuffed)
if(!(locate(H.internal_organs_by_name["antennae"]) in H.internal_organs)) return
var/turf/p_loc = M.loc
@@ -327,6 +327,13 @@ var/global/list/damage_icon_parts = list()
if(U2)
stand_icon.Blend(new /icon(U2.icon, "us_[U2.icon_state]_s"), ICON_OVERLAY)
if(socks)
var/datum/sprite_accessory/socks/U3 = socks_list[socks]
if(U3)
stand_icon.Blend(new /icon(U3.icon, "sk_[U3.icon_state]_s"), ICON_OVERLAY)
if(update_icons)
update_icons()
@@ -270,7 +270,7 @@
switch(L.a_intent)
if("help")
if(I_HELP)
visible_message("<span class='notice'>[L] rubs its head against [src].</span>")
@@ -366,22 +366,11 @@
switch(M.a_intent)
if ("help")
if (I_HELP)
help_shake_act(M)
if ("grab")
if (M == src || anchored)
return
var/obj/item/weapon/grab/G = new /obj/item/weapon/grab(M, src)
M.put_in_active_hand(G)
G.synch()
LAssailant = M
playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
visible_message("<span class='warning'>[M] has grabbed [src] passively!</span>")
if (I_GRAB)
grabbedby(M)
else
M.do_attack_animation(src)
@@ -427,10 +416,10 @@
return
switch(M.a_intent)
if ("help")
if (I_HELP)
visible_message("<span class='notice'>[M] caresses [src] with its scythe like arm.</span>")
if ("harm")
if (I_HARM)
M.do_attack_animation(src)
if (prob(95))
attacked += 10
@@ -450,21 +439,10 @@
visible_message("<span class='danger'>[M] has attempted to lunge at [name]!</span>", \
"<span class='userdanger'>[M] has attempted to lunge at [name]!</span>")
if ("grab")
if (M == src || anchored)
return
var/obj/item/weapon/grab/G = new /obj/item/weapon/grab(M, src )
if (I_GRAB)
grabbedby(M)
M.put_in_active_hand(G)
G.synch()
LAssailant = M
playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
visible_message("<span class='warning'> [M] has grabbed [name] passively!</span>")
if ("disarm")
if (I_DISARM)
M.do_attack_animation(src)
playsound(loc, 'sound/weapons/pierce.ogg', 25, 1, -1)
var/damage = 5
+3 -3
View File
@@ -146,7 +146,7 @@
src.pinned += O
/mob/living/mech_melee_attack(obj/mecha/M)
if(M.occupant.a_intent == "harm")
if(M.occupant.a_intent == I_HARM)
if(M.damtype == "brute")
step_away(src,M,15)
switch(M.damtype)
@@ -168,9 +168,9 @@
attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been attacked by \the [M] controlled by [key_name(M.occupant)] (INTENT: [uppertext(M.occupant.a_intent)])</font>")
M.occupant.attack_log += text("\[[time_stamp()]\] <font color='red'>Attacked [src] with \the [M] (INTENT: [uppertext(M.occupant.a_intent)])</font>")
msg_admin_attack("[key_name_admin(M.occupant)] attacked [key_name_admin(src)] with \the [M] (INTENT: [uppertext(M.occupant.a_intent)])")
else
step_away(src,M)
add_logs(M.occupant, src, "pushed", object=M, admin=0)
M.occupant_message("<span class='warning'>You push [src] out of the way.</span>")
+3 -3
View File
@@ -91,7 +91,7 @@ var/list/ai_verbs_default = list(
/mob/living/silicon/ai/proc/add_ai_verbs()
src.verbs |= ai_verbs_default
src.verbs |= silicon_subsystems
/mob/living/silicon/ai/proc/remove_ai_verbs()
src.verbs -= ai_verbs_default
src.verbs -= silicon_subsystems
@@ -551,7 +551,7 @@ var/list/ai_verbs_default = list(
switch(M.a_intent)
if ("help")
if (I_HELP)
visible_message("<span class='notice'>[M] caresses [src]'s plating with its scythe like arm.</span>")
else //harm
@@ -960,7 +960,7 @@ var/list/ai_verbs_default = list(
/mob/living/silicon/ai/proc/is_in_chassis()
return istype(loc, /turf)
/mob/living/silicon/ai/transfer_ai(var/interaction, var/mob/user, var/mob/living/silicon/ai/AI, var/obj/item/device/aicard/card)
if(!..())
return
@@ -338,7 +338,7 @@ They can only use one tool at a time, they can't choose modules, and they have 1
if(ishuman(user))
if(user.a_intent == "help")
if(user.a_intent == I_HELP)
user.visible_message("\blue [user.name] pats [src.name] on the head.")
return
@@ -346,7 +346,7 @@ They can only use one tool at a time, they can't choose modules, and they have 1
if(!istype(user, /mob/living/silicon))
switch(user.a_intent)
if("disarm")
if(I_DISARM)
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Disarmed [src.name] ([src.ckey])</font>")
src.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been disarmed by [user.name] ([user.ckey])</font>")
log_admin("ATTACK: [user.name] ([user.ckey]) disarmed [src.name] ([src.ckey])")
+4 -4
View File
@@ -231,7 +231,7 @@
switch(M.a_intent)
if ("help")
if (I_HELP)
for(var/mob/O in viewers(src, null))
if ((O.client && !( O.blinded )))
O.show_message(text("\blue [M] caresses [src]'s casing with its scythe like arm."), 1)
@@ -281,7 +281,7 @@
medicalActive2 = null
medical_cannotfind = 0
nanomanager.update_uis(src)
usr << "<span class='notice'>You reset your record-viewing software.</span>"
usr << "<span class='notice'>You reset your record-viewing software.</span>"
/mob/living/silicon/pai/cancel_camera()
set category = "pAI Commands"
@@ -554,12 +554,12 @@
/mob/living/silicon/pai/MouseDrop(atom/over_object)
var/mob/living/carbon/H = over_object
if(!istype(H) || !Adjacent(H)) return ..()
if(H.a_intent == "help")
if(H.a_intent == I_HELP)
get_scooped(H)
//return
else
return ..()
/mob/living/silicon/pai/on_forcemove(atom/newloc)
if(card)
card.loc = newloc
@@ -135,8 +135,6 @@
/obj/item/robot_parts/robot_component
icon = 'icons/obj/robot_component.dmi'
icon_state = "working"
construction_time = 200
construction_cost = list("metal"=5000)
var/brute = 0
var/burn = 0
@@ -190,7 +188,7 @@
user << "<span class='notice'>Key: Suffocation/Toxin/Burns/Brute</span>"
user << "<span class='notice'>Body Temperature: ???</span>"
return
var/scan_type
if(istype(M, /mob/living/silicon/robot))
scan_type = "robot"
@@ -253,5 +251,5 @@
user << "[capitalize(O.name)]: <font color='red'>[O.damage]</font>"
if(!organ_found)
user << "<span class='warning'>No prosthetics located.</span>"
src.add_fingerprint(user)
@@ -45,7 +45,7 @@
//Actual picking-up event.
/mob/living/silicon/robot/drone/attack_hand(mob/living/carbon/human/M as mob)
if(M.a_intent == "help")
if(M.a_intent == I_HELP)
get_scooped(M)
..()
+18 -26
View File
@@ -73,11 +73,11 @@ var/list/robot_verbs_default = list(
var/braintype = "Cyborg"
var/base_icon = ""
var/crisis = 0
var/lamp_max = 10 //Maximum brightness of a borg lamp. Set as a var for easy adjusting.
var/lamp_intensity = 0 //Luminosity of the headlamp. 0 is off. Higher settings than the minimum require power.
var/lamp_recharging = 0 //Flag for if the lamp is on cooldown after being forcibly disabled.
var/jetpackoverlay = 0
var/magpulse = 0
@@ -163,8 +163,8 @@ var/list/robot_verbs_default = list(
/mob/living/silicon/robot/SetName(pickedName as text)
custom_name = pickedName
updatename()
updatename()
/mob/living/silicon/robot/proc/sync()
if(lawupdate && connected_ai)
lawsync()
@@ -578,8 +578,8 @@ var/list/robot_verbs_default = list(
return
if (istype(W, /obj/item/weapon/weldingtool) && user.a_intent == "help")
if(W == module_active)
if (istype(W, /obj/item/weapon/weldingtool) && user.a_intent == I_HELP)
if(W == module_active)
return
if (!getBruteLoss())
user << "<span class='notice'>Nothing to fix!</span>"
@@ -597,7 +597,7 @@ var/list/robot_verbs_default = list(
return
else if(istype(W, /obj/item/stack/cable_coil) && user.a_intent == "help" && (wiresexposed || istype(src,/mob/living/silicon/robot/drone)))
else if(istype(W, /obj/item/stack/cable_coil) && user.a_intent == I_HELP && (wiresexposed || istype(src,/mob/living/silicon/robot/drone)))
if (!getFireLoss())
user << "<span class='notice'>Nothing to fix!</span>"
return
@@ -825,23 +825,15 @@ var/list/robot_verbs_default = list(
switch(M.a_intent)
if ("help")
if (I_HELP)
for(var/mob/O in viewers(src, null))
if ((O.client && !( O.blinded )))
O.show_message(text("<span class='notice'>[M] caresses [src]'s plating with its scythe like arm.</span>"), 1)
if ("grab")
if (M == src || anchored)
return
var/obj/item/weapon/grab/G = new /obj/item/weapon/grab(M, src )
if (I_GRAB)
grabbedby(M)
M.put_in_active_hand(G)
G.synch()
playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
visible_message("<span class='danger'>[M] has grabbed [src] passively!</span>")
if ("harm")
if (I_HARM)
M.do_attack_animation(src)
var/damage = rand(10, 20)
if (prob(90))
@@ -857,7 +849,7 @@ var/list/robot_verbs_default = list(
visible_message("<span class='danger'>[M] took a swipe at [src]!</span>", \
"<span class='userdanger'>[M] took a swipe at [src]!</span>")
if ("disarm")
if (I_DISARM)
if(!(lying))
M.do_attack_animation(src)
if (prob(85))
@@ -923,7 +915,7 @@ var/list/robot_verbs_default = list(
update_icons()
if(!opened && (!istype(user, /mob/living/silicon)))
if (user.a_intent == "help")
if (user.a_intent == I_HELP)
user.visible_message("<span class='notice'>[user] pets [src]!</span>", \
"<span class='notice'>You pet [src]!</span>")
@@ -986,7 +978,7 @@ var/list/robot_verbs_default = list(
icon_state = "[base_icon]-roll"
else
icon_state = base_icon
if(jetpackoverlay)
overlays += "minerjetpack-[icon_state]"
update_fire()
@@ -1124,7 +1116,7 @@ var/list/robot_verbs_default = list(
if(lamp_button)
lamp_button.icon_state = "lamp[lamp_intensity]"
update_icons()
update_icons()
/mob/living/silicon/robot/Move(a, b, flag)
@@ -1188,7 +1180,7 @@ var/list/robot_verbs_default = list(
// Instead of being listed as "deactivated". The downside is that I'm going
// to have to check if every camera is null or not before doing anything, to prevent runtime errors.
// I could change the network to null but I don't know what would happen, and it seems too hacky for me.
/mob/living/silicon/robot/proc/ResetSecurityCodes()
set category = "Robot Commands"
set name = "Reset Identity Codes"
@@ -1368,7 +1360,7 @@ var/list/robot_verbs_default = list(
connected_ai << "<br><br><span class='notice'>NOTICE - Cyborg module change detected: [name] has loaded the [designation] module.</span><br>"
if(3) //New Name
connected_ai << "<br><br><span class='notice'>NOTICE - Cyborg reclassification detected: [oldname] is now designated as [newname].</span><br>"
/mob/living/silicon/robot/proc/disconnect_from_ai()
if(connected_ai)
sync() // One last sync attempt
@@ -1381,4 +1373,4 @@ var/list/robot_verbs_default = list(
connected_ai = AI
connected_ai.connected_robots |= src
notify_ai(1)
sync()
sync()
@@ -42,7 +42,7 @@
icon_living = "brainslug"
icon_dead = "brainslug_dead"
speed = 5
a_intent = "harm"
a_intent = I_HARM
stop_automated_movement = 1
status_flags = CANPUSH
attacktext = "nips"
@@ -10,7 +10,7 @@
response_harm = "punches"
icon_dead = "shade_dead"
speed = 0
a_intent = "harm"
a_intent = I_HARM
stop_automated_movement = 1
status_flags = CANPUSH
attack_sound = 'sound/weapons/punch1.ogg'
@@ -595,8 +595,8 @@
/mob/living/simple_animal/pet/corgi/attack_hand(mob/living/carbon/human/M)
. = ..()
switch(M.a_intent)
if("help") wuv(1,M)
if("harm") wuv(-1,M)
if(I_HELP) wuv(1,M)
if(I_HARM) wuv(-1,M)
/mob/living/simple_animal/pet/corgi/proc/wuv(change, mob/M)
if(change)
@@ -50,7 +50,7 @@
/mob/living/simple_animal/diona/attack_hand(mob/living/carbon/human/M as mob)
//Let people pick the little buggers up.
if(M.a_intent == "help")
if(M.a_intent == I_HELP)
if(M.species && M.species.name == "Diona")
M << "You feel your being twine with that of [src] as it merges with your biomass."
src << "You feel your being twine with that of [M] as you merge with its biomass."
@@ -137,7 +137,7 @@
milk_content = min(50, milk_content+rand(5, 10))
/mob/living/simple_animal/cow/attack_hand(mob/living/carbon/M as mob)
if(!stat && M.a_intent == "disarm" && icon_state != icon_dead)
if(!stat && M.a_intent == I_DISARM && icon_state != icon_dead)
M.visible_message("<span class='warning'>[M] tips over [src].</span>","<span class='notice'>You tip over [src].</span>")
Weaken(30)
icon_state = icon_dead
@@ -19,7 +19,7 @@
melee_damage_upper = 25
attacktext = "slashes"
speak_emote = list("hisses")
a_intent = "harm"
a_intent = I_HARM
attack_sound = 'sound/weapons/bladeslice.ogg'
min_oxy = 0
max_oxy = 0
@@ -17,7 +17,7 @@
response_disarm = "shoves"
response_harm = "strikes"
status_flags = 0
a_intent = "harm"
a_intent = I_HARM
var/throw_message = "bounces off of"
var/icon_aggro = null // for swapping to when we get aggressive
see_in_dark = 8
@@ -73,7 +73,7 @@
melee_damage_lower = 12
melee_damage_upper = 12
attacktext = "bites into"
a_intent = "harm"
a_intent = I_HARM
speak_emote = list("chitters")
attack_sound = 'sound/weapons/bladeslice.ogg'
ranged_cooldown_cap = 4
@@ -140,7 +140,7 @@
melee_damage_upper = 0
attacktext = "barrels into"
attack_sound = 'sound/weapons/punch1.ogg'
a_intent = "help"
a_intent = I_HELP
speak_emote = list("screeches")
throw_message = "sinks in slowly, before being pushed out of "
status_flags = CANPUSH
@@ -138,7 +138,7 @@
/mob/living/simple_animal/hostile/mushroom/attack_hand(mob/living/carbon/human/M as mob)
..()
if(M.a_intent == "harm")
if(M.a_intent == I_HARM)
Bruise()
/mob/living/simple_animal/hostile/mushroom/hitby(atom/movable/AM)
@@ -13,7 +13,7 @@
speak = list("HONK", "Honk!", "Welcome to clown planet!")
emote_see = list("honks")
speak_chance = 1
a_intent = "harm"
a_intent = I_HARM
maxHealth = 75
health = 75
speed = 0
@@ -15,7 +15,7 @@
response_harm = "hits the"
speak = list("ALERT.","Hostile-ile-ile entities dee-twhoooo-wected.","Threat parameterszzzz- szzet.","Bring sub-sub-sub-systems uuuup to combat alert alpha-a-a.")
emote_see = list("beeps menacingly","whirrs threateningly","scans its immediate vicinity")
a_intent = "harm"
a_intent = I_HARM
stop_automated_movement_when_pulled = 0
health = 300
maxHealth = 300
@@ -18,7 +18,7 @@
melee_damage_upper = 15
attacktext = "punches"
attack_sound = 'sound/weapons/punch1.ogg'
a_intent = "harm"
a_intent = I_HARM
var/corpse = /obj/effect/landmark/mobcorpse/russian
var/weapon1 = /obj/item/weapon/kitchenknife
min_oxy = 5
@@ -30,7 +30,7 @@
max_co2 = 0
max_tox = 0
a_intent = "harm" //so they don't get pushed around
a_intent = I_HARM //so they don't get pushed around
environment_smash = 1
@@ -8,7 +8,7 @@
icon_living = "angelseen"
icon_dead = "angelseen"
gender = NEUTER
a_intent = "harm"
a_intent = I_HARM
response_help = "touches"
response_disarm = "pushes"
@@ -18,7 +18,7 @@
melee_damage_upper = 10
attacktext = "punches"
attack_sound = 'sound/weapons/punch1.ogg'
a_intent = "harm"
a_intent = I_HARM
var/corpse = /obj/effect/landmark/mobcorpse/syndicatesoldier
var/weapon1
var/weapon2
@@ -87,9 +87,9 @@
return
/mob/living/simple_animal/Life()
if(paralysis || stunned || weakened || buckled || resting)
if(paralysis || stunned || weakened || buckled || resting)
canmove = 0
else
else
canmove = 1
//Health
@@ -107,7 +107,7 @@
if(health > maxHealth)
health = maxHealth
if(resting && icon_resting && stat != DEAD)
icon_state = icon_resting
else if(icon_resting && stat != DEAD)
@@ -292,12 +292,12 @@
switch(M.a_intent)
if("help")
if(I_HELP)
if (health > 0)
visible_message("<span class='notice'> [M] [response_help] [src].</span>")
playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
if("grab")
if(I_GRAB)
if (M == src || anchored)
return
if (!(status_flags & CANPUSH))
@@ -314,7 +314,7 @@
visible_message("<span class='warning'>[M] has grabbed [src] passively!</span>")
playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
if("harm", "disarm")
if(I_HARM, I_DISARM)
M.do_attack_animation(src)
visible_message("<span class='danger'>[M] [response_harm] [src]!</span>")
playsound(loc, "punch", 25, 1, -1)
@@ -326,26 +326,13 @@
switch(M.a_intent)
if ("help")
if (I_HELP)
visible_message("<span class='notice'>[M] caresses [src] with its scythe like arm.</span>")
if ("grab")
if(M == src || anchored)
return
if(!(status_flags & CANPUSH))
return
if (I_GRAB)
grabbedby(M)
var/obj/item/weapon/grab/G = new /obj/item/weapon/grab(M, src )
M.put_in_active_hand(G)
G.synch()
LAssailant = M
playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
visible_message("<span class='warning'>[M] has grabbed [src] passively!</span>")
if("harm", "disarm")
if(I_HARM, I_DISARM)
M.do_attack_animation(src)
var/damage = rand(15, 30)
visible_message("<span class='danger'>[M] has slashed at [src]!</span>", \
@@ -358,7 +345,7 @@
/mob/living/simple_animal/attack_larva(mob/living/carbon/alien/larva/L as mob)
switch(L.a_intent)
if("help")
if(I_HELP)
visible_message("<span class='notice'>[L] rubs its head against [src].</span>")
@@ -4,6 +4,7 @@
name = "Slaughter Demon"
real_name = "Slaughter Demon"
desc = "You should run."
speak = list("ire", "ego", "nahlizet", "certum", "veri", "jatkaa", "balaq", "mgar", "karazet", "geeri", "orkan", "allaq")
speak_emote = list("gurgles")
emote_hear = list("wails","screeches")
response_help = "thinks better of touching"
@@ -13,7 +14,7 @@
icon_state = "daemon"
icon_living = "daemon"
speed = 1
a_intent = "harm"
a_intent = I_HARM
stop_automated_movement = 1
status_flags = CANPUSH
attack_sound = 'sound/misc/demon_attack1.ogg'
@@ -76,7 +77,7 @@
/mob/living/simple_animal/slaughter/Life()
..()
if(boost<world.time)
speed = 1
speed = 2
else
speed = 0
@@ -98,8 +99,6 @@
speed = 0
boost = world.time + 30
/mob/living/simple_animal/slaughter/say(message)
return 0
////////////////////The Powers
//Paradise Port:I added this cuase..SPOOPY DEMON IN YOUR BRAIN
@@ -122,7 +121,7 @@
return
log_say("Slaughter Demon Transmit: [key_name(usr)]->[key_name(M)]: [msg]")
usr << "<span class='info'><b>You whisper to [M]: </b>[msg]</span>"
M << "<span class='deadsay'><b>Suddenly a strange, demonic voice resonates in your head... </b></span><i><span class='danger'> [msg]</span></I>"
M << "<span class='deadsay'><b>Suddenly a strange, demonic voice resonates in your head... </b></span><i><span class='danger'> [msg]</span></I>"
for(var/mob/dead/observer/G in player_list)
G.show_message("<i>Demonic message from <b>[usr]</b> ([ghost_follow_link(usr, ghost=G)]) to <b>[M]</b> ([ghost_follow_link(M, ghost=G)]): [msg]</i>")
+1 -1
View File
@@ -114,7 +114,7 @@
var/losebreath = 0.0//Carbon
var/intent = null//Living
var/shakecamera = 0
var/a_intent = "help"//Living
var/a_intent = I_HELP//Living
var/m_int = null//Living
var/m_intent = "run"//Living
var/lastKnownIP = null
+4 -4
View File
@@ -316,7 +316,7 @@
var/mob/living/carbon/human/affected = affecting
var/mob/living/carbon/human/attacker = assailant
switch(assailant.a_intent)
if("help")
if(I_HELP)
/*if(force_down)
assailant << "<span class='warning'>You no longer pin [affecting] to the ground.</span>"
force_down = 0
@@ -324,10 +324,10 @@
//This specific example would allow you to stop pinning people to the floor without moving away from them.
return
if("grab")
if(I_GRAB)
return
if("harm") //This checks that the user is on harm intent.
if(I_HARM) //This checks that the user is on harm intent.
if(last_hit_zone == "head") //This checks the hitzone the user has selected. In this specific case, they have the head selected.
if(affecting.lying)
return
@@ -367,7 +367,7 @@
M << "\red You go blind!"*///This is a demonstration of adding a new damaging type based on intent as well as hitzone.
//This specific example would allow you to squish people's eyes with a GRAB_NECK.
if("disarm") //This checks that the user is on disarm intent.
if(I_DISARM) //This checks that the user is on disarm intent.
/* if(state < GRAB_AGGRESSIVE)
assailant << "<span class='warning'>You require a better grab to do this.</span>"
return
+19 -20
View File
@@ -96,7 +96,7 @@ proc/isembryo(A)
if(istype(A, /mob/living/silicon/ai))
return 1
return 0
/mob/proc/isSynthetic()
return 0
@@ -174,17 +174,17 @@ proc/isAntag(A)
if(C.mind && C.mind.special_role)
return 1
return 0
proc/isNonCrewAntag(A)
if(!isAntag(A))
return 0
var/mob/living/carbon/C = A
var/special_role = C.mind.special_role
var/list/crew_roles = list("traitor", "Changeling", "Vampire", "Cultist", "Head Revolutionary", "Revolutionary", "malfunctioning AI", "Shadowling", "loyalist", "mutineer", "Response Team")
if((special_role in crew_roles))
return 0
return 1
proc/isnewplayer(A)
@@ -394,20 +394,20 @@ proc/Gibberish(t, p)//t is the inputted message, and any value higher than 70 fo
return 0
//converts intent-strings into numbers and back
var/list/intents = list("help","disarm","grab","harm")
var/list/intents = list(I_HELP,I_DISARM,I_GRAB,I_HARM)
/proc/intent_numeric(argument)
if(istext(argument))
switch(argument)
if("help") return 0
if("disarm") return 1
if("grab") return 2
if(I_HELP) return 0
if(I_DISARM) return 1
if(I_GRAB) return 2
else return 3
else
switch(argument)
if(0) return "help"
if(1) return "disarm"
if(2) return "grab"
else return "harm"
if(0) return I_HELP
if(1) return I_DISARM
if(2) return I_GRAB
else return I_HARM
//change a mob's act-intent. Input the intent as a string such as "help" or use "right"/"left
/mob/verb/a_intent_change(input as text)
@@ -416,7 +416,7 @@ var/list/intents = list("help","disarm","grab","harm")
if(ishuman(src) || isalienadult(src) || isbrain(src))
switch(input)
if("help","disarm","grab","harm")
if(I_HELP,I_DISARM,I_GRAB,I_HARM)
a_intent = input
if("right")
a_intent = intent_numeric((intent_numeric(a_intent)+1) % 4)
@@ -427,14 +427,14 @@ var/list/intents = list("help","disarm","grab","harm")
else if(isrobot(src) || islarva(src))
switch(input)
if("help")
a_intent = "help"
if("harm")
a_intent = "harm"
if(I_HELP)
a_intent = I_HELP
if(I_HARM)
a_intent = I_HARM
if("right","left")
a_intent = intent_numeric(intent_numeric(a_intent) - 3)
if(hud_used && hud_used.action_intent)
if(a_intent == "harm")
if(a_intent == I_HARM)
hud_used.action_intent.icon_state = "harm"
else
hud_used.action_intent.icon_state = "help"
@@ -527,7 +527,7 @@ var/list/intents = list("help","disarm","grab","harm")
O << "<span class='ghostalert'>[message]<span>"
if(ghost_sound)
O << sound(ghost_sound)
/mob/proc/switch_to_camera(var/obj/machinery/camera/C)
if (!C.can_use() || stat || (get_dist(C, src) > 1 || machine != src || blinded || !canmove))
return 0
@@ -541,4 +541,3 @@ var/list/intents = list("help","disarm","grab","harm")
eyeobj.setLoc(get_turf(C))
client.eye = eyeobj
return 1
@@ -7,6 +7,7 @@ datum/preferences
gender = pick(MALE, FEMALE)
underwear = random_underwear(gender)
undershirt = random_undershirt(gender)
socks = random_socks(gender)
if(species == "Human")
s_tone = random_skin_tone()
h_style = random_hair_style(gender, species)
@@ -264,6 +265,12 @@ datum/preferences
if(U2)
undershirt_s = new/icon(U2.icon, "[U2.icon_state]_s", ICON_OVERLAY)
var/icon/socks_s = null
if(socks)
var/datum/sprite_accessory/socks/U3 = socks_list[socks]
if(U3)
socks_s = new/icon(U3.icon, "[U3.icon_state]_s", ICON_OVERLAY)
var/icon/clothes_s = null
var/uniform_dmi='icons/mob/uniform.dmi'
if(disabilities&DISABILITY_FLAG_FAT)
@@ -792,6 +799,8 @@ datum/preferences
preview_icon.Blend(underwear_s, ICON_OVERLAY)
if(undershirt_s)
preview_icon.Blend(undershirt_s, ICON_OVERLAY)
if(socks_s)
preview_icon.Blend(socks_s, ICON_OVERLAY)
if(clothes_s)
preview_icon.Blend(clothes_s, ICON_OVERLAY)
preview_icon_front = new(preview_icon, dir = SOUTH)
@@ -800,4 +809,5 @@ datum/preferences
del(eyes_s)
del(underwear_s)
del(undershirt_s)
del(socks_s)
del(clothes_s)
@@ -1260,4 +1260,193 @@
name = "Fire Tank-Top"
icon_state = "tank_fire"
gender = NEUTER
//end tanktops
//end tanktops
///////////////////////
// Socks Definitions //
///////////////////////
/datum/sprite_accessory/socks
icon = 'icons/mob/underwear.dmi'
/datum/sprite_accessory/socks/nude
name = "Nude"
icon_state = null
gender = NEUTER
species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpakanin","Slime People","Skellington")
/datum/sprite_accessory/socks/white_norm
name = "Normal White"
icon_state = "white_norm"
gender = NEUTER
species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpakanin","Slime People","Skellington")
/datum/sprite_accessory/socks/black_norm
name = "Normal Black"
icon_state = "black_norm"
gender = NEUTER
species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpakanin","Slime People","Skellington")
/datum/sprite_accessory/socks/white_short
name = "Short White"
icon_state = "white_short"
gender = NEUTER
species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpakanin","Slime People","Skellington")
/datum/sprite_accessory/socks/black_short
name = "Short Black"
icon_state = "black_short"
gender = NEUTER
species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpakanin","Slime People","Skellington")
/datum/sprite_accessory/socks/white_knee
name = "Knee-high White"
icon_state = "white_knee"
gender = NEUTER
species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpakanin","Slime People","Skellington")
/datum/sprite_accessory/socks/black_knee
name = "Knee-high Black"
icon_state = "black_knee"
gender = NEUTER
species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpakanin","Slime People","Skellington")
/datum/sprite_accessory/socks/thin_knee
name = "Knee-high Thin"
icon_state = "thin_knee"
gender = FEMALE
species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpakanin","Slime People","Skellington")
/datum/sprite_accessory/socks/striped_knee
name = "Knee-high Striped"
icon_state = "striped_knee"
gender = NEUTER
species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpakanin","Slime People","Skellington")
/datum/sprite_accessory/socks/rainbow_knee
name = "Knee-high Rainbow"
icon_state = "rainbow_knee"
gender = NEUTER
species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpakanin","Slime People","Skellington")
/datum/sprite_accessory/socks/white_thigh
name = "Thigh-high White"
icon_state = "white_thigh"
gender = NEUTER
species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpakanin","Slime People","Skellington")
/datum/sprite_accessory/socks/black_thigh
name = "Thigh-high Black"
icon_state = "black_thigh"
gender = NEUTER
species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpakanin","Slime People","Skellington")
/datum/sprite_accessory/socks/thin_thigh
name = "Thigh-high Thin"
icon_state = "thin_thigh"
gender = FEMALE
species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpakanin","Slime People","Skellington")
/datum/sprite_accessory/socks/striped_thigh
name = "Thigh-high Striped"
icon_state = "striped_thigh"
gender = NEUTER
species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpakanin","Slime People","Skellington")
/datum/sprite_accessory/socks/rainbow_thigh
name = "Thigh-high Rainbow"
icon_state = "rainbow_thigh"
gender = NEUTER
species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpakanin","Slime People","Skellington")
/datum/sprite_accessory/socks/pantyhose
name = "Pantyhose"
icon_state = "pantyhose"
gender = FEMALE
species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpakanin","Slime People","Skellington")
/datum/sprite_accessory/socks/black_fishnet
name = "Black Fishnet"
icon_state = "black_fishnet"
gender = NEUTER
species_allowed = list("Human","Unathi","Diona","Grey","Machine","Tajaran","Vulpakanin","Slime People","Skellington")
/datum/sprite_accessory/socks/vox_white
name = "Vox White"
icon_state = "vox_white"
gender = NEUTER
species_allowed = list("Vox")
/datum/sprite_accessory/socks/vox_black
name = "Vox Black"
icon_state = "vox_black"
gender = NEUTER
species_allowed = list("Vox")
/datum/sprite_accessory/socks/vox_thin
name = "Vox Black Thin"
icon_state = "vox_blackthin"
gender = NEUTER
species_allowed = list("Vox")
/datum/sprite_accessory/socks/vox_rainbow
name = "Vox Rainbow"
icon_state = "vox_rainbow"
gender = NEUTER
species_allowed = list("Vox")
/datum/sprite_accessory/socks/vox_stripped
name = "Vox Stripped"
icon_state = "vox_white"
gender = NEUTER
species_allowed = list("Vox")
/datum/sprite_accessory/socks/vox_white_thigh
name = "Vox Thigh-high White"
icon_state = "vox_whiteTH"
gender = NEUTER
species_allowed = list("Vox")
/datum/sprite_accessory/socks/vox_black_thigh
name = "Vox Thigh-high Black"
icon_state = "vox_blackTH"
gender = NEUTER
species_allowed = list("Vox")
/datum/sprite_accessory/socks/vox_thin_thigh
name = "Vox Thigh-high Thin"
icon_state = "vox_blackthinTH"
gender = NEUTER
species_allowed = list("Vox")
/datum/sprite_accessory/socks/vox_rainbow_thigh
name = "Vox Thigh-high Rainbow"
icon_state = "vox_rainbowTH"
gender = NEUTER
species_allowed = list("Vox")
/datum/sprite_accessory/socks/vox_stripped_thigh
name = "Vox Thigh-high Stripped"
icon_state = "vox_strippedTH"
gender = NEUTER
species_allowed = list("Vox")
/datum/sprite_accessory/socks/vox_fishnet
name = "Vox Fishnets"
icon_state = "vox_fishnet"
gender = NEUTER
species_allowed = list("Vox")
+5 -9
View File
@@ -40,7 +40,7 @@
O.dna.SetSEValueRange(MONKEYBLOCK,0xDAC, 0xFFF)
O.loc = loc
O.viruses = viruses
O.a_intent = "harm"
O.a_intent = I_HARM
if (client)
@@ -259,7 +259,7 @@
if("Drone")
new_xeno = new /mob/living/carbon/alien/humanoid/drone(loc)
new_xeno.a_intent = "harm"
new_xeno.a_intent = I_HARM
new_xeno.key = key
new_xeno << "<B>You are now an alien.</B>"
@@ -318,7 +318,7 @@
qdel(t)
var/mob/living/simple_animal/pet/corgi/new_corgi = new /mob/living/simple_animal/pet/corgi (loc)
new_corgi.a_intent = "harm"
new_corgi.a_intent = I_HARM
new_corgi.key = key
new_corgi << "<B>You are now a Corgi. Yap Yap!</B>"
@@ -353,7 +353,7 @@
var/mob/new_mob = new mobpath(src.loc)
new_mob.key = key
new_mob.a_intent = "harm"
new_mob.a_intent = I_HARM
new_mob << "You suddenly feel more... animalistic."
@@ -374,7 +374,7 @@
var/mob/new_mob = new mobpath(src.loc)
new_mob.key = key
new_mob.a_intent = "harm"
new_mob.a_intent = I_HARM
new_mob << "You feel more... animalistic"
new_mob.update_pipe_vision()
@@ -470,12 +470,8 @@
return 1
//Antag Creatures!
/* if(ispath(MP, /mob/living/simple_animal/hostile/carp) && !jobban_isbanned(src, "Syndicate"))
return 1 */
if(ispath(MP, /mob/living/simple_animal/borer) && !jobban_isbanned(src, "alien") && !jobban_isbanned(src, "Syndicate"))
return 1
if(ispath(MP, /mob/living/carbon/alien) && !jobban_isbanned(src, "alien") && !jobban_isbanned(src, "Syndicate"))
return 1
if(ispath(MP, /mob/living/simple_animal/hostile/statue) && !jobban_isbanned(src, "Syndicate"))
return 1
+7 -7
View File
@@ -25,7 +25,7 @@ var/list/organ_cache = list()
/obj/item/organ/attack_self(mob/user as mob)
// Convert it to an edible form, yum yum.
if(!robotic && user.a_intent == "harm")
if(!robotic && user.a_intent == I_HARM)
bitten(user)
return
@@ -71,8 +71,8 @@ var/list/organ_cache = list()
//dead already, no need for more processing
if(status & ORGAN_DEAD)
return
return
// Don't process if we're in a freezer, an MMI or a stasis bag. //TODO: ambient temperature?
if(istype(loc,/obj/item/device/mmi) || istype(loc,/obj/item/bodybag/cryobag) || istype(loc,/obj/structure/closet/crate/freezer))
return
@@ -81,7 +81,7 @@ var/list/organ_cache = list()
if ((status & ORGAN_ROBOT) || (owner && owner.species && (owner.species.flags & IS_PLANT)))
germ_level = 0
return
if(!owner)
if(reagents)
var/datum/reagent/blood/B = locate(/datum/reagent/blood) in reagents.reagent_list
@@ -97,16 +97,16 @@ var/list/organ_cache = list()
if(damage >= max_damage)
die()
else if(owner.bodytemperature >= 170) //cryo stops germs from moving and doing their bad stuffs
//** Handle antibiotics and curing infections
handle_antibiotics()
handle_germ_effects()
//check if we've hit max_damage
if(damage >= max_damage)
die()
/obj/item/organ/examine(mob/user)
..(user)
if(status & ORGAN_DEAD)
+1 -1
View File
@@ -21,7 +21,7 @@
w_class = 1.0
throw_speed = 3
throw_range = 7
m_amt = 10
materials = list(MAT_METAL=10)
var/colour = "black" //what colour the ink is!
pressure_resistance = 2
+1 -1
View File
@@ -444,7 +444,7 @@
item_state = "videocam"
w_class = 2.0
slot_flags = SLOT_BELT
m_amt = 2000
materials = list(MAT_METAL=2000)
var/on = 0
var/obj/machinery/camera/camera
var/icon_on = "videocam_on"
+2 -2
View File
@@ -8,7 +8,7 @@
w_class = 1.0
throw_speed = 3
throw_range = 7
m_amt = 60
materials = list(MAT_METAL=60)
_color = "cargo"
pressure_resistance = 2
attack_verb = list("stamped")
@@ -76,7 +76,7 @@
name = "Nanotrasen Representative's rubber stamp"
icon_state = "stamp-cent"
_color = "centcom"
/obj/item/weapon/stamp/syndicate
name = "suspicious rubber stamp"
icon_state = "stamp-syndicate"
+14 -14
View File
@@ -54,7 +54,7 @@
var/areastring = null
var/obj/item/weapon/stock_parts/cell/cell
var/start_charge = 90 // initial cell charge %
var/cell_type = 2500
var/cell_type = 2500
var/opened = 0 //0=closed, 1=opened, 2=cover removed
var/shorted = 0
var/lighting = 3
@@ -99,9 +99,9 @@
var/global/list/status_overlays_lighting
var/global/list/status_overlays_environ
var/indestructible = 0 // If set, prevents aliens from destroying it
var/report_power_alarm = 1
/obj/machinery/power/apc/noalarm
report_power_alarm = 0
@@ -143,7 +143,7 @@
src.update_icon()
spawn(5)
src.update()
/obj/machinery/power/apc/Destroy()
apcs -= src
if(malfai && operating)
@@ -378,7 +378,7 @@
results += 2
return results
// Used in process so it doesn't update the icon too much
// Used in process so it doesn't update the icon too much
/obj/machinery/power/apc/proc/queue_icon_update()
if(!updating_icon)
@@ -644,7 +644,7 @@
//Synthetic human mob goes here.
if(istype(user,/mob/living/carbon/human))
var/mob/living/carbon/human/H = user
if(!isnull(H.internal_organs_by_name["cell"]) && H.a_intent == "grab")
if(!isnull(H.internal_organs_by_name["cell"]) && H.a_intent == I_GRAB)
if(emagged || stat & BROKEN)
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(3, 1, src)
@@ -661,9 +661,9 @@
src.cell.charge = 0
user << "<span class='notice'>You slot your fingers into the APC interface and siphon off some of the stored charge for your own use.</span>"
if(src.cell.charge < 0)
if(src.cell.charge < 0)
src.cell.charge = 0
if(H.nutrition > 500)
if(H.nutrition > 500)
H.nutrition = 500
src.charging = 1
else
@@ -879,7 +879,7 @@
return 1
else
return !locked
/obj/machinery/power/apc/proc/is_locked(mob/user as mob)
if(isobserver(user) && check_rights(R_ADMIN, 0, user))
return 0
@@ -1095,8 +1095,8 @@
//Returns 1 if the APC should attempt to charge
/obj/machinery/power/apc/proc/attempt_charging()
return (chargemode && charging == 1 && operating)
return (chargemode && charging == 1 && operating)
/obj/machinery/power/apc/draw_power(var/amount)
if(terminal && terminal.powernet)
return terminal.powernet.draw_power(amount)
@@ -1258,7 +1258,7 @@
update()
else if (last_ch != charging)
queue_icon_update()
/obj/machinery/power/apc/proc/autoset(var/val, var/on)
if(on==0)
if(val==2) // if on, return off
@@ -1275,7 +1275,7 @@
return 1
return val
// damage and destruction acts
/obj/machinery/power/apc/emp_act(severity)
@@ -1317,7 +1317,7 @@
set_broken()
if (cell && prob(5))
cell.blob_act()
/obj/machinery/power/apc/disconnect_terminal()
if(terminal)
+2 -3
View File
@@ -470,8 +470,7 @@ obj/structure/cable/proc/cableColor(var/colorC)
w_class = 2.0
throw_speed = 2
throw_range = 5
m_amt = 50
g_amt = 20
materials = list(MAT_METAL=50, MAT_GLASS=20)
flags = CONDUCT
slot_flags = SLOT_BELT
item_state = "coil"
@@ -507,7 +506,7 @@ obj/structure/cable/proc/cableColor(var/colorC)
if(!S)
return
if(!(S.status & ORGAN_ROBOT) || user.a_intent != "help" || S.open == 2)
if(!(S.status & ORGAN_ROBOT) || user.a_intent != I_HELP || S.open == 2)
return ..()
if(S.burn_dam)
+5 -5
View File
@@ -605,7 +605,7 @@
var/status = 0 // LIGHT_OK, LIGHT_BURNED or LIGHT_BROKEN
var/base_state
var/switchcount = 0 // number of times switched
m_amt = 60
materials = list(MAT_METAL=60)
var/rigged = 0 // true if rigged to explode
var/brightness_range = 2 //how much light it gives off
var/brightness_power = 1
@@ -617,7 +617,7 @@
icon_state = "ltube"
base_state = "ltube"
item_state = "c_tube"
g_amt = 100
materials = list(MAT_GLASS=100)
brightness_range = 8
brightness_power = 3
@@ -633,7 +633,7 @@
icon_state = "lbulb"
base_state = "lbulb"
item_state = "contvapour"
g_amt = 100
materials = list(MAT_GLASS=100)
brightness_range = 5
brightness_power = 2
brightness_color = "#a0a080"
@@ -648,7 +648,7 @@
icon_state = "fbulb"
base_state = "fbulb"
item_state = "egg4"
g_amt = 100
materials = list(MAT_GLASS=100)
brightness_range = 5
brightness_power = 2
@@ -706,7 +706,7 @@
if(!proximity) return
if(istype(target, /obj/machinery/light))
return
if(user.a_intent != "harm")
if(user.a_intent != I_HARM)
return
shatter()
+1 -1
View File
@@ -67,7 +67,7 @@
flags = CONDUCT
slot_flags = SLOT_BELT
item_state = "syringe_kit"
m_amt = 30000
materials = list(MAT_METAL=30000)
throwforce = 2
w_class = 1.0
throw_speed = 4
@@ -38,7 +38,7 @@
icon_state = "blshell"
caliber = "shotgun"
projectile_type = "/obj/item/projectile/bullet"
m_amt = 4000
materials = list(MAT_METAL=4000)
/obj/item/ammo_casing/shotgun/buckshot
@@ -55,7 +55,7 @@
desc = "A weak beanbag slug for riot control."
icon_state = "bshell"
projectile_type = "/obj/item/projectile/bullet/weakbullet/rubber"
m_amt = 250
materials = list(MAT_METAL=250)
/obj/item/ammo_casing/shotgun/improvised
@@ -63,7 +63,7 @@
desc = "An extremely weak shotgun shell with multiple small pellets made out of metal shards."
icon_state = "gshell"
projectile_type = "/obj/item/projectile/bullet/pellet/weak"
m_amt = 250
materials = list(MAT_METAL=250)
pellets = 5
deviation = 30
@@ -73,7 +73,7 @@
propellant. It's like playing russian roulette, with a shotgun."
icon_state = "improvshell"
projectile_type = /obj/item/projectile/bullet/pellet/random
m_amt = 250
materials = list(MAT_METAL=250)
pellets = 5
deviation = 30
@@ -86,7 +86,7 @@
desc = "A stunning taser slug."
icon_state = "stunshell"
projectile_type = "/obj/item/projectile/bullet/stunshot"
m_amt = 200
materials = list(MAT_METAL=250)
/obj/item/ammo_casing/shotgun/meteorshot
@@ -164,7 +164,7 @@
desc = "A tranquilizer round used to subdue individuals utilizing stimulants."
icon_state = "cshell"
projectile_type = "/obj/item/projectile/bullet/dart/syringe/tranquilizer"
m_amt = 250
materials = list(MAT_METAL=250)
/obj/item/ammo_casing/syringegun
name = "syringe gun spring"
+4 -4
View File
@@ -54,7 +54,7 @@
origin_tech = "combat=2"
ammo_type = /obj/item/ammo_casing/shotgun
max_ammo = 8
m_amt = 100000
materials = list(MAT_METAL=32000)
/obj/item/ammo_box/shotgun/buck
name = "Ammunition Box (buckshot)"
@@ -63,15 +63,15 @@
/obj/item/ammo_box/shotgun/stun
name = "Ammunition Box (stun shells)"
ammo_type = /obj/item/ammo_casing/shotgun/stunslug
m_amt = 20000
materials = list(MAT_METAL=2000)
/obj/item/ammo_box/shotgun/beanbag
name = "Ammunition Box (beanbag shells)"
ammo_type = /obj/item/ammo_casing/shotgun/beanbag
m_amt = 4000
materials = list(MAT_METAL=2000)
/obj/item/ammo_box/shotgun/tranquilizer
name = "Ammunition Box (tranquilizer darts)"
icon_state = "45box"
ammo_type = /obj/item/ammo_casing/shotgun/tranquilizer
m_amt = 2000
materials = list(MAT_METAL=2000)
@@ -188,9 +188,9 @@
icon_state = "[initial(icon_state)]-[round(ammo_count(),10)]"
/obj/item/ammo_box/magazine/m12g
name = "shotgun magazine (12g buckshot)"
name = "shotgun magazine (12g slugs)"
icon_state = "m12gb"
ammo_type = "/obj/item/ammo_casing/shotgun/buckshot"
ammo_type = "/obj/item/ammo_casing/shotgun"
origin_tech = "combat=3;syndicate=1"
caliber = "shotgun"
max_ammo = 8
@@ -199,6 +199,10 @@
..()
icon_state = "[initial(icon_state)]-[Ceiling(ammo_count(0)/8)*8]"
/obj/item/ammo_box/magazine/m12g/buckshot
name = "shotgun magazine (12g buckshot slugs)"
icon_state = "m12gb"
ammo_type = "/obj/item/ammo_casing/shotgun/buckshot"
/obj/item/ammo_box/magazine/m12g/stun
name = "shotgun magazine (12g taser slugs)"
+2 -2
View File
@@ -10,7 +10,7 @@
item_state = "gun"
flags = CONDUCT
slot_flags = SLOT_BELT
m_amt = 2000
materials = list(MAT_METAL=2000)
w_class = 3.0
throwforce = 5
throw_speed = 4
@@ -295,7 +295,7 @@
if (src.process_chambered())
//Point blank shooting if on harm intent or target we were targeting.
if(user.a_intent == "harm")
if(user.a_intent == I_HARM)
user.visible_message("\red <b> \The [user] fires \the [src] point blank at [M]!</b>")
if(istype(in_chamber)) in_chamber.damage *= 1.3
Fire(M,user,0,0,1)
@@ -6,7 +6,7 @@
fire_sound = 'sound/weapons/Laser.ogg'
charge_cost = 830
w_class = 3.0
m_amt = 2000
materials = list(MAT_METAL=2000)
origin_tech = "combat=3;magnets=2"
projectile_type = "/obj/item/projectile/beam"
@@ -272,7 +272,7 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out.
icon_state = "crossbow"
item_state = "crossbow"
w_class = 2
m_amt = 2000
materials = list(MAT_METAL=2000)
origin_tech = "combat=2;magnets=2;syndicate=5"
silenced = 1
projectile_type = "/obj/item/projectile/energy/bolt"
@@ -285,7 +285,7 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out.
desc = "A reverse engineered weapon using syndicate technology."
icon_state = "crossbowlarge"
w_class = 3
m_amt = 4000
materials = list(MAT_METAL=4000)
origin_tech = "combat=2;magnets=2;syndicate=3" //can be further researched for more syndie tech
silenced = 0
projectile_type = "/obj/item/projectile/energy/bolt/large"
@@ -294,7 +294,7 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out.
desc = "One and done!"
icon_state = "crossbowlarge"
origin_tech = null
m_amt = 0
materials = list()
/obj/item/weapon/gun/energy/plasmacutter
name = "plasma cutter"
+2 -2
View File
@@ -63,7 +63,7 @@
icon_state = "crossbow"
w_class = 2.0
item_state = "crossbow"
m_amt = 2000
materials = list(MAT_METAL=2000)
origin_tech = "combat=2;magnets=2;syndicate=5"
silenced = 1
fire_sound = 'sound/weapons/Genhit.ogg'
@@ -98,7 +98,7 @@
silenced = 0
w_class = 3.0
force = 10
m_amt = 4000
materials = list(MAT_METAL=4000)
projectile_type = "/obj/item/projectile/energy/bolt/large"
+1 -1
View File
@@ -8,7 +8,7 @@
icon_state = "pistol"
origin_tech = "combat=2;materials=2"
w_class = 3.0
m_amt = 1000
materials = list(MAT_METAL=1000)
// recoil = 1
var/mag_type = "/obj/item/ammo_box/magazine/m10mm" //Removes the need for max_ammo and caliber info
var/obj/item/ammo_box/magazine/magazine
+1 -1
View File
@@ -232,7 +232,7 @@ proc/wabbajack(mob/living/M)
M.attack_log += text("\[[time_stamp()]\] <font color='orange'>[M.real_name] ([M.ckey]) became [new_mob.real_name].</font>")
new_mob.attack_log = M.attack_log
new_mob.a_intent = "harm"
new_mob.a_intent = I_HARM
if(M.mind)
M.mind.transfer_to(new_mob)
else
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More