mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-24 05:23:22 +01:00
@@ -383,7 +383,6 @@
|
||||
user << "You are too far away to read the gauge."
|
||||
if(welded)
|
||||
user << "It seems welded shut."
|
||||
..()
|
||||
|
||||
/obj/machinery/atmospherics/unary/vent_pump/power_change()
|
||||
var/old_stat = stat
|
||||
|
||||
@@ -277,7 +277,6 @@
|
||||
user << "A small gauge in the corner reads [round(last_flow_rate, 0.1)] L/s; [round(last_power_draw)] W"
|
||||
else
|
||||
user << "You are too far away to read the gauge."
|
||||
..()
|
||||
|
||||
/obj/machinery/atmospherics/unary/vent_scrubber/Del()
|
||||
if(initial_loc)
|
||||
|
||||
@@ -91,9 +91,11 @@
|
||||
|
||||
/obj/item/weapon/cane/concealed/New()
|
||||
..()
|
||||
concealed_blade = new/obj/item/weapon/butterfly/switchblade(src)
|
||||
var/obj/item/weapon/butterfly/switchblade/temp_blade = new(src)
|
||||
concealed_blade = temp_blade
|
||||
temp_blade.attack_self()
|
||||
|
||||
/obj/item/weapon/cane/concealed/attack_self(mob/user)
|
||||
/obj/item/weapon/cane/concealed/attack_self(var/mob/user)
|
||||
if(concealed_blade)
|
||||
user.visible_message("<span class='warning'>[user] has unsheathed \a [concealed_blade] from \his [src]!</span>", "You unsheathe \the [concealed_blade] from \the [src].")
|
||||
// Calling drop/put in hands to properly call item drop/pickup procs
|
||||
@@ -101,8 +103,9 @@
|
||||
user.drop_from_inventory(src)
|
||||
user.put_in_hands(concealed_blade)
|
||||
user.put_in_hands(src)
|
||||
user.update_inv_l_hand(0)
|
||||
user.update_inv_r_hand()
|
||||
concealed_blade = null
|
||||
update_icon()
|
||||
else
|
||||
..()
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -457,6 +457,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
|
||||
@@ -514,6 +516,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")
|
||||
|
||||
@@ -99,6 +99,7 @@ var/list/sacrificed = list()
|
||||
/////////////////////////////////////////THIRD RUNE
|
||||
|
||||
convert()
|
||||
var/mob/attacker = usr
|
||||
var/mob/living/carbon/target = null
|
||||
for(var/mob/living/carbon/M in src.loc)
|
||||
if(!iscultist(M) && M.stat < DEAD && !(M in converting))
|
||||
@@ -123,10 +124,10 @@ var/list/sacrificed = list()
|
||||
if(target.getFireLoss() < 100)
|
||||
target.hallucination = min(target.hallucination, 500)
|
||||
return 0
|
||||
|
||||
target.take_overall_damage(0, rand(5, 20)) // You dirty resister cannot handle the damage to your mind. Easily. - even cultists who accept right away should experience some effects
|
||||
// Resist messages go!
|
||||
if(initial_message) //don't do this stuff right away, only if they resist or hesitate.
|
||||
admin_attack_log(attacker, target, "Used a convert rune", "Was subjected to a convert rune", "used a convert rune on")
|
||||
switch(target.getFireLoss())
|
||||
if(0 to 25)
|
||||
target << "<span class='danger'>Your blood boils as you force yourself to resist the corruption invading every corner of your mind.</span>"
|
||||
@@ -176,12 +177,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)
|
||||
return
|
||||
else
|
||||
@@ -190,6 +192,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
|
||||
@@ -211,6 +214,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)
|
||||
@@ -443,6 +447,7 @@ var/list/sacrificed = list()
|
||||
D.real_name += " "
|
||||
D.real_name += pick("Apparition", "Aptrgangr", "Dis", "Draugr", "Dybbuk", "Eidolon", "Fetch", "Fylgja", "Ghast", "Ghost", "Gjenganger", "Haint", "Phantom", "Phantasm", "Poltergeist", "Revenant", "Shade", "Shadow", "Soul", "Spectre", "Spirit", "Spook", "Visitant", "Wraith")
|
||||
|
||||
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)
|
||||
user.take_organ_damage(1, 0)
|
||||
@@ -657,6 +662,7 @@ 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))
|
||||
|
||||
usr << "\red The Geometer of blood accepts this sacrifice."
|
||||
cult.grant_runeword(usr)
|
||||
else
|
||||
@@ -853,7 +859,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
|
||||
@@ -862,17 +868,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
|
||||
@@ -882,10 +889,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)
|
||||
@@ -893,7 +901,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
|
||||
@@ -907,15 +915,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
|
||||
@@ -925,11 +934,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
|
||||
|
||||
|
||||
@@ -940,12 +950,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
|
||||
@@ -954,6 +965,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()
|
||||
@@ -964,6 +976,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()
|
||||
@@ -1003,7 +1017,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)
|
||||
@@ -1012,11 +1025,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("'","`")]!")
|
||||
@@ -1030,7 +1045,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)
|
||||
@@ -1038,6 +1053,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
|
||||
|
||||
@@ -304,6 +304,17 @@
|
||||
update_icon()
|
||||
return
|
||||
|
||||
|
||||
/obj/machinery/door/examine(mob/user)
|
||||
..()
|
||||
if(src.health < src.maxhealth / 4)
|
||||
user << "\The [src] looks like it's about to break!"
|
||||
else if(src.health < src.maxhealth / 2)
|
||||
user << "\The [src] looks seriously damaged!"
|
||||
else if(src.health < src.maxhealth * 3/4)
|
||||
user << "\The [src] shows signs of damage!"
|
||||
|
||||
|
||||
/obj/machinery/door/proc/set_broken()
|
||||
stat |= BROKEN
|
||||
for (var/mob/O in viewers(src, null))
|
||||
|
||||
@@ -179,12 +179,15 @@
|
||||
return
|
||||
|
||||
/obj/machinery/vending/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
|
||||
var/obj/item/weapon/card/id/I = W.GetID()
|
||||
|
||||
if (currently_vending && vendor_account && !vendor_account.suspended)
|
||||
var/paid = 0
|
||||
var/handled = 0
|
||||
if(istype(W, /obj/item/weapon/card/id))
|
||||
var/obj/item/weapon/card/id/C = W
|
||||
paid = pay_with_card(C)
|
||||
|
||||
if (I) //for IDs and PDAs and wallets with IDs
|
||||
paid = pay_with_card(I,W)
|
||||
handled = 1
|
||||
else if (istype(W, /obj/item/weapon/spacecash/ewallet))
|
||||
var/obj/item/weapon/spacecash/ewallet/C = W
|
||||
@@ -202,9 +205,12 @@
|
||||
nanomanager.update_uis(src)
|
||||
return // don't smack that machine with your 2 thalers
|
||||
|
||||
if (istype(W, /obj/item/weapon/card/emag))
|
||||
if (I || istype(W, /obj/item/weapon/spacecash))
|
||||
attack_hand(user)
|
||||
return
|
||||
else if (istype(W, /obj/item/weapon/card/emag))
|
||||
src.emagged = 1
|
||||
user << "You short out the product lock on [src]"
|
||||
user << "You short out the product lock on \the [src]"
|
||||
return
|
||||
else if(istype(W, /obj/item/weapon/screwdriver))
|
||||
src.panel_open = !src.panel_open
|
||||
@@ -224,7 +230,7 @@
|
||||
W.loc = src
|
||||
coin = W
|
||||
categories |= CAT_COIN
|
||||
user << "\blue You insert the [W] into the [src]"
|
||||
user << "\blue You insert \the [W] into \the [src]"
|
||||
nanomanager.update_uis(src)
|
||||
return
|
||||
else if(istype(W, /obj/item/weapon/wrench))
|
||||
@@ -234,9 +240,9 @@
|
||||
switch (anchored)
|
||||
if (0)
|
||||
anchored = 1
|
||||
user.visible_message("[user] tightens the bolts securing \the [src] to the floor.", "You tighten the bolts securing \the [src] to the floor.")
|
||||
user.visible_message("\The [user] tightens the bolts securing \the [src] to the floor.", "You tighten the bolts securing \the [src] to the floor.")
|
||||
if (1)
|
||||
user.visible_message("[user] unfastens the bolts securing \the [src] to the floor.", "You unfasten the bolts securing \the [src] to the floor.")
|
||||
user.visible_message("\The [user] unfastens the bolts securing \the [src] to the floor.", "You unfasten the bolts securing \the [src] to the floor.")
|
||||
anchored = 0
|
||||
return
|
||||
|
||||
@@ -266,7 +272,7 @@
|
||||
if(istype(cashmoney, /obj/item/weapon/spacecash/bundle))
|
||||
// Bundles can just have money subtracted, and will work
|
||||
|
||||
visible_message("<span class='info'>[usr] inserts some cash into [src].</span>")
|
||||
visible_message("<span class='info'>\The [usr] inserts some cash into \the [src].</span>")
|
||||
var/obj/item/weapon/spacecash/bundle/cashmoney_bundle = cashmoney
|
||||
cashmoney_bundle.worth -= currently_vending.price
|
||||
|
||||
@@ -281,7 +287,7 @@
|
||||
// This is really dirty, but there's no superclass for all bills, so we
|
||||
// just assume that all spacecash that's not something else is a bill
|
||||
|
||||
visible_message("<span class='info'>[usr] inserts a bill into [src].</span>")
|
||||
visible_message("<span class='info'>\The [usr] inserts a bill into \the [src].</span>")
|
||||
var/left = cashmoney.worth - currently_vending.price
|
||||
usr.drop_from_inventory(cashmoney)
|
||||
del(cashmoney)
|
||||
@@ -300,7 +306,7 @@
|
||||
* successful, 0 if failed.
|
||||
*/
|
||||
/obj/machinery/vending/proc/pay_with_ewallet(var/obj/item/weapon/spacecash/ewallet/wallet)
|
||||
visible_message("<span class='info'>[usr] swipes a card through [src].</span>")
|
||||
visible_message("<span class='info'>\The [usr] swipes \the [wallet] through \the [src].</span>")
|
||||
if(currently_vending.price > wallet.worth)
|
||||
src.status_message = "Insufficient funds on chargecard."
|
||||
src.status_error = 1
|
||||
@@ -316,8 +322,11 @@
|
||||
* Takes payment for whatever is the currently_vending item. Returns 1 if
|
||||
* successful, 0 if failed
|
||||
*/
|
||||
/obj/machinery/vending/proc/pay_with_card(var/obj/item/weapon/card/id/I)
|
||||
visible_message("<span class='info'>[usr] swipes a card through [src].</span>")
|
||||
/obj/machinery/vending/proc/pay_with_card(var/obj/item/weapon/card/id/I, var/obj/item/ID_container)
|
||||
if(I==ID_container || ID_container == null)
|
||||
visible_message("<span class='info'>\The [usr] swipes \the [I] through \the [src].</span>")
|
||||
else
|
||||
visible_message("<span class='info'>\The [usr] swipes \the [ID_container] through \the [src].</span>")
|
||||
var/datum/money_account/customer_account = get_account(I.associated_account_number)
|
||||
if (!customer_account)
|
||||
src.status_message = "Error: Unable to access account. Please contact technical support if problem persists."
|
||||
@@ -529,7 +538,7 @@
|
||||
return
|
||||
if(coin.string_attached)
|
||||
if(prob(50))
|
||||
user << "\blue You successfully pull the coin out before the [src] could swallow it."
|
||||
user << "\blue You successfully pull the coin out before \the [src] could swallow it."
|
||||
else
|
||||
user << "\blue You weren't able to pull the coin out fast enough, the machine ate it, string and all."
|
||||
del(coin)
|
||||
@@ -558,7 +567,7 @@
|
||||
|
||||
/obj/machinery/vending/proc/stock(var/datum/data/vending_product/R, var/mob/user)
|
||||
if(src.panel_open)
|
||||
user << "\blue You stock the [src] with \a [R.product_name]"
|
||||
user << "\blue You stock \the [src] with \a [R.product_name]"
|
||||
R.amount++
|
||||
|
||||
nanomanager.update_uis(src)
|
||||
@@ -592,7 +601,7 @@
|
||||
return
|
||||
|
||||
for(var/mob/O in hearers(src, null))
|
||||
O.show_message("<span class='game say'><span class='name'>[src]</span> beeps, \"[message]\"",2)
|
||||
O.show_message("<span class='game say'><span class='name'>\The [src]</span> beeps, \"[message]\"",2)
|
||||
return
|
||||
|
||||
/obj/machinery/vending/power_change()
|
||||
|
||||
@@ -98,7 +98,7 @@
|
||||
<br>
|
||||
<h2>OPERATING PRINCIPLES</h2>
|
||||
<br>
|
||||
<li>The supermatter crystal serves as the fundamental power source of the engine. Upon being charged, it begins to emit large amounts of heat and radiation, as well and oxygen and plasma. As oxygen accelerates the reaction, and plasma carries the risk of fire, these must be filtered out. NOTE: Supermatter radiation will not charge radiation collectors.</li>
|
||||
<li>The supermatter crystal serves as the fundamental power source of the engine. Upon being charged, it begins to emit large amounts of heat and radiation, as well and oxygen and phoron gas. As oxygen accelerates the reaction, and phoron carries the risk of fire, these must be filtered out. NOTE: Supermatter radiation will not charge radiation collectors.</li>
|
||||
<br>
|
||||
<li>Air in the reactor chamber housing the supermatter is circulated through the reactor loop, which passes through the filters and thermoelectric generators. The thermoelectric generators transfer heat from the reactor loop to the colder radiator loop, thereby generating power. Additional power is generated from internal turbines in the circulators.</li>
|
||||
<br>
|
||||
@@ -106,7 +106,7 @@
|
||||
<br>
|
||||
<li>The MK 1 Prototype Thermoelectric Supermatter Engine is designed to operate at reactor temperatures of 3000K to 4000K and generate up to 1MW of power. Beyond 1MW, the thermoelectric generators will begin to lose power through electrical discharge, reducing efficiency, but additional power generation remains feasible.</li>
|
||||
<br>
|
||||
<li>The crystal structure of the supermatter will begin to liquefy if its temperature exceeds 5000K. This eventually results in a massive release of light, heat and radiation, disintegration of both the supermatter crystal and most of the surrounding area, and as as-of-yet poorly documented psychological effects on all animals within a 2km. Appropriate action should be taken to stabilize or eject the supermatter before such occurs.</li>
|
||||
<li>The crystal structure of the supermatter will begin to liquefy if its temperature exceeds 5000K. This eventually results in a massive release of light, heat and radiation, disintegration of both the supermatter crystal and most of the surrounding area, and as as-of-yet poorly documented psychological effects on all animals within a 2km radius. Appropriate action should be taken to stabilize or eject the supermatter before such occurs.</li>
|
||||
<br>
|
||||
<h2>SUPERMATTER HANDLING</h2>
|
||||
<li>Do not expose supermatter to oxygen.</li>
|
||||
@@ -125,7 +125,7 @@
|
||||
<ol>
|
||||
<li>Ensure that radiation protection and meson goggles are worn at all times while working in the engine room.</li>
|
||||
<li>Ensure that reactor and radiator loops are undamaged and unobstructed.</li>
|
||||
<li>Ensure that plasma and oxygen gas exhaust from filters is properly contained or disposed. Do not allow exhaust pressure to exceed 4500 kPa.</li>
|
||||
<li>Ensure that phoron and oxygen gas exhaust from filters is properly contained or disposed. Do not allow exhaust pressure to exceed 4500 kPa.</li>
|
||||
<li>Ensure that engine room Area Power Controller (APC) and engine Superconducting Magnetic Energy Storage unit (SMES) are properly charged.</li>
|
||||
<li>Ensure that reactor temperature does not exceed 5000K. In event of reactor temperature exceeding 5000K, see EMERGENCY COOLING PROCEDURE.</li>
|
||||
<li>In event of imminent and/or unavoidable delamination, see EJECTION PROCEDURE.</li>
|
||||
|
||||
@@ -296,7 +296,7 @@ var/list/admin_verbs_mentor = list(
|
||||
if(holder.rights & R_SERVER) verbs += admin_verbs_server
|
||||
if(holder.rights & R_DEBUG)
|
||||
verbs += admin_verbs_debug
|
||||
if(config.debugparanoid && !check_rights(R_ADMIN))
|
||||
if(config.debugparanoid && !(holder.rights & R_ADMIN))
|
||||
verbs.Remove(admin_verbs_paranoid_debug) //Right now it's just callproc but we can easily add others later on.
|
||||
if(holder.rights & R_POSSESS) verbs += admin_verbs_possess
|
||||
if(holder.rights & R_PERMISSIONS) verbs += admin_verbs_permissions
|
||||
|
||||
@@ -661,6 +661,12 @@ var/global/list/gear_datums = list()
|
||||
cost = 2
|
||||
slot = slot_shoes
|
||||
|
||||
/datum/gear/toeless_jackboots
|
||||
display_name = "toe-less jackboots"
|
||||
path = /obj/item/clothing/shoes/jackboots/fluff/kecer_eldraran //permisson of owner of custom item was granted
|
||||
cost = 2
|
||||
slot = slot_shoes
|
||||
|
||||
/datum/gear/sandal
|
||||
display_name = "sandals"
|
||||
path = /obj/item/clothing/shoes/sandal
|
||||
|
||||
@@ -105,7 +105,14 @@
|
||||
|
||||
// Okay, it wasn't a terminal being touched, check for all the simple insertions.
|
||||
if(input_device.type in list(/obj/item/device/paicard, /obj/item/device/mmi, /obj/item/device/mmi/digital/posibrain))
|
||||
integrate_ai(input_device,user)
|
||||
if(integrated_ai)
|
||||
integrated_ai.attackby(input_device,user)
|
||||
// If the transfer was successful, we can clear out our vars.
|
||||
if(integrated_ai.loc != src)
|
||||
integrated_ai = null
|
||||
eject_ai()
|
||||
else
|
||||
integrate_ai(input_device,user)
|
||||
return 1
|
||||
|
||||
return 0
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/obj/item/device/eftpos
|
||||
name = "EFTPOS scanner"
|
||||
name = "\improper EFTPOS scanner"
|
||||
desc = "Swipe your ID card to make purchases electronically."
|
||||
icon = 'icons/obj/device.dmi'
|
||||
icon_state = "eftpos"
|
||||
@@ -110,11 +110,13 @@
|
||||
else
|
||||
user << browse(null,"window=eftpos")
|
||||
|
||||
/obj/item/device/eftpos/attackby(O as obj, user as mob)
|
||||
if(istype(O, /obj/item/weapon/card))
|
||||
/obj/item/device/eftpos/attackby(obj/item/O as obj, user as mob)
|
||||
|
||||
var/obj/item/weapon/card/id/I = O.GetID()
|
||||
|
||||
if(I)
|
||||
if(linked_account)
|
||||
var/obj/item/weapon/card/I = O
|
||||
scan_card(I)
|
||||
scan_card(I, O)
|
||||
else
|
||||
usr << "\icon[src]<span class='warning'>Unable to connect to linked account.</span>"
|
||||
else if (istype(O, /obj/item/weapon/spacecash/ewallet))
|
||||
@@ -124,7 +126,7 @@
|
||||
if(transaction_locked && !transaction_paid)
|
||||
if(transaction_amount <= E.worth)
|
||||
playsound(src, 'sound/machines/chime.ogg', 50, 1)
|
||||
src.visible_message("\icon[src] The [src] chimes.")
|
||||
src.visible_message("\icon[src] \The [src] chimes.")
|
||||
transaction_paid = 1
|
||||
|
||||
//transfer the money
|
||||
@@ -141,7 +143,7 @@
|
||||
T.time = worldtime2text()
|
||||
linked_account.transaction_log.Add(T)
|
||||
else
|
||||
usr << "\icon[src]<span class='warning'>The charge card doesn't have that much money!</span>"
|
||||
usr << "\icon[src]<span class='warning'>\The [O] doesn't have that much money!</span>"
|
||||
else
|
||||
usr << "\icon[src]<span class='warning'>Connected account has been suspended.</span>"
|
||||
else
|
||||
@@ -225,10 +227,13 @@
|
||||
|
||||
src.attack_self(usr)
|
||||
|
||||
/obj/item/device/eftpos/proc/scan_card(var/obj/item/weapon/card/I)
|
||||
/obj/item/device/eftpos/proc/scan_card(var/obj/item/weapon/card/I, var/obj/item/ID_container)
|
||||
if (istype(I, /obj/item/weapon/card/id))
|
||||
var/obj/item/weapon/card/id/C = I
|
||||
visible_message("<span class='info'>[usr] swipes a card through [src].</span>")
|
||||
if(I==ID_container || ID_container == null)
|
||||
usr.visible_message("<span class='info'>\The [usr] swipes a card through \the [src].</span>")
|
||||
else
|
||||
usr.visible_message("<span class='info'>\The [usr] swipes \the [ID_container] through \the [src].</span>")
|
||||
if(transaction_locked && !transaction_paid)
|
||||
if(linked_account)
|
||||
if(!linked_account.suspended)
|
||||
@@ -242,7 +247,7 @@
|
||||
if(!D.suspended)
|
||||
if(transaction_amount <= D.money)
|
||||
playsound(src, 'sound/machines/chime.ogg', 50, 1)
|
||||
src.visible_message("\icon[src] The [src] chimes.")
|
||||
src.visible_message("\icon[src] \The [src] chimes.")
|
||||
transaction_paid = 1
|
||||
|
||||
//transfer the money
|
||||
@@ -283,13 +288,13 @@
|
||||
else if (istype(I, /obj/item/weapon/card/emag))
|
||||
if(transaction_locked)
|
||||
if(transaction_paid)
|
||||
usr << "\icon[src]<span class='info'>You stealthily swipe [I] through [src].</span>"
|
||||
usr << "\icon[src]<span class='info'>You stealthily swipe \the [I] through \the [src].</span>"
|
||||
transaction_locked = 0
|
||||
transaction_paid = 0
|
||||
else
|
||||
visible_message("<span class='info'>[usr] swipes a card through [src].</span>")
|
||||
usr.visible_message("<span class='info'>\The [usr] swipes a card through \the [src].</span>")
|
||||
playsound(src, 'sound/machines/chime.ogg', 50, 1)
|
||||
src.visible_message("\icon[src] The [src] chimes.")
|
||||
src.visible_message("\icon[src] \The [src] chimes.")
|
||||
transaction_paid = 1
|
||||
else
|
||||
..()
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
matter = list("metal" = 3750)
|
||||
var/digspeed = 40 //moving the delay to an item var so R&D can make improved picks. --NEO
|
||||
origin_tech = "materials=1;engineering=1"
|
||||
attack_verb = list("hit", "pierced", "sliced", "attacked", "drilled")
|
||||
attack_verb = list("hit", "pierced", "sliced", "attacked")
|
||||
var/drill_sound = 'sound/weapons/Genhit.ogg'
|
||||
var/drill_verb = "drilling"
|
||||
sharp = 1
|
||||
@@ -107,6 +107,7 @@
|
||||
digspeed = 20
|
||||
origin_tech = "materials=4"
|
||||
desc = "This makes no metallurgic sense."
|
||||
drill_verb = "picking"
|
||||
|
||||
/obj/item/weapon/pickaxe/plasmacutter
|
||||
name = "plasma cutter"
|
||||
@@ -127,7 +128,8 @@
|
||||
item_state = "dpickaxe"
|
||||
digspeed = 10
|
||||
origin_tech = "materials=6;engineering=4"
|
||||
desc = "A pickaxe with a diamond pick head, this is just like minecraft."
|
||||
desc = "A pickaxe with a diamond pick head."
|
||||
drill_verb = "picking"
|
||||
|
||||
/obj/item/weapon/pickaxe/diamonddrill //When people ask about the badass leader of the mining tools, they are talking about ME!
|
||||
name = "diamond mining drill"
|
||||
|
||||
@@ -74,7 +74,7 @@
|
||||
|
||||
mutations.Add(HUSK)
|
||||
status_flags |= DISFIGURED //makes them unknown without fucking up other stuff like admintools
|
||||
update_body(0)
|
||||
update_body(1)
|
||||
return
|
||||
|
||||
/mob/living/carbon/human/proc/Drain()
|
||||
|
||||
@@ -220,14 +220,14 @@
|
||||
|
||||
if (istype(l_hand,/obj/item/weapon/gun))
|
||||
W = l_hand
|
||||
chance = hand ? 40 : 20
|
||||
chance += hand ? 40 : 20
|
||||
|
||||
if (istype(r_hand,/obj/item/weapon/gun))
|
||||
else if (istype(r_hand,/obj/item/weapon/gun))
|
||||
W = r_hand
|
||||
chance = !hand ? 40 : 20
|
||||
chance += !hand ? 40 : 20
|
||||
|
||||
if (prob(chance))
|
||||
visible_message("<span class='danger'>[src]'s [W] goes off during struggle!</span>")
|
||||
visible_message("<span class='danger'>[src]'s [W.name] goes off during struggle!")
|
||||
var/list/turfs = list()
|
||||
for(var/turf/T in view())
|
||||
turfs += T
|
||||
|
||||
@@ -41,12 +41,12 @@
|
||||
if (target.l_hand)
|
||||
// Disarm left hand
|
||||
//Urist McAssistant dropped the macguffin with a scream just sounds odd. Plus it doesn't work with NO_PAIN
|
||||
target.visible_message("<span class='danger'>\The [target.l_hand] was knocked right out of [src]'s grasp!</span>")
|
||||
target.visible_message("<span class='danger'>\The [target.l_hand] was knocked right out of [target]'s grasp!</span>")
|
||||
target.drop_l_hand()
|
||||
if("r_arm", "r_hand")
|
||||
if (target.r_hand)
|
||||
// Disarm right hand
|
||||
target.visible_message("<span class='danger'>\The [target.r_hand] was knocked right out of [src]'s grasp!</span>")
|
||||
target.visible_message("<span class='danger'>\The [target.r_hand] was knocked right out of [target]'s grasp!</span>")
|
||||
target.drop_r_hand()
|
||||
if("chest")
|
||||
if(!target.lying)
|
||||
|
||||
@@ -10,14 +10,13 @@
|
||||
is_adult = 0
|
||||
maxHealth = 150
|
||||
revive()
|
||||
regenerate_icons()
|
||||
if (!client) rabid = 1
|
||||
number = rand(1, 1000)
|
||||
name = "[colour] [is_adult ? "adult" : "baby"] slime ([number])"
|
||||
return
|
||||
|
||||
. = ..(gibbed, "seizes up and falls limp...")
|
||||
|
||||
mood = null
|
||||
regenerate_icons()
|
||||
|
||||
return
|
||||
@@ -71,6 +71,7 @@
|
||||
mutation_chance = rand(25, 35)
|
||||
var/sanitizedcolour = replacetext(colour, " ", "")
|
||||
coretype = text2path("/obj/item/slime_extract/[sanitizedcolour]")
|
||||
regenerate_icons()
|
||||
..(location)
|
||||
|
||||
/mob/living/carbon/slime/movement_delay()
|
||||
|
||||
@@ -194,7 +194,7 @@
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/paper/proc/get_signature(var/obj/item/weapon/pen/P, mob/user as mob)
|
||||
if(P)
|
||||
if(P && istype(P, /obj/item/weapon/pen))
|
||||
return P.get_signature(user)
|
||||
return (user && user.real_name) ? user.real_name : "Anonymous"
|
||||
|
||||
@@ -351,6 +351,11 @@
|
||||
t = replacetext(t, "\n", "<BR>")
|
||||
t = parsepencode(t, i, usr, iscrayon) // Encode everything from pencode to html
|
||||
|
||||
|
||||
if(fields > 50)//large amount of fields creates a heavy load on the server, see updateinfolinks() and addtofield()
|
||||
usr << "<span class='warning'>Too many fields. Sorry, you can't do this.</span>"
|
||||
return
|
||||
|
||||
if(id!="end")
|
||||
addtofield(text2num(id), t) // He wants to edit a field, let him.
|
||||
else
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
load_method = MAGAZINE
|
||||
|
||||
/obj/item/weapon/gun/projectile/colt/detective
|
||||
desc = "A cheap Martian knock-off of a Colt M1911. Uses less-than-lethal .45 rounds."
|
||||
desc = "A cheap Martian knock-off of a Colt M1911. Uses .45 rounds."
|
||||
magazine_type = /obj/item/ammo_magazine/c45m/rubber
|
||||
|
||||
/obj/item/weapon/gun/projectile/colt/detective/verb/rename_gun()
|
||||
@@ -30,7 +30,7 @@
|
||||
return 1
|
||||
|
||||
/obj/item/weapon/gun/projectile/sec
|
||||
desc = "A NanoTrasen designed sidearm, found pretty much everywhere humans are. Uses less-than-lethal .45 rounds."
|
||||
desc = "A NanoTrasen designed sidearm, found pretty much everywhere humans are. Uses .45 rounds."
|
||||
name = "\improper NT Mk58"
|
||||
icon_state = "secguncomp"
|
||||
magazine_type = /obj/item/ammo_magazine/c45m/rubber
|
||||
@@ -40,11 +40,10 @@
|
||||
|
||||
/obj/item/weapon/gun/projectile/sec/flash
|
||||
name = "\improper NT Mk58 signal pistol"
|
||||
desc = "A NanoTrasen designed sidearm, found pretty much everywhere humans are. Uses .45 signal flash rounds."
|
||||
magazine_type = /obj/item/ammo_magazine/c45m/flash
|
||||
|
||||
/obj/item/weapon/gun/projectile/sec/wood
|
||||
desc = "A Nanotrasen designed sidearm, this one has a sweet wooden grip. Uses less-than-lethal .45 rounds."
|
||||
desc = "A Nanotrasen designed sidearm, this one has a sweet wooden grip. Uses .45 rounds."
|
||||
name = "\improper Custom NT Mk58"
|
||||
icon_state = "secgundark"
|
||||
|
||||
@@ -118,7 +117,7 @@
|
||||
|
||||
/obj/item/weapon/gun/projectile/pistol/flash
|
||||
name = "\improper Stechtkin signal pistol"
|
||||
desc = "A small, easily concealable gun. Uses 9mm signal flash rounds."
|
||||
desc = "A small, easily concealable gun. Uses 9mm rounds."
|
||||
magazine_type = /obj/item/ammo_magazine/mc9mm/flash
|
||||
|
||||
/obj/item/weapon/gun/projectile/pistol/attack_hand(mob/user as mob)
|
||||
|
||||
@@ -149,11 +149,13 @@
|
||||
|
||||
//Called when the projectile intercepts a mob. Returns 1 if the projectile hit the mob, 0 if it missed and should keep flying.
|
||||
/obj/item/projectile/proc/attack_mob(var/mob/living/target_mob, var/distance, var/miss_modifier=0)
|
||||
if(!istype(target_mob))
|
||||
return
|
||||
//accuracy bonus from aiming
|
||||
if (istype(shot_from, /obj/item/weapon/gun))
|
||||
var/obj/item/weapon/gun/daddy = shot_from
|
||||
miss_modifier -= round(15*daddy.accuracy)
|
||||
|
||||
|
||||
//If you aim at someone beforehead, it'll hit more often.
|
||||
//Kinda balanced by fact you need like 2 seconds to aim
|
||||
//As opposed to no-delay pew pew
|
||||
@@ -197,7 +199,7 @@
|
||||
/obj/item/projectile/Bump(atom/A as mob|obj|turf|area, forced=0)
|
||||
if(A == src)
|
||||
return 0 //no
|
||||
|
||||
|
||||
if(A == firer)
|
||||
loc = A.loc
|
||||
return 0 //cannot shoot yourself
|
||||
@@ -218,7 +220,7 @@
|
||||
visible_message("<span class='danger'>\The [M] uses [G.affecting] as a shield!</span>")
|
||||
if(Bump(G.affecting, forced=1))
|
||||
return //If Bump() returns 0 (keep going) then we continue on to attack M.
|
||||
|
||||
|
||||
passthrough = !attack_mob(M, distance)
|
||||
else
|
||||
passthrough = 1 //so ghosts don't stop bullets
|
||||
@@ -227,7 +229,7 @@
|
||||
if(isturf(A))
|
||||
for(var/obj/O in A)
|
||||
O.bullet_act(src)
|
||||
for(var/mob/M in A)
|
||||
for(var/mob/living/M in A)
|
||||
attack_mob(M, distance)
|
||||
|
||||
//penetrating projectiles can pass through things that otherwise would not let them
|
||||
@@ -250,7 +252,7 @@
|
||||
|
||||
//stop flying
|
||||
on_impact(A)
|
||||
|
||||
|
||||
density = 0
|
||||
invisibility = 101
|
||||
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -56,6 +56,15 @@ should be listed in the changelog upon commit though. Thanks. -->
|
||||
|
||||
<!-- DO NOT REMOVE, MOVE, OR COPY THIS COMMENT! THIS MUST BE THE LAST NON-EMPTY LINE BEFORE THE LOGS #ADDTOCHANGELOGMARKER# -->
|
||||
|
||||
<div class='commit sansserif'>
|
||||
<h2 class='date'>7 April 2015</h2>
|
||||
<h3 class='author'>RavingManiac updated:</h3>
|
||||
<ul class='changes bgimages16'>
|
||||
<li class='tweak'>You can now pay vending machines and EFTPOS scanners without removing your ID from your PDA or wallet. Clicking on the vending machine with your ID/PDA/wallet/cash also brings up the menu now instead of attacking the vending machine.</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
<div class='commit sansserif'>
|
||||
<h2 class='date'>24 February 2015</h2>
|
||||
<h3 class='author'>Zuhayr updated:</h3>
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 36 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 76 KiB After Width: | Height: | Size: 63 KiB |
Reference in New Issue
Block a user