Merge pull request #3 from Aurorastation/development

Conflict Clearance
This commit is contained in:
Serveris
2015-03-07 19:23:45 -05:00
15 changed files with 122 additions and 27 deletions
@@ -111,16 +111,16 @@ proc/assign_sec_to_department(var/mob/living/carbon/human/H)
/obj/item/clothing/under/rank/security/cargo/New()
var/obj/item/clothing/tie/armband/cargo/A = new /obj/item/clothing/tie/armband/cargo
hastie = A
aband = A
/obj/item/clothing/under/rank/security/engine/New()
var/obj/item/clothing/tie/armband/engine/A = new /obj/item/clothing/tie/armband/engine
hastie = A
aband = A
/obj/item/clothing/under/rank/security/science/New()
var/obj/item/clothing/tie/armband/science/A = new /obj/item/clothing/tie/armband/science
hastie = A
aband = A
/obj/item/clothing/under/rank/security/med/New()
var/obj/item/clothing/tie/armband/medgreen/A = new /obj/item/clothing/tie/armband/medgreen
hastie = A
aband = A
+5 -1
View File
@@ -49,7 +49,7 @@
msg_scopes("Admin [key_name_admin(usr)] has restarted the [controller] controller.")
return
/client/proc/debug_controller(controller in list("Master","Failsafe","Ticker","Lighting","Air","Jobs","Sun","Radio","Supply","Shuttles","Emergency Shuttle","Configuration","pAI", "Cameras", "Transfer Controller", "Gas Data", "Delta Level"))
/client/proc/debug_controller(controller in list("Master","Failsafe","Ticker","Lighting","Air","Jobs","Sun","Radio","Supply","Shuttles","Emergency Shuttle","Configuration","pAI", "Cameras", "Transfer Controller", "Gas Data", "Delta Level", "NanoUI"))
set category = "Debug"
set name = "Debug Controller"
set desc = "Debug the various periodic loop controllers for the game (be careful!)"
@@ -107,5 +107,9 @@
if("Gas Data")
debug_variables(gas_data)
feedback_add_details("admin_verv","DGasdata")
if("NanoUI")
debug_variables(nanomanager)
feedback_add_details("admin_verv","DNanoUI")
message_admins("Admin [key_name_admin(usr)] is debugging the [controller] controller.")
return
@@ -92,7 +92,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
else if(istype(W, /obj/item/weapon/lighter/zippo))
var/obj/item/weapon/lighter/zippo/Z = W
if(Z.lit)
light("<span class='rose'>With a flick of their wrist, [user] lights their [name] with their [W].</span>")
light("<span class='rose'>With a flick of their wrist, [user] lights [name] with [W].</span>")
else if(istype(W, /obj/item/weapon/lighter))
var/obj/item/weapon/lighter/L = W
@@ -102,7 +102,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
else if(istype(W, /obj/item/weapon/match))
var/obj/item/weapon/match/M = W
if(M.lit)
light("<span class='notice'>[user] lights their [name] with their [W].</span>")
light("<span class='notice'>[user] lights their [name] with [W].</span>")
else if(istype(W, /obj/item/weapon/melee/energy/sword))
var/obj/item/weapon/melee/energy/sword/S = W
@@ -50,8 +50,8 @@
log_str += " Last touched by: [src.fingerprintslast][last_touch_info]"
bombers += log_str
message_admins("C4 Explosion: Last touched by: [src.fingerprintslast][last_touch_info]([user.ckey])(<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[src.x];Y=[src.y];Z=[src.z]'>JMP</a>)")
message_admins("C4 Explosion: Last touched by: [src.fingerprintslast][last_touch_info]([user.ckey])(<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[src.x];Y=[src.y];Z=[src.z]'>JMP</a>)")
message_admins("C4 Explosion: Last touched by: [src.fingerprintslast][last_touch_info]([user.ckey])(<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[target.x];Y=[target.y];Z=[target.z]'>JMP</a>)")
message_mods("C4 Explosion: Last touched by: [src.fingerprintslast][last_touch_info]([user.ckey])(<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[target.x];Y=[target.y];Z=[target.z]'>JMP</a>)")
explosion(location, -1, -1, 2, 3)
if (istype(target, /turf/simulated/wall)) target:dismantle_wall(1)
@@ -13,6 +13,7 @@
var/health = 100
var/lastbang
var/storage_capacity = 30 //This is so that someone can't pack hundreds of items in a locker/crate
var/mob_capacity = 2
//then open it in a populated area to crash clients.
/obj/structure/closet/New()
@@ -80,6 +81,7 @@
return 0
var/itemcount = 0
var/mobcount = 0
//Cham Projector Exception
for(var/obj/effect/dummy/chameleon/AD in src.loc)
@@ -103,6 +105,11 @@
if(M.buckled || M.pinned.len)
continue
if(istype(M, /mob/living/carbon/human))
if(mobcount >= mob_capacity)
continue
mobcount++
if(M.client)
M.client.perspective = EYE_PERSPECTIVE
M.client.eye = src
+59 -1
View File
@@ -1,9 +1,10 @@
#define MEMOFILE "data/memo.sav" //where the memos are saved
#define PLAYERMEMOFILE "data/pmemo.sav" //where the player memos are saved
#define ENABLE_MEMOS 1 //using a define because screw making a config variable for it. This is more efficient and purty.
//switch verb so we don't spam up the verb lists with like, 3 verbs for this feature.
/client/proc/admin_memo(task in list("write","show","delete"))
set name = "Memo"
set name = "Admin Memo"
set category = "Server"
if(!ENABLE_MEMOS) return
if(!check_rights(0)) return
@@ -50,5 +51,62 @@
F.dir.Remove(ckey)
src << "<b>Removed Memo created by [ckey].</b>"
//switch verb so we don't spam up the verb lists with like, 3 verbs for this feature.
/client/verb/memo_player()
set name = "Player Memo"
set category = "OOC"
if(!ENABLE_MEMOS) return
admin_memo_player_show()
/client/proc/admin_memo_player(task in list("write","show","delete"))
set name = "Player Memo"
set category = "Server"
if(!ENABLE_MEMOS) return
if(!check_rights(0)) return
switch(task)
if("write") admin_memo_player_write()
if("show") admin_memo_player_show()
if("delete") admin_memo_player_delete()
//write a message
/client/proc/admin_memo_player_write()
var/savefile/F = new(PLAYERMEMOFILE)
if(F)
var/memo = input(src,"Type your memo\n(Leaving it blank will delete your current memo):","Write Memo",null) as null|message
switch(memo)
if(null)
return
if("")
F.dir.Remove(ckey)
src << "<b>Memo removed</b>"
return
if( findtext(memo,"<script",1,0) )
return
F[ckey] << "[key] on [time2text(world.realtime,"(DDD) DD MMM hh:mm")]<br>[memo]"
message_admins("[key] set an player memo:<br>[memo]")
//show all memos
/client/proc/admin_memo_player_show()
if(ENABLE_MEMOS)
var/savefile/F = new(PLAYERMEMOFILE)
if(F)
for(var/ckey in F.dir)
src << "<center><span class='motd'><b>Player Memo</b><i> by [F[ckey]]</i></span></center>"
//delete your own or somebody else's memo
/client/proc/admin_memo_player_delete()
var/savefile/F = new(PLAYERMEMOFILE)
if(F)
var/ckey
if(check_rights(R_SERVER,0)) //high ranking admins can delete other admin's memos
ckey = input(src,"Whose memo shall we remove?","Remove Memo",null) as null|anything in F.dir
else
ckey = src.ckey
if(ckey)
F.dir.Remove(ckey)
src << "<b>Removed Memo created by [ckey].</b>"
#undef MEMOFILE
#undef PLAYERMEMOFILE
#undef ENABLE_MEMOS
@@ -31,6 +31,7 @@ var/list/admin_verbs_admin = list(
/client/proc/admin_cancel_shuttle, /*allows us to cancel the emergency shuttle, sending it back to centcomm*/
/client/proc/admin_ghost, /*allows us to ghost/reenter body at will*/
/client/proc/admin_memo, /*admin memo system. show/delete/write. +SERVER needed to delete admin memos of others*/
/client/proc/admin_memo_player,
/client/proc/alertlevels,
/client/proc/allow_character_respawn, /* Allows a ghost to respawn */
/client/proc/check_ai_laws, /*shows AI and borg laws*/
+3 -3
View File
@@ -7,7 +7,7 @@
msg = copytext(sanitize(msg), 1, MAX_MESSAGE_LEN)
if(!msg) return
log_admin("[key_name(src)] : [msg]")
log_admin("ASAY: [key_name(src)] : [msg]")
if(check_rights(R_ADMIN,0))
msg = "<span class='adminsay'><span class='prefix'>ADMIN:</span> <EM>[key_name(usr, 1)]</EM> (<a href='?_src_=holder;adminplayerobservejump=\ref[mob]'>JMP</A>): <span class='message'>[msg]</span></span>"
@@ -46,7 +46,7 @@
msg = copytext(sanitize(msg), 1, MAX_MESSAGE_LEN)
if(!msg) return
log_admin("[key_name(src)] : [msg]")
log_admin("DEV: [key_name(src)] : [msg]")
if(check_rights(R_DEV,0))
msg = "<span class='devsay'><span class='prefix'>DEV:</span> <EM>[key_name(usr, 0, 1, 0)]</EM>: <span class='message'>[msg]</span></span>"
@@ -64,7 +64,7 @@
msg = copytext(sanitize(msg), 1, MAX_MESSAGE_LEN)
if(!msg) return
log_admin("[key_name(src)] : [msg]")
log_admin("DOSAY: [key_name(src)] : [msg]")
if(check_rights(R_DUTYOFF,0))
msg = "<span class='dutysay'><span class='prefix'>DOfficer:</span> <EM>[key_name(usr, 0, 1, 0)]</EM>: <span class='message'>[msg]</span></span>"
+6 -1
View File
@@ -30,7 +30,7 @@
stafftype = "EVENT"
msg = copytext(sanitize(msg), 1, MAX_MESSAGE_LEN)
log_admin("[key_name(src)] : [msg]")
log_admin("DSAY: [key_name(src)] : [msg]")
if (!msg)
return
@@ -41,7 +41,12 @@
if (istype(M, /mob/new_player))
continue
if(!M.client)
continue
if(M.client && M.client.holder && (M.client.prefs.toggles & CHAT_DEAD)) // show the message to admins who have deadchat toggled on
if((M.client.holder.rights & R_DUTYOFF) && !(M.client.holder.rights & (R_ADMIN|R_MOD|R_DEV|R_FUN)))
continue
M.show_message(rendered, 2)
else if(M.stat == DEAD && (M.client.prefs.toggles & CHAT_DEAD)) // show the message to regular ghosts who have deadchat toggled on
+1 -1
View File
@@ -773,7 +773,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
W.icon_state = "centcom"
W.item_state = "id_inv"
W.access = get_all_accesses()
W.access += list("VIP Guest","Custodian","Thunderdome Overseer","Intel Officer","Medical Officer","Death Commando","Research Officer")
W.access += get_all_centcom_access()
W.assignment = "NanoTrasen Navy Representative"
W.registered_name = M.real_name
M.equip_if_possible(W, slot_wear_id)
+1
View File
@@ -151,6 +151,7 @@
host = key
world.update_status()
admin_memo_player_show()
if(holder)
add_admin_verbs()
admin_memo_show()
@@ -592,6 +592,11 @@ proc/get_damage_icon_part(damage_state, body_part)
if(!tie_color) tie_color = w_uniform:hastie.icon_state
standing.overlays += image("icon" = 'icons/mob/ties.dmi', "icon_state" = "[tie_color]")
if(w_uniform:aband) //SAME THING AS ABOVE, WHY AM I TYPING LIKE THIS, BECAUSE ABOVE
var/aband_color = w_uniform:aband.item_color
if(!aband_color) aband_color = w_uniform:aband.icon_state
standing.overlays += image("icon" = 'icons/mob/ties.dmi', "icon_state" = "[aband_color]")
overlays_standing[UNIFORM_LAYER] = standing
else
overlays_standing[UNIFORM_LAYER] = null
@@ -18,6 +18,7 @@
response_harm = "kicks the"
var/turns_since_scan = 0
var/mob/living/simple_animal/mouse/movement_target
var/ai_active = 1
min_oxy = 16 //Require atleast 16kPA oxygen
minbodytemp = 223 //Below -50 Degrees Celcius
maxbodytemp = 323 //Above 50 Degrees Celcius
@@ -25,15 +26,16 @@
/mob/living/simple_animal/cat/Life()
//MICE!
if((src.loc) && isturf(src.loc))
if(!stat && !resting && !buckled)
for(var/mob/living/simple_animal/mouse/M in view(1,src))
if(!M.stat)
M.splat()
emote(pick("\red splats the [M]!","\red toys with the [M]","worries the [M]"))
movement_target = null
stop_automated_movement = 0
break
if(ai_active)
if((src.loc) && isturf(src.loc))
if(!stat && !resting && !buckled)
for(var/mob/living/simple_animal/mouse/M in view(1,src))
if(!M.stat)
M.splat()
emote(pick("\red splats the [M]!","\red toys with the [M]","worries the [M]"))
movement_target = null
stop_automated_movement = 0
break
..()
@@ -42,7 +44,7 @@
emote(pick("hisses and spits!","mrowls fiercely!","eyes [snack] hungrily."))
break
if(!stat && !resting && !buckled)
if(ai_active && !stat && !resting && !buckled)
turns_since_scan++
if(turns_since_scan > 5)
walk_to(src,0)
@@ -86,4 +88,4 @@
icon_state = "kitten"
icon_living = "kitten"
icon_dead = "kitten_dead"
gender = NEUTER
gender = NEUTER
@@ -142,6 +142,15 @@ Commenting out right now, due to a lack of sprites existing. I hate on-mob weapo
user.client.view = world.view
..()
/obj/item/weapon/gun/energy/rifle/sniperrifle/ready_to_fire()
if(!zoom)
return 0
if(world.time >= last_fired + fire_delay)
last_fired = world.time
return 1
else
return 0
///obj/item/weapon/gun/energy/rifle/sniperrifle/update_icon() //Currently only here to fuck with the on-mob icons.
// icon_state = "sniper[wielded]"
// return
+4 -1
View File
@@ -499,6 +499,7 @@
var/destinationTag = "" // changes if contains a delivery container
var/tomail = 0 //changes if contains wrapped package
var/hasmob = 0 //If it contains a mob
var/contained_mobs = list()
var/partialTag = "" //set by a partial tagger the first time round, then put in destinationTag if it goes through again.
@@ -512,6 +513,7 @@
for(var/mob/living/M in D)
if(M && M.stat != 2 && !istype(M,/mob/living/silicon/robot/drone))
hasmob = 1
contained_mobs += M
//Checks 1 contents level deep. This means that players can be sent through disposals...
//...but it should require a second person to open the package. (i.e. person inside a wrapped locker)
@@ -520,6 +522,7 @@
for(var/mob/living/M in O.contents)
if(M && M.stat != 2 && !istype(M,/mob/living/silicon/robot/drone))
hasmob = 1
contained_mobs += M
// now everything inside the disposal gets put into the holder
// note AM since can contain mobs or objs
@@ -561,7 +564,7 @@
var/obj/structure/disposalpipe/last
while(active)
if(hasmob && prob(3))
for(var/mob/living/H in src)
for(var/mob/living/H in contained_mobs)
if(!istype(H,/mob/living/silicon/robot/drone)) //Drones use the mailing code to move through the disposal system,
H.take_overall_damage(20, 0, "Blunt Trauma")//horribly maim any living creature jumping down disposals. c'est la vie