mirror of
https://github.com/PolarisSS13/Polaris.git
synced 2025-12-29 03:21:42 +00:00
Merge remote-tracking branch 'upstream/master'
This commit is contained in:
@@ -258,11 +258,16 @@
|
||||
if ((M.client && M.client.holder && (M.client.holder.level >= src.level)))
|
||||
alert("You cannot perform this action. You must be of a higher administrative rank!", null, null, null, null, null)
|
||||
return
|
||||
M << "\red You have been kicked from the server"
|
||||
log_admin("[key_name(usr)] booted [key_name(M)].")
|
||||
message_admins("\blue [key_name_admin(usr)] booted [key_name_admin(M)].", 1)
|
||||
//M.client = null
|
||||
del(M.client)
|
||||
switch(alert("Are you sure?", ,"Yes", "NO, WAIT.. DAMMIT! NOT THAT BUTTON!"))
|
||||
if("Yes")
|
||||
if(ismob(M))
|
||||
M << "\red You have been kicked from the server"
|
||||
log_admin("[key_name(usr)] booted [key_name(M)].")
|
||||
message_admins("\blue [key_name_admin(usr)] booted [key_name_admin(M)].", 1)
|
||||
//M.client = null
|
||||
del(M.client)
|
||||
else
|
||||
src << "Looks like someone already beat you."
|
||||
|
||||
if (href_list["removejobban"])
|
||||
if ((src.rank in list("Game Admin", "Game Master" )))
|
||||
@@ -1759,6 +1764,36 @@
|
||||
C.files.RefreshResearch()
|
||||
|
||||
owner:rnd_check_designs()
|
||||
#define AUTOBANTIME 10
|
||||
if(href_list["warn"])
|
||||
var/mob/M = locate(href_list["warn"])
|
||||
if (ismob(M))
|
||||
var/client/user
|
||||
if(istype(usr, /client))
|
||||
user = usr
|
||||
else if(istype(usr, /mob))
|
||||
user = usr.client
|
||||
|
||||
if(!user.holder)
|
||||
src << "Only administrators may use this command."
|
||||
return
|
||||
if(M.client && M.client.holder && (M.client.holder.level >= user.holder.level))
|
||||
alert("You cannot perform this action. You must be of a higher administrative rank!", null, null, null, null, null)
|
||||
return
|
||||
if(!M.client.warned)
|
||||
M << "\red <B>You have been warned by an administrator. This is the only warning you will recieve.</B>"
|
||||
M.client.warned = 1
|
||||
message_admins("\blue [user.ckey] warned [M.ckey].")
|
||||
else
|
||||
AddBan(M.ckey, M.computer_id, "Autobanning due to previous warn", user.ckey, 1, AUTOBANTIME)
|
||||
M << "\red<BIG><B>You have been autobanned by [user.ckey]. This is what we in the biz like to call a \"second warning\".</B></BIG>"
|
||||
M << "\red This is a temporary ban; it will automatically be removed in [AUTOBANTIME] minutes."
|
||||
log_admin("[user.ckey] warned [M.ckey], resulting in a [AUTOBANTIME] minute autoban.")
|
||||
ban_unban_log_save("[user.ckey] warned [M.ckey], resulting in a [AUTOBANTIME] minute autoban.")
|
||||
message_admins("\blue [user.ckey] warned [M.ckey], resulting in a [AUTOBANTIME] minute autoban.")
|
||||
feedback_inc("ban_warn",1)
|
||||
|
||||
del(M.client)
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////Panels
|
||||
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
for(var/mob/M in mobs)
|
||||
if(M.ckey)
|
||||
var/color = "#e6e6e6"
|
||||
i++
|
||||
if(i%2 == 0)
|
||||
color = "#f2f2f2"
|
||||
var/real = (M.real_name == M.original_name ? M.real_name : "[M.original_name] (as [M.real_name])")
|
||||
@@ -19,26 +20,32 @@
|
||||
dat += "<tr align='center' bgcolor='[color]'><td>[M.name] \[[real]\] <br>[M.client ? M.client : "No client ([client_key])"] at ([T.x], [T.y], [T.z])</td>" // Adds current name
|
||||
if(isobserver(M))
|
||||
dat += "<td>Ghost</td>"
|
||||
if(isalien(M))
|
||||
else if(isalien(M))
|
||||
dat += "<td>Alien</td>"
|
||||
if(islarva(M))
|
||||
else if(islarva(M))
|
||||
dat += "<td>Alien larva</td>"
|
||||
if(ishuman(M))
|
||||
else if(istajaran(M))
|
||||
dat += "<td>Tajaran</td>"
|
||||
else if(ishuman(M))
|
||||
dat += "<td>[M.job]</td>"
|
||||
if(ismetroid(M))
|
||||
else if(ismetroid(M))
|
||||
dat += "<td>Metroid</td>"
|
||||
if(ismonkey(M))
|
||||
else if(ismonkey(M))
|
||||
dat += "<td>Monkey</td>"
|
||||
if(isAI(M))
|
||||
else if(isAI(M))
|
||||
dat += "<td>AI</td>"
|
||||
if(ispAI(M))
|
||||
else if(ispAI(M))
|
||||
dat += "<td>pAI</td>"
|
||||
if(isrobot(M))
|
||||
else if(isrobot(M))
|
||||
dat += "<td>Cyborg</td>"
|
||||
if(isanimal(M))
|
||||
else if(isanimal(M))
|
||||
dat += "<td>Animal</td>"
|
||||
if(iscorgi(M))
|
||||
else if(iscorgi(M))
|
||||
dat += "<td>Corgi</td>"
|
||||
else if(istype(M,/mob/new_player))
|
||||
dat += "<td>New Player</td>"
|
||||
else
|
||||
dat += "<td>ERROR</td>"
|
||||
|
||||
if(M.mind && M.mind.assigned_role && istype(M, /mob/living/carbon/human)) // Adds a column to Player Panel that shows their current job.
|
||||
var/mob/living/carbon/human/H = M
|
||||
@@ -81,13 +88,14 @@
|
||||
"}
|
||||
|
||||
dat += {"<td><A HREF='?src=\ref[src];player_info=[M.ckey]'>[player_has_info(M.ckey) ? "Info" : "N/A"] </A></td>
|
||||
<td><A href='?src=\ref[src];boot2=\ref[M]'>Boot</A> | <A href='?src=\ref[src];newban=\ref[M]'>Ban</A> | <A href='?src=\ref[src];jobban2=\ref[M]'>Jobban</A>
|
||||
<br><font size="2.5">[muting]</font><br>
|
||||
<font size="2"><A HREF='?src=\ref[src];adminplayeropts=\ref[M]'>PP</A> |
|
||||
<td><A href='?src=\ref[usr];priv_msg=\ref[M]'><b>PM</b></A> |
|
||||
<A HREF='?src=\ref[src];adminplayeropts=\ref[M]'>PP</A> |
|
||||
<A HREF='?src=\ref[src];adminplayervars=\ref[M]'>VV</A> |
|
||||
<A HREF='?src=\ref[src];adminplayersubtlemessage=\ref[M]'>SM</A> |
|
||||
<A HREF='?src=\ref[src];adminplayerobservejump=\ref[M]'>JMP</A> |
|
||||
<A HREF='?src=\ref[src];secretsadmin=check_antagonist'>CA</A></font></td>
|
||||
<A HREF='?src=\ref[src];secretsadmin=check_antagonist'>CA</A></font>
|
||||
<br><font size="2">[muting]</font><br>
|
||||
<font size="2"><A href='?src=\ref[src];warn=\ref[M]'>Warn</A> | <A href='?src=\ref[src];boot2=\ref[M]'>Boot</A> | <A href='?src=\ref[src];newban=\ref[M]'>Ban</A> | <A href='?src=\ref[src];jobban2=\ref[M]'>Jobban</A></td>
|
||||
"}
|
||||
|
||||
switch(is_special_character(M))
|
||||
@@ -100,7 +108,7 @@
|
||||
|
||||
dat += "</table></body></html>"
|
||||
|
||||
usr << browse(dat, "window=players;size=905x480")
|
||||
usr << browse(dat, "window=players;size=905x600")
|
||||
|
||||
//The old one
|
||||
/obj/admins/proc/player_panel_old()
|
||||
|
||||
@@ -557,8 +557,8 @@
|
||||
/obj/item/weapon/gun/rapidsyringe
|
||||
name = "rapid syringe gun"
|
||||
icon = 'gun.dmi'
|
||||
icon_state = "syringegun"
|
||||
item_state = "syringegun"
|
||||
icon_state = "rapidsyringegun"
|
||||
item_state = "rapidsyringegun"
|
||||
w_class = 3.0
|
||||
throw_speed = 4
|
||||
throw_range = 10
|
||||
|
||||
@@ -19,3 +19,35 @@
|
||||
origin_tech = "combat=5;materials=4;powerstorage=3"
|
||||
charge_cost = 100
|
||||
projectile_type = "/obj/item/projectile/energy/declone"
|
||||
|
||||
obj/item/weapon/gun/energy/staff
|
||||
name = "staff of change"
|
||||
desc = "an artefact that spits bolts of coruscating energy which cause the target's very form to reshape itself"
|
||||
icon = 'gun.dmi'
|
||||
icon_state = "staff"
|
||||
item_state = "staff"
|
||||
fire_sound = 'emitter.ogg'
|
||||
charge_cost = 200
|
||||
projectile_type = "/obj/item/projectile/change"
|
||||
origin_tech = null
|
||||
var/charge_tick = 0
|
||||
|
||||
|
||||
New()
|
||||
..()
|
||||
processing_objects.Add(src)
|
||||
|
||||
|
||||
Del()
|
||||
processing_objects.Remove(src)
|
||||
..()
|
||||
|
||||
|
||||
process()
|
||||
charge_tick++
|
||||
if(charge_tick < 4) return 0
|
||||
charge_tick = 0
|
||||
if(!power_supply) return 0
|
||||
power_supply.give(200)
|
||||
update_icon()
|
||||
return 1
|
||||
152
code/modules/projectiles/projectile/change.dm
Normal file
152
code/modules/projectiles/projectile/change.dm
Normal file
@@ -0,0 +1,152 @@
|
||||
/obj/item/projectile/change
|
||||
name = "bolt of change"
|
||||
icon_state = "ice_1"
|
||||
damage = 0
|
||||
damage_type = BURN
|
||||
nodamage = 1
|
||||
flag = "energy"
|
||||
|
||||
on_hit(var/atom/change)
|
||||
wabbajack(change)
|
||||
|
||||
|
||||
/*Bump(atom/change)
|
||||
if(istype(change, /mob/living))
|
||||
wabbajack(change)
|
||||
else
|
||||
del(src)*/
|
||||
|
||||
|
||||
|
||||
/obj/item/projectile/change/proc/wabbajack (mob/M as mob in world)
|
||||
if(istype(M, /mob/living))
|
||||
for(var/obj/item/W in M)
|
||||
M.drop_from_slot(W)
|
||||
var/randomize = pick("monkey","robot","metroid","alien")
|
||||
switch(randomize)
|
||||
if("monkey")
|
||||
if (M.monkeyizing)
|
||||
return
|
||||
M.update_clothing()
|
||||
M.monkeyizing = 1
|
||||
M.canmove = 0
|
||||
M.icon = null
|
||||
M.invisibility = 101
|
||||
var/mob/living/carbon/monkey/O = new /mob/living/carbon/monkey( M.loc )
|
||||
|
||||
O.name = "monkey"
|
||||
if (M.client)
|
||||
M.client.mob = O
|
||||
if(M.mind)
|
||||
M.mind.transfer_to(O)
|
||||
O.a_intent = "hurt"
|
||||
O << "<B>You are now a monkey.</B>"
|
||||
del(M)
|
||||
return O
|
||||
if("robot")
|
||||
if (M.monkeyizing)
|
||||
return
|
||||
M.update_clothing()
|
||||
M.monkeyizing = 1
|
||||
M.canmove = 0
|
||||
M.icon = null
|
||||
M.invisibility = 101
|
||||
if(M.client)
|
||||
M.client.screen -= M.hud_used.contents
|
||||
M.client.screen -= M.hud_used.adding
|
||||
M.client.screen -= M.hud_used.mon_blo
|
||||
M.client.screen -= list( M.oxygen, M.throw_icon, M.i_select, M.m_select, M.toxin, M.internals, M.fire, M.hands, M.healths, M.pullin, M.blind, M.flash, M.rest, M.sleep, M.mach )
|
||||
M.client.screen -= list( M.zone_sel, M.oxygen, M.throw_icon, M.i_select, M.m_select, M.toxin, M.internals, M.fire, M.hands, M.healths, M.pullin, M.blind, M.flash, M.rest, M.sleep, M.mach )
|
||||
|
||||
var/mob/living/silicon/robot/O = new /mob/living/silicon/robot( M.loc )
|
||||
O.cell = new(O)
|
||||
O.cell.maxcharge = 7500
|
||||
O.cell.charge = 7500
|
||||
O.gender = M.gender
|
||||
O.invisibility = 0
|
||||
O.name = "Cyborg"
|
||||
O.real_name = "Cyborg"
|
||||
O.lastKnownIP = M.client.address ? M.client.address : null
|
||||
if (M.mind)
|
||||
M.mind.transfer_to(O)
|
||||
if (M.mind.assigned_role == "Cyborg")
|
||||
M.mind.original = O
|
||||
else if (M.mind.special_role) O.mind.store_memory("In case you look at this after being borged, the objectives are only here until I find a way to make them not show up for you, as I can't simply delete them without screwing up round-end reporting. --NeoFite")
|
||||
else
|
||||
M.mind = new /datum/mind( )
|
||||
M.mind.key = M.key
|
||||
M.mind.current = O
|
||||
M.mind.original = O
|
||||
M.mind.transfer_to(O)
|
||||
|
||||
if(!(O.mind in ticker.minds))
|
||||
ticker.minds += O.mind//Adds them to regular mind list.
|
||||
|
||||
O.loc = loc
|
||||
O << "<B>You are playing a Robot. A Robot can interact with most electronic objects in its view point.</B>"
|
||||
O << "<B>You must follow the laws that the AI has. You are the AI's assistant to the station basically.</B>"
|
||||
O << "To use something, simply double-click it."
|
||||
O << {"Use say ":s to speak to fellow cyborgs and the AI through binary."}
|
||||
|
||||
O.job = "Cyborg"
|
||||
|
||||
O.mmi = new /obj/item/device/mmi(O)
|
||||
O.mmi.transfer_identity(M)//Does not transfer key/client.
|
||||
del(M)
|
||||
return O
|
||||
if("metroid")
|
||||
if (M.monkeyizing)
|
||||
return
|
||||
M.update_clothing()
|
||||
M.monkeyizing = 1
|
||||
M.canmove = 0
|
||||
M.icon = null
|
||||
M.invisibility = 101
|
||||
if(prob(50))
|
||||
var/mob/living/carbon/metroid/adult/new_metroid = new /mob/living/carbon/metroid/adult (M.loc)
|
||||
if (M.client)
|
||||
M.client.mob = new_metroid
|
||||
if(M.mind)
|
||||
M.mind.transfer_to(new_metroid)
|
||||
|
||||
new_metroid.a_intent = "hurt"
|
||||
new_metroid << "<B>You are now an adult Metroid.</B>"
|
||||
del(M)
|
||||
return new_metroid
|
||||
else
|
||||
var/mob/living/carbon/metroid/new_metroid = new /mob/living/carbon/metroid (M.loc)
|
||||
if (M.client)
|
||||
M.client.mob = new_metroid
|
||||
if(M.mind)
|
||||
M.mind.transfer_to(new_metroid)
|
||||
new_metroid.a_intent = "hurt"
|
||||
new_metroid << "<B>You are now a baby Metroid.</B>"
|
||||
del(M)
|
||||
return new_metroid
|
||||
if("alien")
|
||||
if (M.monkeyizing)
|
||||
return
|
||||
M.update_clothing()
|
||||
M.monkeyizing = 1
|
||||
M.canmove = 0
|
||||
M.icon = null
|
||||
M.invisibility = 101
|
||||
var/alien_caste = pick("Hunter","Sentinel","Drone")
|
||||
var/mob/living/carbon/alien/humanoid/new_xeno
|
||||
switch(alien_caste)
|
||||
if("Hunter")
|
||||
new_xeno = new /mob/living/carbon/alien/humanoid/hunter (M.loc)
|
||||
if("Sentinel")
|
||||
new_xeno = new /mob/living/carbon/alien/humanoid/sentinel (M.loc)
|
||||
if("Drone")
|
||||
new_xeno = new /mob/living/carbon/alien/humanoid/drone (M.loc)
|
||||
if (M.client)
|
||||
M.client.mob = new_xeno
|
||||
if(M.mind)
|
||||
M.mind.transfer_to(new_xeno)
|
||||
new_xeno.a_intent = "hurt"
|
||||
new_xeno << "<B>You are now an alien.</B>"
|
||||
del(M)
|
||||
return new_xeno
|
||||
return
|
||||
|
||||
@@ -23,8 +23,6 @@
|
||||
explosion(target, -1, 0, 2)
|
||||
return 1
|
||||
|
||||
|
||||
|
||||
/obj/item/projectile/temp
|
||||
name = "freeze beam"
|
||||
icon_state = "ice_2"
|
||||
|
||||
@@ -439,8 +439,10 @@
|
||||
del(H)
|
||||
|
||||
CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
|
||||
if (istype(mover,/obj/item) && !istype(mover,/obj/item/weapon/dummy))
|
||||
if (istype(mover,/obj/item))
|
||||
var/obj/item/I = mover
|
||||
if(!mover.throwing)
|
||||
return ..()
|
||||
if(prob(75))
|
||||
I.loc = src
|
||||
for(var/mob/M in viewers(src))
|
||||
@@ -450,7 +452,7 @@
|
||||
M.show_message("\the [I] bounces off of \the [src]'s rim!", 3)
|
||||
return 0
|
||||
else
|
||||
return ..(mover, target, height, air_group)
|
||||
return ..()
|
||||
|
||||
//The toilet does not need to pressurized but can only handle small items.
|
||||
//You can also choke people by dunking them into the toilet.
|
||||
|
||||
Reference in New Issue
Block a user