mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 10:12:45 +00:00
Doors no longer close if there is a mob in the tile, a door can be hacked/AI overriden to close anyways and injure that mob as well as knock them down so they can be crushed again and again until they stop moving. (Currently: 35 brute and knockdown.)
The server master log now records attacks / emotes / PDA messages, as well as timestamping. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@2899 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
@@ -12,6 +12,11 @@
|
||||
var/log_game = 0 // log game events
|
||||
var/log_vote = 0 // log voting
|
||||
var/log_whisper = 0 // log client whisper
|
||||
var/log_emote = 0 // log emotes
|
||||
var/log_attack = 0 // log attack messages
|
||||
var/log_adminchat = 0 // log admin chat messages
|
||||
var/log_adminwarn = 0 // log warnings admins get about bomb construction and such
|
||||
var/log_pda = 0 // log pda messages
|
||||
var/sql_enabled = 1 // for sql switching
|
||||
var/allow_vote_restart = 0 // allow votes to restart
|
||||
var/allow_vote_mode = 0 // allow votes to change mode
|
||||
@@ -141,6 +146,21 @@
|
||||
if ("log_whisper")
|
||||
config.log_whisper = 1
|
||||
|
||||
if ("log_attack")
|
||||
config.log_attack = 1
|
||||
|
||||
if ("log_emote")
|
||||
config.log_emote = 1
|
||||
|
||||
if ("log_adminchat")
|
||||
config.log_adminchat = 1
|
||||
|
||||
if ("log_adminwarn")
|
||||
config.log_adminwarn = 1
|
||||
|
||||
if ("log_pda")
|
||||
config.log_pda = 1
|
||||
|
||||
if ("allow_vote_restart")
|
||||
config.allow_vote_restart = 1
|
||||
|
||||
|
||||
@@ -1,28 +1,48 @@
|
||||
/proc/log_admin(text)
|
||||
admin_log.Add(text)
|
||||
if (config.log_admin)
|
||||
diary << "ADMIN: [text]"
|
||||
diary << "\[[time_stamp()]]ADMIN: [text]"
|
||||
|
||||
/proc/log_game(text)
|
||||
if (config.log_game)
|
||||
diary << "GAME: [text]"
|
||||
diary << "\[[time_stamp()]]GAME: [text]"
|
||||
|
||||
/proc/log_vote(text)
|
||||
if (config.log_vote)
|
||||
diary << "VOTE: [text]"
|
||||
diary << "\[[time_stamp()]]VOTE: [text]"
|
||||
|
||||
/proc/log_access(text)
|
||||
if (config.log_access)
|
||||
diary << "ACCESS: [text]"
|
||||
diary << "\[[time_stamp()]]ACCESS: [text]"
|
||||
|
||||
/proc/log_say(text)
|
||||
if (config.log_say)
|
||||
diary << "SAY: [text]"
|
||||
diary << "\[[time_stamp()]]SAY: [text]"
|
||||
|
||||
/proc/log_ooc(text)
|
||||
if (config.log_ooc)
|
||||
diary << "OOC: [text]"
|
||||
diary << "\[[time_stamp()]]OOC: [text]"
|
||||
|
||||
/proc/log_whisper(text)
|
||||
if (config.log_whisper)
|
||||
diary << "WHISPER: [text]"
|
||||
diary << "\[[time_stamp()]]WHISPER: [text]"
|
||||
|
||||
/proc/log_emote(text)
|
||||
if (config.log_emote)
|
||||
diary << "\[[time_stamp()]]EMOTE: [text]"
|
||||
|
||||
/proc/log_attack(text)
|
||||
if (config.log_attack)
|
||||
diary << "\[[time_stamp()]]ATTACK: [text]"
|
||||
/*
|
||||
/proc/log_adminsay(text)
|
||||
if (config.log_adminchat)
|
||||
diary << "\[[time_stamp()]]ADMINSAY: [text]"
|
||||
*/
|
||||
/proc/log_adminwarn(text)
|
||||
if (config.log_adminwarn)
|
||||
diary << "\[[time_stamp()]]ADMINWARN: [text]"
|
||||
|
||||
/proc/log_pda(text)
|
||||
if (config.log_pda)
|
||||
diary << "\[[time_stamp()]]PDA: [text]"
|
||||
@@ -6,6 +6,7 @@
|
||||
|
||||
Starting up. [time2text(world.timeofday, "hh:mm.ss")]
|
||||
---------------------
|
||||
Dear Diary....
|
||||
|
||||
"}
|
||||
|
||||
|
||||
@@ -17,6 +17,9 @@
|
||||
M.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has had their soul captured with [src.name] by [user.name] ([user.ckey])</font>")
|
||||
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Used the [src.name] to capture the soul of [M.name] ([M.ckey])</font>")
|
||||
|
||||
log_attack("<font color='red'>[user.name] ([user.ckey]) used the [src.name] to capture the soul of [M.name] ([M.ckey])</font>")
|
||||
|
||||
|
||||
transfer_soul("VICTIM", M, user)
|
||||
return
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
#define AIRLOCK_WIRE_OPEN_DOOR 7
|
||||
#define AIRLOCK_WIRE_AI_CONTROL 8
|
||||
#define AIRLOCK_WIRE_ELECTRIFY 9
|
||||
#define AIRLOCK_WIRE_SAFETY 10
|
||||
|
||||
/*
|
||||
New methods:
|
||||
@@ -30,15 +31,15 @@
|
||||
//This generates the randomized airlock wire assignments for the game.
|
||||
/proc/RandomAirlockWires()
|
||||
//to make this not randomize the wires, just set index to 1 and increment it in the flag for loop (after doing everything else).
|
||||
var/list/wires = list(0, 0, 0, 0, 0, 0, 0, 0, 0)
|
||||
airlockIndexToFlag = list(0, 0, 0, 0, 0, 0, 0, 0, 0)
|
||||
airlockIndexToWireColor = list(0, 0, 0, 0, 0, 0, 0, 0, 0)
|
||||
airlockWireColorToIndex = list(0, 0, 0, 0, 0, 0, 0, 0, 0)
|
||||
var/list/wires = list(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
|
||||
airlockIndexToFlag = list(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
|
||||
airlockIndexToWireColor = list(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
|
||||
airlockWireColorToIndex = list(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
|
||||
var/flagIndex = 1
|
||||
for (var/flag=1, flag<512, flag+=flag)
|
||||
for (var/flag=1, flag<1024, flag+=flag)
|
||||
var/valid = 0
|
||||
while (!valid)
|
||||
var/colorIndex = rand(1, 9)
|
||||
var/colorIndex = rand(1, 10)
|
||||
if(wires[colorIndex]==0)
|
||||
valid = 1
|
||||
wires[colorIndex] = flag
|
||||
@@ -66,17 +67,18 @@ Airlock index -> wire color are { 9, 4, 6, 7, 5, 8, 1, 2, 3 }.
|
||||
var/spawnPowerRestoreRunning = 0
|
||||
var/welded = null
|
||||
var/locked = 0
|
||||
var/wires = 511
|
||||
var/wires = 1023
|
||||
secondsElectrified = 0 //How many seconds remain until the door is no longer electrified. -1 if it is permanently electrified until someone fixes it.
|
||||
var/aiDisabledIdScanner = 0
|
||||
var/aiHacking = 0
|
||||
var/obj/machinery/door/airlock/closeOther = null
|
||||
var/closeOtherId = null
|
||||
var/list/signalers[9]
|
||||
var/list/signalers[10]
|
||||
var/lockdownbyai = 0
|
||||
autoclose = 1
|
||||
var/doortype = 0
|
||||
var/justzap = 0
|
||||
var/safe = 1
|
||||
var/obj/item/weapon/airlock_electronics/electronics = null
|
||||
|
||||
/obj/machinery/door/airlock/command
|
||||
@@ -201,8 +203,11 @@ About the new airlock wires panel:
|
||||
* one wire for opening the door. Sending a pulse through this while the door has power makes it open the door if no access is required.
|
||||
* one wire for AI control. Sending a pulse through this blocks AI control for a second or so (which is enough to see the AI control light on the panel dialog go off and back on again). Cutting this prevents the AI from controlling the door unless it has hacked the door through the power connection (which takes about a minute). If both main and backup power are cut, as well as this wire, then the AI cannot operate or hack the door at all.
|
||||
* one wire for electrifying the door. Sending a pulse through this electrifies the door for 30 seconds. Cutting this wire electrifies the door, so that the next person to touch the door without insulated gloves gets electrocuted. (Currently it is also STAYING electrified until someone mends the wire)
|
||||
* one wire for controling door safetys. When active, door does not close on someone. When cut, door will ruin someone's shit. When pulsed, door will immedately ruin someone's shit.
|
||||
*/
|
||||
|
||||
|
||||
|
||||
/obj/machinery/door/airlock/bumpopen(mob/user as mob) //Airlocks now zap you when you 'bump' them open when they're electrified. --NeoFite
|
||||
if(!istype(usr, /mob/living/silicon))
|
||||
if(src.isElectrified())
|
||||
@@ -277,7 +282,11 @@ About the new airlock wires panel:
|
||||
open()
|
||||
else
|
||||
close()
|
||||
|
||||
if(AIRLOCK_WIRE_SAFETY)
|
||||
safe = !safe
|
||||
if(!src.density)
|
||||
close()
|
||||
src.updateUsrDialog()
|
||||
|
||||
|
||||
/obj/machinery/door/airlock/proc/cut(var/wireColor)
|
||||
@@ -313,7 +322,9 @@ About the new airlock wires panel:
|
||||
//Cutting this wire electrifies the door, so that the next person to touch the door without insulated gloves gets electrocuted.
|
||||
if(src.secondsElectrified != -1)
|
||||
src.secondsElectrified = -1
|
||||
|
||||
if (AIRLOCK_WIRE_SAFETY)
|
||||
safe = 0
|
||||
src.updateUsrDialog()
|
||||
|
||||
/obj/machinery/door/airlock/proc/mend(var/wireColor)
|
||||
var/wireFlag = airlockWireColorToFlag[wireColor]
|
||||
@@ -342,6 +353,10 @@ About the new airlock wires panel:
|
||||
if(src.secondsElectrified == -1)
|
||||
src.secondsElectrified = 0
|
||||
|
||||
if (AIRLOCK_WIRE_SAFETY)
|
||||
safe = 1
|
||||
src.updateUsrDialog()
|
||||
|
||||
/obj/machinery/door/airlock/proc/isElectrified()
|
||||
if(src.secondsElectrified != 0)
|
||||
return 1
|
||||
@@ -535,6 +550,14 @@ About the new airlock wires panel:
|
||||
else
|
||||
t1 += text("Door is not electrified. <A href='?src=\ref[];aiEnable=5'>Electrify it for 30 seconds?</a> Or, <A href='?src=\ref[];aiEnable=6'>Electrify it indefinitely until someone cancels the electrification?</a><br>\n", src, src)
|
||||
|
||||
if(src.isWireCut(AIRLOCK_WIRE_SAFETY))
|
||||
t1 += text("Door force sensors not responding.</a><br>\n")
|
||||
else if(src.safe)
|
||||
t1 += text("Door safeties operating normally. <A href='?src=\ref[];aiDisable=8'> Override?</a><br>\n",src)
|
||||
else
|
||||
t1 += text("Danger. Door safeties disabled. <A href='?src=\ref[];aiEnable=8'> Restore?</a><br>\n",src)
|
||||
|
||||
|
||||
if(src.welded)
|
||||
t1 += text("Door appears to have been welded shut.<br>\n")
|
||||
else if(!src.locked)
|
||||
@@ -639,7 +662,8 @@ About the new airlock wires panel:
|
||||
"Blue" = 6,
|
||||
"Green" = 7,
|
||||
"Grey" = 8,
|
||||
"Black" = 9
|
||||
"Black" = 9,
|
||||
"Gold" = 10
|
||||
)
|
||||
for(var/wiredesc in wires)
|
||||
var/is_uncut = src.wires & airlockWireColorToFlag[wires[wiredesc]]
|
||||
@@ -655,7 +679,7 @@ About the new airlock wires panel:
|
||||
t1 += "<a href='?src=\ref[src];signaler=[wires[wiredesc]]'>Attach signaler</a>"
|
||||
t1 += "<br>"
|
||||
|
||||
t1 += text("<br>\n[]<br>\n[]<br>\n[]", (src.locked ? "The door bolts have fallen!" : "The door bolts look up."), ((src.arePowerSystemsOn() && !(stat & NOPOWER)) ? "The test light is on." : "The test light is off!"), (src.aiControlDisabled==0 ? "The 'AI control allowed' light is on." : "The 'AI control allowed' light is off."))
|
||||
t1 += text("<br>\n[]<br>\n[]<br>\n[]<br>\n[]", (src.locked ? "The door bolts have fallen!" : "The door bolts look up."), ((src.arePowerSystemsOn() && !(stat & NOPOWER)) ? "The test light is on." : "The test light is off!"), (src.aiControlDisabled==0 ? "The 'AI control allowed' light is on." : "The 'AI control allowed' light is off."), (src.safe==0 ? "The 'Check Wiring' light is on." : "The 'Check Wiring' light is off."))
|
||||
|
||||
t1 += text("<p><a href='?src=\ref[];close=1'>Close</a></p>\n", src)
|
||||
|
||||
@@ -769,6 +793,16 @@ About the new airlock wires panel:
|
||||
src.secondsElectrified = 0
|
||||
else if(src.secondsElectrified>0)
|
||||
src.secondsElectrified = 0
|
||||
|
||||
if(8)
|
||||
// Safeties! We don't need no stinking safeties!
|
||||
if (src.isWireCut(AIRLOCK_WIRE_SAFETY))
|
||||
usr << text("Control to door sensors is disabled.</a><br>\n")
|
||||
else if (src.safe)
|
||||
safe = 0
|
||||
else
|
||||
usr << text("Firmware reports safeties already overriden.</a><br>\n")
|
||||
|
||||
if(7)
|
||||
//close door
|
||||
if(src.welded)
|
||||
@@ -780,6 +814,8 @@ About the new airlock wires panel:
|
||||
else
|
||||
usr << text("The airlock is already closed.<br>\n")
|
||||
|
||||
|
||||
|
||||
else if(href_list["aiEnable"])
|
||||
var/code = text2num(href_list["aiEnable"])
|
||||
switch (code)
|
||||
@@ -831,6 +867,17 @@ About the new airlock wires panel:
|
||||
usr << text("The door is already electrified. You can't re-electrify it while it's already electrified.<br>\n")
|
||||
else
|
||||
src.secondsElectrified = -1
|
||||
|
||||
if (8) // Not in order >.>
|
||||
// Safeties! Maybe we do need some stinking safeties!
|
||||
if (src.isWireCut(AIRLOCK_WIRE_SAFETY))
|
||||
usr << text("Control to door sensors is disabled.<br>\n")
|
||||
else if (!src.safe)
|
||||
safe = 1
|
||||
else
|
||||
usr << text("Firmware reports safeties already in place.<br>\n")
|
||||
|
||||
|
||||
if(7)
|
||||
//open door
|
||||
if(src.welded)
|
||||
@@ -999,6 +1046,24 @@ About the new airlock wires panel:
|
||||
/obj/machinery/door/airlock/close()
|
||||
if(src.welded || src.locked || (!src.arePowerSystemsOn()) || (stat & NOPOWER) || src.isWireCut(AIRLOCK_WIRE_DOOR_BOLTS))
|
||||
return
|
||||
if(safe)
|
||||
for(var/mob/M in src.loc)
|
||||
M << "The door buzzes angerly."
|
||||
for(var/mob/M in src.loc)
|
||||
spawn (60)
|
||||
close()
|
||||
return
|
||||
|
||||
else // OH FUCK MOVE
|
||||
for(var/mob/M in src.loc)
|
||||
if(isrobot(M))
|
||||
M.adjustBruteLoss(DOOR_CRUSH_DAMAGE)
|
||||
else
|
||||
M.adjustBruteLoss(DOOR_CRUSH_DAMAGE)
|
||||
M.SetStunned(5)
|
||||
M.SetWeakened(5)
|
||||
M.emote("scream")
|
||||
|
||||
use_power(50)
|
||||
playsound(src.loc, 'airlock.ogg', 30, 1)
|
||||
var/obj/structure/window/killthis = (locate(/obj/structure/window) in get_turf(src))
|
||||
|
||||
@@ -457,6 +457,9 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology",
|
||||
M.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has had the [name] used on him by [user.name] ([user.ckey])</font>")
|
||||
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Used [name] on [M.name] ([M.ckey])</font>")
|
||||
|
||||
log_attack("<font color='red'>[user.name] ([user.ckey]) used [name] on [M.name] ([M.ckey])</font>")
|
||||
|
||||
|
||||
if(istype(M,/mob/dead))
|
||||
M.invisibility = 0
|
||||
user.visible_message( \
|
||||
|
||||
@@ -516,6 +516,7 @@
|
||||
|
||||
playsound(P.loc, 'twobeep.ogg', 50, 1)
|
||||
|
||||
log_pda("[usr] (PDA: [src.owner]) sent \"[t]\" to [P.owner]")
|
||||
|
||||
|
||||
if("Send Honk")//Honk virus
|
||||
|
||||
@@ -16,6 +16,9 @@
|
||||
M.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been carded with [src.name] by [user.name] ([user.ckey])</font>")
|
||||
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Used the [src.name] to card [M.name] ([M.ckey])</font>")
|
||||
|
||||
log_attack("<font color='red'>[user.name] ([user.ckey]) used the [src.name] to card [M.name] ([M.ckey])</font>")
|
||||
|
||||
|
||||
transfer_ai("AICORE", "AICARD", M, user)
|
||||
return
|
||||
|
||||
|
||||
@@ -25,6 +25,10 @@
|
||||
attack(mob/living/M as mob, mob/user as mob)
|
||||
M.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been flashed (attempt) with [src.name] by [user.name] ([user.ckey])</font>")
|
||||
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Used the [src.name] to flash [M.name] ([M.ckey])</font>")
|
||||
|
||||
log_attack("<font color='red'>[user.name] ([user.ckey]) Used the [src.name] to flash [M.name] ([M.ckey])</font>")
|
||||
|
||||
|
||||
if(!clown_check(user)) return
|
||||
if(broken)
|
||||
user.show_message("\red The [src.name] is broken", 2)
|
||||
|
||||
@@ -93,6 +93,10 @@
|
||||
M << "\red You feel a tiny prick!"
|
||||
M.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been stabbed with [src.name] by [user.name] ([user.ckey])</font>")
|
||||
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Used the [src.name] to stab [M.name] ([M.ckey])</font>")
|
||||
|
||||
log_attack("<font color='red'>[user.name] ([user.ckey]) Used the [src.name] to stab [M.name] ([M.ckey])</font>")
|
||||
|
||||
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
@@ -50,6 +50,9 @@
|
||||
if(!M.handcuffed)
|
||||
M.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been handcuffed (attempt) by [user.name] ([user.ckey])</font>")
|
||||
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Attempted to handcuff [M.name] ([M.ckey])</font>")
|
||||
|
||||
log_attack("<font color='red'>[user.name] ([user.ckey]) Attempted to handcuff [M.name] ([M.ckey])</font>")
|
||||
|
||||
var/obj/effect/equip_e/human/O = new /obj/effect/equip_e/human( )
|
||||
O.source = user
|
||||
O.target = M
|
||||
@@ -172,6 +175,10 @@
|
||||
M << "\red You feel a tiny prick!"
|
||||
M.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been stabbed with [src.name] by [user.name] ([user.ckey])</font>")
|
||||
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Used the [src.name] to stab [M.name] ([M.ckey])</font>")
|
||||
|
||||
log_attack("<font color='red'>[user.name] ([user.ckey]) Used the [src.name] to stab [M.name] ([M.ckey])</font>")
|
||||
|
||||
|
||||
return
|
||||
|
||||
/obj/item/weapon/pen/sleepypen
|
||||
|
||||
@@ -245,6 +245,8 @@
|
||||
user.attack_log += "\[[time_stamp()]\]<font color='red'> Attacked [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])</font>"
|
||||
M.attack_log += "\[[time_stamp()]\]<font color='orange'> Attacked by [user.name] ([user.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])</font>"
|
||||
|
||||
log_attack("<font color='red'>[user.name] ([user.ckey]) attacked [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])</font>")
|
||||
|
||||
//spawn(1800) // this wont work right
|
||||
// M.lastattacker = null
|
||||
/////////////////////////
|
||||
@@ -374,6 +376,8 @@
|
||||
user.attack_log += "\[[time_stamp()]\]<font color='red'> Attacked [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])</font>"
|
||||
M.attack_log += "\[[time_stamp()]\]<font color='orange'> Attacked by [user.name] ([user.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])</font>"
|
||||
|
||||
log_attack("<font color='red'> [user.name] ([user.ckey]) attacked [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])</font>")
|
||||
|
||||
src.add_fingerprint(user)
|
||||
//if((user.mutations & CLUMSY) && prob(50))
|
||||
// M = user
|
||||
|
||||
@@ -10,6 +10,9 @@
|
||||
attack(mob/M as mob, mob/living/silicon/robot/user as mob)
|
||||
M.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been attacked with [src.name] by [user.name] ([user.ckey])</font>")
|
||||
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Used the [src.name] to attack [M.name] ([M.ckey])</font>")
|
||||
|
||||
log_attack(" <font color='red'>[user.name] ([user.ckey]) used the [src.name] to attack [M.name] ([M.ckey])</font>")
|
||||
|
||||
user.cell.charge -= 30
|
||||
|
||||
M.Weaken(5)
|
||||
|
||||
@@ -63,6 +63,8 @@
|
||||
M.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been injected with [name] by [user.name] ([user.ckey])</font>")
|
||||
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Used the [name] to inject [M.name] ([M.ckey])</font>")
|
||||
|
||||
log_attack("<font color='red'>[user.name] ([user.ckey]) used the [name] to inject [M.name] ([M.ckey])</font>")
|
||||
|
||||
if (user)
|
||||
if (istype(M, /mob/living/carbon/human))
|
||||
var/obj/effect/equip_e/human/O = new /obj/effect/equip_e/human( )
|
||||
|
||||
@@ -11,7 +11,10 @@
|
||||
user << "Planting explosives..."
|
||||
if(ismob(target))
|
||||
user.attack_log += "\[[time_stamp()]\] <font color='red'> [user.real_name] tried planting [name] on [target:real_name] ([target:ckey])</font>"
|
||||
log_attack("<font color='red'> [user.real_name] ([user.ckey]) tried planting [name] on [target:real_name] ([target:ckey])</font>")
|
||||
user.visible_message("\red [user.name] is trying to plant some kind of explosive on [target.name]!")
|
||||
|
||||
|
||||
if(do_after(user, 50) && in_range(user, target))
|
||||
user.drop_item()
|
||||
target = target
|
||||
|
||||
@@ -118,6 +118,8 @@ Deathnettle
|
||||
M.attack_log += text("\[[time_stamp()]\] <font color='orange'>Had the [src.name] used on them by [user.name] ([user.ckey])</font>")
|
||||
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Used the [src.name] on [M.name] ([M.ckey])</font>")
|
||||
|
||||
log_attack("<font color='red'> [user.name] ([user.ckey]) used the [src.name] on [M.name] ([M.ckey])</font>")
|
||||
|
||||
M.eye_blurry += force/7
|
||||
if(prob(20))
|
||||
M.Paralyse(force/6)
|
||||
|
||||
@@ -28,6 +28,8 @@
|
||||
O.show_message("\red [M] has been implanted by [user].", 1)
|
||||
M.attack_log += text("\[[time_stamp()]\] <font color='orange'> Implanted with [src.name] ([src.imp.name]) by [user.name] ([user.ckey])</font>")
|
||||
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Used the [src.name] ([src.imp.name]) to implant [M.name] ([M.ckey])</font>")
|
||||
log_attack("<font color='red'>[user.name] ([user.ckey]) implanted [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])</font>")
|
||||
|
||||
src.imp.loc = M
|
||||
src.imp.imp_in = M
|
||||
src.imp.implanted = 1
|
||||
|
||||
@@ -55,6 +55,8 @@ KNIFE
|
||||
M.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been attacked with [src.name] by [user.name] ([user.ckey])</font>")
|
||||
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Used the [src.name] to attack [M.name] ([M.ckey])</font>")
|
||||
|
||||
log_attack("<font color='red'>[user.name] ([user.ckey]) used the [src.name] to attack [M.name] ([M.ckey])</font>")
|
||||
|
||||
if (M.stat < 2 && M.health < 50 && prob(90))
|
||||
var/mob/H = M
|
||||
// ******* Check
|
||||
@@ -129,6 +131,9 @@ KNIFE
|
||||
M.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been attacked with [src.name] by [user.name] ([user.ckey])</font>")
|
||||
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Used the [src.name] to attack [M.name] ([M.ckey])</font>")
|
||||
|
||||
log_attack("<font color='red'>[user.name] ([user.ckey]) used the [src.name] to attack [M.name] ([M.ckey])</font>")
|
||||
|
||||
|
||||
if(prob(15))
|
||||
M.Weaken(3)
|
||||
M.take_organ_damage(3)
|
||||
|
||||
@@ -481,6 +481,8 @@ CLIPBOARDS
|
||||
target.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been wrapped with [src.name] by [user.name] ([user.ckey])</font>")
|
||||
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Used the [src.name] to wrap [target.name] ([target.ckey])</font>")
|
||||
|
||||
log_attack("<font color='red'>[user.name] ([user.ckey]) used the [src.name] to wrap [target.name] ([target.ckey])</font>")
|
||||
|
||||
else
|
||||
user << "/blue You need more paper."
|
||||
else
|
||||
|
||||
@@ -545,6 +545,9 @@ CIRCULAR SAW
|
||||
user.attack_log += "\[[time_stamp()]\]<font color='red'> Debrained [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])</font>"
|
||||
M.attack_log += "\[[time_stamp()]\]<font color='orange'> Debrained by [user.name] ([user.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])</font>"
|
||||
|
||||
log_attack("<font color='red'>[user.name] ([user.ckey]) debrained [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])</font>")
|
||||
|
||||
|
||||
var/obj/item/brain/B = new(M.loc)
|
||||
B.transfer_identity(M)
|
||||
|
||||
|
||||
@@ -129,6 +129,10 @@ STUN BATON
|
||||
M.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been attacked with [src.name] by [user.name] ([user.ckey]) (INTENT: [uppertext(user.a_intent)])</font>")
|
||||
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Used the [src.name] to attack [M.name] ([M.ckey]) (INTENT: [uppertext(user.a_intent)])</font>")
|
||||
|
||||
log_attack("<font color='red'>[user.name] ([user.ckey]) attacked [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])</font>")
|
||||
|
||||
|
||||
|
||||
if(isrobot(M))
|
||||
..()
|
||||
return
|
||||
@@ -200,6 +204,9 @@ STUN BATON
|
||||
M.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been attacked with [src.name] by [user.name] ([user.ckey])</font>")
|
||||
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Used the [src.name] to attack [M.name] ([M.ckey])</font>")
|
||||
|
||||
log_attack("<font color='red'>[user.name] ([user.ckey]) attacked [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])</font>")
|
||||
|
||||
|
||||
if (user.a_intent == "hurt")
|
||||
if(!..()) return
|
||||
playsound(src.loc, "swing_hit", 50, 1, -1)
|
||||
|
||||
@@ -26,6 +26,8 @@
|
||||
M.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been attacked with [src.name] by [user.name] ([user.ckey])</font>")
|
||||
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Used the [src.name] to attack [M.name] ([M.ckey])</font>")
|
||||
|
||||
log_attack("<font color='red'>[user.name] ([user.ckey]) attacked [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])</font>")
|
||||
|
||||
var/t = user:zone_sel.selecting
|
||||
if (t == "head")
|
||||
if (M.stat < 2 && M.health < 50 && prob(90))
|
||||
|
||||
@@ -25,6 +25,8 @@
|
||||
M.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been attacked with [src.name] by [user.name] ([user.ckey])</font>")
|
||||
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Used the [src.name] to attack [M.name] ([M.ckey])</font>")
|
||||
|
||||
log_attack("<font color='red'>[user.name] ([user.ckey]) attacked [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])</font>")
|
||||
|
||||
if (!(istype(user, /mob/living/carbon/human) || ticker) && ticker.mode.name != "monkey")
|
||||
user << "\red You don't have the dexterity to do this!"
|
||||
return
|
||||
|
||||
@@ -21,6 +21,8 @@
|
||||
M.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been attacked with [src.name] by [user.name] ([user.ckey])</font>")
|
||||
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Used the [src.name] to attack [M.name] ([M.ckey])</font>")
|
||||
|
||||
log_attack("<font color='red'>[user.name] ([user.ckey]) attacked [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])</font>")
|
||||
|
||||
if (M.stat < 2 && M.health < 50 && prob(90))
|
||||
var/mob/H = M
|
||||
// ******* Check
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
////////////////////////////////
|
||||
/proc/message_admins(var/text, var/admin_ref = 0)
|
||||
var/rendered = "<span class=\"admin\"><span class=\"prefix\">ADMIN LOG:</span> <span class=\"message\">[text]</span></span>"
|
||||
log_adminwarn(rendered)
|
||||
for (var/mob/M in world)
|
||||
if (M && M.client && M.client.holder && M.client.authenticated)
|
||||
if (admin_ref)
|
||||
@@ -9,6 +10,7 @@
|
||||
else
|
||||
M << rendered
|
||||
|
||||
|
||||
/obj/admins/Topic(href, href_list)
|
||||
..()
|
||||
|
||||
|
||||
@@ -357,7 +357,15 @@
|
||||
usr << "\red The grenade launcher cannot hold more grenades."
|
||||
|
||||
afterattack(obj/target, mob/user , flag)
|
||||
if(target == user) return
|
||||
|
||||
if (istype(target, /obj/item/weapon/storage/backpack ))
|
||||
return
|
||||
|
||||
else if (locate (/obj/structure/table, src.loc))
|
||||
return
|
||||
|
||||
else if(target == user)
|
||||
return
|
||||
|
||||
if(grenades.len)
|
||||
spawn(0) fire_grenade(target,user)
|
||||
@@ -366,6 +374,59 @@
|
||||
|
||||
proc
|
||||
fire_grenade(atom/target, mob/user)
|
||||
for(var/mob/O in viewers(world.view, user))
|
||||
O.show_message(text("\red [] fired a grenade!", user), 1)
|
||||
user << "\red You fire the grenade launcher!"
|
||||
if (istype(grenades[1], /obj/item/weapon/chem_grenade))
|
||||
var/obj/item/weapon/chem_grenade/F = grenades[1]
|
||||
grenades -= F
|
||||
F.loc = user.loc
|
||||
F.throw_at(target, 30, 2)
|
||||
message_admins("[key_name_admin(user)] fired a chemistry grenade from a grenade launcher ([src.name]).")
|
||||
log_game("[key_name_admin(user)] used a chemistry grenade ([src.name]).")
|
||||
F.state = 1
|
||||
F.icon_state = initial(icon_state)+"_armed"
|
||||
playsound(user.loc, 'armbomb.ogg', 75, 1, -3)
|
||||
spawn(15)
|
||||
F.explode()
|
||||
else if (istype(grenades[1], /obj/item/weapon/flashbang))
|
||||
var/obj/item/weapon/flashbang/F = grenades[1]
|
||||
grenades -= F
|
||||
F.loc = user.loc
|
||||
F.throw_at(target, 30, 2)
|
||||
F.active = 1
|
||||
F.icon_state = "flashbang1"
|
||||
playsound(user.loc, 'armbomb.ogg', 75, 1, -3)
|
||||
spawn(15)
|
||||
F.prime()
|
||||
else if (istype(grenades[1], /obj/item/weapon/smokebomb))
|
||||
var/obj/item/weapon/smokebomb/F = grenades[1]
|
||||
grenades -= F
|
||||
F.loc = user.loc
|
||||
F.throw_at(target, 30, 2)
|
||||
F.icon_state = "flashbang1"
|
||||
playsound(user.loc, 'armbomb.ogg', 75, 1, -3)
|
||||
spawn(15)
|
||||
F.prime()
|
||||
else if (istype(grenades[1], /obj/item/weapon/mustardbomb))
|
||||
var/obj/item/weapon/mustardbomb/F = grenades[1]
|
||||
grenades -= F
|
||||
F.loc = user.loc
|
||||
F.throw_at(target, 30, 2)
|
||||
F.icon_state = "flashbang1"
|
||||
playsound(user.loc, 'armbomb.ogg', 75, 1, -3)
|
||||
spawn(15)
|
||||
F.prime()
|
||||
else if (istype(grenades[1], /obj/item/weapon/empgrenade))
|
||||
var/obj/item/weapon/empgrenade/F = grenades[1]
|
||||
grenades -= F
|
||||
F.loc = user.loc
|
||||
F.throw_at(target, 30, 2)
|
||||
F.active = 1
|
||||
F.icon_state = "empar"
|
||||
playsound(user.loc, 'armbomb.ogg', 75, 1, -3)
|
||||
spawn(15)
|
||||
F.prime()
|
||||
if (locate (/obj/structure/table, src.loc) || locate (/obj/item/weapon/storage, src.loc))
|
||||
return
|
||||
else
|
||||
@@ -1196,6 +1257,10 @@
|
||||
|
||||
M.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been injected with [src.name] by [user.name] ([user.ckey])</font>")
|
||||
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Used the [src.name] to inject [M.name] ([M.ckey])</font>")
|
||||
|
||||
log_attack("<font color='red'>[user.name] ([user.ckey]) injected [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])</font>")
|
||||
|
||||
|
||||
src.reagents.reaction(M, INGEST)
|
||||
if(M.reagents)
|
||||
var/trans = reagents.trans_to(M, amount_per_transfer_from_this)
|
||||
@@ -1310,6 +1375,8 @@
|
||||
M.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been fed [src.name] by [user.name] ([user.ckey]) Reagents: \ref[reagents]</font>")
|
||||
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Fed [M.name] by [M.name] ([M.ckey]) Reagents: \ref[reagents]</font>")
|
||||
|
||||
log_attack("<font color='red'>[user.name] ([user.ckey]) fed [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])</font>")
|
||||
|
||||
for(var/mob/O in viewers(world.view, user))
|
||||
O.show_message("\red [user] feeds [M] [src].", 1)
|
||||
|
||||
@@ -1480,6 +1547,8 @@
|
||||
M.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been fed [src.name] by [user.name] ([user.ckey]) Reagents: \ref[reagents]</font>")
|
||||
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Fed [M.name] by [M.name] ([M.ckey]) Reagents: \ref[reagents]</font>")
|
||||
|
||||
log_attack("<font color='red'>[user.name] ([user.ckey]) fed [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])</font>")
|
||||
|
||||
|
||||
if(reagents.total_volume)
|
||||
reagents.reaction(M, INGEST)
|
||||
@@ -1602,6 +1671,8 @@
|
||||
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Fed [M.name] by [M.name] ([M.ckey]) Reagents: \ref[reagents]</font>")
|
||||
|
||||
|
||||
log_attack("<font color='red'>[user.name] ([user.ckey]) fed [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])</font>")
|
||||
|
||||
if(reagents.total_volume)
|
||||
reagents.reaction(M, INGEST)
|
||||
spawn(5)
|
||||
@@ -2204,6 +2275,8 @@
|
||||
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Fed [src.name] by [M.name] ([M.ckey]) Reagents: \ref[reagents]</font>")
|
||||
|
||||
|
||||
log_attack("<font color='red'>[user.name] ([user.ckey]) fed [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])</font>")
|
||||
|
||||
if(reagents.total_volume)
|
||||
reagents.reaction(M, INGEST)
|
||||
spawn(5)
|
||||
|
||||
@@ -97,6 +97,7 @@
|
||||
else
|
||||
src << text("Invalid Emote: []", act)
|
||||
if ((message && src.stat == 0))
|
||||
log_emote("[name]/[key] : [message]")
|
||||
if (act == "roar")
|
||||
playsound(src.loc, 'hiss5.ogg', 40, 1, 1)
|
||||
if (act == "deathgasp")
|
||||
|
||||
@@ -94,6 +94,7 @@
|
||||
else
|
||||
src << text("Invalid Emote: []", act)
|
||||
if ((message && src.stat == 0))
|
||||
log_emote("[name]/[key] : [message]")
|
||||
if (m_type & 1)
|
||||
for(var/mob/O in viewers(src, null))
|
||||
O.show_message(message, m_type)
|
||||
|
||||
@@ -461,6 +461,7 @@
|
||||
src << "\blue Unusable emote '[act]'. Say *help for a list."
|
||||
|
||||
if (message)
|
||||
log_emote("[name]/[key] : [message]")
|
||||
if (m_type & 1)
|
||||
for (var/mob/O in viewers(src, null))
|
||||
O.show_message(message, m_type)
|
||||
|
||||
@@ -17,6 +17,11 @@
|
||||
visible_message("\red <B>[src] has been touched with the stun gloves by [M]!</B>")
|
||||
M.attack_log += text("\[[time_stamp()]\] <font color='red'>Stungloved [src.name] ([src.ckey])</font>")
|
||||
src.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been stungloved by [M.name] ([M.ckey])</font>")
|
||||
|
||||
|
||||
log_attack("<font color='red'>[M.name] ([M.ckey]) stungloved [src.name] ([src.ckey])</font>")
|
||||
|
||||
|
||||
var/armorblock = run_armor_check(M.zone_sel.selecting, "energy")
|
||||
apply_effects(5,5,0,0,5,0,0,armorblock)
|
||||
return 1
|
||||
@@ -73,6 +78,9 @@
|
||||
M.attack_log += text("\[[time_stamp()]\] <font color='red'>Punched [src.name] ([src.ckey])</font>")
|
||||
src.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been punched by [M.name] ([M.ckey])</font>")
|
||||
|
||||
log_attack("<font color='red'>[M.name] ([M.ckey]) punched [src.name] ([src.ckey])</font>")
|
||||
|
||||
|
||||
var/damage = rand(0, 9)
|
||||
if(!damage)
|
||||
playsound(loc, 'punchmiss.ogg', 25, 1, -1)
|
||||
@@ -97,6 +105,10 @@
|
||||
M.attack_log += text("\[[time_stamp()]\] <font color='red'>Disarmed [src.name] ([src.ckey])</font>")
|
||||
src.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been disarmed by [M.name] ([M.ckey])</font>")
|
||||
|
||||
|
||||
log_attack("<font color='red'>[M.name] ([M.ckey]) disarmed [src.name] ([src.ckey])</font>")
|
||||
|
||||
|
||||
if(w_uniform)
|
||||
w_uniform.add_fingerprint(M)
|
||||
var/datum/organ/external/affecting = get_organ(ran_zone(M.zone_sel.selecting))
|
||||
|
||||
@@ -97,6 +97,8 @@
|
||||
else
|
||||
src << text("Invalid Emote: []", act)
|
||||
if ((message && src.stat == 0))
|
||||
if(src.client)
|
||||
log_emote("[name]/[key] : [message]")
|
||||
if (m_type & 1)
|
||||
for(var/mob/O in viewers(src, null))
|
||||
O.show_message(message, m_type)
|
||||
|
||||
@@ -160,6 +160,7 @@
|
||||
affecting.loc = assailant.loc
|
||||
affecting.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has had their neck grabbed by [assailant.name] ([assailant.ckey])</font>")
|
||||
assailant.attack_log += text("\[[time_stamp()]\] <font color='red'>Grabbed the neck of [affecting.name] ([affecting.ckey])</font>")
|
||||
log_attack("<font color='red'>[assailant.name] ([assailant.ckey]) grabbed the neck of [affecting.name] ([affecting.ckey])</font>")
|
||||
hud1.icon_state = "disarm/kill"
|
||||
hud1.name = "disarm/kill"
|
||||
else
|
||||
@@ -170,6 +171,8 @@
|
||||
O.show_message(text("\red [] has tightened his grip on []'s neck!", assailant, affecting), 1)
|
||||
affecting.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been strangled (kill intent) by [assailant.name] ([assailant.ckey])</font>")
|
||||
assailant.attack_log += text("\[[time_stamp()]\] <font color='red'>Strangled (kill intent) [affecting.name] ([affecting.ckey])</font>")
|
||||
log_attack("<font color='red'>[assailant.name] ([assailant.ckey]) Strangled (kill intent) [affecting.name] ([affecting.ckey])</font>")
|
||||
|
||||
assailant.next_move = world.time + 10
|
||||
affecting.losebreath += 1
|
||||
hud1.icon_state = "disarm/kill1"
|
||||
|
||||
@@ -77,8 +77,13 @@
|
||||
if(istype(firer, /mob))
|
||||
M.attack_log += text("\[[]\] <b>[]/[]</b> shot <b>[]/[]</b> with a <b>[]</b>", time_stamp(), firer, firer.ckey, M, M.ckey, src)
|
||||
firer.attack_log += text("\[[]\] <b>[]/[]</b> shot <b>[]/[]</b> with a <b>[]</b>", time_stamp(), firer, firer.ckey, M, M.ckey, src)
|
||||
log_attack("<font color='red'>[firer] ([firer.ckey]) shot [M] ([M.ckey]) with a [src]</font>")
|
||||
|
||||
else
|
||||
M.attack_log += text("\[[]\] <b>UNKNOWN SUBJECT (No longer exists)</b> shot <b>[]/[]</b> with a <b>[]</b>", time_stamp(), M, M.ckey, src)
|
||||
log_attack("<font color='red'>UNKNOWN shot [M] ([M.ckey]) with a [src]</font>")
|
||||
|
||||
|
||||
|
||||
spawn(0)
|
||||
if(A)
|
||||
|
||||
@@ -86,7 +86,7 @@
|
||||
attack(target as obj, mob/user as mob)
|
||||
|
||||
user.attack_log += text("\[[time_stamp()]\] <font color='blue'>Has used [src.name] on \ref[target]</font>")
|
||||
|
||||
log_attack("<font color='blue'>[user] ([user.ckey]) has used [src.name] on \ref[target]</font>")
|
||||
if (istype(target, /obj/item))
|
||||
var/obj/item/O = target
|
||||
if(!istype(loc,/turf))
|
||||
|
||||
@@ -26,6 +26,8 @@
|
||||
#define WARNING_LOW_PRESSURE HAZARD_LOW_PRESSURE*2.5
|
||||
#define MAX_PRESSURE_DAMAGE 20
|
||||
|
||||
// Doors!
|
||||
#define DOOR_CRUSH_DAMAGE 35
|
||||
|
||||
// Factor of how fast mob nutrition decreases
|
||||
#define HUNGER_FACTOR 0.1
|
||||
|
||||
@@ -46,6 +46,7 @@
|
||||
signal.data["data"] = t
|
||||
signal.data["sender"] = src.screen_name
|
||||
src.messages += "<i><b>→ You:</b></i><br>[t]<br>"
|
||||
|
||||
peripheral_command("send signal", signal)
|
||||
|
||||
if(href_list["func_msg"])
|
||||
|
||||
@@ -281,6 +281,7 @@
|
||||
signal.data["tag"] = "\ref[P]"
|
||||
src.post_signal(signal)
|
||||
src.message_note += "<i><b>→ To [P.owner]:</b></i><br>[t]<br>"
|
||||
log_pda("[usr] sent [t] to [P.owner]")
|
||||
|
||||
if("rename")
|
||||
var/datum/computer/file/F = locate(href_list["target"])
|
||||
|
||||
@@ -27,6 +27,18 @@ LOG_VOTE
|
||||
## log client Whisper
|
||||
LOG_WHISPER
|
||||
|
||||
## log emotes
|
||||
LOG_EMOTE
|
||||
|
||||
## log attack messages
|
||||
LOG_ATTACK
|
||||
|
||||
## log pda messages
|
||||
LOG_PDA
|
||||
|
||||
## log admin warning messages
|
||||
##LOG_ADMINWARN ## Also duplicates a bunch of other messages.
|
||||
|
||||
## sql switching
|
||||
# SQL_ENABLED
|
||||
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
<tr>
|
||||
<td valign='top'>
|
||||
<b>Credits: </b><br>
|
||||
<font size='2'><b>Coders:</b> TLE, NEO, Errorage, muskets, veryinky, Skie, Noise, Numbers, Agouri, Noka, Urist McDorf, Uhangi, Darem, Mport, rastaf0, Doohl, Superxpdude, Rockdtben, ConstantA, Petethegoat, Kor<br></font>
|
||||
<font size='2'><b>Coders:</b> TLE, NEO, Errorage, muskets, veryinky, Skie, Noise, Numbers, Agouri, Noka, Urist McDorf, Uhangi, Darem, Mport, rastaf0, Doohl, Superxpdude, Rockdtben, ConstantA, Petethegoat, Kor, Polymorph<br></font>
|
||||
<font size='2'><b>Spriters:</b> Agouri, Cheridan, Cruazy Guest, Deeaych, Deuryn, Matty406, Microwave, ShiftyEyesShady, Skie, Uhangi, Veyveyr, Petethegoat, Kor<br></font>
|
||||
<font size='2'><b>Sounds:</b> Skie, Lasty/Vinyl<br></font>
|
||||
<font size='2'><b>Thanks to:</b> CDK Station devs, GoonStation devs, the original SpaceStation developers and Erikat for the title image</font>
|
||||
@@ -66,6 +66,12 @@ should be listed in the changelog upon commit tho. Thanks. -->
|
||||
<ul>
|
||||
<li><font color=red><b>XENOS ARE NOW IMMUNE TO STUNNING!</b></font color> To compensate, stunning via tasers/batons now slows them down significantly.</li>
|
||||
</ul>
|
||||
|
||||
<li><b>Polymorph updated:</b>
|
||||
<ul>
|
||||
<li>Doors no longer close if they have a mob in the tile. (Generally!) Door safties can now be overriden to close a door with a mob in the tile and injure them severely.</li>
|
||||
</ul>
|
||||
|
||||
</ul>
|
||||
|
||||
<b><font color='blue'>29 December 2011</font><b>
|
||||
|
||||
Reference in New Issue
Block a user