mirror of
https://github.com/Aurorastation/Aurora-Old.git
synced 2026-08-24 05:06:16 +01:00
Merge pull request #3 from Aurorastation/development
Conflict Clearance
This commit is contained in:
@@ -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*/
|
||||
|
||||
@@ -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>"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user