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
+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