mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 18:22:39 +00:00
Rune logging.
Adds various rune logging.
This commit is contained in:
@@ -57,7 +57,7 @@ Also, you never added distance checking after target is selected. I've went ahea
|
||||
var/mob/caster = user//The wizard/whomever doing the body transferring.
|
||||
|
||||
//SPELL LOSS BEGIN
|
||||
admin_attack_log(caster, victim, "Used mind transfer on", "Had mind transfer used on him by", "used mind transfer on")
|
||||
admin_attack_log(caster, victim, "Used mind transfer", "Was the victim of mind transfer", "used mind transfer on")
|
||||
|
||||
//NOTE: The caster must ALWAYS keep mind transfer, even when other spells are lost.
|
||||
var/obj/effect/proc_holder/spell/targeted/mind_transfer/m_transfer = locate() in user.spell_list//Find mind transfer directly.
|
||||
|
||||
@@ -2,12 +2,30 @@ proc/log_and_message_admins(var/message as text)
|
||||
log_admin(usr ? "[key_name(usr)] [message]" : "EVENT [message]")
|
||||
message_admins(usr ? "[key_name(usr)] [message]" : "EVENT [message]")
|
||||
|
||||
proc/log_and_message_admins_many(var/list/mob/users, var/message)
|
||||
if(!users || !users.len)
|
||||
return
|
||||
|
||||
var/list/user_keys = list()
|
||||
for(var/mob/user in users)
|
||||
user_keys += key_name(user)
|
||||
|
||||
log_admin("[english_list(user_keys)] [message]")
|
||||
message_admins("[english_list(user_keys)] [message]")
|
||||
|
||||
proc/admin_log_and_message_admins(var/message as text)
|
||||
log_admin(usr ? "[key_name_admin(usr)] [message]" : "EVENT [message]")
|
||||
message_admins(usr ? "[key_name_admin(usr)] [message]" : "EVENT [message]", 1)
|
||||
|
||||
proc/admin_attack_log(var/mob/attacker, var/mob/victim, var/attacker_message, var/victim_message, var/admin_message)
|
||||
victim.attack_log += text("\[[time_stamp()]\] <font color='orange'>[victim_message] [key_name(attacker)]</font>")
|
||||
attacker.attack_log += text("\[[time_stamp()]\] <font color='red'>[attacker_message] [key_name(victim)]</font>")
|
||||
victim.attack_log += text("\[[time_stamp()]\] <font color='orange'>[key_name(attacker)] - [victim_message]</font>")
|
||||
attacker.attack_log += text("\[[time_stamp()]\] <font color='red'>[key_name(victim)] - [attacker_message]</font>")
|
||||
|
||||
msg_admin_attack("[key_name(attacker)] [admin_message] [key_name(victim)] (INTENT: [uppertext(attacker.a_intent)]) (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[attacker.x];Y=[attacker.y];Z=[attacker.z]'>JMP</a>)")
|
||||
|
||||
proc/admin_attacker_log_many_victims(var/mob/attacker, var/list/mob/victims, var/attacker_message, var/victim_message, var/admin_message)
|
||||
if(!victims || !victims.len)
|
||||
return
|
||||
|
||||
for(var/mob/victim in victims)
|
||||
admin_attack_log(attacker, victim, attacker_message, victim_message, admin_message)
|
||||
|
||||
@@ -458,6 +458,8 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology",
|
||||
user << "\red You slice open one of your fingers and begin drawing a rune on the floor whilst chanting the ritual that binds your life essence with the dark arcane energies flowing through the surrounding world."
|
||||
user.take_overall_damage((rand(9)+1)/10) // 0.1 to 1.0 damage
|
||||
if(do_after(user, 50))
|
||||
var/area/A = get_area(user)
|
||||
log_and_message_admins("created \an [chosen_rune] rune at \the [A.name] - [user.loc.x]-[user.loc.y]-[user.loc.z].")
|
||||
if(usr.get_active_hand() != src)
|
||||
return
|
||||
var/mob/living/carbon/human/H = user
|
||||
@@ -515,6 +517,8 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology",
|
||||
var/mob/living/carbon/human/H = user
|
||||
R.blood_DNA = list()
|
||||
R.blood_DNA[H.dna.unique_enzymes] = H.dna.b_type
|
||||
var/area/A = get_area(user)
|
||||
log_and_message_admins("created \an [r] rune at \the [A.name] - [user.loc.x]-[user.loc.y]-[user.loc.z].")
|
||||
switch(r)
|
||||
if("teleport")
|
||||
var/list/words = list("ire", "ego", "nahlizet", "certum", "veri", "jatkaa", "balaq", "mgar", "karazet", "geeri")
|
||||
|
||||
@@ -104,7 +104,7 @@ var/list/sacrificed = list()
|
||||
if(M.stat==2)
|
||||
continue
|
||||
usr.say("Mah[pick("'","`")]weyh pleggh at e'ntrath!")
|
||||
|
||||
|
||||
if (M.species && (M.species.flags & NO_PAIN))
|
||||
M.visible_message("\red The markings below [M] glow a bloody red.")
|
||||
else
|
||||
@@ -116,6 +116,7 @@ var/list/sacrificed = list()
|
||||
// Mostly for the benefit of those who resist, but it makes sense for even those who join to have some.. effect.
|
||||
M.take_overall_damage(0, 10)
|
||||
|
||||
admin_attack_log(usr, M, "Used a convert rune", "Was subjected to a convert rune", "used a convert rune on")
|
||||
var/choice = alert(M,"Do you want to join the cult?","Submit to Nar'Sie","Resist","Submit")
|
||||
if(choice == "Submit")
|
||||
ticker.mode.add_cultist(M.mind)
|
||||
@@ -146,12 +147,13 @@ var/list/sacrificed = list()
|
||||
/////////////////////////////////////////FOURTH RUNE
|
||||
|
||||
tearreality()
|
||||
var/cultist_count = 0
|
||||
var/list/cultists = new()
|
||||
for(var/mob/M in range(1,src))
|
||||
if(iscultist(M) && !M.stat)
|
||||
M.say("Tok-lyr rqa'nap g[pick("'","`")]lt-ulotf!")
|
||||
cultist_count += 1
|
||||
if(cultist_count >= 9)
|
||||
cultists += 1
|
||||
if(cultists.len >= 9)
|
||||
log_and_message_admins_many(cultists, "summoned Nar-sie.")
|
||||
new /obj/machinery/singularity/narsie/large(src.loc)
|
||||
if(ticker.mode.name == "cult")
|
||||
ticker.mode:eldergod = 0
|
||||
@@ -162,6 +164,7 @@ var/list/sacrificed = list()
|
||||
/////////////////////////////////////////FIFTH RUNE
|
||||
|
||||
emp(var/U,var/range_red) //range_red - var which determines by which number to reduce the default emp range, U is the source loc, needed because of talisman emps which are held in hand at the moment of using and that apparently messes things up -- Urist
|
||||
log_and_message_admins("activated an EMP rune.")
|
||||
if(istype(src,/obj/effect/rune))
|
||||
usr.say("Ta'gh fara[pick("'","`")]qha fel d'amar det!")
|
||||
else
|
||||
@@ -183,6 +186,7 @@ var/list/sacrificed = list()
|
||||
if(R.word1==cultwords["travel"] && R.word2==cultwords["blood"] && R.word3==cultwords["self"])
|
||||
for(var/mob/living/carbon/D in R.loc)
|
||||
if(D.stat!=2)
|
||||
admin_attack_log(usr, D, "Used a blood drain rune.", "Was victim of a blood drain rune.", "used a blood drain rune on")
|
||||
var/bdrain = rand(1,25)
|
||||
D << "\red You feel weakened."
|
||||
D.take_overall_damage(bdrain, 0)
|
||||
@@ -423,6 +427,7 @@ var/list/sacrificed = list()
|
||||
|
||||
D << "<font color=\"purple\"><b><i>Your blood pulses. Your head throbs. The world goes red. All at once you are aware of a horrible, horrible truth. The veil of reality has been ripped away and in the festering wound left behind something sinister takes root.</b></i></font>"
|
||||
D << "<font color=\"purple\"><b><i>Assist your new compatriots in their dark dealings. Their goal is yours, and yours is theirs. You serve the Dark One above all else. Bring It back.</b></i></font>"
|
||||
log_and_message_admins("used a manifest rune.")
|
||||
|
||||
var/mob/living/user = usr
|
||||
while(this_rune && user && user.stat==CONSCIOUS && user.client && user.loc==this_rune.loc)
|
||||
@@ -591,7 +596,7 @@ var/list/sacrificed = list()
|
||||
C.say("Barhah hra zar[pick("'","`")]garis!")
|
||||
|
||||
for(var/mob/H in victims)
|
||||
|
||||
var/accepted = 0
|
||||
var/worth = 0
|
||||
if(istype(H,/mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/lamb = H
|
||||
@@ -606,6 +611,7 @@ var/list/sacrificed = list()
|
||||
H.dust()//To prevent the MMI from remaining
|
||||
else
|
||||
H.gib()
|
||||
accepted = 1
|
||||
usr << "\red The Geometer of Blood accepts this sacrifice, your objective is now complete."
|
||||
else
|
||||
usr << "\red Your target's earthly bonds are too strong. You need more cultists to succeed in this ritual."
|
||||
@@ -613,9 +619,11 @@ var/list/sacrificed = list()
|
||||
if(cultsinrange.len >= 3)
|
||||
if(H.stat !=2)
|
||||
if(prob(80) || worth)
|
||||
accepted = 1
|
||||
usr << "\red The Geometer of Blood accepts this [worth ? "exotic " : ""]sacrifice."
|
||||
ticker.mode:grant_runeword(usr)
|
||||
else
|
||||
accepted = 1
|
||||
usr << "\red The Geometer of blood accepts this sacrifice."
|
||||
usr << "\red However, this soul was not enough to gain His favor."
|
||||
if(isrobot(H))
|
||||
@@ -624,9 +632,11 @@ var/list/sacrificed = list()
|
||||
H.gib()
|
||||
else
|
||||
if(prob(40) || worth)
|
||||
accepted = 1
|
||||
usr << "\red The Geometer of blood accepts this [worth ? "exotic " : ""]sacrifice."
|
||||
ticker.mode:grant_runeword(usr)
|
||||
else
|
||||
accepted = 1
|
||||
usr << "\red The Geometer of blood accepts this sacrifice."
|
||||
usr << "\red However, a mere dead body is not enough to satisfy Him."
|
||||
if(isrobot(H))
|
||||
@@ -638,9 +648,11 @@ var/list/sacrificed = list()
|
||||
usr << "\red The victim is still alive, you will need more cultists chanting for the sacrifice to succeed."
|
||||
else
|
||||
if(prob(40))
|
||||
accepted = 1
|
||||
usr << "\red The Geometer of blood accepts this sacrifice."
|
||||
ticker.mode:grant_runeword(usr)
|
||||
else
|
||||
accepted = 1
|
||||
usr << "\red The Geometer of blood accepts this sacrifice."
|
||||
usr << "\red However, a mere dead body is not enough to satisfy Him."
|
||||
if(isrobot(H))
|
||||
@@ -651,9 +663,11 @@ var/list/sacrificed = list()
|
||||
if(cultsinrange.len >= 3)
|
||||
if(H.stat !=2)
|
||||
if(prob(80))
|
||||
accepted = 1
|
||||
usr << "\red The Geometer of Blood accepts this sacrifice."
|
||||
ticker.mode:grant_runeword(usr)
|
||||
else
|
||||
accepted = 1
|
||||
usr << "\red The Geometer of blood accepts this sacrifice."
|
||||
usr << "\red However, this soul was not enough to gain His favor."
|
||||
if(isrobot(H))
|
||||
@@ -662,9 +676,11 @@ var/list/sacrificed = list()
|
||||
H.gib()
|
||||
else
|
||||
if(prob(40))
|
||||
accepted = 1
|
||||
usr << "\red The Geometer of blood accepts this sacrifice."
|
||||
ticker.mode:grant_runeword(usr)
|
||||
else
|
||||
accepted = 1
|
||||
usr << "\red The Geometer of blood accepts this sacrifice."
|
||||
usr << "\red However, a mere dead body is not enough to satisfy Him."
|
||||
if(isrobot(H))
|
||||
@@ -676,15 +692,20 @@ var/list/sacrificed = list()
|
||||
usr << "\red The victim is still alive, you will need more cultists chanting for the sacrifice to succeed."
|
||||
else
|
||||
if(prob(40))
|
||||
accepted = 1
|
||||
usr << "\red The Geometer of blood accepts this sacrifice."
|
||||
ticker.mode:grant_runeword(usr)
|
||||
else
|
||||
accepted = 1
|
||||
usr << "\red The Geometer of blood accepts this sacrifice."
|
||||
usr << "\red However, a mere dead body is not enough to satisfy Him."
|
||||
if(isrobot(H))
|
||||
H.dust()//To prevent the MMI from remaining
|
||||
else
|
||||
H.gib()
|
||||
if(accepted)
|
||||
admin_attack_log(usr, H, "Used a sacrifice rune.", "Was victim of a sacrifice rune.", "used a sacrifice rune on")
|
||||
log_and_message_admins_many(cultsinrange - usr, "Assisted activating a sacrifice rune.")
|
||||
for(var/mob/living/carbon/monkey/M in src.loc)
|
||||
if (ticker.mode.name == "cult")
|
||||
if(M.mind == ticker.mode:sacrifice_target)
|
||||
@@ -855,7 +876,7 @@ var/list/sacrificed = list()
|
||||
|
||||
deafen()
|
||||
if(istype(src,/obj/effect/rune))
|
||||
var/affected = 0
|
||||
var/list/affected = new()
|
||||
for(var/mob/living/carbon/C in range(7,src))
|
||||
if (iscultist(C))
|
||||
continue
|
||||
@@ -864,17 +885,18 @@ var/list/sacrificed = list()
|
||||
continue
|
||||
C.ear_deaf += 50
|
||||
C.show_message("\red The world around you suddenly becomes quiet.", 3)
|
||||
affected++
|
||||
affected += C
|
||||
if(prob(1))
|
||||
C.sdisabilities |= DEAF
|
||||
if(affected)
|
||||
if(affected.len)
|
||||
usr.say("Sti[pick("'","`")] kaliedir!")
|
||||
usr << "\red The world becomes quiet as the deafening rune dissipates into fine dust."
|
||||
admin_attacker_log_many_victims(usr, affected, "Used a deafen rune.", "Was victim of a deafen rune.", "used a deafen rune on")
|
||||
del(src)
|
||||
else
|
||||
return fizzle()
|
||||
else
|
||||
var/affected = 0
|
||||
var/list/affected = new()
|
||||
for(var/mob/living/carbon/C in range(7,usr))
|
||||
if (iscultist(C))
|
||||
continue
|
||||
@@ -884,10 +906,11 @@ var/list/sacrificed = list()
|
||||
C.ear_deaf += 30
|
||||
//talismans is weaker.
|
||||
C.show_message("\red The world around you suddenly becomes quiet.", 3)
|
||||
affected++
|
||||
if(affected)
|
||||
affected += C
|
||||
if(affected.len)
|
||||
usr.whisper("Sti[pick("'","`")] kaliedir!")
|
||||
usr << "\red Your talisman turns into gray dust, deafening everyone around."
|
||||
admin_attacker_log_many_victims(usr, affected, "Used a deafen rune.", "Was victim of a deafen rune.", "used a deafen rune on")
|
||||
for (var/mob/V in orange(1,src))
|
||||
if(!(iscultist(V)))
|
||||
V.show_message("\red Dust flows from [usr]'s hands for a moment, and the world suddenly becomes quiet..", 3)
|
||||
@@ -895,7 +918,7 @@ var/list/sacrificed = list()
|
||||
|
||||
blind()
|
||||
if(istype(src,/obj/effect/rune))
|
||||
var/affected = 0
|
||||
var/list/affected = new()
|
||||
for(var/mob/living/carbon/C in viewers(src))
|
||||
if (iscultist(C))
|
||||
continue
|
||||
@@ -909,15 +932,16 @@ var/list/sacrificed = list()
|
||||
if(prob(10))
|
||||
C.sdisabilities |= BLIND
|
||||
C.show_message("\red Suddenly you see red flash that blinds you.", 3)
|
||||
affected++
|
||||
if(affected)
|
||||
affected += C
|
||||
if(affected.len)
|
||||
usr.say("Sti[pick("'","`")] kaliesin!")
|
||||
usr << "\red The rune flashes, blinding those who not follow the Nar-Sie, and dissipates into fine dust."
|
||||
admin_attacker_log_many_victims(usr, affected, "Used a blindness rune.", "Was victim of a blindness rune.", "used a blindness rune on")
|
||||
del(src)
|
||||
else
|
||||
return fizzle()
|
||||
else
|
||||
var/affected = 0
|
||||
var/list/affected = new()
|
||||
for(var/mob/living/carbon/C in view(2,usr))
|
||||
if (iscultist(C))
|
||||
continue
|
||||
@@ -927,11 +951,12 @@ var/list/sacrificed = list()
|
||||
C.eye_blurry += 30
|
||||
C.eye_blind += 10
|
||||
//talismans is weaker.
|
||||
affected++
|
||||
affected += C
|
||||
C.show_message("\red You feel a sharp pain in your eyes, and the world disappears into darkness..", 3)
|
||||
if(affected)
|
||||
if(affected.len)
|
||||
usr.whisper("Sti[pick("'","`")] kaliesin!")
|
||||
usr << "\red Your talisman turns into gray dust, blinding those who not follow the Nar-Sie."
|
||||
admin_attacker_log_many_victims(usr, affected, "Used a blindness rune.", "Was victim of a blindness rune.", "used a blindness rune on")
|
||||
return
|
||||
|
||||
|
||||
@@ -942,12 +967,13 @@ var/list/sacrificed = list()
|
||||
if (istype(H.current,/mob/living/carbon))
|
||||
cultists+=H.current
|
||||
*/
|
||||
var/culcount = 0 //also, wording for it is old wording for obscure rune, which is now hide-see-blood.
|
||||
var/list/cultists = new //also, wording for it is old wording for obscure rune, which is now hide-see-blood.
|
||||
var/list/victims = new
|
||||
// var/list/cultboil = list(cultists-usr) //and for this words are destroy-see-blood.
|
||||
for(var/mob/living/carbon/C in orange(1,src))
|
||||
if(iscultist(C) && !C.stat)
|
||||
culcount++
|
||||
if(culcount>=3)
|
||||
cultists+=C
|
||||
if(cultists.len>=3)
|
||||
for(var/mob/living/carbon/M in viewers(usr))
|
||||
if(iscultist(M))
|
||||
continue
|
||||
@@ -956,6 +982,7 @@ var/list/sacrificed = list()
|
||||
continue
|
||||
M.take_overall_damage(51,51)
|
||||
M << "\red Your blood boils!"
|
||||
victims += M
|
||||
if(prob(5))
|
||||
spawn(5)
|
||||
M.gib()
|
||||
@@ -966,6 +993,8 @@ var/list/sacrificed = list()
|
||||
if(iscultist(C) && !C.stat)
|
||||
C.say("Dedo ol[pick("'","`")]btoh!")
|
||||
C.take_overall_damage(15, 0)
|
||||
admin_attacker_log_many_victims(usr, victims, "Used a blood boil rune.", "Was the victim of a blood boil rune.", "used a blood boil rune on")
|
||||
log_and_message_admins_many(cultists - usr, "assisted activating a blood boil rune.")
|
||||
del(src)
|
||||
else
|
||||
return fizzle()
|
||||
@@ -1005,7 +1034,6 @@ var/list/sacrificed = list()
|
||||
if(istype(src,/obj/effect/rune)) ///When invoked as rune, flash and stun everyone around.
|
||||
usr.say("Fuu ma[pick("'","`")]jin!")
|
||||
for(var/mob/living/L in viewers(src))
|
||||
|
||||
if(iscarbon(L))
|
||||
var/mob/living/carbon/C = L
|
||||
flick("e_flash", C.flash)
|
||||
@@ -1014,11 +1042,13 @@ var/list/sacrificed = list()
|
||||
C.Weaken(1)
|
||||
C.Stun(1)
|
||||
C.show_message("\red The rune explodes in a bright flash.", 3)
|
||||
admin_attack_log(usr, C, "Used a stun rune.", "Was victim of a stun rune.", "used a stun rune on")
|
||||
|
||||
else if(issilicon(L))
|
||||
var/mob/living/silicon/S = L
|
||||
S.Weaken(5)
|
||||
S.show_message("\red BZZZT... The rune has exploded in a bright flash.", 3)
|
||||
admin_attack_log(usr, S, "Used a stun rune.", "Was victim of a stun rune.", "used a stun rune on")
|
||||
del(src)
|
||||
else ///When invoked as talisman, stun and mute the target mob.
|
||||
usr.say("Dream sign ''Evil sealing talisman'[pick("'","`")]!")
|
||||
@@ -1032,7 +1062,7 @@ var/list/sacrificed = list()
|
||||
|
||||
if(issilicon(T))
|
||||
T.Weaken(15)
|
||||
|
||||
admin_attack_log(usr, T, "Used a stun rune.", "Was victim of a stun rune.", "used a stun rune on")
|
||||
else if(iscarbon(T))
|
||||
var/mob/living/carbon/C = T
|
||||
flick("e_flash", C.flash)
|
||||
@@ -1040,6 +1070,7 @@ var/list/sacrificed = list()
|
||||
C.silent += 15
|
||||
C.Weaken(25)
|
||||
C.Stun(25)
|
||||
admin_attack_log(usr, C, "Used a stun rune.", "Was victim of a stun rune.", "used a stun rune on")
|
||||
return
|
||||
|
||||
/////////////////////////////////////////TWENTY-FIFTH RUNE
|
||||
|
||||
Reference in New Issue
Block a user