Adds 'Smite' verb and pray response button

For easier adminbuse!
This commit is contained in:
Arokha Sieyes
2018-05-23 13:47:16 -04:00
parent 7cc8678751
commit be45e56f2f
7 changed files with 106 additions and 34 deletions

View File

@@ -39,4 +39,9 @@
#define R_EVENT 0x4000
#define R_HOST 0x8000 //higher than this will overflow
#define R_MAXPERMISSION 0x8000 // This holds the maximum value for a permission. It is used in iteration, so keep it updated.
#define R_MAXPERMISSION 0x8000 // This holds the maximum value for a permission. It is used in iteration, so keep it updated.
#define SMITE_BREAKLEGS "Break Legs"
#define SMITE_BLUESPACEARTILLERY "Bluespace Artillery"
#define SMITE_SPONTANEOUSCOMBUSTION "Spontaneous Combustion"
#define SMITE_LIGHTNINGBOLT "Lightning Bolt"

View File

@@ -132,7 +132,8 @@ var/list/admin_verbs_fun = list(
/client/proc/editappear,
/client/proc/roll_dices,
/datum/admins/proc/call_supply_drop,
/datum/admins/proc/call_drop_pod
/datum/admins/proc/call_drop_pod,
/client/proc/smite
)
var/list/admin_verbs_spawn = list(

View File

@@ -1316,6 +1316,16 @@
feedback_inc("admin_cookies_spawned",1)
H << "<font color='blue'>Your prayers have been answered!! You received the <b>best cookie</b>!</font>"
else if(href_list["adminsmite"])
if(!check_rights(R_ADMIN|R_FUN)) return
var/mob/living/carbon/human/H = locate(href_list["adminsmite"])
if(!ishuman(H))
usr << "This can only be used on instances of type /mob/living/carbon/human"
return
owner.smite(H)
else if(href_list["BlueSpaceArtillery"])
if(!check_rights(R_ADMIN|R_FUN)) return
@@ -1327,37 +1337,7 @@
if(alert(src.owner, "Are you sure you wish to hit [key_name(M)] with Blue Space Artillery?", "Confirm Firing?" , "Yes" , "No") != "Yes")
return
if(BSACooldown)
src.owner << "Standby! Reload cycle in progress! Gunnary crews ready in five seconds!"
return
BSACooldown = 1
spawn(50)
BSACooldown = 0
M << "You've been hit by bluespace artillery!"
log_admin("[key_name(M)] has been hit by Bluespace Artillery fired by [src.owner]")
message_admins("[key_name(M)] has been hit by Bluespace Artillery fired by [src.owner]")
var/obj/effect/stop/S
S = new /obj/effect/stop
S.victim = M
S.loc = M.loc
spawn(20)
qdel(S)
var/turf/simulated/floor/T = get_turf(M)
if(istype(T))
if(prob(80)) T.break_tile_to_plating()
else T.break_tile()
if(M.health == 1)
M.gib()
else
M.adjustBruteLoss( min( 99 , (M.health - 1) ) )
M.Stun(20)
M.Weaken(20)
M.stuttering = 20
bluespace_artillery(M,src)
else if(href_list["CentComReply"])
var/mob/living/L = locate(href_list["CentComReply"])

View File

@@ -17,7 +17,7 @@
return
var/image/cross = image('icons/obj/storage.dmi',"bible")
msg = "<font color='blue'>\icon[cross] <b><font color=purple>PRAY: </font>[key_name(src, 1)] (<A HREF='?_src_=holder;adminmoreinfo=\ref[src]'>?</A>) (<A HREF='?_src_=holder;adminplayeropts=\ref[src]'>PP</A>) (<A HREF='?_src_=vars;Vars=\ref[src]'>VV</A>) (<A HREF='?_src_=holder;subtlemessage=\ref[src]'>SM</A>) ([admin_jump_link(src, src)]) (<A HREF='?_src_=holder;secretsadmin=check_antagonist'>CA</A>) (<A HREF='?_src_=holder;adminspawncookie=\ref[src]'>SC</a>):</b> [msg]</font>"
msg = "<font color='blue'>\icon[cross] <b><font color=purple>PRAY: </font>[key_name(src, 1)] (<A HREF='?_src_=holder;adminmoreinfo=\ref[src]'>?</A>) (<A HREF='?_src_=holder;adminplayeropts=\ref[src]'>PP</A>) (<A HREF='?_src_=vars;Vars=\ref[src]'>VV</A>) (<A HREF='?_src_=holder;subtlemessage=\ref[src]'>SM</A>) ([admin_jump_link(src, src)]) (<A HREF='?_src_=holder;secretsadmin=check_antagonist'>CA</A>) (<A HREF='?_src_=holder;adminspawncookie=\ref[src]'>SC</a>) (<A HREF='?_src_=holder;adminsmite=\ref[src]'>SMITE</a>):</b> [msg]</font>"
for(var/client/C in admins)
if(R_ADMIN & C.holder.rights)

View File

@@ -0,0 +1,83 @@
/client/proc/smite(var/mob/living/carbon/human/target in player_list)
set name = "Smite"
set desc = "Abuse a player with various 'special treatments' from a list."
set category = "Fun"
if(!check_rights(R_FUN))
return
if(!istype(target))
return
var/list/smite_types = list(SMITE_BREAKLEGS,SMITE_BLUESPACEARTILLERY,SMITE_SPONTANEOUSCOMBUSTION,SMITE_LIGHTNINGBOLT)
var/smite_choice = input("Select the type of SMITE for [target]","SMITE Type Choice") as null|anything in smite_types
if(!smite_choice)
return
switch(smite_choice)
if(SMITE_BREAKLEGS)
var/broken_legs = 0
var/obj/item/organ/external/left_leg = target.get_organ(BP_L_LEG)
if(left_leg && left_leg.fracture())
broken_legs++
var/obj/item/organ/external/right_leg = target.get_organ(BP_R_LEG)
if(right_leg && right_leg.fracture())
broken_legs++
if(!broken_legs)
to_chat(src,"[target] didn't have any breakable legs, sorry.")
if(SMITE_BLUESPACEARTILLERY)
bluespace_artillery(target,src)
if(SMITE_SPONTANEOUSCOMBUSTION)
target.adjust_fire_stacks(10)
target.IgniteMob()
target.visible_message("<span class='danger'>[target] bursts into flames!</span>")
if(SMITE_LIGHTNINGBOLT)
var/turf/T = get_step(get_step(target, NORTH), NORTH)
T.Beam(target, icon_state="lightning[rand(1,12)]", time = 5)
target.adjustFireLoss(75)
target.visible_message("<span class='danger'>[target] is struck by lightning!</span>")
else
return //Injection? Don't print any messages.
log_and_message_admins("[key_name(src)] has used SMITE ([smite_choice]) on [key_name(target)].")
feedback_add_details("admin_verb","SMITE") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/proc/bluespace_artillery(mob/living/target, user)
if(!istype(target))
return
if(BSACooldown)
if(user)
to_chat(user,"<span class='warning'>BSA is still cooling down, please wait!")
return
BSACooldown = 1
spawn(50)
BSACooldown = 0
to_chat(target,"You've been hit by bluespace artillery!")
log_and_message_admins("[key_name(target)] has been hit by Bluespace Artillery fired by [key_name(user ? user : usr)]")
var/obj/effect/stop/S
S = new /obj/effect/stop
S.victim = target
S.loc = target.loc
spawn(20)
qdel(S)
var/turf/simulated/floor/T = get_turf(target)
if(istype(T))
if(prob(80)) T.break_tile_to_plating()
else T.break_tile()
if(target.health == 1)
target.gib()
else
target.adjustBruteLoss( min( 99 , (target.health - 1) ) )
target.Stun(20)
target.Weaken(20)
target.stuttering = 20

View File

@@ -1034,6 +1034,8 @@ Note that amputating the affected organ does in fact remove the infection from t
var/obj/item/clothing/suit/space/suit = owner.wear_suit
suit.handle_fracture(owner, src)
return 1
/obj/item/organ/external/proc/mend_fracture()
if(robotic >= ORGAN_ROBOT)
return 0 //ORGAN_BROKEN doesn't have the same meaning for robot limbs

View File

@@ -1248,6 +1248,7 @@
#include "code\modules\admin\verbs\SDQL.dm"
#include "code\modules\admin\verbs\SDQL_2.dm"
#include "code\modules\admin\verbs\SDQL_2_parser.dm"
#include "code\modules\admin\verbs\smite.dm"
#include "code\modules\admin\verbs\striketeam.dm"
#include "code\modules\admin\verbs\ticklag.dm"
#include "code\modules\admin\verbs\tripAI.dm"