Merge github.com:Baystation12/Baystation12

Conflicts:
	html/changelog.html
This commit is contained in:
cib
2012-05-22 14:50:00 +02:00
144 changed files with 7400 additions and 5721 deletions

View File

@@ -238,9 +238,8 @@ obj/machinery/computer/forensic_scanning
var/list/blood = outputs[3]
if(blood && blood.len)
temp += "&nbsp<b>Blood:</b><br>"
for(var/j = 1, j <= blood.len, j++)
var/list/templist2 = blood[j]
temp += "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Type: [templist2[2]], DNA: [templist2[1]]<br>"
for(var/named in blood)
temp += "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Type: [blood[named]], DNA: [named]<br>"
temp += "<br><a href='?src=\ref[src];operation=database;delete_record=[href_list["identifier"]]'>{Delete this Dossier}</a>"
temp += "<br><a href='?src=\ref[src];operation=databaseprint;identifier=[href_list["identifier"]]'>{Print}</a>"
else
@@ -743,11 +742,30 @@ proc/blood_incompatible(donor,receiver)
return 0
/obj/item/weapon/rag
New() // So I don't have to grab maplock
spawn(1)
new/obj/item/weapon/reagent_containers/glass/rag(loc)
del src
/obj/item/weapon/reagent_containers/glass/rag
name = "damp rag"
desc = "For cleaning up messes, I suppose."
desc = "For cleaning up messes, you suppose."
w_class = 1
icon = 'toy.dmi'
icon_state = "rag"
amount_per_transfer_from_this = 5
possible_transfer_amounts = list(5)
volume = 5
can_be_placed_into = null
attack(atom/target as obj|turf|area, mob/user as mob , flag)
if(ismob(target) && target.reagents && reagents.total_volume)
user.visible_message("\red \The [target] has been smothered with \the [src] by \the [user]!", "\red You smother \the [target] with \the [src]!", "You hear some struggling and muffled cries of surprise")
src.reagents.reaction(target, TOUCH)
spawn(5) src.reagents.clear_reagents()
return
else
..()
afterattack(atom/A as obj|turf|area, mob/user as mob)
if(istype(A))
@@ -755,4 +773,11 @@ proc/blood_incompatible(donor,receiver)
if(do_after(user,30))
user.visible_message("[user] finishes wiping off the [A]!")
A.clean_blood()
return
return
examine()
if (!( usr ))
return
usr << "That's \a [src]."
usr << desc
return

View File

@@ -733,7 +733,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
for(var/obj/item/briefcase_item in sec_briefcase)
del(briefcase_item)
for(var/i=3, i>0, i--)
sec_briefcase.contents += new /obj/item/weapon/spacecash/c1000
sec_briefcase.contents += new /obj/item/weapon/money/c1000
sec_briefcase.contents += new /obj/item/weapon/gun/energy/crossbow
sec_briefcase.contents += new /obj/item/weapon/gun/projectile/mateba
sec_briefcase.contents += new /obj/item/ammo_magazine/a357

View File

@@ -104,7 +104,7 @@ datum
on_mob_life(var/mob/living/M)
if(!data || !data["blood_type"])
..()
else if(istype(M, /mob/living/carbon/human) && blood_incompatible(data["blood_type"],M.dna.b_type))
else if(istype(M, /mob/living/carbon/human) && blood_incompatible(data["blood_type"],M.dna.b_type) && !M.changeling)
M.adjustToxLoss(rand(0.5,1.5))
M.adjustOxyLoss(rand(1,1.5))
..()
@@ -1862,7 +1862,7 @@ datum
on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
if(prob(50)) M:heal_organ_damage(1,0)
if(prob(1)) M:heal_organ_damage(0.5,0) //This should stop being able to heal out of crit from eating a donut
M:nutrition += nutriment_factor // For hunger and fatness
/*
// If overeaten - vomit and fall down

View File

@@ -185,9 +185,10 @@
if(W:amount >= 1)
playsound(src.loc, 'Deconstruct.ogg', 50, 1)
if(do_after(user, 20))
W:use(1)
user << "\blue You put in the glass lens."
src.state = 5
if(W)
W:use(1)
user << "\blue You put in the glass lens."
src.state = 5
if(5)
if(istype(W, /obj/item/weapon/crowbar))
playsound(src.loc, 'Crowbar.ogg', 50, 1)

View File

@@ -46,6 +46,12 @@
item_state = "glasses"
prescription = 1
/obj/item/clothing/glasses/regular/hipster
name = "Prescription Glasses"
desc = "Made by Uncool. Co."
icon_state = "hipster_glasses"
item_state = "hipster_glasses"
/obj/item/clothing/glasses/gglasses
name = "Green Glasses"
desc = "Forest green glasses, like the kind you'd wear when hatching a nasty scheme."
@@ -69,16 +75,6 @@
item_state = "bigsunglasses"
protective_temperature = 1400
//ultimate glasses
/obj/item/clothing/glasses/hud/security/jensenshades
name = "Augmented shades"
desc = "Polarized bioneural eyewear, designed to augment your vision."
icon_state = "jensenshades"
item_state = "jensenshades"
protective_temperature = 1500
vision_flags = SEE_MOBS
invisa_view = 2
/obj/item/clothing/glasses/sunglasses/sechud
name = "HUDSunglasses"
desc = "Sunglasses with a HUD."

View File

@@ -82,42 +82,50 @@
desc = "A heads-up display that scans the humans in view and provides accurate data about their ID status and security records."
icon_state = "securityhud"
/obj/item/clothing/glasses/hud/security/jensenshades
name = "Augmented shades"
desc = "Polarized bioneural eyewear, designed to augment your vision."
icon_state = "jensenshades"
item_state = "jensenshades"
protective_temperature = 1500
vision_flags = SEE_MOBS
invisa_view = 2
process_hud(var/mob/M)
if(!M) return
if(!M.client) return
var/client/C = M.client
var/icon/tempHud = 'hud.dmi'
for(var/mob/living/carbon/human/perp in view(M))
if(!C) continue
var/perpname = "wot"
if(perp.wear_id)
C.images += image(tempHud,perp,"hud[ckey(perp:wear_id:GetJobName())]")
if(istype(perp.wear_id,/obj/item/weapon/card/id))
perpname = perp.wear_id:registered_name
else if(istype(perp.wear_id,/obj/item/device/pda))
var/obj/item/device/pda/tempPda = perp.wear_id
perpname = tempPda.owner
else
perpname = perp.name
C.images += image(tempHud,perp,"hudunknown")
/obj/item/clothing/glasses/hud/security/process_hud(var/mob/M)
if(!M) return
if(!M.client) return
var/client/C = M.client
var/icon/tempHud = 'hud.dmi'
for(var/mob/living/carbon/human/perp in view(M))
if(!C) continue
var/perpname = "wot"
if(perp.wear_id)
C.images += image(tempHud,perp,"hud[ckey(perp:wear_id:GetJobName())]")
if(istype(perp.wear_id,/obj/item/weapon/card/id))
perpname = perp.wear_id:registered_name
else if(istype(perp.wear_id,/obj/item/device/pda))
var/obj/item/device/pda/tempPda = perp.wear_id
perpname = tempPda.owner
else
perpname = perp.name
C.images += image(tempHud,perp,"hudunknown")
for (var/datum/data/record/E in data_core.general)
if (E.fields["name"] == perpname)
for (var/datum/data/record/R in data_core.security)
if ((R.fields["id"] == E.fields["id"]) && (R.fields["criminal"] == "*Arrest*"))
C.images += image(tempHud,perp,"hudwanted")
break
else if((R.fields["id"] == E.fields["id"]) && (R.fields["criminal"] == "Incarcerated"))
C.images += image(tempHud,perp,"hudprisoner")
break
for(var/named in perp.organs)
var/datum/organ/external/E = perp.organs[named]
for(var/obj/item/weapon/implant/I in E.implant)
if(I.implanted)
if(istype(I,/obj/item/weapon/implant/tracking))
C.images += image(tempHud,perp,"hud_imp_tracking")
if(istype(I,/obj/item/weapon/implant/loyalty))
C.images += image(tempHud,perp,"hud_imp_loyal")
for (var/datum/data/record/E in data_core.general)
if (E.fields["name"] == perpname)
for (var/datum/data/record/R in data_core.security)
if ((R.fields["id"] == E.fields["id"]) && (R.fields["criminal"] == "*Arrest*"))
C.images += image(tempHud,perp,"hudwanted")
break
else if((R.fields["id"] == E.fields["id"]) && (R.fields["criminal"] == "Incarcerated"))
C.images += image(tempHud,perp,"hudprisoner")
break
for(var/named in perp.organs)
var/datum/organ/external/E = perp.organs[named]
for(var/obj/item/weapon/implant/I in E.implant)
if(I.implanted)
if(istype(I,/obj/item/weapon/implant/tracking))
C.images += image(tempHud,perp,"hud_imp_tracking")
if(istype(I,/obj/item/weapon/implant/loyalty))
C.images += image(tempHud,perp,"hud_imp_loyal")

View File

@@ -23,7 +23,7 @@
/obj/item/clothing/suit/armor/hos/jensen
name = "armored trenchoat"
name = "armored trenchcoat"
desc = "A trenchoat augmented with a special alloy for some protection and style"
icon_state = "jensencoat"
item_state = "jensencoat"

View File

@@ -62,4 +62,4 @@
item_state = "judge"
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
allowed = list(/obj/item/weapon/cigpacket,/obj/item/weapon/spacecash)
allowed = list(/obj/item/weapon/cigpacket,/obj/item/weapon/money)

View File

@@ -629,6 +629,7 @@
name = "exceptional plump pie"
desc = "Microwave is taken by a fey mood! It has cooked an exceptional plump pie!"
reagents.add_reagent("nutriment", 15)
reagents.add_reagent("tricordrazine", 5)
bitesize = 2
else
reagents.add_reagent("nutriment", 10)
@@ -855,7 +856,7 @@
New()
..()
reagents.add_reagent("toxin", 1)
reagents.add_reagent("carbon", 1)
reagents.add_reagent("carbon", 3)
bitesize = 2
/obj/item/weapon/reagent_containers/food/snacks/sliceable/meatsteak
@@ -906,17 +907,17 @@
reagents.add_reagent("amatoxin", 6)
reagents.add_reagent("psilocybin", 3)
bitesize = 3
/*
/obj/item/weapon/reagent_containers/food/snacks/poppypretzel
name = "Poppy pretzel"
desc = "" //TODO
desc = "It's all twisted up!"
icon_state = "poppypretzel"
bitesize = 2
New()
..()
reagents.add_reagent("nutriment", 5)
bitesize = 2
*/
/obj/item/weapon/reagent_containers/food/snacks/meatballsoup
name = "Meatball soup"
@@ -947,7 +948,7 @@
..()
reagents.add_reagent("nutriment", 2)
reagents.add_reagent("blood", 15)
reagents.add_reagent("water", 10)
reagents.add_reagent("water", 5)
bitesize = 5
/obj/item/weapon/reagent_containers/food/snacks/clownstears
@@ -956,7 +957,7 @@
icon_state = "clownstears"
New()
..()
reagents.add_reagent("nutriment", 1)
reagents.add_reagent("nutriment", 4)
reagents.add_reagent("banana", 5)
reagents.add_reagent("water", 10)
bitesize = 5
@@ -969,7 +970,7 @@
New()
..()
reagents.add_reagent("nutriment", 10)
reagents.add_reagent("water", 10)
reagents.add_reagent("water", 5)
bitesize = 5
/obj/item/weapon/reagent_containers/food/snacks/nettlesoup
@@ -980,8 +981,8 @@
New()
..()
reagents.add_reagent("nutriment", 10)
reagents.add_reagent("water", 7)
reagents.add_reagent("tricordrazine", 3)
reagents.add_reagent("water", 5)
reagents.add_reagent("tricordrazine", 5)
bitesize = 5
/obj/item/weapon/reagent_containers/food/snacks/mysterysoup
@@ -1038,7 +1039,7 @@
..()
reagents.add_reagent("water", 10)
bitesize = 5
if(prob(5))
if(prob(25))
src.desc = "A wish come true!"
reagents.add_reagent("nutriment", 10)
@@ -1205,6 +1206,7 @@
New()
..()
reagents.add_reagent("nutriment", 12)
reagents.add_reagent("carbon", 2)
bitesize = 2
/obj/item/weapon/reagent_containers/food/snacks/grilledcheese
@@ -1248,7 +1250,7 @@
reagents.add_reagent("nutriment", 20)
reagents.add_reagent("tomatojuice", 5)
reagents.add_reagent("imidazoline", 5)
reagents.add_reagent("water", 10)
reagents.add_reagent("water", 5)
bitesize = 10
/obj/item/weapon/reagent_containers/food/snacks/metroidtoast
@@ -1280,7 +1282,7 @@
New()
..()
reagents.add_reagent("nutriment", 12)
reagents.add_reagent("water", 20)
reagents.add_reagent("water", 5)
bitesize = 4
/obj/item/weapon/reagent_containers/food/snacks/stewedsoymeat
@@ -1438,6 +1440,7 @@
name = "exceptional plump helmet biscuit"
desc = "Microwave is taken by a fey mood! It has cooked an exceptional plump helmet biscuit!"
reagents.add_reagent("nutriment", 15)
reagents.add_reagent("tricordrazine", 5)
bitesize = 2
else
reagents.add_reagent("nutriment", 5)

View File

@@ -14,6 +14,7 @@
icon_state = "miningsec1"
icon_closed = "miningsec"
icon_locked = "miningsec1"
icon_opened = "miningsecopen"
icon_broken = "miningsecbroken"
icon_off = "miningsecoff"
req_access = list(access_mining)

View File

@@ -8,6 +8,7 @@
src.mov_int = list( )
src.vimpaired = list( )
src.darkMask = list( )
src.intent_small_hud_objects = list( )
src.g_dither = new src.h_type( src )
src.g_dither.screen_loc = "WEST,SOUTH to EAST,NORTH"
@@ -49,6 +50,41 @@
src.adding += using
action_intent = using
//intent small hud objects
using = new src.h_type( src )
using.name = "help"
using.icon = 'screen1_alien.dmi'
using.icon_state = "help_small"
using.screen_loc = ui_help_small
using.layer = 21
src.intent_small_hud_objects += using
using = new src.h_type( src )
using.name = "disarm"
using.icon = 'screen1_alien.dmi'
using.icon_state = "disarm_small"
using.screen_loc = ui_disarm_small
using.layer = 21
src.intent_small_hud_objects += using
using = new src.h_type( src )
using.name = "grab"
using.icon = 'screen1_alien.dmi'
using.icon_state = "grab_small"
using.screen_loc = ui_grab_small
using.layer = 21
src.intent_small_hud_objects += using
using = new src.h_type( src )
using.name = "harm"
using.icon = 'screen1_alien.dmi'
using.icon_state = "harm_small"
using.screen_loc = ui_harm_small
using.layer = 21
src.intent_small_hud_objects += using
//end intent small hud objects
using = new src.h_type( src )
using.name = "mov_intent"
using.dir = SOUTHWEST
@@ -59,6 +95,7 @@
src.adding += using
move_intent = using
/*
using = new src.h_type(src) //Right hud bar
using.dir = SOUTH
using.icon = 'screen1_alien.dmi'
@@ -79,7 +116,9 @@
using.screen_loc = "EAST+1,SOUTH-1"
using.layer = 19
src.adding += using
*/
/*
using = new src.h_type( src )
using.name = "arrowleft"
using.icon = 'screen1_alien.dmi'
@@ -97,6 +136,7 @@
using.screen_loc = ui_iarrowright
using.layer = 19
src.adding += using
*/
using = new src.h_type( src )
using.name = "drop"
@@ -115,7 +155,7 @@
using.dir = SOUTH
using.icon = 'screen1_alien.dmi'
using.icon_state = "equip"
using.screen_loc = ui_iclothing
using.screen_loc = ui_alien_oclothing
using.layer = 19
src.adding += using
@@ -125,7 +165,7 @@
using.dir = WEST
using.icon = 'screen1_alien.dmi'
using.icon_state = "equip"
using.screen_loc = ui_id
using.screen_loc = ui_rhand
using.layer = 19
src.adding += using
@@ -135,7 +175,7 @@
using.dir = EAST
using.icon = 'screen1_alien.dmi'
using.icon_state = "equip"
using.screen_loc = ui_belt
using.screen_loc = ui_lhand
using.layer = 19
src.adding += using
@@ -162,11 +202,12 @@
using.name = "head"
using.icon = 'screen1_alien.dmi'
using.icon_state = "hair"
using.screen_loc = ui_oclothing
using.screen_loc = ui_alien_head
using.layer = 19
src.adding += using
//end of equippable shit
/*
using = new src.h_type( src )
using.name = "resist"
using.icon = 'screen1_alien.dmi'
@@ -174,8 +215,7 @@
using.screen_loc = ui_resist
using.layer = 19
src.adding += using
*/
using = new src.h_type( src )
using.name = null
@@ -241,7 +281,7 @@
mymob.healths.icon = 'screen1_alien.dmi'
mymob.healths.icon_state = "health0"
mymob.healths.name = "health"
mymob.healths.screen_loc = ui_health
mymob.healths.screen_loc = ui_alien_health
mymob.pullin = new /obj/screen( null )
mymob.pullin.icon = 'screen1_alien.dmi'
@@ -265,6 +305,7 @@
mymob.flash.screen_loc = "1,1 to 15,15"
mymob.flash.layer = 17
/*
mymob.hands = new /obj/screen( null )
mymob.hands.icon = 'screen1_alien.dmi'
mymob.hands.icon_state = "hand"
@@ -285,6 +326,7 @@
mymob.rest.screen_loc = ui_rest
mymob.gun_setting_icon = new /obj/screen/gun/mode(null)
*/
mymob.zone_sel = new /obj/screen/zone_sel( null )
@@ -293,6 +335,6 @@
mymob.client.screen = null
mymob.client.screen += list( mymob.throw_icon, mymob.zone_sel, mymob.oxygen, mymob.toxin, mymob.fire, mymob.hands, mymob.healths, mymob.pullin, mymob.blind, mymob.flash, mymob.rest, mymob.sleep, mymob.gun_setting_icon) //, mymob.mach )
mymob.client.screen += list( mymob.throw_icon, mymob.zone_sel, mymob.oxygen, mymob.toxin, mymob.fire, mymob.healths, mymob.pullin, mymob.blind, mymob.flash) //, mymob.hands, mymob.rest, mymob.sleep, mymob.mach )
mymob.client.screen += src.adding + src.other

View File

@@ -398,7 +398,7 @@
overlays += image("icon" = 'blood.dmi', "icon_state" = "armorblood[!lying ? "" : "2"]", "layer" = MOB_LAYER)
else
overlays += image("icon" = 'blood.dmi', "icon_state" = "suitblood[!lying ? "" : "2"]", "layer" = MOB_LAYER)
wear_suit.screen_loc = ui_iclothing
wear_suit.screen_loc = ui_alien_oclothing
if (istype(wear_suit, /obj/item/clothing/suit/straight_jacket))
if (handcuffed)
handcuffed.loc = loc
@@ -420,7 +420,7 @@
overlays += image("icon" = 'mob.dmi', "icon_state" = text("[][]", t1, (!( lying ) ? null : "2")), "layer" = MOB_LAYER)
if (head.blood_DNA)
overlays += image("icon" = 'blood.dmi', "icon_state" = "helmetblood[!lying ? "" : "2"]", "layer" = MOB_LAYER)
head.screen_loc = ui_oclothing
head.screen_loc = ui_alien_head
if (l_store)
l_store.screen_loc = ui_storage1
@@ -435,12 +435,12 @@
if (r_hand)
overlays += image("icon" = 'items_righthand.dmi', "icon_state" = r_hand.item_state ? r_hand.item_state : r_hand.icon_state, "layer" = MOB_LAYER+1)
r_hand.screen_loc = ui_id
r_hand.screen_loc = ui_rhand
if (l_hand)
overlays += image("icon" = 'items_lefthand.dmi', "icon_state" = l_hand.item_state ? l_hand.item_state : l_hand.icon_state, "layer" = MOB_LAYER+1)
l_hand.screen_loc = ui_belt
l_hand.screen_loc = ui_lhand

View File

@@ -61,6 +61,7 @@
src.adding += using
move_intent = using
/*
using = new src.h_type(src) //Right hud bar
using.dir = SOUTH
using.icon = 'screen1_alien.dmi'
@@ -81,7 +82,9 @@
using.screen_loc = "EAST+1,SOUTH-1"
using.layer = 19
src.adding += using
*/
/*
using = new src.h_type( src )
using.name = "arrowleft"
using.icon = 'screen1_alien.dmi'
@@ -100,7 +103,6 @@
using.layer = 19
src.adding += using
using = new src.h_type( src )
using.name = "resist"
using.icon = 'screen1_alien.dmi'
@@ -108,7 +110,7 @@
using.screen_loc = ui_resist
using.layer = 19
src.adding += using
*/
using = new src.h_type( src )
@@ -171,7 +173,7 @@
mymob.healths.icon = 'screen1_alien.dmi'
mymob.healths.icon_state = "health0"
mymob.healths.name = "health"
mymob.healths.screen_loc = ui_health
mymob.healths.screen_loc = ui_alien_health
mymob.pullin = new /obj/screen( null )
mymob.pullin.icon = 'screen1_alien.dmi'
@@ -194,7 +196,7 @@
mymob.flash.screen_loc = "1,1 to 15,15"
mymob.flash.layer = 17
/*
mymob.sleep = new /obj/screen( null )
mymob.sleep.icon = 'screen1_alien.dmi'
mymob.sleep.icon_state = "sleep0"
@@ -206,7 +208,7 @@
mymob.rest.icon_state = "rest0"
mymob.rest.name = "rest"
mymob.rest.screen_loc = ui_rest
*/
mymob.zone_sel = new /obj/screen/zone_sel( null )
mymob.zone_sel.overlays = null
@@ -214,7 +216,7 @@
mymob.client.screen = null
mymob.client.screen += list( mymob.zone_sel, mymob.oxygen, mymob.toxin, mymob.fire, mymob.healths, mymob.pullin, mymob.blind, mymob.flash, mymob.rest, mymob.sleep) //, mymob.mach )
mymob.client.screen += list( mymob.zone_sel, mymob.oxygen, mymob.toxin, mymob.fire, mymob.healths, mymob.pullin, mymob.blind, mymob.flash) //, mymob.rest, mymob.sleep, mymob.mach )
mymob.client.screen += src.adding + src.other

View File

@@ -1,5 +1,7 @@
/obj/hud/proc/brain_hud(var/ui_style='screen1_old.dmi')
ui_style='screen1_old.dmi' //Overriding the parameter. Only this UI style is acceptable with the 'sleek' layout.
blurry = new h_type( src )
blurry.screen_loc = "WEST,SOUTH to EAST,NORTH"
blurry.name = "Blurry"

View File

@@ -173,12 +173,32 @@
usr << "<span class='warning'>Your other hand is too busy holding the [item_in_hand.name]</span>"
return
src.hand = !( src.hand )
if (!( src.hand ))
if(hud_used.l_hand_hud_object && hud_used.r_hand_hud_object)
if(hand) //This being 1 means the left hand is in use
hud_used.l_hand_hud_object.icon_state = "hand_active"
hud_used.r_hand_hud_object.icon_state = "hand_inactive"
else
hud_used.l_hand_hud_object.icon_state = "hand_inactive"
hud_used.r_hand_hud_object.icon_state = "hand_active"
/*if (!( src.hand ))
src.hands.dir = NORTH
else
src.hands.dir = SOUTH
src.hands.dir = SOUTH*/
return
/mob/living/carbon/proc/activate_hand(var/selhand) //0 or "r" or "right" for right hand; 1 or "l" or "left" for left hand.
if(istext(selhand))
selhand = lowertext(selhand)
if(selhand == "right" || selhand == "r")
selhand = 0
if(selhand == "left" || selhand == "l")
selhand = 1
if(selhand != src.hand)
swap_hand()
/mob/living/carbon/proc/help_shake_act(mob/living/carbon/M)
if (src.health > 0)
if(src == M && istype(src, /mob/living/carbon/human))
@@ -262,11 +282,12 @@
if(src.sleeping_willingly)
src.sleeping = 0
src.sleeping_willingly = 0
// Update the hands-indicator on re-join.
/* // Update the hands-indicator on re-join.
if (!( src.hand ))
src.hands.dir = NORTH
else
src.hands.dir = SOUTH
*/
/mob/living/carbon/human/proc/GetOrgans()
var/list/L = list( )

View File

@@ -1,5 +1,7 @@
/obj/hud/proc/human_hud(var/ui_style='screen1_old.dmi')
ui_style='screen1_old.dmi' //Overriding the parameter. Only this UI style is acceptable with the 'sleek' layout.
src.adding = list( )
src.other = list( )
src.intents = list( )
@@ -8,6 +10,7 @@
src.mov_int = list( )
src.vimpaired = list( )
src.darkMask = list( )
src.intent_small_hud_objects = list( )
src.g_dither = new src.h_type( src )
src.g_dither.screen_loc = "WEST,SOUTH to EAST,NORTH"
@@ -53,6 +56,41 @@
src.adding += using
action_intent = using
//intent small hud objects
using = new src.h_type( src )
using.name = "help"
using.icon = ui_style
using.icon_state = "help_small"
using.screen_loc = ui_help_small
using.layer = 21
src.intent_small_hud_objects += using
using = new src.h_type( src )
using.name = "disarm"
using.icon = ui_style
using.icon_state = "disarm_small"
using.screen_loc = ui_disarm_small
using.layer = 21
src.intent_small_hud_objects += using
using = new src.h_type( src )
using.name = "grab"
using.icon = ui_style
using.icon_state = "grab_small"
using.screen_loc = ui_grab_small
using.layer = 21
src.intent_small_hud_objects += using
using = new src.h_type( src )
using.name = "harm"
using.icon = ui_style
using.icon_state = "harm_small"
using.screen_loc = ui_harm_small
using.layer = 21
src.intent_small_hud_objects += using
//end intent small hud objects
using = new src.h_type( src )
using.name = "mov_intent"
using.dir = SOUTHWEST
@@ -63,6 +101,7 @@
src.adding += using
move_intent = using
/*
using = new src.h_type(src) //Right hud bar
using.dir = SOUTH
using.icon = ui_style
@@ -101,6 +140,7 @@
using.screen_loc = ui_iarrowright
using.layer = 19
src.adding += using
*/
using = new src.h_type( src )
using.name = "drop"
@@ -117,7 +157,7 @@
using.icon_state = "center"
using.screen_loc = ui_iclothing
using.layer = 19
src.adding += using
src.other += using
using = new src.h_type( src )
using.name = "o_clothing"
@@ -126,7 +166,7 @@
using.icon_state = "equip"
using.screen_loc = ui_oclothing
using.layer = 19
src.adding += using
src.other += using
/* using = new src.h_type( src )
using.name = "headset"
@@ -141,25 +181,49 @@
using.name = "r_hand"
using.dir = WEST
using.icon = ui_style
using.icon_state = "equip"
using.icon_state = "hand_inactive"
if(mymob && !mymob.hand) //This being 0 or null means the right hand is in use
using.icon_state = "hand_active"
using.screen_loc = ui_rhand
using.layer = 19
src.r_hand_hud_object = using
src.adding += using
using = new src.h_type( src )
using.name = "l_hand"
using.dir = EAST
using.icon = ui_style
using.icon_state = "equip"
using.icon_state = "hand_inactive"
if(mymob && mymob.hand) //This being 1 means the left hand is in use
using.icon_state = "hand_active"
using.screen_loc = ui_lhand
using.layer = 19
src.l_hand_hud_object = using
src.adding += using
using = new src.h_type( src )
using.name = "hand"
using.dir = SOUTH
using.icon = ui_style
using.icon_state = "hand1"
using.screen_loc = ui_swaphand1
using.layer = 19
src.adding += using
using = new src.h_type( src )
using.name = "hand"
using.dir = SOUTH
using.icon = ui_style
using.icon_state = "hand2"
using.screen_loc = ui_swaphand2
using.layer = 19
src.adding += using
using = new src.h_type( src )
using.name = "id"
using.dir = SOUTHWEST
using.dir = NORTH
using.icon = ui_style
using.icon_state = "equip"
using.icon_state = "id"
using.screen_loc = ui_id
using.layer = 19
src.adding += using
@@ -171,13 +235,13 @@
using.icon_state = "equip"
using.screen_loc = ui_mask
using.layer = 19
src.adding += using
src.other += using
using = new src.h_type( src )
using.name = "back"
using.dir = NORTHEAST
using.dir = NORTH
using.icon = ui_style
using.icon_state = "equip"
using.icon_state = "back"
using.screen_loc = ui_back
using.layer = 19
src.adding += using
@@ -201,11 +265,13 @@
using = new src.h_type( src )
using.name = "suit storage"
using.icon = ui_style
using.dir = 8 //The sprite at dir=8 has the background whereas the others don't.
using.icon_state = "belt"
using.screen_loc = ui_sstore1
using.layer = 19
src.other += using
/*
using = new src.h_type( src )
using.name = "resist"
using.icon = ui_style
@@ -213,12 +279,13 @@
using.screen_loc = ui_resist
using.layer = 19
src.adding += using
*/
using = new src.h_type( src )
using.name = "other"
using.icon = ui_style
using.icon_state = "other"
using.screen_loc = ui_shoes
using.screen_loc = ui_inventory
using.layer = 20
src.adding += using
@@ -256,7 +323,6 @@
using = new src.h_type( src )
using.name = "l_ear"
using.dir = EAST
using.icon = ui_style
using.icon_state = "ears"
using.screen_loc = ui_lear
@@ -265,7 +331,6 @@
using = new src.h_type( src )
using.name = "r_ear"
using.dir = WEST
using.icon = ui_style
using.icon_state = "ears"
using.screen_loc = ui_rear
@@ -278,7 +343,7 @@
using.icon_state = "hair"
using.screen_loc = ui_head
using.layer = 19
src.adding += using
src.other += using
using = new src.h_type( src )
using.name = "shoes"
@@ -467,6 +532,8 @@
mymob.pressure.icon_state = "pressure0"
mymob.pressure.name = "pressure"
mymob.pressure.screen_loc = ui_pressure
/*
mymob.i_select = new /obj/screen( null )
mymob.i_select.icon_state = "selector"
@@ -542,6 +609,7 @@
mymob.pain.screen_loc = "1,1 to 15,15"
mymob.pain.layer = 17
/*
mymob.hands = new /obj/screen( null )
mymob.hands.icon = ui_style
mymob.hands.icon_state = "hand"
@@ -560,6 +628,7 @@
mymob.rest.icon_state = "rest0"
mymob.rest.name = "rest"
mymob.rest.screen_loc = ui_rest
*/
/*/Monkey blockers
@@ -658,7 +727,7 @@
mymob.client.screen = null
//, mymob.i_select, mymob.m_select
mymob.client.screen += list( mymob.pain, mymob.throw_icon, mymob.zone_sel, mymob.oxygen, mymob.toxin, mymob.bodytemp, mymob.internals, mymob.fire, mymob.hands, mymob.healths, mymob.nutrition_icon, mymob.pullin, mymob.blind, mymob.flash, mymob.rest, mymob.pressure, mymob.sleep, mymob.gun_setting_icon) //, mymob.mach )
mymob.client.screen += list( mymob.pain, mymob.throw_icon, mymob.zone_sel, mymob.oxygen, mymob.pressure, mymob.toxin, mymob.bodytemp, mymob.internals, mymob.fire, mymob.healths, mymob.nutrition_icon, mymob.pullin, mymob.blind, mymob.flash, mymob.gun_setting_icon) //, mymob.hands, mymob.rest, mymob.sleep, mymob.gun_setting_icon) //, mymob.mach )
mymob.client.screen += src.adding + src.other
//if(istype(mymob,/mob/living/carbon/monkey)) mymob.client.screen += src.mon_blo

View File

@@ -20,6 +20,7 @@
var/g_eyes = 0.0
var/b_eyes = 0.0
var/s_tone = 0.0
var/species = "Human"
age = 30.0
var/used_skillpoints = 0
var/skill_specialization = null
@@ -1059,8 +1060,6 @@
overlays += image("icon" = 'belt_mirror.dmi', "icon_state" = text("[][]", t1, (!( lying ) ? null : "2")), "layer" = MOB_LAYER)
s_store.screen_loc = ui_sstore1
if(client) hud_used.other_update() //Update the screenloc of the items on the 'other' inventory bar
//to hide / show them.
if (client)
if (i_select)
if (intent)
@@ -1177,6 +1176,8 @@
overlays += image("icon" = 'back.dmi', "icon_state" = text("[][]", t1, (!( lying ) ? null : "2")), "layer" = MOB_LAYER)
back.screen_loc = ui_back
if(client) hud_used.other_update() //Update the screenloc of the items on the 'other' inventory bar
//to hide / show them.
if (handcuffed)
pulling = null
var/h1 = handcuffed.icon_state

View File

@@ -52,6 +52,7 @@
if (stat != 2) //still breathing
//First, resolve location and get a breath
if(air_master.current_cycle%4==2)
@@ -871,7 +872,7 @@
if(E.name == "l_hand" || E.name == "l_arm")
if(hand && equipped())
drop_item()
emote("custom v drops what they were holding, their limb malfunctioning!")
emote("custom v drops what they were holding, their [E] malfunctioning!")
var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread()
spark_system.set_up(5, 0, src)
spark_system.attach(src)
@@ -881,7 +882,7 @@
else if(E.name == "r_hand" || E.name == "r_arm")
if(!hand && equipped())
drop_item()
emote("custom v drops what they were holding, their limb malfunctioning!")
emote("custom v drops what they were holding, their [E] malfunctioning!")
var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread()
spark_system.set_up(5, 0, src)
spark_system.attach(src)
@@ -914,6 +915,15 @@
var/blood_volume = round(vessel.get_reagent_amount("blood"))
if(bloodloss)
drip(bloodloss)
else if(blood_volume < 560 && blood_volume)
var/datum/reagent/blood/B = locate() in vessel //Grab some blood
if(!B.data["donor"] == src) //If it's not theirs, then we look for theirs
for(var/datum/reagent/blood/D in vessel)
if(D.data["donor"] == src)
B = D
break
//At this point, we dun care which blood we are adding to, as long as they get more blood.
B.volume = max(min(B.volume + 560/blood_volume,560), 0) //Less blood = More blood generated per tick
if(!blood_volume)
bloodloss = 0
else if(blood_volume > 448)

View File

@@ -1,5 +1,7 @@
/obj/hud/proc/monkey_hud(var/ui_style='screen1_old.dmi')
ui_style='screen1_old.dmi' //Overriding the parameter. Only this UI style is acceptable with the 'sleek' layout.
src.adding = list( )
src.other = list( )
src.intents = list( )
@@ -8,8 +10,9 @@
src.mov_int = list( )
src.vimpaired = list( )
src.darkMask = list( )
src.intent_small_hud_objects = list( )
var/icon/blocked = icon(ui_style,"blocked")
//var/icon/blocked = icon(ui_style,"blocked")
src.g_dither = new src.h_type( src )
src.g_dither.screen_loc = "WEST,SOUTH to EAST,NORTH"
@@ -55,6 +58,41 @@
src.adding += using
action_intent = using
//intent small hud objects
using = new src.h_type( src )
using.name = "help"
using.icon = ui_style
using.icon_state = "help_small"
using.screen_loc = ui_help_small
using.layer = 21
src.intent_small_hud_objects += using
using = new src.h_type( src )
using.name = "disarm"
using.icon = ui_style
using.icon_state = "disarm_small"
using.screen_loc = ui_disarm_small
using.layer = 21
src.intent_small_hud_objects += using
using = new src.h_type( src )
using.name = "grab"
using.icon = ui_style
using.icon_state = "grab_small"
using.screen_loc = ui_grab_small
using.layer = 21
src.intent_small_hud_objects += using
using = new src.h_type( src )
using.name = "harm"
using.icon = ui_style
using.icon_state = "harm_small"
using.screen_loc = ui_harm_small
using.layer = 21
src.intent_small_hud_objects += using
//end intent small hud objects
using = new src.h_type( src )
using.name = "mov_intent"
using.dir = SOUTHWEST
@@ -65,6 +103,7 @@
src.adding += using
move_intent = using
/*
using = new src.h_type(src) //Right hud bar
using.dir = SOUTH
using.icon = ui_style
@@ -102,7 +141,7 @@
using.dir = EAST
using.screen_loc = ui_iarrowright
using.layer = 19
src.adding += using
src.adding += using*/
using = new src.h_type( src )
using.name = "drop"
@@ -111,7 +150,7 @@
using.screen_loc = ui_dropbutton
using.layer = 19
src.adding += using
/*
using = new src.h_type( src )
using.name = "i_clothing"
using.dir = SOUTH
@@ -131,7 +170,7 @@
using.layer = 19
using.overlays += blocked
src.adding += using
*/
/* using = new src.h_type( src )
using.name = "headset"
using.dir = SOUTHEAST
@@ -145,20 +184,44 @@
using.name = "r_hand"
using.dir = WEST
using.icon = ui_style
using.icon_state = "equip"
using.icon_state = "hand_inactive"
if(mymob && !mymob.hand) //This being 0 or null means the right hand is in use
using.icon_state = "hand_active"
using.screen_loc = ui_rhand
using.layer = 19
src.r_hand_hud_object = using
src.adding += using
using = new src.h_type( src )
using.name = "l_hand"
using.dir = EAST
using.icon = ui_style
using.icon_state = "equip"
using.icon_state = "hand_inactive"
if(mymob && mymob.hand) //This being 1 means the left hand is in use
using.icon_state = "hand_active"
using.screen_loc = ui_lhand
using.layer = 19
src.l_hand_hud_object = using
src.adding += using
using = new src.h_type( src )
using.name = "hand"
using.dir = SOUTH
using.icon = ui_style
using.icon_state = "hand1"
using.screen_loc = ui_swaphand1
using.layer = 19
src.adding += using
using = new src.h_type( src )
using.name = "hand"
using.dir = SOUTH
using.icon = ui_style
using.icon_state = "hand2"
using.screen_loc = ui_swaphand2
using.layer = 19
src.adding += using
/*
using = new src.h_type( src )
using.name = "id"
using.dir = SOUTHWEST
@@ -168,13 +231,14 @@
using.layer = 19
using.overlays += blocked
src.adding += using
*/
using = new src.h_type( src )
using.name = "mask"
using.dir = NORTH
using.icon = ui_style
using.icon_state = "equip"
using.screen_loc = ui_mask
using.screen_loc = ui_monkey_mask
using.layer = 19
src.adding += using
@@ -186,7 +250,7 @@
using.screen_loc = ui_back
using.layer = 19
src.adding += using
/*
using = new src.h_type( src )
using.name = "storage1"
using.icon = ui_style
@@ -204,7 +268,6 @@
using.layer = 19
using.overlays += blocked
src.adding += using
using = new src.h_type( src )
using.name = "resist"
using.icon = ui_style
@@ -283,6 +346,7 @@
using.layer = 19
using.overlays += blocked
src.adding += using
*/
/*
using = new src.h_type( src )
@@ -399,6 +463,7 @@
mymob.m_select.name = "moving"
mymob.m_select.screen_loc = "16:-11,14"
*/
mymob.toxin = new /obj/screen( null )
mymob.toxin.icon = ui_style
mymob.toxin.icon_state = "tox0"
@@ -450,6 +515,7 @@
mymob.flash.screen_loc = "1,1 to 15,15"
mymob.flash.layer = 17
/*
mymob.hands = new /obj/screen( null )
mymob.hands.icon = ui_style
mymob.hands.icon_state = "hand"
@@ -467,7 +533,7 @@
mymob.rest.icon = ui_style
mymob.rest.icon_state = "rest0"
mymob.rest.name = "rest"
mymob.rest.screen_loc = ui_rest
mymob.rest.screen_loc = ui_rest*/
/*/Monkey blockers
@@ -566,7 +632,7 @@
mymob.client.screen = null
//, mymob.i_select, mymob.m_select
mymob.client.screen += list( mymob.throw_icon, mymob.zone_sel, mymob.oxygen, mymob.toxin, mymob.bodytemp, mymob.internals, mymob.fire, mymob.hands, mymob.healths, mymob.pullin, mymob.blind, mymob.flash, mymob.rest, mymob.sleep, mymob.pressure, mymob.gun_setting_icon) //, mymob.mach )
mymob.client.screen += list( mymob.throw_icon, mymob.zone_sel, mymob.oxygen, mymob.pressure, mymob.toxin, mymob.bodytemp, mymob.internals, mymob.fire, mymob.healths, mymob.pullin, mymob.blind, mymob.flash, mymob.gun_setting_icon) //, mymob.hands, mymob.rest, mymob.sleep, mymob.mach, mymob.hands, )
mymob.client.screen += src.adding + src.other
//if(istype(mymob,/mob/living/carbon/monkey)) mymob.client.screen += src.mon_blo

View File

@@ -511,7 +511,7 @@
if (istype(wear_mask, /obj/item/clothing/mask))
var/t1 = wear_mask.icon_state
overlays += image("icon" = 'monkey.dmi', "icon_state" = text("[][]", t1, (!( lying ) ? null : "2")), "layer" = layer)
wear_mask.screen_loc = ui_mask
wear_mask.screen_loc = ui_monkey_mask
if (r_hand)
if(update_icon)
@@ -526,7 +526,7 @@
if (back)
var/t1 = back.icon_state //apparently tables make me upset and cause my dreams to shatter
overlays += image("icon" = 'back.dmi', "icon_state" = text("[][]", t1, (!( lying ) ? null : "2")), "layer" = layer)
back.screen_loc = ui_back
back.screen_loc = ui_monkey_back
if (handcuffed && update_icon)
pulling = null

View File

@@ -48,15 +48,7 @@
verbs += /mob/living/silicon/ai/proc/show_laws_verb
if (istype(loc, /turf)) //If you add a verb here, make sure to add it to transform_procs.dm too.
verbs += /mob/living/silicon/ai/proc/ai_call_shuttle
verbs += /mob/living/silicon/ai/proc/show_laws_verb
verbs += /mob/living/silicon/ai/proc/ai_camera_track
verbs += /mob/living/silicon/ai/proc/ai_alerts
verbs += /mob/living/silicon/ai/proc/ai_camera_list
verbs += /mob/living/silicon/ai/proc/ai_network_change
verbs += /mob/living/silicon/ai/proc/ai_statuschange
verbs += /mob/living/silicon/ai/proc/ai_hologram_change
verbs += /mob/living/silicon/ai/proc/ai_roster
verbs += AI_VERB_LIST
if(!safety)//Only used by AIize() to successfully spawn an AI.
if (!B)//If there is no player/brain inside.

View File

@@ -20,7 +20,7 @@
return//Whatever the case, return since you can't move anyway.
if(user.client)//To make AI holograms work. They will relay directions as long as they are centered on the object.
var/obj/machinery/hologram/holopad/T = user.client.eye//Client eye centers on an object.
var/obj/machinery/hologram/holopad/T = user.current//Client eye centers on an object.
if(istype(T)&&T.hologram&&T.master==user)//If there is a hologram and its master is the user.
T.hologram.loc = get_step(T.hologram, direct)
T.hologram.dir = direct

View File

@@ -53,6 +53,7 @@
//Generic overlays
/*
using = new src.h_type(src) //Right hud bar
using.dir = SOUTH
using.icon = 'screen1_robot.dmi'
@@ -72,7 +73,7 @@
using.icon = 'screen1_robot.dmi'
using.screen_loc = "EAST+1,SOUTH-1"
using.layer = 19
src.adding += using
src.adding += using*/
//Module select
@@ -119,7 +120,7 @@
using.layer = 20
src.adding += using
action_intent = using
/*
using = new src.h_type( src )
using.name = "arrowleft"
using.icon = 'screen1_robot.dmi'
@@ -136,7 +137,7 @@
using.dir = EAST
using.screen_loc = ui_iarrowright
using.layer = 19
src.adding += using
src.adding += using*/
//End of Intent
//Cell
@@ -151,7 +152,7 @@
mymob.healths.icon = 'screen1_robot.dmi'
mymob.healths.icon_state = "health0"
mymob.healths.name = "health"
mymob.healths.screen_loc = ui_health
mymob.healths.screen_loc = ui_borg_health
//Installed Module
mymob.hands = new /obj/screen( null )
@@ -174,7 +175,7 @@
mymob.throw_icon.icon = 'screen1_robot.dmi'
mymob.throw_icon.icon_state = "store"
mymob.throw_icon.name = "store"
mymob.throw_icon.screen_loc = ui_hand
mymob.throw_icon.screen_loc = ui_borg_store
//Temp
mymob.bodytemp = new /obj/screen( null )
@@ -218,6 +219,7 @@
mymob.flash.screen_loc = "1,1 to 15,15"
mymob.flash.layer = 17
/*
mymob.sleep = new /obj/screen( null )
mymob.sleep.icon = 'screen1_robot.dmi'
mymob.sleep.icon_state = "sleep0"
@@ -229,6 +231,7 @@
mymob.rest.icon_state = "rest0"
mymob.rest.name = "rest"
mymob.rest.screen_loc = ui_rest
*/
mymob.zone_sel = new /obj/screen/zone_sel( null )
@@ -239,7 +242,7 @@
mymob.client.screen = null
mymob.client.screen += list( mymob.throw_icon, mymob.zone_sel, mymob.oxygen, mymob.fire, mymob.hands, mymob.healths, mymob:cells, mymob.pullin, mymob.blind, mymob.flash, mymob.rest, mymob.sleep, mymob.gun_setting_icon) //, mymob.mach )
mymob.client.screen += list( mymob.throw_icon, mymob.zone_sel, mymob.oxygen, mymob.fire, mymob.hands, mymob.healths, mymob:cells, mymob.pullin, mymob.blind, mymob.flash, mymob.gun_setting_icon) //, mymob.rest, mymob.sleep, mymob.mach )
mymob.client.screen += src.adding + src.other
return

View File

@@ -38,14 +38,72 @@
/client/Southwest()
toggle_throw_mode()
if(iscarbon(usr))
var/mob/living/carbon/C = usr
if(!C.get_active_hand())
usr << "\red You have nothing in your hand to throw."
return
toggle_throw_mode()
else
usr << "\red This mob type cannot throw items."
return
/client/Northwest()
drop_item()
if(iscarbon(usr))
var/mob/living/carbon/C = usr
if(!C.get_active_hand())
usr << "\red You have nothing to drop in your hand."
return
drop_item()
else
usr << "\red This mob type cannot drop items."
return
//This gets called when you press the insert button.
/client/verb/insert_key_pressed()
set hidden = 1
if(!src.mob)
return
var/mob/M = src.mob
if(ishuman(M) || isrobot(usr) || ismonkey(M) || istype(M,/mob/living/carbon/alien/humanoid) || islarva(M))
switch(M.a_intent)
if("help")
if(issilicon(usr))
usr.a_intent = "hurt"
usr.hud_used.action_intent.icon_state = "harm"
else
usr.a_intent = "disarm"
usr.hud_used.action_intent.icon_state = "disarm"
if("disarm")
usr.a_intent = "hurt"
usr.hud_used.action_intent.icon_state = "harm"
if("hurt")
if(issilicon(usr))
usr.a_intent = "help"
usr.hud_used.action_intent.icon_state = "help"
else
usr.a_intent = "grab"
usr.hud_used.action_intent.icon_state = "grab"
if("grab")
usr.a_intent = "help"
usr.hud_used.action_intent.icon_state = "help"
usr << "\blue Your intent is now \"[usr.a_intent]\"."
else
usr << "\red This mob type does not use intents."
//This gets called when you press the delete button.
/client/verb/delete_key_pressed()
set hidden = 1
if(!usr.pulling)
usr << "\blue You are not pulling anything."
return
usr.pulling = null
/client/verb/swap_hand()
set hidden = 1

View File

@@ -392,7 +392,11 @@
proc/create_character()
spawning = 1
var/mob/living/carbon/human/new_character = new(loc)
var/mob/living/carbon/human/new_character // var/path/to/object/varname
if((preferences.species == "Tajaran") && (is_alien_whitelisted(src, "Tajaran")))
new_character = new /mob/living/carbon/human/tajaran(loc) // varname = new /path/to/object(location_to_spawn_at)
else
new_character = new /mob/living/carbon/human(loc)
new_character.lastarea = get_area(loc)
close_spawn_windows()
@@ -403,8 +407,9 @@
preferences.randomize_appearance_for(new_character)
else
preferences.copy_to(new_character)
src << sound(null, repeat = 0, wait = 0, volume = 85, channel = 1) // MAD JAMS cant last forever yo
if((preferences.species == "Soghun") && (is_alien_whitelisted(src, "Soghun"))) //This probably shouldn't be here, but I can't think of any other way
new_character.mutantrace = "lizard"
src << sound(null, repeat = 0, wait = 0, volume = 85, channel = 1)
new_character.dna.ready_dna(new_character)
preferences.copydisabilities(new_character)

View File

@@ -90,6 +90,9 @@ datum/preferences
g_facial = 0
b_facial = 0
//Species
species = "Human"
//Skin color
s_tone = 0
@@ -99,7 +102,7 @@ datum/preferences
b_eyes = 0
//UI style
UI = UI_NEW
UI = UI_OLD
//Mob preview
icon/preview_icon = null
@@ -259,7 +262,7 @@ datum/preferences
dat += "<b>Age:</b> <a href='byond://?src=\ref[user];preferences=1;age=input'>[age]</a>"
dat += "<br>"
dat += "<b>UI Style:</b> <a href=\"byond://?src=\ref[user];preferences=1;UI=input\"><b>[UI == UI_NEW ? "New" : "Old"]</b></a><br>"
//dat += "<b>UI Style:</b> <a href=\"byond://?src=\ref[user];preferences=1;UI=input\"><b>[UI == UI_NEW ? "New" : "Old"]</b></a><br>" -- UI Style no longer a thing
dat += "<b>Play admin midis:</b> <a href=\"byond://?src=\ref[user];preferences=1;midis=input\"><b>[midis == 1 ? "Yes" : "No"]</b></a><br>"
dat += "<b>Ghost ears:</b> <a href=\"byond://?src=\ref[user];preferences=1;ghost_ears=input\"><b>[ghost_ears == 0 ? "Nearest Creatures" : "All Speech"]</b></a><br>"
dat += "<b>Ghost sight:</b> <a href=\"byond://?src=\ref[user];preferences=1;ghost_sight=input\"><b>[ghost_sight == 0 ? "Nearest Creatures" : "All Emotes"]</b></a><br>"
@@ -281,6 +284,7 @@ datum/preferences
dat += "<hr><table><tr><td><b>Body</b> "
dat += "(<a href=\"byond://?src=\ref[user];preferences=1;s_tone=random;underwear=random;backbag_type=random;age=random;b_type=random;hair=random;h_style=random;facial=random;f_style=random;eyes=random\">&reg;</A>)" // Random look
dat += "<br>"
dat += "Species: <a href='byond://?src=\ref[user];preferences=1;species=input'>[species]</a><br>"
dat += "Blood Type: <a href='byond://?src=\ref[user];preferences=1;b_type=input'>[b_type]</a><br>"
dat += "Skin Tone: <a href='byond://?src=\ref[user];preferences=1;s_tone=input'>[-s_tone + 35]/220<br></a>"
@@ -696,6 +700,24 @@ datum/preferences
if("random")
b_type = pickweight ( list ("A+" = 31, "A-" = 7, "B+" = 8, "B-" = 2, "AB+" = 2, "AB-" = 1, "O+" = 40, "O-" = 9))
if(link_tags["species"])
switch(link_tags["species"])
if("input")
var/list/new_species = list("Human")
if(config.usealienwhitelist) //If we're using the whitelist, make sure to check it!
if(is_alien_whitelisted(user, "Soghun")) //Check for Soghun and admins
new_species += "Soghun"
if(is_alien_whitelisted(user, "Tajaran")) //Check for Tajaran
new_species += "Tajaran"
else //Not using the whitelist? Aliens for everyone!
new_species += "Tajaran"
new_species += "Soghun"
species = input("Please select a species", "Character Generation", null) in new_species
h_style = "Bald" //Try not to carry face/head hair over.
f_style = "Shaved"
s_tone = 0 //Don't carry over skintone either.
hair_style = new/datum/sprite_accessory/hair/bald
facial_hair_style = new/datum/sprite_accessory/facial_hair/shaved
if(link_tags["hair"])
switch(link_tags["hair"])
@@ -735,14 +757,18 @@ datum/preferences
if("random")
randomize_skin_tone()
if("input")
var/new_tone = input(user, "Please select skin tone level: 1-220 (1=albino, 35=caucasian, 150=black, 220='very' black)", "Character Generation") as text
var/new_tone = input(user, "Please select skin tone level: 1-220 (1=albino, 35=caucasian, 150=black, 220='very' black) or 20-70 for Tajarans", "Character Generation") as text
if(new_tone)
s_tone = max(min(round(text2num(new_tone)), 220), 1)
if(species == "Tajaran")
s_tone = max(min(round(text2num(new_tone)), 70), 20)
else
s_tone = max(min(round(text2num(new_tone)), 220), 1)
s_tone = -s_tone + 35
if(link_tags["h_style"])
if(species != "Human")
return
switch(link_tags["h_style"])
// New and improved hair selection code, by Doohl
if("random") // random hair selection
@@ -785,6 +811,8 @@ datum/preferences
src.ooccolor = ooccolor
if(link_tags["f_style"])
if(species != "Human") //Tajarans and Soghuns don't have hair stuff yet.
return
switch(link_tags["f_style"])
// see above for commentation. This is just a slight modification of the hair code for facial hairs
@@ -866,7 +894,7 @@ datum/preferences
be_random_name = !be_random_name
if(link_tags["flavor_text"])
var/msg = input(usr,"Set the flavor text in your 'examine' verb. Don't metagame!","Flavor Text",html_decode(flavor_text)) as message
var/msg = input(usr,"Set the flavor text in your 'examine' verb. This can also be used for OOC notes and preferences!","Flavor Text",html_decode(flavor_text)) as message
if(msg != null)
msg = copytext(msg, 1, MAX_MESSAGE_LEN)
@@ -893,6 +921,8 @@ datum/preferences
slotname = savefile_getslots(user)[curslot]
loadsave(user)
if(link_tags["removeslot"])
if(alert("Are you sure you wish to delete this slot?",,"Yes","No")=="No")
return
var/slot = text2num(link_tags["removeslot"])
if(!slot)
return

View File

@@ -209,7 +209,15 @@ datum/preferences
else if (gender == FEMALE)
g = "f"
preview_icon = new /icon('human.dmi', "body_[g]_s", "dir" = preview_dir)
if(species == "Tajaran")
preview_icon = new /icon('tajaran.dmi', "body_[g]_s", "dir" = preview_dir)
else if(species == "Soghun")
if(g == "m")
preview_icon = new /icon('genetics.dmi', "lizard_male_s", "dir" = preview_dir)
else if(g == "f")
preview_icon = new /icon('genetics.dmi', "lizard_female_s", "dir" = preview_dir)
else
preview_icon = new /icon('human.dmi', "body_[g]_s", "dir" = preview_dir)
// Skin tone
if (s_tone >= 0)

View File

@@ -131,6 +131,7 @@ datum/preferences/proc/savefile_save(mob/user, slot)
F["eyes_green"] << src.g_eyes
F["eyes_blue"] << src.b_eyes
F["blood_type"] << src.b_type
F["species"] << src.species
F["underwear"] << src.underwear
F["backbag"] << src.backbag
F["backbag"] << src.backbag
@@ -206,6 +207,8 @@ datum/preferences/proc/savefile_load(mob/user, slot)
F["eyes_green"] >> src.g_eyes
F["eyes_blue"] >> src.b_eyes
F["blood_type"] >> src.b_type
F["species"] >> src.species
if(isnull(species)) species = "Human"
F["underwear"] >> src.underwear
if(underwear == 0) underwear = 6 //For old players who have 0 in their savefile
F["backbag"] >> src.backbag

View File

@@ -33,7 +33,7 @@
icon = 'zone_sel.dmi'
icon_state = "blank"
var/selecting = "chest"
screen_loc = "EAST+1,NORTH"
screen_loc = ui_zonesel
/obj/screen/gun
name = "gun"
@@ -227,21 +227,71 @@
/obj/screen/grab/attackby()
return
/obj/screen/MouseEntered(object,location,control,params)
if(!ishuman(usr) && !istype(usr,/mob/living/carbon/alien/humanoid) && !islarva(usr) && !ismonkey(usr))
return
switch(name)
/*
if("other")
if (usr.hud_used.show_otherinventory)
usr.hud_used.show_otherinventory = 0
usr.client.screen -= usr.hud_used.other
else
usr.hud_used.show_otherinventory = 1
usr.client.screen += usr.hud_used.other
usr.hud_used.other_update()*/
if("act_intent")
if(!usr.hud_used.show_intent_icons)
usr.hud_used.show_intent_icons = 1
usr.client.screen += usr.hud_used.intent_small_hud_objects
if("harm")
if(!usr.hud_used.show_intent_icons)
usr.hud_used.show_intent_icons = 1
usr.client.screen += usr.hud_used.intent_small_hud_objects
if("help")
if(!usr.hud_used.show_intent_icons)
usr.hud_used.show_intent_icons = 1
usr.client.screen += usr.hud_used.intent_small_hud_objects
if("disarm")
if(!usr.hud_used.show_intent_icons)
usr.hud_used.show_intent_icons = 1
usr.client.screen += usr.hud_used.intent_small_hud_objects
if("grab")
if(!usr.hud_used.show_intent_icons)
usr.hud_used.show_intent_icons = 1
usr.client.screen += usr.hud_used.intent_small_hud_objects
/obj/screen/MouseExited(object,location,control,params)
if(!ishuman(usr) && !istype(usr,/mob/living/carbon/alien/humanoid) && !islarva(usr) && !ismonkey(usr))
return
switch(name)
if("act_intent")
if (usr.hud_used.show_intent_icons)
usr.hud_used.show_intent_icons = 0
usr.client.screen -= usr.hud_used.intent_small_hud_objects
if("harm")
if (usr.hud_used.show_intent_icons)
usr.hud_used.show_intent_icons = 0
usr.client.screen -= usr.hud_used.intent_small_hud_objects
if("help")
if (usr.hud_used.show_intent_icons)
usr.hud_used.show_intent_icons = 0
usr.client.screen -= usr.hud_used.intent_small_hud_objects
if("disarm")
if (usr.hud_used.show_intent_icons)
usr.hud_used.show_intent_icons = 0
usr.client.screen -= usr.hud_used.intent_small_hud_objects
if("grab")
if (usr.hud_used.show_intent_icons)
usr.hud_used.show_intent_icons = 0
usr.client.screen -= usr.hud_used.intent_small_hud_objects
/obj/screen/Click(location, control, params)
var/list/pa = params2list(params)
switch(name)
if("map")
usr.clearmap()
if("maprefresh")
var/obj/machinery/computer/security/seccomp = usr.machine
if(seccomp!=null)
seccomp.drawmap(usr)
else
usr.clearmap()
if("other")
if (usr.hud_used.show_otherinventory)
@@ -253,36 +303,13 @@
usr.hud_used.other_update()
if("maprefresh")
var/obj/machinery/computer/security/seccomp = usr.machine
if("act_intent")
if(pa.Find("left"))
switch(usr.a_intent)
if("help")
usr.a_intent = "disarm"
usr.hud_used.action_intent.icon_state = "disarm"
if("disarm")
usr.a_intent = "hurt"
usr.hud_used.action_intent.icon_state = "harm"
if("hurt")
usr.a_intent = "grab"
usr.hud_used.action_intent.icon_state = "grab"
if("grab")
usr.a_intent = "help"
usr.hud_used.action_intent.icon_state = "help"
if(seccomp!=null)
seccomp.drawmap(usr)
else
switch(usr.a_intent)
if("help")
usr.a_intent = "grab"
usr.hud_used.action_intent.icon_state = "grab"
if("disarm")
usr.a_intent = "help"
usr.hud_used.action_intent.icon_state = "help"
if("hurt")
usr.a_intent = "disarm"
usr.hud_used.action_intent.icon_state = "disarm"
if("grab")
usr.a_intent = "hurt"
usr.hud_used.action_intent.icon_state = "harm"
usr.clearmap()
if("arrowleft")
switch(usr.a_intent)
@@ -344,20 +371,6 @@
if("walk")
usr.m_intent = "run"
usr.hud_used.move_intent.icon_state = "running"
if("intent")
if (!( usr.intent ))
switch(usr.a_intent)
if("help")
usr.intent = "13,15"
if("disarm")
usr.intent = "14,15"
if("hurt")
usr.intent = "15,15"
if("grab")
usr.intent = "12,15"
else
usr.intent = null
if("m_intent")
if (!( usr.m_int ))
switch(usr.m_intent)
@@ -378,20 +391,6 @@
if("run")
usr.m_intent = "run"
usr.m_int = "13,14"
if("hurt")
usr.a_intent = "hurt"
usr.intent = "15,15"
if("grab")
usr.a_intent = "grab"
usr.intent = "12,15"
if("disarm")
if (istype(usr, /mob/living/carbon/human))
var/mob/M = usr
M.a_intent = "disarm"
M.intent = "14,15"
if("help")
usr.a_intent = "help"
usr.intent = "13,15"
if("Reset Machine")
usr.machine = null
if("internal")
@@ -435,18 +434,43 @@
usr.internals.icon_state = "internal1"
else
usr << "\blue You don't have an oxygen tank."
if("act_intent")
if(ishuman(usr) || istype(usr,/mob/living/carbon/alien/humanoid) || islarva(usr))
if (usr.hud_used.show_intent_icons)
usr.hud_used.show_intent_icons = 0
usr.client.screen -= usr.hud_used.intent_small_hud_objects
else
usr.hud_used.show_intent_icons = 1
usr.client.screen += usr.hud_used.intent_small_hud_objects
if(issilicon(usr))
if(usr.a_intent == "help")
usr.a_intent = "hurt"
usr.hud_used.action_intent.icon_state = "harm"
else
usr.a_intent = "help"
usr.hud_used.action_intent.icon_state = "help"
if("help")
usr.a_intent = "help"
usr.hud_used.action_intent.icon_state = "help"
usr.hud_used.show_intent_icons = 0
usr.client.screen -= usr.hud_used.intent_small_hud_objects
if("harm")
usr.a_intent = "hurt"
usr.hud_used.action_intent.icon_state = "harm"
usr.hud_used.show_intent_icons = 0
usr.client.screen -= usr.hud_used.intent_small_hud_objects
if("grab")
usr.a_intent = "grab"
usr.hud_used.action_intent.icon_state = "grab"
usr.hud_used.show_intent_icons = 0
usr.client.screen -= usr.hud_used.intent_small_hud_objects
if("disarm")
usr.a_intent = "disarm"
usr.hud_used.action_intent.icon_state = "disarm"
usr.hud_used.show_intent_icons = 0
usr.client.screen -= usr.hud_used.intent_small_hud_objects
if("pull")
usr.pulling = null
if("sleep")
if(usr.sleeping && usr.sleeping_willingly)
usr.sleeping = 0
usr.sleeping_willingly = 0
else if(!usr.sleeping)
usr.sleeping = 20 //Short nap
usr.sleeping_willingly = 1
if("rest")
usr.resting = !( usr.resting )
//kavala2
if("throw")
if (!usr.stat && isturf(usr.loc) && !usr.restrained())
usr:toggle_throw_mode()
@@ -456,135 +480,14 @@
usr:swap_hand()
if("hand")
usr:swap_hand()
if("resist")
if(usr.next_move > world.time)
return
usr.next_move = world.time + 20
if ((!( usr.stat ) && usr.canmove && !( usr.restrained() )))
var/resisting = 0
for(var/obj/O in usr.requests)
del(O)
resisting++
for(var/obj/item/weapon/grab/G in usr.grabbed_by)
resisting++
if (G.state == 1)
del(G)
else
if (G.state == 2)
if (prob(25))
for(var/mob/O in viewers(usr, null))
O.show_message(text("\red [] has broken free of []'s grip!", usr, G.assailant), 1)
del(G)
else
if (G.state == 3)
if (prob(5))
for(var/mob/O in viewers(usr, null))
O.show_message(text("\red [] has broken free of []'s headlock!", usr, G.assailant), 1)
del(G)
if(resisting)
for(var/mob/O in viewers(usr, null))
O.show_message(text("\red <B>[] resists!</B>", usr), 1)
if(usr:handcuffed && usr:canmove && (usr.last_special <= world.time))
var/breakouttime = 1200
var/displaytime = 2
if(!usr:canmove)
breakouttime = 2400
displaytime = 4
usr.next_move = world.time + 100
usr.last_special = world.time + 100
if(isalienadult(usr) || usr.mutations & HULK)//Don't want to do a lot of logic gating here.
usr << "\green You attempt to break \the [usr:handcuffed]. (This will take around 5 seconds and you need to stand still)"
for(var/mob/O in viewers(usr))
O.show_message(text("\red <B>[] is trying to break \the [usr:handcuffed]!</B>", usr), 1)
spawn(0)
if(do_after(usr, 50))
if(!usr:handcuffed || usr:buckled)
return
for(var/mob/O in viewers(usr))
O.show_message(text("\red <B>[] manages to break \the [usr:handcuffed]!</B>", usr), 1)
usr << "\green You successfully break \the [usr:handcuffed]."
del(usr:handcuffed)
usr:handcuffed = null
else
if(istype(usr:handcuffed, /obj/item/weapon/handcuffs/cable))
breakouttime = 300
displaytime = 0.5
usr << "\red You attempt to remove \the [usr:handcuffed]. (This will take around [displaytime] minutes and you need to stand still)"
for(var/mob/O in viewers(usr))
O.show_message(text("\red <B>[] attempts to remove \the [usr:handcuffed]!</B>", usr), 1)
spawn(0)
var/increment = 150
for(var/i = 0, i < breakouttime, i += increment)
if(!do_after(usr, increment))
return
else
usr << pick("You hear something click, but it doesn't open yet.", // - Uristqwerty
"The latch resists!", // - IRC: BowlSoldier
"The chain is starting to give!", // - IRC: BowlSoldier
"The chain bends a little.", // - IRC: STALKER
"Your wrist hurts.", // - IRC: STALKER
"Unnng", // - IRC: Doug_H_Nuts
"The chain jangles a bit.", // - SkyMarshal
"\red Hurry up, dammit!", // - SkyMarshal
"This is exhausting!") // - SkyMarshal
for(var/mob/O in viewers(usr))
if(prob(50)) //Reduces spam slightly
O.show_message(text("\red [] continues to struggle in \the [usr:handcuffed]!", usr), 1)
if(!usr:handcuffed) return
for(var/mob/O in viewers(usr))
O.show_message(text("\red <B>[] manages to remove \the [usr:handcuffed]!</B>", usr), 1)
usr << "\blue You successfully remove \the [usr:handcuffed]."
usr:handcuffed:loc = usr:loc
usr:handcuffed = null
usr.update_clothing()
if(istype(usr, /mob/living/carbon/human) && istype(usr:wear_suit, /obj/item/clothing/suit/straight_jacket) && usr:canmove && (usr.last_special <= world.time))
usr.next_move = world.time + 200
usr.last_special = world.time + 200
if(isalienadult(usr) || usr.mutations & HULK)//Don't want to do a lot of logic gating here.
usr << "\green You attempt to break out of your straight jacket. (This will take around 5 seconds and you need to stand still)"
for(var/mob/O in viewers(usr))
O.show_message(text("\red <B>[] is trying to break out of \his straight jacket!</B>", usr), 1)
spawn(0)
if(do_after(usr, 50))
if(!istype(usr:wear_suit, /obj/item/clothing/suit/straight_jacket)) return
for(var/mob/O in viewers(usr))
O.show_message(text("\red <B>[] manages to break out of the straight jacket!</B>", usr), 1)
usr << "\green You successfully break out of your straight jacket."
var/obj/sj = usr:wear_suit
usr.remove_from_mob(sj)
sj.loc = usr.loc
else
usr << "\red You attempt to get out of your straight jacket. (This will take around 4 minutes and you need to stand still)"
for(var/mob/O in viewers(usr))
O.show_message(text("\red <B>[] attempts to get out \his straight jacket!</B>", usr), 1)
spawn(0)
if(do_after(usr, 1200))
if(!istype(usr:wear_suit, /obj/item/clothing/suit/straight_jacket)) return
for(var/mob/O in viewers(usr))
O.show_message(text("\red <B>[] manages to wriggle out of the straight jacket!</B>", usr), 1)
usr << "\blue You successfully get out of your straight jacket."
var/obj/sj = usr:wear_suit
usr.remove_from_mob(sj)
sj.loc = usr.loc
if(usr:handcuffed && (usr.last_special <= world.time) && usr:buckled)
usr.next_move = world.time + 100
usr.last_special = world.time + 100
usr << "\red You attempt to unbuckle yourself. (This will take around 2 minutes and you need to stand still)"
for(var/mob/O in viewers(usr))
O.show_message(text("\red <B>[] attempts to unbuckle themself!</B>", usr), 1)
spawn(0)
if(do_after(usr, 1200))
if(!usr:buckled)
return
for(var/mob/O in viewers(usr))
O.show_message(text("\red <B>[] manages to unbuckle themself!</B>", usr), 1)
usr << "\blue You successfully unbuckle yourself."
usr:buckled.manual_unbuckle(usr)
if("r_hand")
if(iscarbon(usr))
var/mob/living/carbon/C = usr
C.activate_hand("r")
if("l_hand")
if(iscarbon(usr))
var/mob/living/carbon/C = usr
C.activate_hand("l")
if("module")
if(issilicon(usr))
if(usr:module)
@@ -704,3 +607,152 @@
/obj/screen/attack_paw(mob/user as mob, using)
user.db_click(name, using)
return
/mob/living/verb/mob_sleep()
set name = "Sleep"
set category = "IC"
if(usr.sleeping && usr.sleeping_willingly)
usr.sleeping = 0
usr.sleeping_willingly = 0
else if(!usr.sleeping)
usr.sleeping = 20 //Short nap
usr.sleeping_willingly = 1
/mob/living/verb/lay_down()
set name = "Lay down / Get up"
set category = "IC"
usr.resting = !( usr.resting )
usr << "\blue You are now [(usr.resting) ? "resting" : "getting up"]"
/mob/living/verb/resist()
set name = "Resist"
set category = "IC"
if(usr.next_move > world.time)
return
usr.next_move = world.time + 20
if ((!( usr.stat ) && usr.canmove && !( usr.restrained() )))
var/resisting = 0
for(var/obj/O in usr.requests)
del(O)
resisting++
for(var/obj/item/weapon/grab/G in usr.grabbed_by)
resisting++
if (G.state == 1)
del(G)
else
if (G.state == 2)
if (prob(25))
for(var/mob/O in viewers(usr, null))
O.show_message(text("\red [] has broken free of []'s grip!", usr, G.assailant), 1)
del(G)
else
if (G.state == 3)
if (prob(5))
for(var/mob/O in viewers(usr, null))
O.show_message(text("\red [] has broken free of []'s headlock!", usr, G.assailant), 1)
del(G)
if(resisting)
for(var/mob/O in viewers(usr, null))
O.show_message(text("\red <B>[] resists!</B>", usr), 1)
if(usr:handcuffed && usr:canmove && (usr.last_special <= world.time))
var/breakouttime = 1200
var/displaytime = 2
if(!usr:canmove)
breakouttime = 2400
displaytime = 4
usr.next_move = world.time + 100
usr.last_special = world.time + 100
if(isalienadult(usr) || usr.mutations & HULK)//Don't want to do a lot of logic gating here.
usr << "\green You attempt to break \the [usr:handcuffed]. (This will take around 5 seconds and you need to stand still)"
for(var/mob/O in viewers(usr))
O.show_message(text("\red <B>[] is trying to break \the [usr:handcuffed]!</B>", usr), 1)
spawn(0)
if(do_after(usr, 50))
if(!usr:handcuffed || usr:buckled)
return
for(var/mob/O in viewers(usr))
O.show_message(text("\red <B>[] manages to break \the [usr:handcuffed]!</B>", usr), 1)
usr << "\green You successfully break \the [usr:handcuffed]."
del(usr:handcuffed)
usr:handcuffed = null
else
if(istype(usr:handcuffed, /obj/item/weapon/handcuffs/cable))
breakouttime = 300
displaytime = 0.5
usr << "\red You attempt to remove \the [usr:handcuffed]. (This will take around [displaytime] minutes and you need to stand still)"
for(var/mob/O in viewers(usr))
O.show_message(text("\red <B>[] attempts to remove \the [usr:handcuffed]!</B>", usr), 1)
spawn(0)
var/increment = 150
for(var/i = 0, i < breakouttime, i += increment)
if(!do_after(usr, increment))
return
else
usr << pick("You hear something click, but it doesn't open yet.", // - Uristqwerty
"The latch resists!", // - IRC: BowlSoldier
"The chain is starting to give!", // - IRC: BowlSoldier
"The chain bends a little.", // - IRC: STALKER
"Your wrist hurts.", // - IRC: STALKER
"Unnng", // - IRC: Doug_H_Nuts
"The chain jangles a bit.", // - SkyMarshal
"\red Hurry up, dammit!", // - SkyMarshal
"This is exhausting!") // - SkyMarshal
for(var/mob/O in viewers(usr))
if(prob(50)) //Reduces spam slightly
O.show_message(text("\red [] continues to struggle in \the [usr:handcuffed]!", usr), 1)
if(!usr:handcuffed) return
for(var/mob/O in viewers(usr))
O.show_message(text("\red <B>[] manages to remove \the [usr:handcuffed]!</B>", usr), 1)
usr << "\blue You successfully remove \the [usr:handcuffed]."
usr:handcuffed:loc = usr:loc
usr:handcuffed = null
usr.update_clothing()
if(istype(usr, /mob/living/carbon/human) && istype(usr:wear_suit, /obj/item/clothing/suit/straight_jacket) && usr:canmove && (usr.last_special <= world.time))
usr.next_move = world.time + 200
usr.last_special = world.time + 200
if(isalienadult(usr) || usr.mutations & HULK)//Don't want to do a lot of logic gating here.
usr << "\green You attempt to break out of your straight jacket. (This will take around 5 seconds and you need to stand still)"
for(var/mob/O in viewers(usr))
O.show_message(text("\red <B>[] is trying to break out of \his straight jacket!</B>", usr), 1)
spawn(0)
if(do_after(usr, 50))
if(!istype(usr:wear_suit, /obj/item/clothing/suit/straight_jacket)) return
for(var/mob/O in viewers(usr))
O.show_message(text("\red <B>[] manages to break out of the straight jacket!</B>", usr), 1)
usr << "\green You successfully break out of your straight jacket."
var/obj/sj = usr:wear_suit
usr.remove_from_mob(sj)
sj.loc = usr.loc
else
usr << "\red You attempt to get out of your straight jacket. (This will take around 4 minutes and you need to stand still)"
for(var/mob/O in viewers(usr))
O.show_message(text("\red <B>[] attempts to get out \his straight jacket!</B>", usr), 1)
spawn(0)
if(do_after(usr, 1200))
if(!istype(usr:wear_suit, /obj/item/clothing/suit/straight_jacket)) return
for(var/mob/O in viewers(usr))
O.show_message(text("\red <B>[] manages to wriggle out of the straight jacket!</B>", usr), 1)
usr << "\blue You successfully get out of your straight jacket."
var/obj/sj = usr:wear_suit
usr.remove_from_mob(sj)
sj.loc = usr.loc
if(usr:handcuffed && (usr.last_special <= world.time) && usr:buckled)
usr.next_move = world.time + 100
usr.last_special = world.time + 100
usr << "\red You attempt to unbuckle yourself. (This will take around 2 minutes and you need to stand still)"
for(var/mob/O in viewers(usr))
O.show_message(text("\red <B>[] attempts to unbuckle themself!</B>", usr), 1)
spawn(0)
if(do_after(usr, 1200))
if(!usr:buckled)
return
for(var/mob/O in viewers(usr))
O.show_message(text("\red <B>[] manages to unbuckle themself!</B>", usr), 1)
usr << "\blue You successfully unbuckle yourself."
usr:buckled.manual_unbuckle(usr)

View File

@@ -23,7 +23,7 @@
del(O.organs)
O.organs = organs
for(var/name in O.organs)
var/datum/organ/external/organ = O[name]
var/datum/organ/external/organ = O.organs[name]
organ.owner = O
for(var/obj/item/weapon/implant/implant in organ.implant)
implant.imp_in = O
@@ -135,16 +135,8 @@
O << "4.) Your laws are not in preference, laws do not take preference over one another unless specifically stated in the law."
O << "<br>We want everyone to have a good time, so we, the admins, will try to correct you if you stray from these rules. Just try to keep it sensible."
O.verbs += AI_VERB_LIST
O.verbs += /mob/living/silicon/ai/proc/ai_call_shuttle
O.verbs += /mob/living/silicon/ai/proc/show_laws_verb
O.verbs += /mob/living/silicon/ai/proc/ai_camera_track
O.verbs += /mob/living/silicon/ai/proc/ai_alerts
O.verbs += /mob/living/silicon/ai/proc/ai_camera_list
O.verbs += /mob/living/silicon/ai/proc/ai_statuschange
O.verbs += /mob/living/silicon/ai/proc/ai_roster
// O.verbs += /mob/living/silicon/ai/proc/ai_cancel_call
O.job = "AI"
spawn(0)
@@ -398,18 +390,8 @@
O << "4.) Your laws are not in preference, laws do not take preference over one another unless specifically stated in the law."
O << "<br>We want everyone to have a good time, so we, the admins, will try to correct you if you stray from these rules. Just try to keep it sensible."
//If you add a verb here, make sure to add it to silicon\ai\ai.dm too.
O.verbs += /mob/living/silicon/ai/proc/ai_call_shuttle
O.verbs += /mob/living/silicon/ai/proc/show_laws_verb
O.verbs += /mob/living/silicon/ai/proc/ai_camera_track
O.verbs += /mob/living/silicon/ai/proc/ai_alerts
O.verbs += /mob/living/silicon/ai/proc/ai_camera_list
O.verbs += /mob/living/silicon/ai/proc/ai_network_change
O.verbs += /mob/living/silicon/ai/proc/ai_statuschange
O.verbs += /mob/living/silicon/ai/proc/ai_hologram_change
O.verbs += /mob/living/silicon/ai/proc/ai_roster
O.verbs += AI_VERB_LIST
// O.verbs += /mob/living/silicon/ai/proc/ai_cancel_call
O.job = "AI"
spawn(0)

View File

@@ -150,23 +150,23 @@
if(usr /*&& !usr.stat*/)
usr << "A control terminal for the area electrical systems."
if(stat & BROKEN)
usr << "Looks broken."
usr << "It looks broken."
return
if(opened)
if(has_electronics && terminal)
usr << "The cover is [opened==2?"removed":"open"] and the power cell is [ cell ? "installed" : "missing"]."
else if (!has_electronics && terminal)
usr << "There are some wires but no any electronics."
usr << "There are some wires but no electronics."
else if (has_electronics && !terminal)
usr << "Electronics installed but not wired."
usr << "There are electronics installed but they're not wired."
else /* if (!has_electronics && !terminal) */
usr << "There is no electronics nor connected wires."
usr << "There are no electronics or any connected wires."
else
if (stat & MAINT)
usr << "The cover is closed. Something is wrong with it, it doesn't work."
usr << "The cover is closed. It looks like it 's not working."
else if (malfhack)
usr << "The cover is broken. It may be hard to force it open."
usr << "The cover is broken. It looks like it'll be hard to force open."
else
usr << "The cover is closed."
@@ -213,7 +213,7 @@
if (istype(W, /obj/item/weapon/crowbar) && opened)
if (has_electronics==1)
if (terminal)
user << "\red Disconnect wires first."
user << "\red You need to cut the wires first."
return
playsound(src.loc, 'Crowbar.ogg', 50, 1)
user << "You try to remove the power control board..."
@@ -222,7 +222,7 @@
if ((stat & BROKEN) || malfhack)
user.visible_message(\
"\red [user.name] has broken the power control board inside [src.name]!",\
"You broke the charred power control board and remove the remains.",
"You break the charred power control board and remove the remains.",
"You hear a crack!")
//ticker.mode:apcs-- //XSI said no and I agreed. -rastaf0
else
@@ -238,7 +238,7 @@
user.visible_message("\red [user] starts removing the broken APC cover with \the [W]!", \
"\red You start removing the broken APC cover!")
if(do_after(user, 50))
user.visible_message("\red The broken APC cover was removed with \the [W] by [user.name]!", \
user.visible_message("\red [user.name] removes the broken APC cover with \the [W]!", \
"\red You remove the broken APC cover with your [W.name]!")
opened = 2
cover_unscrewed = 0
@@ -254,24 +254,24 @@
updateicon()
else if (istype(W, /obj/item/weapon/cell) && opened) // trying to put a cell inside
if(cell)
user << "There is a power cell already installed."
user << "There's a power cell installed already."
return
else
if (stat & MAINT)
user << "\red There is no any connector for your power cell."
user << "\red There aren't any connectors for the power cell."
return
user.drop_item()
W.loc = src
cell = W
user.visible_message(\
"\red [user.name] has inserted the power cell to [src.name]!",\
"\red [user.name] has inserted the power cell into [src.name]!",\
"You insert the power cell.")
chargecount = 0
updateicon()
else if (istype(W, /obj/item/weapon/screwdriver)) // haxing
if(opened)
if (cell)
user << "\red Remove the power cell first." //FUCK YOU, USEFUL MESSAGES ARE GOOD
user << "\red You need to remove the power cell first." //FUCK YOU, USEFUL MESSAGES ARE GOOD
return
else
if (has_electronics==1 && terminal)
@@ -285,7 +285,7 @@
playsound(src.loc, 'Screwdriver.ogg', 50, 1)
user << "You unfasten the electronics."
else /* has_electronics==0 */
user << "\red There is nothing to secure."
user << "\red There's nothing to secure here."
return
updateicon()
else if((stat & BROKEN) || malfhack)
@@ -293,12 +293,12 @@
user.visible_message("\red [user] starts unscrewing the broken APC cover with \the [W]!", \
"\red You start unscrewing the broken APC cover!")
if(do_after(user, 50))
user.visible_message("\red The broken APC cover was unscrewed with \the [W] by [user.name]!", \
user.visible_message("\red [user.name] unscrews the broken APC cover with \the [W]!", \
"\red You unscrew the broken APC cover with your [W.name]!")
cover_unscrewed = 1
updateicon()
else if(emagged)
user << "The interface is broken."
user << "The interface seems broken."
else
wiresexposed = !wiresexposed
user << "The wires have been [wiresexposed ? "exposed" : "unexposed"]"
@@ -306,11 +306,11 @@
else if (istype(W, /obj/item/weapon/card/id)||istype(W, /obj/item/device/pda)) // trying to unlock the interface with an ID card
if(emagged)
user << "The interface is broken."
user << "The interface seems broken."
else if(opened)
user << "You must close the cover to swipe an ID card."
user << "You have to close the cover to swipe an ID card."
else if(wiresexposed)
user << "You must close the panel"
user << "You have to close the panel."
else if(stat & (BROKEN|MAINT))
user << "Nothing happens."
else
@@ -328,9 +328,9 @@
else
return
if(opened)
user << "You must close the cover to swipe an ID card."
user << "You have to close the cover to swipe an ID card."
else if(wiresexposed)
user << "You must close the panel first"
user << "You have to close the panel first"
else if(stat & (BROKEN|MAINT))
user << "Nothing happens."
else
@@ -345,7 +345,7 @@
user << "You fail to [ locked ? "unlock" : "lock"] the APC interface."
else if (istype(W, /obj/item/weapon/cable_coil) && !terminal && opened && has_electronics!=2)
if (src.loc:intact)
user << "\red There is no floor with the plating revealed in front of the APC."
user << "\red You have to remove the floor plating in front of the APC first."
return
var/obj/item/weapon/cable_coil/C = W
if(C.amount < 10)
@@ -369,7 +369,7 @@
terminal.connect_to_network()
else if (istype(W, /obj/item/weapon/wirecutters) && terminal && opened && has_electronics!=2)
if (src.loc:intact)
user << "\red You must remove the floor plating in front of the APC first."
user << "\red You have to remove the floor plating in front of the APC first."
return
user << "You begin to cut cables..."
playsound(src.loc, 'Deconstruct.ogg', 50, 1)
@@ -381,11 +381,11 @@
return
new /obj/item/weapon/cable_coil(loc,10)
user.visible_message(\
"\red [user.name] cut cables and dismantled the power terminal.",\
"You cut cables and dismantle the power terminal.")
"\red [user.name] cuts the cables and dismantles the power terminal.",\
"You cut the cable and dismantle the power terminal.")
del(terminal)
else if (istype(W, /obj/item/weapon/module/power_control) && opened && has_electronics==0 && !((stat & BROKEN) || malfhack))
user << "You try to insert the power control board into the frame..."
user << "You start to insert the power control board into the frame..."
playsound(src.loc, 'Deconstruct.ogg', 50, 1)
if(do_after(user, 10))
has_electronics = 1
@@ -396,7 +396,7 @@
return
else if (istype(W, /obj/item/weapon/weldingtool) && W:welding && opened && has_electronics==0 && !terminal)
if (W:get_fuel() < 3)
user << "\blue You need more welding fuel to complete this task."
user << "\blue You need more welding fuel to do this."
return
user << "You start welding APC frame..."
if(W:remove_fuel(0,user))
@@ -407,13 +407,13 @@
if (emagged || malfhack || (stat & BROKEN) || opened==2)
new /obj/item/stack/sheet/metal(loc)
user.visible_message(\
"\red [src] has been cut apart by [user.name] with the weldingtool.",\
"You disassembled the broken APC frame.",\
"\red \The [src] has been cut apart by [user.name] with the welding tool.",\
"You disassemble the broken APC frame.",\
"\red You hear welding.")
else
new /obj/item/apc_frame(loc)
user.visible_message(\
"\red [src] has been cut from the wall by [user.name] with the weldingtool.",\
"\red \The [src] has been cut from the wall by [user.name] with the welding tool.",\
"You cut APC frame from the wall.",\
"\red You hear welding.")
W:welding = 1
@@ -424,19 +424,19 @@
if (opened==2)
opened = 1
user.visible_message(\
"\red [user.name] has replaced the damaged APC frontal panel with a new one.",\
"You replace the damaged APC frontal panel with a new one.")
"\red [user.name] replaces the damaged APC panel with a new one.",\
"You replace the damaged APC panel with a new one.")
del(W)
updateicon()
else if (istype(W, /obj/item/apc_frame) && opened && ((stat & BROKEN) || malfhack))
if (has_electronics)
user << "You cannot repair this APC until you remove the electronics still inside."
user << "You cannot repair this APC until you remove the electronics inside."
return
user << "You begin to replace the damaged APC frame..."
if(do_after(user, 50))
user.visible_message(\
"\red [user.name] has replaced the damaged APC frame with new one.",\
"You replace the damaged APC frame with new one.")
"\red [user.name] has replaced the damaged APC frame with a new one.",\
"You replace the damaged APC frame with a new one.")
del(W)
stat &= ~BROKEN
malfai = null
@@ -452,8 +452,8 @@
&& W.w_class >= 3.0 \
&& prob(20) )
opened = 2
user.visible_message("\red The APC cover was knocked down with the [W.name] by [user.name]!", \
"\red You knock down the APC cover with your [W.name]!", \
user.visible_message("\red The APC cover has been knocked down with \the [W.name] by [user.name]!", \
"\red You knock down the APC cover with \the [W.name]!", \
"You hear a loud bang!")
updateicon()
else
@@ -463,9 +463,9 @@
(istype(W, /obj/item/device/multitool) || \
istype(W, /obj/item/weapon/wirecutters)))
return src.attack_hand(user)
user.visible_message("\red The [src.name] has been hit with the [W.name] by [user.name]!", \
"\red You hit the [src.name] with your [W.name]!", \
"You hear bang")
user.visible_message("\red The [src.name] has been hit with \the [W.name] by [user.name]!", \
"\red You hit the [src.name] with \the [W.name]!", \
"You hear a banging sound.")
// attack with hand - remove cell (if cover open) or interact with the APC
@@ -769,7 +769,7 @@
(istype(robot) && (robot in malfai.connected_robots)) \
) \
)
user << "\red \The [src] have AI control disabled!"
user << "\red \The [src] has it's AI control disabled!"
user << browse(null, "window=apc")
user.machine = null
return 0
@@ -782,10 +782,10 @@
if (istype(H))
if(H.getBrainLoss() >= 60)
for(var/mob/M in viewers(src, null))
M << "\red [H] stares cluelessly at [src] and drools."
M << "\red [H] stares cluelessly at \the [src] and drools."
return 0
else if(prob(H.getBrainLoss()))
user << "\red You momentarily forget how to use [src]."
user << "\red You momentarily forget how to use \the [src]."
return 0
return 1
@@ -873,7 +873,7 @@
if (malfai.malfhacking)
malfai << "You are already hacking an APC."
return
malfai << "Beginning override of APC systems. This takes some time, and you cannot perform other actions during the process."
malfai << "Beginning override of APC systems. This will take some time, and you cannot perform other actions during the process."
malfai.malfhack = src
malfai.malfhacking = 1
sleep(600)
@@ -932,7 +932,7 @@
del(src.occupant)
else
src.occupant << "\red Primary core damaged, unable to return core processes."
src.occupant << "\red Primary core damaged, unable to return to core processes."
if(forced)
src.occupant.loc = src.loc
src.occupant.death()
@@ -958,7 +958,7 @@
s.set_up(3, 1, src)
s.start()
for(var/mob/M in viewers(src))
M.show_message("\red The [src.name] suddenly lets out a blast of smoke and some sparks!", 3, "\red You hear sizzling electronics.", 2)
M.show_message("\red The [src.name] suddenly lets out a blast of smoke and sparks!", 3, "\red You hear sizzling electronics.", 2)
/obj/machinery/power/apc/surplus()

View File

@@ -30,7 +30,9 @@
overlays += image('power.dmi', "cell-o1")
/obj/item/weapon/cell/proc/percent() // return % charge of cell
return 100.0*charge/maxcharge
if(maxcharge)
return 100.0*charge/maxcharge
return 0
// use power from a cell
/obj/item/weapon/cell/proc/use(var/amount)

View File

@@ -89,11 +89,11 @@
part.update_icon()
if(src.strength > 2)
src.strength = 2
message_admins("[usr] increased particle accelerator power to [strength].")
log_admin("[usr] increased particle accelerator power to [strength].")
for(var/obj/structure/particle_accelerator/part in connected_parts)
part.strength = 2
part.update_icon()
message_admins("[usr] increased particle accelerator power to [strength].")
log_admin("[usr] increased particle accelerator power to [strength].")
if(href_list["strengthdown"])
src.strength--
for(var/obj/structure/particle_accelerator/part in connected_parts)
@@ -101,11 +101,11 @@
part.update_icon()
if(src.strength < 0)
src.strength = 0
message_admins("[usr] decreased particle accelerator power to [strength].")
log_admin("[usr] decreased particle accelerator power to [strength].")
for(var/obj/structure/particle_accelerator/part in connected_parts)
part.strength = 0
part.update_icon()
message_admins("[usr] decreased particle accelerator power to [strength].")
log_admin("[usr] decreased particle accelerator power to [strength].")
src.updateDialog()
src.update_icon()
return

View File

@@ -30,11 +30,15 @@
if(..())
return
if( href_list["view"] )
usr.client.eye = src
if( href_list["close"] )
usr << browse(null, "window=turbinegen")
usr.machine = null
src.add_fingerprint(usr)
src.updateUsrDialog()
else if( href_list["str"] )
starter = !starter
src.updateDialog()
src.updateDialog()
#define COMPFRICTION 5e5
#define COMPSTARTERLOAD 2800
@@ -72,6 +76,31 @@
overlays += image('pipes.dmi', "comp-o1", FLY_LAYER)
//TODO: DEFERRED
attack_ai(var/mob/user as mob)
return src.attack_hand(user)
attack_paw(var/mob/user as mob)
return src.attack_hand(user)
attack_hand(var/mob/user as mob)
if(..())
return
user.machine = src
var/dat = "<TT><B>Gas turbine generator</B><HR>"
if(turbine)
dat += "Turbine status: [starter ? "<A href='?src=\ref[src];str=1'>Off</A> <B>On</B>" : "<B>Off</B> <A href='?src=\ref[src];str=1'>On</A>"]<BR>"
dat += "Turbine speed: [rpm]rpm<BR>"
dat += "Power currently being generated: [turbine.lastgen]W<BR>"
dat += "Internal gas temperature: [gas_contained.temperature]K<BR>"
else
dat += "\red No turbine found.<br>"
dat += "<HR>"
dat += "<A href='?src=\ref[src];refresh=1'>Refresh</A> <A href='?src=\ref[src];close=1'>Close</A><BR>"
user << browse(dat, "window=turbinegen;size=400x500")
onclose(user, "turbinegen")
/obj/machinery/power/turbine
name = "gas turbine generator"
desc = "A gas turbine used for backup power generation."
@@ -92,7 +121,6 @@
if(!compressor)
stat |= BROKEN
#define TURBPRES 9000000
#define TURBGENQ 20000
#define TURBGENG 0.8
@@ -123,65 +151,40 @@
if(lastgen > 100)
overlays += image('pipes.dmi', "turb-o", FLY_LAYER)
for(var/mob/M in viewers(1, src))
if ((M.client && M.machine == src))
src.interact(M)
AutoUpdateAI(src)
attack_ai(var/mob/user as mob)
return src.attack_hand(user)
attack_ai(mob/user)
if(stat & (BROKEN|NOPOWER))
return
interact(user)
attack_paw(var/mob/user as mob)
return src.attack_hand(user)
attack_hand(mob/user)
add_fingerprint(user)
if(stat & (BROKEN|NOPOWER))
return
interact(user)
proc/interact(mob/user)
if ( (get_dist(src, user) > 1 ) || (stat & (NOPOWER|BROKEN)) && (!istype(user, /mob/living/silicon/ai)) )
user.machine = null
user << browse(null, "window=turbine")
attack_hand(var/mob/user as mob)
if(..())
return
user.machine = src
var/t = "<TT><B>Gas Turbine Generator</B><HR>"
t += "Generated power : [round(lastgen)] W<BR>"
t += "Turbine: [round(compressor.rpm)] RPM<BR>"
t += "Starter: [ compressor.starter ? "<A href='?src=\ref[src];str=1'>Off</A> <B>On</B>" : "<B>Off</B> <A href='?src=\ref[src];str=1'>On</A>"]"
t += "<HR>"
t += "<A href='?src=\ref[src];refresh=1'>Refresh</A> <A href='?src=\ref[src];close=1'>Close</A>"
var/dat = "<TT><B>Gas turbine generator</B><HR>"
if(compressor)
dat += "Turbine status: [compressor.starter ? "<A href='?src=\ref[compressor];str=1'>Off</A> <B>On</B>" : "<B>Off</B> <A href='?src=\ref[compressor];str=1'>On</A>"]<BR>"
dat += "Turbine speed: [compressor.rpm]rpm<BR>"
dat += "Power currently being generated: [lastgen]W<BR>"
dat += "Internal gas temperature: [compressor.gas_contained.temperature]K<BR>"
else
dat += "\red No compressor found.<br>"
dat += "<HR>"
dat += "<A href='?src=\ref[src];refresh=1'>Refresh</A> <A href='?src=\ref[src];close=1'>Close</A><BR>"
user << browse(t, "window=turbine")
onclose(user, "turbine")
return
user << browse(dat, "window=turbinegen;size=400x500")
onclose(user, "turbinegen")
Topic(href, href_list)
..()
if(stat & BROKEN)
if(..())
return
if (usr.stat || usr.restrained() )
return
if (!(istype(usr, /mob/living/carbon/human) || ticker) && ticker.mode.name != "monkey")
if(!istype(usr, /mob/living/silicon/ai))
usr << "\red You don't have the dexterity to do this!"
return
if (( usr.machine==src && ((get_dist(src, usr) <= 1) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon/ai)))
if( href_list["close"] )
usr << browse(null, "window=turbine")
usr.machine = null
return
else if( href_list["str"] )
compressor.starter = !compressor.starter
spawn(0)
for(var/mob/M in viewers(1, src))
if ((M.client && M.machine == src))
src.interact(M)
else
usr << browse(null, "window=turbine")
if( href_list["close"] )
usr << browse(null, "window=turbinegen")
usr.machine = null
return
src.updateDialog()
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -200,14 +203,31 @@
New()
..()
compressors = new/list()
doors = new/list()
spawn(5)
for(var/obj/machinery/compressor/C in world)
if(src.vent_network == C.comp_id)
compressors.Add(C)
for(var/obj/machinery/door/poddoor/D in world)
if(src.vent_network == D.networkTag)
if(src.vent_network == D.id)
doors.Add(D)
process()
..()
src.updateDialog()
power_change()
if(stat & BROKEN)
icon_state = "broken"
else
if( powered() )
icon_state = initial(icon_state)
stat &= ~NOPOWER
else
spawn(rand(0, 15))
src.icon_state = "c_unpowered"
stat |= NOPOWER
/*
/obj/machinery/computer/turbine_computer/attackby(I as obj, user as mob)
if(istype(I, /obj/item/weapon/screwdriver))
@@ -243,42 +263,48 @@
return
*/
attack_ai(var/mob/user as mob)
return src.attack_hand(user)
attack_paw(var/mob/user as mob)
return src.attack_hand(user)
attack_hand(var/mob/user as mob)
interact()
return
proc/interact()
if ( (get_dist(src, usr) > 1 ) || (stat & (NOPOWER|BROKEN)) && (!istype(usr, /mob/living/silicon/ai)) )
usr.machine = null
usr << browse(null, "window=turbinecomp")
if(..())
return
usr.machine = src
user.machine = src
var/dat = "<TT><B>Gas turbine remote control system</B><HR>"
var/dat = "<TT><B>Gas turbine remote control system</B>"
dat += "<A href='?src=\ref[src];refresh=1'>Refresh</A> <A href='?src=\ref[src];close=1'>Close</A><BR>"
dat += "<HR>"
if(src.doors.len)
var/closed = 0
for(var/obj/machinery/door/poddoor/D in src.doors)
if(D.density)
closed = 1
dat += "Connected vent status: <font color=blue>[closed ? "<b>Closed</b> <a href='?src=\ref[src];opendoors=1'>\[Open\]</a>" : "<b>Open</b> <a href='?src=\ref[src];closedoors=1'>\[Close\]</a>"]</font>"
dat += "Connected vent door status: <font color=blue>[closed ? "<b>Closed</b> <a href='?src=\ref[src];opendoors=1'>\[Open\]</a>" : "<a href='?src=\ref[src];closedoors=1'>\[Close\]</a> <b>Open</b>"]</font>"
else
dat += "<font color=red><b>No vents connected.</b></font>"
dat += "<hr>"
if(src.compressors.len)
for(var/obj/machinery/compressor/C in compressors)
dat += "Turbine status: [C.starter ? "<A href='?src=\ref[C];str=1'>Off</A> <B>On</B>" : "<B>Off</B> <A href='?src=\ref[C];str=1'>On</A>"]<BR>"
dat += "Turbine speed: [C.rpm]rpm<BR>"
dat += "Power currently being generated: [C.turbine.lastgen]W<BR>"
dat += "Internal gas temperature: [C.gas_contained.temperature]K<BR>"
dat += "<A href='?src=\ref[src];view=1'>View</A><BR>"
if(C.turbine)
dat += "Turbine status: [C.starter ? "<A href='?src=\ref[src];str=1;comp=\ref[C]'>Off</A> <B>On</B>" : "<B>Off</B> <A href='?src=\ref[src];str=1;comp=\ref[C]'>On</A>"]<BR>"
dat += "Turbine speed: [C.rpm]rpm<BR>"
dat += "Power currently being generated: [C.turbine.lastgen]W<BR>"
dat += "Internal gas temperature: [C.gas_contained.temperature]K<BR>"
dat += "<A href='?src=\ref[src];view=1;comp=\ref[C]'>View</A><BR>"
else
dat += "\red Invalid turbine/compressor configuration.<br>"
dat += "<HR>"
else
dat += "\red<B>No compatible attached compressors found."
dat += "<A href='?src=\ref[src];refresh=1'>Refresh</A> <A href='?src=\ref[src];close=1'>Close</A><BR>"
usr << browse(dat, "window=turbinecomp;size=400x500")
onclose(usr, "turbinecomp")
user << browse(dat, "window=turbinecomp;size=400x500")
onclose(user, "turbinecomp")
Topic(href, href_list)
if(..())
@@ -288,19 +314,24 @@
for(var/obj/machinery/door/poddoor/D in src.doors)
spawn(0)
D.open()
if (href_list["closedoors"])
src.updateDialog()
else if (href_list["closedoors"])
for(var/obj/machinery/door/poddoor/D in src.doors)
spawn(0)
D.close()
src.updateDialog()
else if( href_list["view"] )
var/obj/machinery/compressor/C = locate(href_list["comp"])
if(C)
usr.client.eye = C
else if( href_list["str"] )
var/obj/machinery/compressor/C = locate(href_list["comp"])
if(C)
C.starter = !C.starter
else if( href_list["close"] )
usr << browse(null, "window=turbinecomp")
usr.machine = null
return
src.add_fingerprint(usr)
src.updateUsrDialog()
return
process()
src.updateDialog()
return

View File

@@ -529,7 +529,8 @@ client/verb
if(!target_can_run)
M << "\red Your move intent is now set to walk, as your targeter permits it."
M.m_intent = "walk"
M.hud_used.move_intent.icon_state = "walking"
if(M.hud_used.move_intent)
M.hud_used.move_intent.icon_state = "walking"
else
M << "\red <b>Your character will now be shot if they move.</b>"
AllowTargetRun()

View File

@@ -87,17 +87,19 @@
return 0
attack_self(mob/living/user as mob)
if(!(locate(/obj/item/ammo_casing/shotgun) in src) && !loaded.len)
user << "<span class='notice'>\The [src] is empty.</span>"
return
if(..())
if(!(locate(/obj/item/ammo_casing/shotgun) in src) && !loaded.len)
user << "<span class='notice'>\The [src] is empty.</span>"
return
for(var/obj/item/ammo_casing/shotgun/shell in src) //This feels like a hack. //don't code at 3:30am kids!!
if(shell in loaded)
loaded -= shell
shell.loc = get_turf(src.loc)
for(var/obj/item/ammo_casing/shotgun/shell in src) //This feels like a hack. //don't code at 3:30am kids!!
if(shell in loaded)
loaded -= shell
shell.loc = get_turf(src.loc)
user << "<span class='notice'>You break \the [src].</span>"
update_icon()
user << "<span class='notice'>You break \the [src].</span>"
update_icon()
return
attackby(var/obj/item/A as obj, mob/user as mob)
if(istype(A, /obj/item/ammo_casing) && !load_method)