Added a certain admin request (#29782)

* surprise

* fix

* moved to its own file

* I can't into basic math

* warnings

* formalities

* let the gamemode be free

* separation

* gne
This commit is contained in:
DeityLink
2021-06-21 23:16:59 +02:00
committed by GitHub
parent 9c96f282be
commit 842425470f
47 changed files with 209 additions and 5 deletions

View File

@@ -430,3 +430,6 @@ var/global_poltergeist_cooldown = 300 //30s by default, badmins can var-edit thi
var/list/all_machines = list()
var/list/machinery_rating_cache = list() // list of type path -> number
var/runescape_pvp = FALSE
var/runescape_skull_display = FALSE

View File

@@ -94,6 +94,9 @@
target.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been [what_done] by [user_txt][object_txt].[intent_txt][addition_txt]</font>")
target.LAssailant = (iscarbon(user) ? user : null)
if (ismob(user) && ismob(target))
target.assaulted_by(user)
var/log_msg = "<span class='danger'>[user_txt] [what_done] [target_txt][object_txt][intent_txt].</span>[addition_txt] ([formatJumpTo(user, "JMP")])"
log_attack(log_msg)
if (admin_warn)

View File

@@ -226,6 +226,7 @@ proc/add_logs(mob/user, mob/target, what_done, var/admin=1, var/object=null, var
target.LAssailant = null
else
target.LAssailant = user
target.assaulted_by(user)
if(admin)
log_attack("<font color='red'>[user ? "[user.name][(ismob(user) && user.ckey) ? "([user.ckey])" : ""]" : "NON-EXISTANT SUBJECT"] [what_done] [target ? "[target.name][(ismob(target) && target.ckey)? "([target.ckey])" : ""]" : "NON-EXISTANT SUBJECT"][object ? " with [object]" : " "]. [addition]</font>")

View File

@@ -174,6 +174,7 @@ var/list/arcane_tomes = list()
M.LAssailant = null
else
M.LAssailant = user
M.assaulted_by(user)
if(!istype(M))
return

View File

@@ -328,6 +328,7 @@ var/runedec = 0 // Rune cap ?
M.LAssailant = null
else
M.LAssailant = user
M.assaulted_by(user)
if(isobserver(M))
if(M.invisibility != 0)
M.invisibility = 0

View File

@@ -196,6 +196,7 @@
target.LAssailant = null
else
target.LAssailant = assailant
target.assaulted_by(assailant)
while(do_mob(assailant, target, 5 SECONDS))
if(!isvampire(assailant))
to_chat(assailant, "<span class='warning'>Your fangs have disappeared!</span>")

View File

@@ -29,6 +29,8 @@ var/datum/controller/gameticker/ticker
var/datum/religion/chap_rel // Official religion of chappy
var/list/datum/religion/religions = list() // Religion(s) in the game
var/list/runescape_skulls = list() // Keeping track of the runescape skulls that appear over mobs when enabled
var/random_players = 0 // if set to nonzero, ALL players who latejoin or declare-ready join will have random appearances/genders
var/hardcore_mode = 0 //If set to nonzero, hardcore mode is enabled (current hardcore mode features: damage from hunger)
@@ -443,6 +445,12 @@ var/datum/controller/gameticker/ticker
nanocoins_lastchange = world.time + rand(3000,15000)
nanocoins_rates = (rand(1,30))/10
//runescape skull updates
if (runescape_skull_display)
for (var/entry in runescape_skulls)
var/datum/runescape_skull_data/the_data = runescape_skulls[entry]
the_data.process()
/*emergency_shuttle.process()*/
watchdog.check_for_update()

View File

@@ -254,6 +254,7 @@ obj/machinery/gibber/New()
src.occupant.LAssailant = null
else
src.occupant.LAssailant = user
occupant.assaulted_by(user)
src.occupant.death(1)
src.occupant.ghostize(0)

View File

@@ -213,6 +213,7 @@
M.LAssailant = null
else
M.LAssailant = chassis.occupant
M.assaulted_by(chassis.occupant)
log_message("Drilled through [target]")
occupant_message("<span class='red'><b>You drill into \the [target].</b></span>")
chassis.visible_message("<span class='red'><b>[chassis] drills into \the [target]!</b></span>", "You hear a drill breaking something.")

View File

@@ -1001,6 +1001,7 @@
M.LAssailant = null
else
M.LAssailant = user
M.assaulted_by(user)
add_fingerprint(user)
//if(clumsy_check(user) && prob(50))
@@ -1329,6 +1330,7 @@ var/global/list/image/blood_overlays = list()
M.LAssailant = null
else
M.LAssailant = user
M.assaulted_by(user)
log_attack("[user.name] ([user.ckey]) Attempted to restrain [M.name] ([M.ckey]) with \the [src].")
return TRUE

View File

@@ -50,6 +50,7 @@
M.LAssailant = null
else
M.LAssailant = user
M.assaulted_by(user)
if(!clown_check(user))
return

View File

@@ -52,6 +52,7 @@ effective or pretty fucking useless.
M.LAssailant = null
else
M.LAssailant = user
M.assaulted_by(user)
else
to_chat(M, "<span class='danger'>You feel a sudden, electric jolt travel through your head.</span>")

View File

@@ -14,6 +14,7 @@ obj/item/borg/stun/attack(mob/M as mob, mob/living/silicon/robot/user as mob)
M.LAssailant = null
else
M.LAssailant = user
M.assaulted_by(user)
user.cell.charge -= 30

View File

@@ -43,7 +43,7 @@
return 0//proceed as normally (put wrap in box)
else
to_chat(user, "<span class='notice'>You can't wrap that.</span>")
/obj/item/stack/package_wrap/afterattack(var/attacked, mob/user as mob, var/proximity_flag)
var/atom/movable/target = attacked
@@ -119,6 +119,7 @@
H.LAssailant = null
else
H.LAssailant = user
H.assaulted_by(user)
log_attack("<font color='red'>[user.name] ([user.ckey]) used the [src.name] to wrap [H.name] ([H.ckey])</font>")
use(2)
return 1

View File

@@ -764,6 +764,8 @@ var/global/list/alcatraz_stuff = list(
M.LAssailant = null
else
M.LAssailant = user
M.assaulted_by(user)
if(!iscarbon(M))
return

View File

@@ -120,6 +120,7 @@
target.LAssailant = null
else
target.LAssailant = user
target.assaulted_by(user)
playsound(src,'sound/items/defib.ogg',50,1)
charges--
update_icon()

View File

@@ -169,6 +169,7 @@
M.LAssailant = null
else
M.LAssailant = user
M.assaulted_by(user)
if(inuse)
return 0

View File

@@ -102,6 +102,7 @@
M.LAssailant = null
else
M.LAssailant = user
M.assaulted_by(user)
target.overlays += image('icons/obj/assemblies.dmi', "plastic-explosive2")
to_chat(user, "Bomb has been planted. Timer counting down from [timer].")
spawn(timer*10)

View File

@@ -348,6 +348,7 @@
H.LAssailant = null
else
H.LAssailant = user
H.assaulted_by(user)
qdel(H)
return TRUE
@@ -382,6 +383,7 @@
M.LAssailant = null
else
M.LAssailant = user
M.assaulted_by(user)
var/t = user.zone_sel.selecting
if (t == LIMB_HEAD)
@@ -471,6 +473,7 @@
M.LAssailant = null
else
M.LAssailant = user
M.assaulted_by(user)
if(prob(15))
M.Knockdown(3)

View File

@@ -29,6 +29,7 @@
M.LAssailant = null
else
M.LAssailant = user
M.assaulted_by(user)
msg_admin_attack("[user.name] ([user.ckey]) attacked [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)]) (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[user.x];Y=[user.y];Z=[user.z]'>JMP</a>)")

View File

@@ -63,6 +63,7 @@
M.LAssailant = null
else
M.LAssailant = user
M.assaulted_by(user)
log_attack("<font color='red'>[user.name] ([user.ckey]) attacked [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])</font>")

View File

@@ -214,6 +214,7 @@
M.LAssailant = null
else
M.LAssailant = user
M.assaulted_by(user)
/obj/item/weapon/melee/baton/throw_impact(atom/hit_atom)
if(prob(50))
@@ -243,6 +244,7 @@
L.LAssailant = null
else
L.LAssailant = foundmob
L.assaulted_by(foundmob)
/obj/item/weapon/melee/baton/emp_act(severity)
if(bcell)

View File

@@ -72,6 +72,7 @@
M.LAssailant = null
else
M.LAssailant = user
M.assaulted_by(user)
src.add_fingerprint(user)
for(var/mob/O in viewers(M))
@@ -177,6 +178,7 @@
target.LAssailant = null
else
target.LAssailant = user
target.assaulted_by(user)
return
else
return ..()

View File

@@ -895,11 +895,15 @@ var/global/floorIsLava = 0
<A href='?src=\ref[src];secretsfun=thebees'>Unleash THE BEES onto the crew</A><BR>
<A href='?src=\ref[src];secretsfun=floorlava'>The floor is lava! (WARNING: extremely lame and DANGEROUS!)</A><BR>
<BR>
<A href='?src=\ref[src];secretsfun=togglerunescapepvp'>Toggle Maint-Only PvP</A><BR>
<A href='?src=\ref[src];secretsfun=togglerunescapeskull'>Toggle Skull icon appearing over aggressors</A><BR>
<BR>
<A href='?src=\ref[src];secretsfun=massbomber'>Turn all players into Bomberman</A><BR>
<A href='?src=\ref[src];secretsfun=bomberhurt'>Make Bomberman Bombs actually hurt players</A><BR>
<A href='?src=\ref[src];secretsfun=bomberdestroy'>Make Bomberman Bombs actually destroy structures</A><BR>
<A href='?src=\ref[src];secretsfun=bombernohurt'>Make Bomberman Bombs harmless to players (default)</A><BR>
<A href='?src=\ref[src];secretsfun=bombernodestroy'>Make Bomberman Bombs harmless to the environment (default)</A><BR>
<BR>
<A href='?src=\ref[src];secretsfun=mechanics_motivator'>Incentivize Mechanics to do their job</A><BR>
<B>Final Solutions</B><BR>
<I>(Warning, these will end the round!)</I><BR>

View File

@@ -3972,6 +3972,35 @@
for(var/i = 1 to choice)
world << sound('sound/effects/explosionfar.ogg')
sleep(rand(2, 10)) //Sleep 0.2 to 1 second
if("togglerunescapepvp")
feedback_inc("admin_secrets_fun_used",1)
feedback_add_details("admin_secrets_fun_used","RSPVP")
runescape_pvp = !runescape_pvp
if(runescape_pvp)
message_admins("[key_name_admin(usr)] has enabled Maint-Only PvP.")
log_admin("[key_name_admin(usr)] has enabled Maint-Only PvP.")
for (var/mob/player in player_list)
to_chat(player, "<span class='userdanger'>WARNING: Wilderness mode is now enabled; players can only harm one another in maintenance areas!</span>")
else
message_admins("[key_name_admin(usr)] has disabled Maint-Only PvP.")
log_admin("[key_name_admin(usr)] has disabled Maint-Only PvP.")
for (var/mob/player in player_list)
to_chat(player, "<span class='userdanger'>WARNING: Wilderness mode is now disabled; players can only harm one another anywhere!</span>")
if("togglerunescapeskull")
feedback_inc("admin_secrets_fun_used",1)
feedback_add_details("admin_secrets_fun_used","RSSKL")
runescape_skull_display = !runescape_skull_display
if(runescape_skull_display)
message_admins("[key_name_admin(usr)] has enabled Skull icons appearing over aggressors.")
log_admin("[key_name_admin(usr)] has enabled Skull icon appearing over aggressors.")
else
message_admins("[key_name_admin(usr)] has disabled Skull icon appearing over aggressors.")
log_admin("[key_name_admin(usr)] has disabled Skull icon appearing over aggressors.")
if (ticker)
for (var/entry in ticker.runescape_skulls)
var/datum/runescape_skull_data/the_data = ticker.runescape_skulls[entry]
ticker.runescape_skulls -= entry
qdel(the_data)
if("massbomber")
feedback_inc("admin_secrets_fun_used",1)
feedback_add_details("admin_secrets_fun_used","BBM")

View File

@@ -279,6 +279,9 @@
winset(src, "rpane.round_end", "is-visible=false")
winset(src, "rpane.last_round_end", "is-visible=false")
if (runescape_pvp)
to_chat(src, "<span class='userdanger'>WARNING: Wilderness mode is enabled; players can only harm one another in maintenance areas!</span>")
clear_credits() //Otherwise these persist if the client doesn't close the game between rounds
if(!winexists(src, "asset_cache_browser")) // The client is using a custom skin, tell them.

View File

@@ -37,6 +37,11 @@
living_mob_list -= src
dead_mob_list += src
stat_collection.add_death_stat(src)
if (runescape_skull_display && ticker)//we died, begone skull
if ("\ref[src]" in ticker.runescape_skulls)
var/datum/runescape_skull_data/the_data = ticker.runescape_skulls["\ref[src]"]
ticker.runescape_skulls -= "\ref[src]"
qdel(the_data)
if(client)
client.color = initial(client.color)
for(var/obj/item/I in src)

View File

@@ -79,6 +79,7 @@
LAssailant = null
else
LAssailant = M
assaulted_by(M)
log_attack("[M.name] ([M.ckey]) bitten by [src.name] ([src.ckey])")
return
@@ -176,6 +177,7 @@
LAssailant = null
else
LAssailant = M
assaulted_by(M)
log_attack("[src.name] ([src.ckey]) kicked by [M.name] ([M.ckey])")
/mob/living/carbon/human/attack_hand(var/mob/living/carbon/human/M)

View File

@@ -19,6 +19,7 @@
G.synch()
target.LAssailant = src
target.grabbed_by(src)
target.assaulted_by(src)
playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
visible_message("<span class='warning'>[src] grabs [target] passively!</span>")

View File

@@ -1399,6 +1399,7 @@ Thanks.
return
tmob.LAssailant = src
tmob.assaulted_by(src, TRUE)
now_pushing = 0
spawn(0)
@@ -1557,6 +1558,10 @@ Thanks.
to_chat(src, "<span class='warning'>You can't do that now!</span>")
return FAILED_THROW
if(runescape_pvp && is_pacified())
to_chat(src, "<span class='warning'>As such, throwing items is also forbidden outside of maintenance areas.</span>")
return FAILED_THROW
if(target.type == /obj/abstract/screen)
return FAILED_THROW
@@ -1592,6 +1597,7 @@ Thanks.
M.LAssailant = null
else
M.LAssailant = usr
M.assaulted_by(usr)
qdel(G)
if(!item)
return FAILED_THROW //Grab processing has a chance of returning null

View File

@@ -160,6 +160,7 @@
src.LAssailant = null
else
src.LAssailant = M
assaulted_by(M)
/*
Ear and eye protection

View File

@@ -119,6 +119,7 @@
var/mob/M = AM
to_chat(src, "<span class='danger'>You are too depressed to push [M] out of \the way.</span>")
M.LAssailant = src
M.assaulted_by(src)
return
..()

View File

@@ -56,6 +56,7 @@
var/mob/M = AM
to_chat(src, "<span class='danger'>You are too depressed to push [M] out of \the way.</span>")
M.LAssailant = src
M.assaulted_by(src)
return
..()

View File

@@ -1073,6 +1073,7 @@ Use this proc preferably at the end of an equipment loadout
M.LAssailant = null
else
M.LAssailant = usr
M.assaulted_by(usr, TRUE)
/mob/verb/stop_pulling()
set name = "Stop Pulling"
@@ -2119,6 +2120,12 @@ mob/proc/on_foot()
alphas.Remove(source_define)
/mob/proc/is_pacified(var/message = VIOLENCE_SILENT,var/target,var/weapon)
if (runescape_pvp)
var/area/A = get_area(src)
if (!istype(A, /area/maintenance) && !is_type_in_list(A,non_standard_maint_areas))
to_chat(src, "<span class='danger'>You must enter maintenance to attack other players!</span>")
return TRUE
if(status_flags & UNPACIFIABLE)
return FALSE

View File

@@ -207,8 +207,8 @@
statpanel("[P.panel]","",P)
*/
//The last mob/living/carbon to push/drag/grab this mob (mostly used by slimes friend recognition)
var/mob/living/carbon/LAssailant = null
//The last mob/living/carbon to push/drag/grab/harm this mob
var/mob/LAssailant = null
//Wizard mode, but can be used in other modes thanks to the brand new "Give Spell" badmin button
var/list/spell/spell_list = list()

View File

@@ -150,7 +150,7 @@ var/paperwork_library
t = replacetext(t, "\[time\]", "[worldtime2text()]")
// tables ported from Baystation12 : https://github.com/Baystation12/Baystation12
t = replacetext(t, "\[table\]", "<table border=1 cellspacing=0 cellpadding=3 style='border: 1px solid black;'>")
t = replacetext(t, "\[/table\]", "</td></tr></table>")
t = replacetext(t, "\[row\]", "</td><tr>")
@@ -310,6 +310,7 @@ var/paperwork_library
M.LAssailant = null
else
M.LAssailant = user
M.assaulted_by(user)
if(reagents && reagents.total_volume)
reagents.trans_to(M,50)

View File

@@ -235,6 +235,7 @@
M.LAssailant = null
else
M.LAssailant = user
M.assaulted_by(user)
B.reagents.trans_to(M, inject_amount)

View File

@@ -185,6 +185,7 @@ var/list/impact_master = list()
M.LAssailant = null
else
M.LAssailant = firer
M.assaulted_by(firer)
else
log_attack("<font color='red'>[key_name(firer)] shot [key_name(M)] with a [type]</font>")
M.attack_log += "\[[time_stamp()]\] <b>[key_name(firer)]</b> shot <b>[key_name(M)]</b> with a <b>[type]</b>"
@@ -195,6 +196,7 @@ var/list/impact_master = list()
M.LAssailant = null
else
M.LAssailant = firer
M.assaulted_by(firer)
else
M.attack_log += "\[[time_stamp()]\] <b>UNKNOWN/(no longer exists)</b> shot <b>UNKNOWN/(no longer exists)</b> with a <b>[type]</b>"
msg_admin_attack("UNKNOWN/(no longer exists) shot UNKNOWN/(no longer exists) with a [type]. Wait what the fuck?")
@@ -293,6 +295,7 @@ var/list/impact_master = list()
M.LAssailant = null
else
M.LAssailant = firer
M.assaulted_by(firer)
if(!A)
return 1
@@ -308,6 +311,7 @@ var/list/impact_master = list()
BM.LAssailant = null
else
BM.LAssailant = firer
BM.assaulted_by(firer)
var/turf/A_turf = get_turf(A) //Store the location of A for later use in case it is destroyed in bullet_act()

View File

@@ -240,6 +240,7 @@ var/list/beam_master = list()
M.LAssailant = null
else
M.LAssailant = firer_mob
M.assaulted_by(firer_mob)
else
log_attack("<font color='red'>[key_name(firer_mob)] shot [key_name(M)] with a [type]</font>")
M.attack_log += "\[[time_stamp()]\] <b>[key_name(firer_mob)]</b> shot <b>[key_name(M)]</b> with a <b>[type]</b>"
@@ -250,6 +251,7 @@ var/list/beam_master = list()
M.LAssailant = null
else
M.LAssailant = firer_mob
M.assaulted_by(firer_mob)
else
..()
@@ -852,6 +854,7 @@ var/list/laser_tag_vests = list(/obj/item/clothing/suit/tag/redtag, /obj/item/cl
M.LAssailant = null
else
M.LAssailant = firer
M.assaulted_by(firer)
else
M.attack_log += "\[[time_stamp()]\] <b>UNKNOWN/(no longer exists)</b> shot <b>[key_name(M)]</b> with a <b>[type]</b>"
msg_admin_attack("UNKNOWN/(no longer exists) shot [key_name(M)] with a [type] (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[firer.x];Y=[firer.y];Z=[firer.z]'>JMP</a>)") //BS12 EDIT ALG

View File

@@ -51,6 +51,7 @@
M.LAssailant = null
else
M.LAssailant = user
M.assaulted_by(user)
update_icon()
return

View File

@@ -65,6 +65,7 @@
M.LAssailant = null
else
M.LAssailant = user
M.assaulted_by(user)
if(reagents.total_volume) //Deal with the reagents in the food
reagents.reaction(M, INGEST)

View File

@@ -131,6 +131,7 @@
M.LAssailant = null
else
M.LAssailant = user
M.assaulted_by(user)
//The reagents in the bottle splash all over the target, thanks for the idea Nodrak
if(src.reagents)
@@ -173,6 +174,7 @@
M.LAssailant = null
else
M.LAssailant = user
M.assaulted_by(user)
if(reagents.total_volume)
if (ishuman(M))

View File

@@ -70,6 +70,7 @@
M.LAssailant = null
else
M.LAssailant = user
M.assaulted_by(user)
var/trans = reagents.trans_to(M, amount_per_transfer_from_this)
to_chat(user, "<span class='notice'>[trans] units injected. [reagents.total_volume] units remaining in [src].</span>")

View File

@@ -171,8 +171,9 @@ var/list/anomaly_power_utilizers = list()
foundmob.attack_log += "\[[time_stamp()]\]<font color='red'> Touched [L.name] ([L.ckey]) with thrown [name] ([inserted_battery.battery_effect.effecttype])</font>"
L.attack_log += "\[[time_stamp()]\]<font color='orange'> Touched by [istype(foundmob) ? foundmob.name : ""] ([istype(foundmob) ? foundmob.ckey : ""]) with thrown [name] ([inserted_battery.battery_effect.effecttype])</font>"
log_attack("<font color='red'>[istype(foundmob) ? foundmob.name : ""] ([istype(foundmob) ? foundmob.ckey : ""]) touched [L.name] ([L.ckey]) with thrown [name] ([inserted_battery.battery_effect.effecttype])</font>" )
if(!istype(foundmob))
if(istype(foundmob))
L.LAssailant = foundmob
L.assaulted_by(foundmob)
else
L.LAssailant = null
@@ -199,6 +200,7 @@ var/list/anomaly_power_utilizers = list()
M.LAssailant = null
else
M.LAssailant = user
M.assaulted_by(user)
/obj/item/weapon/anodevice/proc/shutdown_emission()
if(activated)

View File

@@ -0,0 +1,87 @@
var/list/non_standard_maint_areas = list(
/area/construction/qmaint,
/area/vox_trading_post/maintroom,
/area/vox_trading_post/solars,
/area/research_outpost/maint,
/area/research_outpost/maintstore2
)
/datum/runescape_skull_data
var/holder_ref
var/last_fight
var/skull_timer = 20 MINUTES
var/image/skull
var/list/victim_refs = list()
var/name = "skull data"
/datum/runescape_skull_data/New(var/mob/M,var/first_victim)
if (!ticker)
return
if (!M)
qdel(src)
return
holder_ref = "\ref[M]"
name = M.name//for easier VV debugging
ticker.runescape_skulls[holder_ref] = src
skull = image('icons/mob/hud.dmi',M,"runescape_skull")
skull.plane = LIGHTING_PLANE
skull.layer = NARSIE_GLOW
skull.pixel_y = 20 * PIXEL_MULTIPLIER
skull.appearance_flags = RESET_COLOR|RESET_ALPHA|TILE_BOUND|RESET_TRANSFORM
just_fought(first_victim)
/datum/runescape_skull_data/Destroy()
for (var/client/C in clients)//just to be sure
C.images -= skull
skull = null
..()
/datum/runescape_skull_data/proc/just_fought(var/victim_ref)
last_fight = world.time
if (victim_ref)
victim_refs[victim_ref] = world.time
process()
/datum/runescape_skull_data/proc/process()
for (var/client/C in clients)
C.images -= skull
var/mob/holder = locate(holder_ref)
if (!holder || holder.gcDestroyed)
ticker.runescape_skulls -= holder_ref
qdel(src)
return
if (world.time >= last_fight + skull_timer)
ticker.runescape_skulls -= holder_ref
else
for (var/client/C in clients)
C.images += skull
/mob/proc/assaulted_by(var/mob/M,var/weak_assault=FALSE)
//might be nice to move the LAssailant stuff here at some point
if (M == src)
return
if (!ticker)
return
if ("\ref[src]" in ticker.runescape_skulls)
var/datum/runescape_skull_data/the_data = ticker.runescape_skulls["\ref[src]"]
if ("\ref[M]" in the_data.victim_refs)
if (the_data.victim_refs["\ref[M]"] + 5 MINUTES > world.time)//if we attacked M in the last 5 minutes, do not skull M
return
M.just_fought(src,weak_assault)
/mob/proc/just_fought(var/mob/M,var/weak_assault=FALSE)
if (!runescape_skull_display || weak_assault)
return
if (!ticker)
return
if ("\ref[src]" in ticker.runescape_skulls)
var/datum/runescape_skull_data/the_data = ticker.runescape_skulls["\ref[src]"]
the_data.just_fought("\ref[M]")
else
new /datum/runescape_skull_data(src,"\ref[M]")

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.5 KiB

After

Width:  |  Height:  |  Size: 10 KiB

View File

@@ -2488,6 +2488,7 @@
#include "code\modules\research\xenoarchaeology\tools\tools_excdrill.dm"
#include "code\modules\research\xenoarchaeology\tools\tools_locater.dm"
#include "code\modules\research\xenoarchaeology\tools\tools_pickaxe.dm"
#include "code\modules\runescape\runescape_pvp.dm"
#include "code\modules\scripting\Errors.dm"
#include "code\modules\scripting\IDE.dm"
#include "code\modules\scripting\Options.dm"