Merge remote-tracking branch 'upstream/master' into Cameras

This commit is contained in:
Fox-McCloud
2015-02-28 16:24:03 -05:00
71 changed files with 778 additions and 318 deletions
+4
View File
@@ -119,6 +119,10 @@ var/savefile/Banlist
Banlist["temp"] << temp
if (temp)
Banlist["minutes"] << bantimestamp
if(!temp)
notes_add(ckey, "Permanently banned - [reason]")
else
notes_add(ckey, "Banned for [minutes] minutes - [reason]")
return 1
/proc/RemoveBan(foldername)
+10
View File
@@ -956,6 +956,16 @@ proc/move_gamma_ship()
fromArea = locate(/area/shuttle/gamma/station)
toArea = locate(/area/shuttle/gamma/space)
fromArea.move_contents_to(toArea)
for(var/obj/machinery/mech_bay_recharge_port/P in toArea)
P.locate_recharge_turf()
for(var/obj/machinery/power/apc/A in toArea)
A.init()
for(var/obj/machinery/alarm/A in toArea)
A.first_run()
if (gamma_ship_location)
gamma_ship_location = 0
else
+9 -3
View File
@@ -221,7 +221,7 @@ datum/preferences
dat += "<br>"
dat += "Species: <a href='?_src_=prefs;preference=species;task=input'>[species]</a><br>"
if(species == "Vox")//oldvox code, sucks I know
dat += "Old vox? <a href='?_src_=prefs;preference=speciesprefs;task=input'>[speciesprefs ? "Yes(Big N2 tank)" : "No(Vox-special N2 tank)"]</a><br>"
dat += "Old Vox? <a href='?_src_=prefs;preference=speciesprefs;task=input'>[speciesprefs ? "Yes (Large N2 tank)" : "No(Vox-special N2 tank)"]</a><br>"
dat += "Secondary Language:<br><a href='?_src_=prefs;preference=language;task=input'>[language]</a><br>"
dat += "Blood Type: <a href='?_src_=prefs;preference=b_type;task=input'>[b_type]</a><br>"
if(species == "Human")
@@ -327,7 +327,10 @@ datum/preferences
dat += "[copytext(flavor_text, 1, 37)]...<br>"
dat += "<br>"
dat += "<br><b>Hair</b><br>"
var/hairname = "Hair"
if(species == "Machine")
hairname = "Frame Color"
dat += "<br><b>[hairname]</b><br>"
dat += "<a href='?_src_=prefs;preference=hair;task=input'>Change Color</a> <font face='fixedsys' size='3' color='#[num2hex(r_hair, 2)][num2hex(g_hair, 2)][num2hex(b_hair, 2)]'><table style='display:inline;' bgcolor='#[num2hex(r_hair, 2)][num2hex(g_hair, 2)][num2hex(b_hair)]'><tr><td>__</td></tr></table></font> "
dat += " Style: <a href='?_src_=prefs;preference=h_style;task=input'>[h_style]</a><br>"
@@ -1101,7 +1104,10 @@ datum/preferences
if("hair")
if(species == "Human" || species == "Unathi" || species == "Tajaran" || species == "Skrell" || species == "Machine")
var/new_hair = input(user, "Choose your character's hair colour:", "Character Preference") as color|null
var/input = "Choose your character's hair colour:"
if(species == "Machine")
input = "Choose your character's frame colour:"
var/new_hair = input(user, input, "Character Preference") as color|null
if(new_hair)
r_hair = hex2num(copytext(new_hair, 2, 4))
g_hair = hex2num(copytext(new_hair, 4, 6))
+7 -1
View File
@@ -343,4 +343,10 @@
icon_state = "griffinhat"
item_state = "griffinhat"
flags = BLOCKHAIR|NODROP
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
/obj/item/clothing/head/lordadmiralhat
name = "Lord Admiral's Hat"
desc = "A hat suitable for any man of high and exalted rank."
icon_state = "lordadmiralhat"
item_state = "lordadmiralhat"
-51
View File
@@ -256,54 +256,3 @@
"Vox" = 'icons/mob/species/vox/head.dmi',
"Vox Armalis" = 'icons/mob/species/armalis/head.dmi',
)
/obj/item/clothing/suit/space/plasmaman
w_class = 3
allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box/magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/energy/sword,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank)
slowdown = 2
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 0)
heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
max_heat_protection_temperature = SPACE_SUIT_MAX_HEAT_PROTECTION_TEMPERATURE
species_restricted = list("Plasmaman")
flags = STOPSPRESSUREDMAGE | PLASMAGUARD
icon_state = "plasmaman_suit"
item_state = "plasmaman_suit"
/obj/item/clothing/head/helmet/space/plasmaman
flags = HEADCOVERSEYES | BLOCKHAIR | STOPSPRESSUREDMAGE | PLASMAGUARD
species_restricted = list("Plasmaman")
icon_state = "plasmaman_helmet0"
item_state = "plasmaman_helmet0"
var/brightness_on = 4 //luminosity when on
var/on = 0
var/no_light=0 // Disable the light on the atmos suit
action_button_name = "Toggle Helmet Light"
attack_self(mob/user)
if(!isturf(user.loc))
user << "You cannot turn the light on while in this [user.loc]" //To prevent some lighting anomalities.
return
if(no_light)
return
on = !on
icon_state = "plasmaman_helmet[on]"
// item_state = "rig[on]-[_color]"
if(on) user.SetLuminosity(user.luminosity + brightness_on)
else user.SetLuminosity(user.luminosity - brightness_on)
pickup(mob/user)
if(on)
user.SetLuminosity(user.luminosity + brightness_on)
// user.UpdateLuminosity()
SetLuminosity(0)
dropped(mob/user)
if(on)
user.SetLuminosity(user.luminosity - brightness_on)
// user.UpdateLuminosity()
SetLuminosity(brightness_on)
@@ -0,0 +1,170 @@
// PLASMEN SHIT
// CAN'T WEAR UNLESS YOU'RE A PINK SKELLINGTON
/obj/item/clothing/suit/space/eva/plasmaman
w_class = 3
allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/energy/sword,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank)
slowdown = 2
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 100, rad = 0)
heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
max_heat_protection_temperature = SPACE_SUIT_MAX_HEAT_PROTECTION_TEMPERATURE
species_restricted = list("Plasmaman")
flags = STOPSPRESSUREDMAGE | PLASMAGUARD
icon_state = "plasmaman_suit"
item_state = "plasmaman_suit"
var/next_extinguish=0
var/extinguish_cooldown=10 SECONDS
var/extinguishes_left=10 // Yeah yeah, reagents, blah blah blah. This should be simple.
/obj/item/clothing/suit/space/eva/plasmaman/examine()
set src in view()
..()
usr << "There are [extinguishes_left] extinguisher canisters left in this suit."
/obj/item/clothing/suit/space/eva/plasmaman/proc/Extinguish(var/mob/user)
var/mob/living/carbon/human/H=user
if(extinguishes_left)
if(next_extinguish > world.time)
return
next_extinguish = world.time + extinguish_cooldown
extinguishes_left--
H << "<span class='warning'>Your suit automatically extinguishes the fire.</span>"
H.ExtinguishMob()
/obj/item/clothing/head/helmet/space/eva/plasmaman
flags = HEADCOVERSEYES | BLOCKHAIR | STOPSPRESSUREDMAGE | PLASMAGUARD
species_restricted = list("Plasmaman")
icon_state = "plasmaman_helmet0"
item_state = "plasmaman_helmet0"
var/base_state = "plasmaman_helmet"
var/brightness_on = 4 //luminosity when on
var/on = 0
var/no_light=0 // Disable the light on the atmos suit
action_button_name = "Toggle Helmet Light"
/obj/item/clothing/head/helmet/space/eva/plasmaman/attack_self(mob/user)
if(!isturf(user.loc))
user << "You cannot turn the light on while in this [user.loc]" //To prevent some lighting anomalities.
return
if(no_light)
return
on = !on
icon_state = "[base_state][on]"
// item_state = "rig[on]-[_color]"
if(on) user.SetLuminosity(user.luminosity + brightness_on)
else user.SetLuminosity(user.luminosity - brightness_on)
/obj/item/clothing/head/helmet/space/eva/plasmaman/pickup(mob/user)
if(on)
user.SetLuminosity(user.luminosity + brightness_on)
// user.UpdateLuminosity()
SetLuminosity(0)
/obj/item/clothing/head/helmet/space/eva/plasmaman/dropped(mob/user)
if(on)
user.SetLuminosity(user.luminosity - brightness_on)
// user.UpdateLuminosity()
SetLuminosity(brightness_on)
// ENGINEERING
/obj/item/clothing/suit/space/eva/plasmaman/assistant
icon_state = "plasmamanAssistant_suit"
/obj/item/clothing/head/helmet/space/eva/plasmaman/assistant
icon_state = "plasmamanAssistant_helmet0"
base_state = "plasmamanAssistant_helmet"
/obj/item/clothing/suit/space/eva/plasmaman/atmostech
icon_state = "plasmamanAtmos_suit"
/obj/item/clothing/head/helmet/space/eva/plasmaman/atmostech
icon_state = "plasmamanAtmos_helmet0"
base_state = "plasmamanAtmos_helmet"
/obj/item/clothing/suit/space/eva/plasmaman/engineer
icon_state = "plasmamanEngineer_suit"
/obj/item/clothing/head/helmet/space/eva/plasmaman/engineer
icon_state = "plasmamanEngineer_helmet0"
base_state = "plasmamanEngineer_helmet"
//SERVICE
/obj/item/clothing/suit/space/eva/plasmaman/botanist
icon_state = "plasmamanBotanist_suit"
/obj/item/clothing/head/helmet/space/eva/plasmaman/botanist
icon_state = "plasmamanBotanist_helmet0"
base_state = "plasmamanBotanist_helmet"
/obj/item/clothing/suit/space/eva/plasmaman/chaplain
icon_state = "plasmamanChaplain_suit"
/obj/item/clothing/head/helmet/space/eva/plasmaman/chaplain
icon_state = "plasmamanChaplain_helmet0"
base_state = "plasmamanChaplain_helmet"
/obj/item/clothing/suit/space/eva/plasmaman/service
icon_state = "plasmamanService_suit"
/obj/item/clothing/head/helmet/space/eva/plasmaman/service
icon_state = "plasmamanService_helmet0"
base_state = "plasmamanService_helmet"
/obj/item/clothing/suit/space/eva/plasmaman/janitor
icon_state = "plasmamanJanitor_suit"
/obj/item/clothing/head/helmet/space/eva/plasmaman/janitor
icon_state = "plasmamanJanitor_helmet0"
base_state = "plasmamanJanitor_helmet"
//CARGO
/obj/item/clothing/suit/space/eva/plasmaman/cargo
icon_state = "plasmamanCargo_suit"
/obj/item/clothing/head/helmet/space/eva/plasmaman/cargo
icon_state = "plasmamanCargo_helmet0"
base_state = "plasmamanCargo_helmet"
/obj/item/clothing/suit/space/eva/plasmaman/miner
icon_state = "plasmamanMiner_suit"
/obj/item/clothing/head/helmet/space/eva/plasmaman/miner
icon_state = "plasmamanMiner_helmet0"
base_state = "plasmamanMiner_helmet"
// MEDSCI
/obj/item/clothing/suit/space/eva/plasmaman/medical
icon_state = "plasmamanMedical_suit"
/obj/item/clothing/head/helmet/space/eva/plasmaman/medical
icon_state = "plasmamanMedical_helmet0"
base_state = "plasmamanMedical_helmet"
/obj/item/clothing/suit/space/eva/plasmaman/science
icon_state = "plasmamanScience_suit"
/obj/item/clothing/head/helmet/space/eva/plasmaman/science
icon_state = "plasmamanScience_helmet0"
base_state = "plasmamanScience_helmet"
//SECURITY
/obj/item/clothing/suit/space/eva/plasmaman/security
icon_state = "plasmamanSecurity_suit"
/obj/item/clothing/head/helmet/space/eva/plasmaman/security
icon_state = "plasmamanSecurity_helmet0"
base_state = "plasmamanSecurity_helmet"
+1
View File
@@ -220,6 +220,7 @@
H.equip_to_slot(helmet, slot_head)
helmet.flags |= NODROP
H << "\blue You deploy your hardsuit helmet, sealing you off from the world."
H.update_inv_head()
/obj/item/clothing/suit/space/rig/attackby(obj/item/W as obj, mob/user as mob, params)
+8 -1
View File
@@ -470,4 +470,11 @@
else
icon_state = initial(icon_state)
item_state = initial(item_state)
usr.update_inv_wear_suit()
usr.update_inv_wear_suit()
/obj/item/clothing/suit/lordadmiral
name = "Lord Admiral's Coat"
desc = "You'll be the Ruler of the King's Navy in no time."
icon_state = "lordadmiral"
item_state = "lordadmiral"
allowed = list (/obj/item/weapon/gun)
+8 -1
View File
@@ -78,4 +78,11 @@
name = "camo pants"
desc = "A pair of woodland camouflage pants. Probably not the best choice for a space station."
icon_state = "camopants"
_color = "camopants"
_color = "camopants"
/obj/item/clothing/under/pants/chaps
name = "black leather assless chaps"
desc = "For those brave enough to weather the breeze."
icon_state = "chaps"
_color = "chaps"
flags = ONESIZEFITSALL
+5 -5
View File
@@ -123,13 +123,13 @@ var/global/list/severity_to_string = list(EVENT_LEVEL_MUNDANE = "Mundane", EVENT
severity = EVENT_LEVEL_MUNDANE
available_events = list(
// Severity level, event name, even type, base weight, role weights, one shot, min weight, max weight. Last two only used if set and non-zero
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Nothing", /datum/event/nothing, 100),
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Nothing", /datum/event/nothing, 1100),
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "PDA Spam", /datum/event/pda_spam, 0, list(ASSIGNMENT_ANY = 4), 0, 25, 50),
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Money Lotto", /datum/event/money_lotto, 0, list(ASSIGNMENT_ANY = 1), 1, 5, 15),
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Money Hacker", /datum/event/money_hacker, 0, list(ASSIGNMENT_ANY = 4), 1, 10, 25),
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Economic News", /datum/event/economic_event, 300),
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Trivial News", /datum/event/trivial_news, 400),
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Mundane News", /datum/event/mundane_news, 300),
// new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Economic News", /datum/event/economic_event, 300),
// new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Trivial News", /datum/event/trivial_news, 400),
// new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Mundane News", /datum/event/mundane_news, 300),
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Lost Carp", /datum/event/carp_migration, 20, list(ASSIGNMENT_SECURITY = 10), 1),
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Brand Intelligence",/datum/event/brand_intelligence,20, list(ASSIGNMENT_JANITOR = 25), 1),
new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Vermin Infestation",/datum/event/infestation, 100, list(ASSIGNMENT_JANITOR = 100)),
@@ -155,7 +155,7 @@ var/global/list/severity_to_string = list(EVENT_LEVEL_MUNDANE = "Mundane", EVENT
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Viral Infection", /datum/event/viral_infection, 0, list(ASSIGNMENT_MEDICAL = 150)),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Spider Infestation", /datum/event/spider_infestation, 100, list(ASSIGNMENT_SECURITY = 30), 1),
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Ion Storm", /datum/event/ionstorm, 0, list(ASSIGNMENT_AI = 50, ASSIGNMENT_CYBORG = 50, ASSIGNMENT_ENGINEER = 15, ASSIGNMENT_SCIENTIST = 5)),
new /datum/event_meta/alien(EVENT_LEVEL_MODERATE, "Alien Infestation", /datum/event/alien_infestation, 0, list(ASSIGNMENT_SECURITY = 20), 1),
new /datum/event_meta/alien(EVENT_LEVEL_MODERATE, "Alien Infestation", /datum/event/alien_infestation, 0, list(ASSIGNMENT_SECURITY = 15), 1),
new /datum/event_meta/ninja(EVENT_LEVEL_MODERATE, "Space Ninja", /datum/event/space_ninja, 0, list(ASSIGNMENT_SECURITY = 15), 1),
// NON-BAY EVENTS
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Mass Hallucination", /datum/event/mass_hallucination, 300),
+2 -2
View File
@@ -46,8 +46,8 @@ var/global/list/possibleEvents = list()
// Code/WorkInProgress/Cael_Aislinn/Economy/Economy_Events_Mundane.dm
possibleEvents[/datum/event/economic_event] = 300
possibleEvents[/datum/event/trivial_news] = 400
possibleEvents[/datum/event/mundane_news] = 300
//possibleEvents[/datum/event/trivial_news] = 400
//possibleEvents[/datum/event/mundane_news] = 300
possibleEvents[/datum/event/cargo_bonus] = 150
+3 -3
View File
@@ -293,12 +293,12 @@
/client/proc/event_manager_panel()
set name = "Event Manager Panel"
set category = "Admin"
set category = "Event"
if(event_manager)
event_manager.Interact(usr)
feedback_add_details("admin_verb","EMP") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
return
/datum/event/proc/findEventArea() //Here's a nice proc to use to find an area for your event to land in!
var/area/candidate = null
@@ -343,7 +343,7 @@
break
return candidate
/datum/event/proc/num_players()
var/players = 0
for(var/mob/living/carbon/human/P in player_list)
+31 -2
View File
@@ -6,8 +6,36 @@
* Rewritten (except for player HTML) by N3X15
***********************/
// Open up WMP and play musique.
// TODO: Convert to VLC for cross-platform and ogg support. - N3X
// Open up VLC and play musique.
// Converted to VLC for cross-platform and ogg support. - N3X
var/const/PLAYER_HTML={"
<embed type="application/x-vlc-plugin" pluginspage="http://www.videolan.org" />
<object classid="clsid:9BE31822-FDAD-461B-AD51-BE1D1C159921" codebase="http://download.videolan.org/pub/videolan/vlc/last/win32/axvlc.cab" id="player"></object>
<script>
function noErrorMessages () { return true; }
window.onerror = noErrorMessages;
function SetMusic(url, time, volume) {
var vlc = document.getElementById('player');
// Stop playing
vlc.playlist.stop();
// Clear playlist
vlc.playlist.items.clear();
// Add new playlist item.
var id = vlc.playlist.add(url);
// Play playlist item
vlc.playlist.playItem(id);
vlc.input.time = time*1000; // VLC takes milliseconds.
vlc.audio.volume = volume*100; // \[0-200]
}
</script>
"}
/* OLD, DO NOT USE. CONTROLS.CURRENTPOSITION IS BROKEN.
var/const/PLAYER_HTML={"
<OBJECT id='player' CLASSID='CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6' type='application/x-oleobject'></OBJECT>
<script>
@@ -20,6 +48,7 @@ function SetMusic(url, time, volume) {
player.Settings.volume = volume;
}
</script>"}
*/
// Hook into the events we desire.
/hook_handler/soundmanager
+1 -1
View File
@@ -1,6 +1,6 @@
//NOTE: Breathing happens once per FOUR TICKS, unless the last breath fails. In which case it happens once per ONE TICK! So oxyloss healing is done once per 4 ticks while oxyloss damage is applied once per tick!
#define HUMAN_MAX_OXYLOSS 3 //Defines how much oxyloss humans can get per tick. A tile with no air at all (such as space) applies this value, otherwise it's a percentage of it.
#define HUMAN_CRIT_MAX_OXYLOSS ( (last_tick_duration) /5) //The amount of damage you'll get when in critical condition. We want this to be a 5 minute deal = 300s. There are 100HP to get through, so (1/3)*last_tick_duration per second. Breaths however only happen every 4 ticks.
#define HUMAN_CRIT_MAX_OXYLOSS ( (tickerProcess.getLastTickerTimeDuration()) / 3) //The amount of damage you'll get when in critical condition. We want this to be a 5 minute deal = 300s. There are 100HP to get through, so (1/3)*last_tick_duration per second. Breaths however only happen every 4 ticks.
#define HEAT_DAMAGE_LEVEL_1 2 //Amount of damage applied when your body temperature just passes the 360.15k safety point
#define HEAT_DAMAGE_LEVEL_2 3 //Amount of damage applied when your body temperature passes the 400K point
@@ -1,8 +1,8 @@
/mob/living/carbon/alien/humanoid/hunter
name = "alien hunter"
caste = "h"
maxHealth = 150
health = 150
maxHealth = 125
health = 125
storedPlasma = 100
max_plasma = 150
icon_state = "alienh_s"
@@ -1,8 +1,8 @@
/mob/living/carbon/alien/humanoid/sentinel
name = "alien sentinel"
caste = "s"
maxHealth = 125
health = 125
maxHealth = 150
health = 150
storedPlasma = 100
max_plasma = 250
icon_state = "aliens_s"
-4
View File
@@ -449,10 +449,6 @@
item.throw_at(target, item.throw_range, item.throw_speed, src)
/mob/living/carbon/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
..()
bodytemperature = max(bodytemperature, BODYTEMP_HEAT_DAMAGE_LIMIT+10)
/mob/living/carbon/can_use_hands()
if(handcuffed)
return 0
+22 -25
View File
@@ -1,18 +1,15 @@
/mob/living/carbon/verb/give()
/mob/living/carbon/verb/give(var/mob/living/carbon/target in oview(1))
set category = "IC"
set name = "Give"
set src in view(1)
if(src.stat == 2 || usr.stat == 2 || src.client == null)
return
if(src == usr)
usr << "\red I feel stupider, suddenly."
if(target.stat == 2 || usr.stat == 2|| target.client == null)
return
var/obj/item/I
if(!usr.hand && usr.r_hand == null)
usr << "\red You don't have anything in your right hand to give to [src.name]"
usr << "<span class='warning'> You don't have anything in your right hand to give to [target.name]</span>"
return
if(usr.hand && usr.l_hand == null)
usr << "\red You don't have anything in your left hand to give to [src.name]"
usr << "<span class='warning'> You don't have anything in your left hand to give to [target.name]</span>"
return
if(usr.hand)
I = usr.l_hand
@@ -23,38 +20,38 @@
if((I.flags & NODROP) || (I.flags & ABSTRACT))
usr << "<span class='notice'>That's not exactly something you can give.</span>"
return
if(src.r_hand == null || src.l_hand == null)
switch(alert(src,"[usr] wants to give you \a [I]?",,"Yes","No"))
if(target.r_hand == null || target.l_hand == null)
switch(alert(target,"[usr] wants to give you \a [I]?",,"Yes","No"))
if("Yes")
if(!I)
return
if(!Adjacent(usr))
usr << "\red You need to stay in reaching distance while giving an object."
src << "\red [usr.name] moved too far away."
usr << "<span class='warning'> You need to stay in reaching distance while giving an object.</span>"
target << "<span class='warning'> [usr.name] moved too far away.</span>"
return
if((usr.hand && usr.l_hand != I) || (!usr.hand && usr.r_hand != I))
usr << "\red You need to keep the item in your active hand."
src << "\red [usr.name] seem to have given up on giving \the [I.name] to you."
usr << "<span class='warning'> You need to keep the item in your active hand.</span>"
target << "<span class='warning'> [usr.name] seem to have given up on giving \the [I.name] to you.</span>"
return
if(src.r_hand != null && src.l_hand != null)
src << "\red Your hands are full."
usr << "\red Their hands are full."
if(target.r_hand != null && target.l_hand != null)
target << "<span class='warning'> Your hands are full.</span>"
usr << "<span class='warning'> Their hands are full.</span>"
return
else
usr.drop_item()
if(src.r_hand == null)
src.r_hand = I
if(target.r_hand == null)
target.r_hand = I
else
src.l_hand = I
I.loc = src
target.l_hand = I
I.loc = target
I.layer = 20
I.add_fingerprint(src)
I.add_fingerprint(target)
src.update_inv_l_hand()
src.update_inv_r_hand()
usr.update_inv_l_hand()
usr.update_inv_r_hand()
src.visible_message("\blue [usr.name] handed \the [I.name] to [src.name].")
target.visible_message("<span class='notice'> [usr.name] handed \the [I.name] to [target.name].</span>")
if("No")
src.visible_message("\red [usr.name] tried to hand [I.name] to [src.name] but [src.name] didn't want it.")
target.visible_message("<span class='warning'> [usr.name] tried to hand [I.name] to [target.name] but [target.name] didn't want it.</span>")
else
usr << "\red [src.name]'s hands are full."
usr << "<span class='warning'> [target.name]'s hands are full.</span>"
@@ -11,8 +11,10 @@
return
if(istype(I, /obj/item/clothing/head/helmet/space/rig)) // If the item to be equipped is a rigid suit helmet
src << "\red You must fasten the helmet to a hardsuit first. (Target the head and use on a hardsuit)" // Stop eva helms equipping.
return 0
var/obj/item/clothing/head/helmet/space/rig/C = I
if(C.rig_restrict_helmet)
src << "\red You must fasten the helmet to a hardsuit first. (Target the head and use on a hardsuit)" // Stop eva helms equipping.
return 0
if(H.equip_to_appropriate_slot(I))
if(hand)
+20 -18
View File
@@ -466,7 +466,7 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc
if(species.name=="Plasmaman")
// Check if we're wearing our biosuit and mask.
if (!istype(wear_suit,/obj/item/clothing/suit/space/plasmaman) || !istype(head,/obj/item/clothing/head/helmet/space/plasmaman))
if (!istype(wear_suit,/obj/item/clothing/suit/space/eva/plasmaman) || !istype(head,/obj/item/clothing/head/helmet/space/eva/plasmaman))
//testing("Plasmaman [src] leakin'. coverflags=[cover_flags]")
// OH FUCK HE LEAKIN'.
// This was OP.
@@ -576,32 +576,34 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc
//Body temperature is too hot.
fire_alert = max(fire_alert, 1)
if(status_flags & GODMODE) return 1 //godmode
switch(bodytemperature)
if(species.heat_level_1 to species.heat_level_2)
take_overall_damage(burn=HEAT_DAMAGE_LEVEL_1, used_weapon = "High Body Temperature")
if(bodytemperature >= species.heat_level_1 && bodytemperature <= species.heat_level_2)
take_overall_damage(burn=HEAT_DAMAGE_LEVEL_1, used_weapon = "High Body Temperature")
fire_alert = max(fire_alert, 2)
if(bodytemperature > species.heat_level_2 && bodytemperature <= species.heat_level_3)
take_overall_damage(burn=HEAT_DAMAGE_LEVEL_2, used_weapon = "High Body Temperature")
fire_alert = max(fire_alert, 2)
if(bodytemperature > species.heat_level_3 && bodytemperature < INFINITY)
if(on_fire)
take_overall_damage(burn=HEAT_DAMAGE_LEVEL_3, used_weapon = "Fire")
fire_alert = max(fire_alert, 2)
if(species.heat_level_2 to species.heat_level_3)
else
take_overall_damage(burn=HEAT_DAMAGE_LEVEL_2, used_weapon = "High Body Temperature")
fire_alert = max(fire_alert, 2)
if(species.heat_level_3 to INFINITY)
take_overall_damage(burn=HEAT_DAMAGE_LEVEL_3, used_weapon = "High Body Temperature")
fire_alert = max(fire_alert, 2)
else if(bodytemperature < species.cold_level_1)
fire_alert = max(fire_alert, 1)
if(status_flags & GODMODE) return 1 //godmode
if(stat == DEAD) return 1 //ZomgPonies -- No need for cold burn damage if dead
if(!istype(loc, /obj/machinery/atmospherics/unary/cryo_cell))
switch(bodytemperature)
if(species.cold_level_2 to species.cold_level_1)
take_overall_damage(burn=COLD_DAMAGE_LEVEL_1, used_weapon = "High Body Temperature")
fire_alert = max(fire_alert, 1)
if(species.cold_level_3 to species.cold_level_2)
take_overall_damage(burn=COLD_DAMAGE_LEVEL_2, used_weapon = "High Body Temperature")
fire_alert = max(fire_alert, 1)
if(-INFINITY to species.cold_level_3)
take_overall_damage(burn=COLD_DAMAGE_LEVEL_3, used_weapon = "High Body Temperature")
fire_alert = max(fire_alert, 1)
if(bodytemperature >= species.cold_level_2 && bodytemperature <= species.cold_level_1)
take_overall_damage(burn=COLD_DAMAGE_LEVEL_1, used_weapon = "Low Body Temperature")
fire_alert = max(fire_alert, 1)
if(bodytemperature >= species.cold_level_3 && bodytemperature < species.cold_level_2)
take_overall_damage(burn=COLD_DAMAGE_LEVEL_2, used_weapon = "Low Body Temperature")
fire_alert = max(fire_alert, 1)
if(bodytemperature > -INFINITY && bodytemperature < species.cold_level_3)
take_overall_damage(burn=COLD_DAMAGE_LEVEL_3, used_weapon = "Low Body Temperature")
fire_alert = max(fire_alert, 1)
// Account for massive pressure differences. Done by Polymorph
// Made it possible to actually have something that can protect against high pressure... Done by Errorage. Polymorph now has an axe sticking from his head for his previous hardcoded nonsense!
@@ -30,26 +30,48 @@
H.unEquip(H.wear_mask)
H.equip_or_collect(new /obj/item/clothing/mask/breath(H), slot_wear_mask)
var/suit=/obj/item/clothing/suit/space/plasmaman
var/helm=/obj/item/clothing/head/helmet/space/plasmaman
var/suit=/obj/item/clothing/suit/space/eva/plasmaman
var/helm=/obj/item/clothing/head/helmet/space/eva/plasmaman
var/tank_slot = slot_s_store
var/tank_slot_name = "suit storage"
switch(H.mind.assigned_role)
/*
if("Research Director","Scientist","Geneticist","Roboticist")
suit=/obj/item/clothing/suit/space/vox/casual/science
helm=/obj/item/clothing/head/helmet/space/vox/casual/science
if("Chief Engineer","Station Engineer","Atmospheric Technician")
suit=/obj/item/clothing/suit/space/vox/casual/engineer
helm=/obj/item/clothing/head/helmet/space/vox/casual/engineer
suit=/obj/item/clothing/suit/space/eva/plasmaman/science
helm=/obj/item/clothing/head/helmet/space/eva/plasmaman/science
if("Chief Engineer","Station Engineer")
suit=/obj/item/clothing/suit/space/eva/plasmaman/engineer
helm=/obj/item/clothing/head/helmet/space/eva/plasmaman/engineer
if("Atmospheric Technician")
suit=/obj/item/clothing/suit/space/eva/plasmaman/atmostech
helm=/obj/item/clothing/head/helmet/space/eva/plasmaman/atmostech
if("Head of Security","Warden","Detective","Security Officer")
suit=/obj/item/clothing/suit/space/vox/casual/security
helm=/obj/item/clothing/head/helmet/space/vox/casual/security
suit=/obj/item/clothing/suit/space/eva/plasmaman/security
helm=/obj/item/clothing/head/helmet/space/eva/plasmaman/security
if("Chief Medical Officer","Medical Doctor","Paramedic","Chemist")
suit=/obj/item/clothing/suit/space/vox/casual/medical
helm=/obj/item/clothing/head/helmet/space/vox/casual/medical
*/ // For now.
suit=/obj/item/clothing/suit/space/eva/plasmaman/medical
helm=/obj/item/clothing/head/helmet/space/eva/plasmaman/medical
if("Bartender", "Chef")
suit=/obj/item/clothing/suit/space/eva/plasmaman/service
helm=/obj/item/clothing/head/helmet/space/eva/plasmaman/service
if("Cargo Technician", "Quartermaster")
suit=/obj/item/clothing/suit/space/eva/plasmaman/cargo
helm=/obj/item/clothing/head/helmet/space/eva/plasmaman/cargo
if("Shaft Miner")
suit=/obj/item/clothing/suit/space/eva/plasmaman/miner
helm=/obj/item/clothing/head/helmet/space/eva/plasmaman/miner
if("Botanist")
suit=/obj/item/clothing/suit/space/eva/plasmaman/botanist
helm=/obj/item/clothing/head/helmet/space/eva/plasmaman/botanist
if("Chaplain")
suit=/obj/item/clothing/suit/space/eva/plasmaman/chaplain
helm=/obj/item/clothing/head/helmet/space/eva/plasmaman/chaplain
if("Janitor")
suit=/obj/item/clothing/suit/space/eva/plasmaman/janitor
helm=/obj/item/clothing/head/helmet/space/eva/plasmaman/janitor
if("Assistant")
suit=/obj/item/clothing/suit/space/eva/plasmaman/assistant
helm=/obj/item/clothing/head/helmet/space/eva/plasmaman/assistant
if("Clown","Mime")
tank_slot=slot_r_hand
tank_slot_name = "hand"
@@ -25,7 +25,7 @@
//Used for self-mailing.
var/mail_destination = 0
var/sprite[0]
// var/sprite[0]
/mob/living/silicon/robot/drone/New()
@@ -275,6 +275,7 @@
src << "<b>Don't invade their worksites, don't steal their resources, don't tell them about the changeling in the toilets.</b>"
src << "<b>If a crewmember has noticed you, <i>you are probably breaking your first law</i></b>."
/*
sprite["Default"] = "repairbot"
sprite["Mk2 Mousedrone"] = "mk2"
sprite["Mk3 Monkeydrone"] = "mk3"
@@ -284,6 +285,8 @@
updateicon()
choose_icon(6,sprite)
*/
/mob/living/silicon/robot/drone/Bump(atom/movable/AM as mob|obj, yes)
if (!yes || ( \
@@ -598,6 +598,32 @@
icon_state = "vox_shortquills"
species_allowed = list("Vox")
vox_crestedquills
name = "Crested Vox Quills"
icon_state = "vox_crestedquills"
species_allowed = list("Vox")
vox_tielquills
name = "Vox Tiel Quills"
icon_state = "vox_tielquills"
species_allowed = list("Vox")
vox_emperorquills
name = "Vox Emperor Quills"
icon_state = "vox_emperorquills"
species_allowed = list("Vox")
vox_keelquills
name = "Vox Keel Quills"
icon_state = "vox_keelquills"
species_allowed = list("Vox")
vox_keetquills
name = "Vox Keet Quills"
icon_state = "vox_keetquills"
species_allowed = list("Vox")
/datum/sprite_accessory/facial_hair
taj_sideburns
+2 -2
View File
@@ -86,7 +86,7 @@
M << "<span class='danger'>[src] blows up in your face.</span>"
M.take_organ_damage(0,20)
M.drop_item()
del(src)
qdel(src)
return
if (!user.IsAdvancedToolUser() || istype(user, /mob/living/carbon/monkey/diona))
@@ -127,7 +127,7 @@
in_chamber.def_zone = user.zone_sel.selecting
if(targloc == curloc)
user.bullet_act(in_chamber)
del(in_chamber)
qdel(in_chamber)
update_icon()
return
+1 -1
View File
@@ -1,6 +1,6 @@
/obj/item/weapon/gun/energy/hos
name = "HoS Energy Gun"
desc = "This is a modern recreation of the antique laser gun. This gun has several unique firemodes, but lacks the ability to recharge over time, its also expensive."
desc = "This is a modern recreation of the captain's antique laser gun. This gun has several unique firemodes, but lacks the ability to recharge over time."
icon_state = "hoslaser"
item_state = null //so the human update icon uses the icon_state instead.
icon_override = 'icons/mob/in-hand/guns.dmi'
@@ -299,7 +299,9 @@
␍ del(D)
␍ user.put_in_hands(new /obj/item/weapon/bucket_sensor)
␍ user.unEquip(src)
␍ del(src)
qdel(src)
..()
␍/obj/item/weapon/reagent_containers/glass/beaker/vial
␍ name = "vial"
@@ -68,6 +68,17 @@
build_path = /obj/item/weapon/grenade/chem_grenade/large
category = list("Weapons")
/datum/design/tele_shield
name = "Telescopic Riot Shield"
desc = "An advanced riot shield made of lightweight materials that collapses for easy storage."
id = "tele_shield"
req_tech = list("combat" = 4, "materials" = 3, "engineering" = 3)
build_type = PROTOLATHE
materials = list("$metal" = 4000, "$glass" = 5000, "$silver" = 300)
build_path = /obj/item/weapon/shield/riot/tele
locked = 1
category = list("Weapons")
/datum/design/lasercannon
name = "Laser Cannon"
desc = "A heavy duty laser cannon."
+8 -8
View File
@@ -6,7 +6,7 @@
if (istype(in_use, /obj/machinery/computer/shuttle_control/emergency))
var/obj/machinery/computer/shuttle_control/emergency/C = in_use
C.reset_authorization()
emergency_shuttle.shuttle_arrived()
/datum/shuttle/ferry/emergency/long_jump(var/area/departing, var/area/destination, var/area/interim, var/travel_time, var/direction)
@@ -37,7 +37,7 @@
var/obj/machinery/computer/shuttle_control/emergency/C = user
if (!C.has_authorization())
return 0
if(moving_status == SHUTTLE_STRANDED && C.has_authorization())
return 1
return ..()
@@ -45,12 +45,12 @@
/datum/shuttle/ferry/emergency/can_force(var/mob/user)
if (istype(user, /obj/machinery/computer/shuttle_control/emergency))
var/obj/machinery/computer/shuttle_control/emergency/C = user
//initiating or cancelling a launch ALWAYS requires authorization, but if we are already set to launch anyways than forcing does not.
//this is so that people can force launch if the docking controller cannot safely undock without needing X heads to swipe.
if (process_state != WAIT_LAUNCH && !C.has_authorization())
return 0
return ..()
/datum/shuttle/ferry/emergency/can_cancel(var/mob/user)
@@ -62,7 +62,7 @@
/datum/shuttle/ferry/emergency/launch(var/user)
if (!can_launch(user)) return
if(emergency_shuttle.no_escape)
user << "<span class='warning'>The emergency shuttle has been disabled by Centcom.</span>"
return
@@ -155,7 +155,7 @@
/obj/machinery/computer/shuttle_control/emergency/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
read_authorization(W)
..()
/obj/machinery/computer/shuttle_control/emergency/emag_act(user as mob)
if (!emagged)
user << "\blue You short out the [src]'s authorization protocols."
@@ -214,7 +214,7 @@
"docking_status" = shuttle.docking_controller? shuttle.docking_controller.get_docking_status() : null,
"docking_override" = shuttle.docking_controller? shuttle.docking_controller.override_enabled : null,
"can_launch" = shuttle.can_launch(src),
"can_cancel" = shuttle.can_cancel(src),
//"can_cancel" = shuttle.can_cancel(src),
"can_force" = shuttle.can_force(src),
"auth_list" = auth_list,
"has_auth" = has_auth,
@@ -236,7 +236,7 @@
if(href_list["removeid"])
var/dna_hash = href_list["removeid"]
authorized -= dna_hash
if(!emagged && href_list["scanid"])
//They selected an empty entry. Try to scan their id.
if (ishuman(usr))