mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-10 10:21:11 +00:00
bomberman fixes and camera hearing
This commit is contained in:
@@ -31,6 +31,8 @@ var/list/camera_names=list()
|
||||
var/alarm_on = 0
|
||||
var/busy = 0
|
||||
|
||||
var/hear_voice = 0
|
||||
|
||||
/obj/machinery/camera/update_icon()
|
||||
var/EMPd = stat & EMPED
|
||||
var/deactivated = !status
|
||||
@@ -45,6 +47,14 @@ var/list/camera_names=list()
|
||||
else
|
||||
icon_state = "[camtype]"
|
||||
|
||||
/obj/machinery/camera/proc/update_hear()//only cameras with voice analyzers can hear, to reduce the number of unecessary /mob/virtualhearer
|
||||
if(!hear_voice && isHearing())
|
||||
hear_voice = 1
|
||||
addHear()
|
||||
if(hear_voice && !isHearing())
|
||||
hear_voice = 0
|
||||
removeHear()
|
||||
|
||||
/obj/machinery/camera/New()
|
||||
wires = new(src)
|
||||
|
||||
@@ -65,6 +75,8 @@ var/list/camera_names=list()
|
||||
if(adv_camera && adv_camera.initialized && !(src in adv_camera.camerasbyzlevel["[z]"]))
|
||||
adv_camera.update(z, 0, src, adding=1)
|
||||
|
||||
update_hear()
|
||||
|
||||
/obj/machinery/camera/proc/name_camera()
|
||||
//writepanic("[__FILE__].[__LINE__] ([src.type])([usr ? usr.ckey : ""]) \\/obj/machinery/camera/proc/name_camera() called tick#: [world.time]")
|
||||
var/area/A=get_area(src)
|
||||
@@ -193,6 +205,7 @@ var/list/camera_names=list()
|
||||
assembly.upgrades += W
|
||||
user.drop_item(W, src)
|
||||
update_icon()
|
||||
update_hear()
|
||||
return
|
||||
|
||||
// Taking out upgrades
|
||||
@@ -211,6 +224,7 @@ var/list/camera_names=list()
|
||||
U.loc = get_turf(src)
|
||||
assembly.upgrades -= U
|
||||
update_icon()
|
||||
update_hear()
|
||||
return
|
||||
else //Camera deconned, no upgrades
|
||||
user << "The camera is firmly welded to the wall." //User might be trying to deconstruct the camera with a crowbar, let them know what's wrong
|
||||
@@ -385,3 +399,67 @@ var/list/camera_names=list()
|
||||
P.reset_view(src)
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/obj/machinery/camera/proc/tv_message(atom/movable/hearer, atom/movable/speaker, var/datum/language/speaking, raw_message)
|
||||
var/namepart = "[speaker.GetVoice()][speaker.get_alt_name()] "
|
||||
var/messagepart = "<span class='message'>[hearer.lang_treat(speaker, speaking, raw_message)]</span>"
|
||||
|
||||
return "<span class='game say'><span class='name'>[namepart]</span>[messagepart]</span>"
|
||||
|
||||
/obj/machinery/camera/Hear(message, atom/movable/speaker, var/datum/language/speaking, raw_message, radio_freq)
|
||||
if(isHearing())
|
||||
for(var/obj/machinery/computer/security/S in tv_monitors)
|
||||
if(S.current == src)
|
||||
if(istype(S, /obj/machinery/computer/security/telescreen))
|
||||
for(var/mob/M in viewers(world.view,S))
|
||||
M << "<span style='color:grey'>\icon[S][tv_message(M, speaker,speaking,raw_message)]</span>"
|
||||
else
|
||||
for(var/mob/M in viewers(1,S))
|
||||
M << "<span style='color:grey'>\icon[S][tv_message(M, speaker,speaking,raw_message)]</span>"
|
||||
|
||||
/obj/machinery/camera/arena
|
||||
name = "arena camera"
|
||||
desc = "A camera anchored to the floor, designed to survive hits and explosions of any size. What's it made of anyway?"
|
||||
icon_state = "camerarena"
|
||||
use_power = 0
|
||||
idle_power_usage = 0
|
||||
active_power_usage = 0
|
||||
layer = 2.1
|
||||
|
||||
/obj/machinery/camera/arena/New()
|
||||
..()
|
||||
pixel_x = 0
|
||||
pixel_y = 0
|
||||
upgradeHearing()
|
||||
|
||||
/obj/machinery/camera/arena/attackby(W as obj, mob/living/user as mob)
|
||||
if(istype(W, /obj/item/weapon/screwdriver))
|
||||
user << "<span class='warning'>There aren't any visible screws to unscrew.</span>"
|
||||
else
|
||||
user.visible_message("<span class='warning'>\The [user] hits \the [src] with \the [W] but it doesn't seem to affect it in the least.</span>","<span class='warning'>You hit \the [src] with \the [W] but it doesn't seem to affect it in the least</span>")
|
||||
return
|
||||
|
||||
/obj/machinery/camera/arena/attack_paw(mob/living/carbon/alien/humanoid/user as mob)
|
||||
user.visible_message("<span class='warning'>\The [user] slashes at \the [src]!...but that didn't affect it at all.</span>","<span class='warning'>You slashe at \the [src]!...but that didn't affect it at all.</span>")
|
||||
return
|
||||
|
||||
/obj/machinery/camera/arena/update_icon()
|
||||
return
|
||||
|
||||
/obj/machinery/camera/arena/emp_act(severity)
|
||||
return
|
||||
|
||||
/obj/machinery/camera/arena/ex_act(severity)
|
||||
return
|
||||
|
||||
/obj/machinery/camera/arena/blob_act(severity)
|
||||
return
|
||||
|
||||
/obj/machinery/camera/arena/singularity_act(severity)//those are really good cameras
|
||||
return
|
||||
|
||||
/obj/structure/planner/arena/cultify()
|
||||
return
|
||||
|
||||
/obj/machinery/camera/arena/attack_pai(mob/user as mob)
|
||||
return
|
||||
|
||||
@@ -10,8 +10,14 @@
|
||||
w_type = RECYK_ELECTRONIC
|
||||
melt_temperature = MELTPOINT_STEEL
|
||||
|
||||
// Motion, EMP-Proof, X-Ray
|
||||
var/list/obj/item/possible_upgrades = list(/obj/item/device/assembly/prox_sensor, /obj/item/stack/sheet/mineral/plasma, /obj/item/weapon/reagent_containers/food/snacks/grown/carrot)
|
||||
// Motion, EMP-Proof, X-Ray, Microphone
|
||||
var/list/obj/item/possible_upgrades = list(
|
||||
/obj/item/device/assembly/prox_sensor,
|
||||
/obj/item/stack/sheet/mineral/plasma,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/carrot,
|
||||
/obj/item/device/assembly/voice,
|
||||
)
|
||||
|
||||
var/list/upgrades = list()
|
||||
var/state = 0
|
||||
var/busy = 0
|
||||
|
||||
@@ -19,6 +19,12 @@
|
||||
..()
|
||||
upgradeMotion()
|
||||
|
||||
// HEARING
|
||||
|
||||
/obj/machinery/camera/hearing/New()
|
||||
..()
|
||||
upgradeHearing()
|
||||
|
||||
// ALL UPGRADES
|
||||
|
||||
/obj/machinery/camera/all/New()
|
||||
@@ -26,6 +32,7 @@
|
||||
upgradeEmpProof()
|
||||
upgradeXRay()
|
||||
upgradeMotion()
|
||||
upgradeHearing()
|
||||
update_icon()
|
||||
|
||||
// AUTONAME
|
||||
@@ -66,6 +73,11 @@
|
||||
var/O = locate(/obj/item/device/assembly/prox_sensor) in assembly.upgrades
|
||||
return O
|
||||
|
||||
/obj/machinery/camera/proc/isHearing()
|
||||
//writepanic("[__FILE__].[__LINE__] ([src.type])([usr ? usr.ckey : ""]) \\/obj/machinery/camera/proc/isMotion() called tick#: [world.time]")
|
||||
var/O = locate(/obj/item/device/assembly/voice) in assembly.upgrades
|
||||
return O
|
||||
|
||||
// UPGRADE PROCS
|
||||
|
||||
/obj/machinery/camera/proc/upgradeEmpProof()
|
||||
@@ -79,4 +91,9 @@
|
||||
// If you are upgrading Motion, and it isn't in the camera's New(), add it to the machines list.
|
||||
/obj/machinery/camera/proc/upgradeMotion()
|
||||
//writepanic("[__FILE__].[__LINE__] ([src.type])([usr ? usr.ckey : ""]) \\/obj/machinery/camera/proc/upgradeMotion() called tick#: [world.time]")
|
||||
assembly.upgrades.Add(new /obj/item/device/assembly/prox_sensor(assembly))
|
||||
assembly.upgrades.Add(new /obj/item/device/assembly/prox_sensor(assembly))
|
||||
|
||||
/obj/machinery/camera/proc/upgradeHearing()
|
||||
//writepanic("[__FILE__].[__LINE__] ([src.type])([usr ? usr.ckey : ""]) \\/obj/machinery/camera/proc/isMotion() called tick#: [world.time]")
|
||||
assembly.upgrades.Add(new /obj/item/device/assembly/voice(assembly))
|
||||
update_hear()
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31
|
||||
|
||||
var/global/list/tv_monitors = list()
|
||||
|
||||
/obj/machinery/computer/security
|
||||
name = "Security Cameras"
|
||||
@@ -13,6 +14,14 @@
|
||||
|
||||
light_color = LIGHT_COLOR_RED
|
||||
|
||||
/obj/machinery/computer/security/New()
|
||||
..()
|
||||
tv_monitors += src
|
||||
|
||||
/obj/machinery/computer/security/Destroy()
|
||||
tv_monitors -= src
|
||||
..()
|
||||
|
||||
/obj/machinery/computer/security/attack_ai(var/mob/user as mob)
|
||||
src.add_hiddenprint(user)
|
||||
return attack_hand(user)
|
||||
@@ -86,7 +95,7 @@
|
||||
|
||||
/obj/machinery/computer/security/telescreen
|
||||
name = "Telescreen"
|
||||
desc = "Used for watching an empty arena."
|
||||
desc = "Used for watching arena fights and variety shows."
|
||||
icon = 'icons/obj/stationobjs.dmi'
|
||||
icon_state = "telescreen"
|
||||
network = list("thunder")
|
||||
@@ -95,6 +104,10 @@
|
||||
|
||||
light_color = null
|
||||
|
||||
/obj/machinery/computer/security/telescreen/examine(mob/user)
|
||||
..()
|
||||
user << "Looks like the current channel is \"<span class='info'>[current.c_tag]</span>\""
|
||||
|
||||
/obj/machinery/computer/security/telescreen/update_icon()
|
||||
icon_state = initial(icon_state)
|
||||
if(stat & BROKEN)
|
||||
@@ -103,7 +116,7 @@
|
||||
|
||||
/obj/machinery/computer/security/telescreen/entertainment
|
||||
name = "entertainment monitor"
|
||||
desc = "Damn, they better have /tg/thechannel on these things."
|
||||
desc = "Damn, they better have chicken-channel on these things."
|
||||
icon = 'icons/obj/status_display.dmi'
|
||||
icon_state = "entertainment"
|
||||
network = list("thunder")
|
||||
|
||||
@@ -247,6 +247,4 @@
|
||||
|
||||
/obj/item/device/taperecorder/proc/recorder_message(var/msg)
|
||||
//writepanic("[__FILE__].[__LINE__] ([src.type])([usr ? usr.ckey : ""]) \\/obj/item/device/taperecorder/proc/recorder_message() called tick#: [world.time]")
|
||||
var/turf/T = get_turf(src)
|
||||
for(var/mob/M in viewers(T))
|
||||
M.show_message("<font color=Maroon><B>Tape Recorder</B>: " + msg + "</font>", 2)
|
||||
visible_message("<font color=Maroon><B>Tape Recorder</B>: " + msg + "</font>")
|
||||
@@ -1497,6 +1497,11 @@ client/proc/delete_all_bomberman()
|
||||
if(alert(usr, "Remove all Bomberman-related objects in the game world?", "Remove Bomberman", "Yes", "No") != "Yes")
|
||||
return
|
||||
|
||||
for(var/datum/bomberman_arena/target in arenas)
|
||||
target.close()
|
||||
if(target in arenas)
|
||||
arenas -= target
|
||||
|
||||
for(var/obj/structure/bomberflame/O in bombermangear)
|
||||
qdel(O)
|
||||
|
||||
@@ -1579,41 +1584,36 @@ client/proc/control_bomberman_arena()
|
||||
arena_status = "IN-GAME"
|
||||
if(ARENA_ENDGAME)
|
||||
arena_status = "END-GAME"
|
||||
usr << "status: [arena_status]"
|
||||
usr << "status: <b>[arena_status]</b>"
|
||||
usr << "violence mode: [arena_target.violence ? "ON" : "OFF"]"
|
||||
usr << "opacity mode: [arena_target.opacity ? "ON" : "OFF"]"
|
||||
if(arena_status == "SETUP")
|
||||
usr << "Arena Under Construction"
|
||||
usr << "<span class='warning'>Arena Under Construction</span>"
|
||||
if(arena_status == "AVAILABLE")
|
||||
var/i = 0
|
||||
for(var/datum/bomberman_spawn/S in arena_target.spawns)
|
||||
if(S.availability)
|
||||
i++
|
||||
usr << "available spawn points: [i]"
|
||||
usr << "Available spawn points: <b>[i]</b>"
|
||||
if((arena_status == "IN-GAME") || (arena_status == "END-GAME"))
|
||||
var/j = "players: "
|
||||
for(var/datum/bomberman_spawn/S in arena_target.spawns)
|
||||
if(S.player)
|
||||
j += "[S.player.name], "
|
||||
if(S.player_client)
|
||||
j += "<b>[S.player_client.key]</b>, "
|
||||
usr << "[j]"
|
||||
|
||||
var/list/choices = list(
|
||||
"CANCEL",
|
||||
"Close Arena(space)",
|
||||
"Close Arena(floors)",
|
||||
"Reset Arena (remove players)",
|
||||
"Recruit Gladiators (among the observers)",
|
||||
"Reset Arena",
|
||||
"Toggle Violence",
|
||||
"Toggle Opacity",
|
||||
"Force Start",
|
||||
"View Variables",
|
||||
)
|
||||
|
||||
if(arena_status == "AVAILABLE")
|
||||
choices += "Start a new game!"
|
||||
|
||||
if(arena_status == "IN-GAME")
|
||||
choices += "Restart Game (with same players)"
|
||||
|
||||
choices += "Force Start"
|
||||
|
||||
var/datum/bomberman_arena/choice = input("Which action do you wish to take?", "Arena Control Panel") in choices
|
||||
switch(choice)
|
||||
@@ -1627,40 +1627,8 @@ client/proc/control_bomberman_arena()
|
||||
arena_target.close(0)
|
||||
if(arena_target in arenas)
|
||||
arenas -= arena_target
|
||||
if("Reset Arena (remove players)")
|
||||
if("Reset Arena")
|
||||
arena_target.reset()
|
||||
if("Recruit Gladiators (among the observers)")
|
||||
spawn()
|
||||
for(var/mob/dead/observer/D in player_list)
|
||||
if(!(D.mind in never_gladiators))
|
||||
var/glad_choices = list(
|
||||
"Sure!",
|
||||
"No Thanks.",
|
||||
"Never.",
|
||||
)
|
||||
var/glad = input(D,"Do you wish to fight for honour and glory in the Arena?", "Gladiator Recruitment") in glad_choices
|
||||
switch(glad)
|
||||
if("Sure!")
|
||||
volunteer_gladiators += D.mind
|
||||
log_admin("[D] volunteered to become a gladiator")
|
||||
message_admins("[D] volunteered to become a gladiator")
|
||||
if("No Thanks.")
|
||||
log_admin("[D] declined to become a gladiator")
|
||||
message_admins("[D] declined to become a gladiator")
|
||||
return
|
||||
if("Never.")
|
||||
log_admin("[D] wishes to never become a gladiator")
|
||||
message_admins("[D] wishes to never become a gladiator")
|
||||
never_gladiators += D.mind
|
||||
if("Restart Game (with same players)")
|
||||
arena_target.reset(0)
|
||||
if("Force Start")
|
||||
var/list/new_challengers = list()
|
||||
for(var/datum/bomberman_spawn/S in arena_target.spawns)
|
||||
if(S.player_mind)
|
||||
new_challengers += S.player_mind
|
||||
if(new_challengers.len > 1)
|
||||
arena_target.start(new_challengers)
|
||||
if("Toggle Violence")
|
||||
arena_target.violence = !arena_target.violence
|
||||
if("Toggle Opacity")
|
||||
@@ -1669,19 +1637,10 @@ client/proc/control_bomberman_arena()
|
||||
L.opacity = arena_target.opacity
|
||||
for(var/turf/unsimulated/wall/bomberman/L in arena_target.turfs)
|
||||
L.opacity = arena_target.opacity
|
||||
if("Start a new game!")
|
||||
var/i = 0
|
||||
for(var/datum/bomberman_spawn/S in arena_target.spawns)
|
||||
i++
|
||||
if(i > volunteer_gladiators.len)
|
||||
usr << "There aren't enough volunteer gladiators to have a proper game..."
|
||||
else
|
||||
var/list/new_challengers = list()
|
||||
while(new_challengers.len < i)
|
||||
var/datum/mind/A = input("Pick the players you wish to choose", "Gladiator Recruitment") in volunteer_gladiators
|
||||
volunteer_gladiators -= A
|
||||
new_challengers += A
|
||||
arena_target.start(new_challengers)
|
||||
if("View Variables")
|
||||
debug_variables(arena_target)
|
||||
if("Force Start")
|
||||
arena_target.start()
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -114,7 +114,8 @@ var/global/list/bombermangear = list()
|
||||
arena.end()
|
||||
var/list/turfs = list()
|
||||
for(var/turf/T in range(loc,1))
|
||||
turfs += T
|
||||
if(!T.density)
|
||||
turfs += T
|
||||
while(skate > 0)
|
||||
new/obj/structure/powerup/skate(pick(turfs))
|
||||
skate--
|
||||
@@ -309,11 +310,14 @@ obj/structure/bomberflame/Destroy()
|
||||
/obj/structure/bomberflame/proc/collisions(var/turf/T)
|
||||
|
||||
//writepanic("[__FILE__].[__LINE__] ([src.type])([usr ? usr.ckey : ""]) \\/obj/structure/bomberflame/proc/collisions() called tick#: [world.time]")
|
||||
for(var/obj/item/weapon/bomberman/dispenser in T)
|
||||
dispenser.lost()
|
||||
T.turf_animation('icons/obj/bomberman.dmi',"dispenser_break",0,0,MOB_LAYER-0.1,'sound/bomberman/bombed.ogg')
|
||||
|
||||
for(var/mob/living/carbon/C in T)
|
||||
for(var/obj/item/weapon/bomberman/dispenser in C.contents)
|
||||
C.u_equip(dispenser,1)
|
||||
dispenser.loc = C.loc
|
||||
for(var/mob/living/L in T)
|
||||
for(var/obj/item/weapon/bomberman/dispenser in L)
|
||||
L.u_equip(dispenser,1)
|
||||
dispenser.loc = L.loc
|
||||
//dispenser.dropped(C)
|
||||
dispenser.lost()
|
||||
T.turf_animation('icons/obj/bomberman.dmi',"dispenser_break",0,0,MOB_LAYER-0.1,'sound/bomberman/bombed.ogg')
|
||||
@@ -426,7 +430,7 @@ obj/structure/bomberflame/Destroy()
|
||||
density = 0
|
||||
mouse_opacity = 0
|
||||
spawn(5)
|
||||
if(prob(35))
|
||||
if(prob(45))
|
||||
pick_a_powerup()
|
||||
spawn(5)
|
||||
qdel(src)
|
||||
@@ -616,14 +620,16 @@ obj/structure/bomberflame/Destroy()
|
||||
dispenser.speed_bonus = MAX_SPEED_BONUS
|
||||
dispenser.cure(disease)
|
||||
if("Change")
|
||||
for(var/mob/living/carbon/C in player_list)
|
||||
var/obj/item/weapon/bomberman/target = locate() in C
|
||||
for(var/mob/living/L_other in player_list)
|
||||
var/obj/item/weapon/bomberman/target = locate() in L_other
|
||||
if(target)
|
||||
var/turf/T = get_turf(src)
|
||||
var/mob/living/L = src.loc
|
||||
L.loc = C.loc
|
||||
C.loc = T
|
||||
playsound(get_turf(src), 'sound/bomberman/disease.ogg', 50, 1)
|
||||
var/mob/living/L_self = src.loc
|
||||
var/turf/T_self = get_turf(L_self)
|
||||
var/turf/T_other = get_turf(L_other)
|
||||
L_self.loc = T_other
|
||||
L_other.loc = T_self
|
||||
playsound(T_self, 'sound/bomberman/disease.ogg', 50, 1)
|
||||
playsound(T_other, 'sound/bomberman/disease.ogg', 50, 1)
|
||||
qdel(src)
|
||||
return
|
||||
if("Fire")
|
||||
@@ -712,14 +718,18 @@ obj/structure/bomberflame/Destroy()
|
||||
///////////////////////////////ARENA BUILDER///////////////////////////
|
||||
|
||||
var/global/list/arenas = list()
|
||||
var/global/list/arena_spawnpoints = list()//used by /mob/dead/observer/Logout()
|
||||
|
||||
/datum/bomberman_spawn
|
||||
var/turf/spawnpoint = null
|
||||
var/availability = 0
|
||||
var/mob/living/carbon/human/player = null
|
||||
var/datum/player_mind = null
|
||||
var/mob/living/carbon/human/player_mob = null
|
||||
var/client/player_client = null
|
||||
var/obj/structure/planner/spawnpoint/icon = null
|
||||
|
||||
/datum/bomberman_spawn/New()
|
||||
arena_spawnpoints += src
|
||||
|
||||
|
||||
/datum/bomberman_arena
|
||||
var/name = "Bomberman Arena"
|
||||
@@ -727,6 +737,7 @@ var/global/list/arenas = list()
|
||||
var/shape = ""
|
||||
var/violence = 0
|
||||
var/opacity = 0
|
||||
var/min_number_of_players = 2
|
||||
var/area/arena = null
|
||||
var/area/under = null
|
||||
var/turf/center = null //middle of the arena.
|
||||
@@ -735,8 +746,10 @@ var/global/list/arenas = list()
|
||||
var/list/spawns = list() //player spawns.
|
||||
var/list/turfs = list() //all of the arena's turfs. they get reverted to space tiles when the arena is removed.
|
||||
var/list/swalls = list() //all of the soft walls. randomly spread over the arena between round.
|
||||
var/list/players = list() //players that registered with this arena.
|
||||
var/list/gladiators = list()//players that registered with this arena.
|
||||
var/list/tools = list() //clothes and bomb dispensers spawned by the arena.
|
||||
var/auto_start = 60 //how long (in seconds) till the game automatically begins when at least two players have registered
|
||||
var/counting = 0
|
||||
|
||||
/datum/bomberman_arena/New(var/turf/a_center=null, var/size="",mob/user)
|
||||
if(!a_center) return
|
||||
@@ -750,7 +763,7 @@ var/global/list/arenas = list()
|
||||
|
||||
shape = size
|
||||
for(var/datum/bomberman_spawn/S in spawns)
|
||||
var/obj/structure/planner/P = new /obj/structure/planner/spawnpoint(S.spawnpoint, src, S)
|
||||
var/obj/structure/planner/spawnpoint/P = new(S.spawnpoint, src, S)
|
||||
S.icon = P
|
||||
planners += P
|
||||
|
||||
@@ -773,7 +786,7 @@ var/global/list/arenas = list()
|
||||
h = 22
|
||||
|
||||
if(planner(size,user))
|
||||
var/obj/machinery/camera/C = new /obj/machinery/camera(center)
|
||||
var/obj/machinery/camera/arena/C = new(center)
|
||||
cameras += C
|
||||
C.name = name
|
||||
C.c_tag = name
|
||||
@@ -782,7 +795,7 @@ var/global/list/arenas = list()
|
||||
"SS13", //security monitors
|
||||
)
|
||||
|
||||
var/obj/structure/planner/pencil = new /obj/structure/planner(center, src)
|
||||
var/obj/structure/planner/pencil = new(center, src)
|
||||
pencil.x -= (w/2)
|
||||
pencil.y -= (h/2)
|
||||
x = pencil.x
|
||||
@@ -822,14 +835,14 @@ var/global/list/arenas = list()
|
||||
T = pencil.loc
|
||||
|
||||
if(!(size == "15x13 (2 players)"))
|
||||
var/datum/bomberman_spawn/sp1 = new/datum/bomberman_spawn()
|
||||
var/datum/bomberman_spawn/sp1 = new()
|
||||
sp1.spawnpoint = T
|
||||
spawns += sp1
|
||||
|
||||
pencil.x = x+w-1
|
||||
T = pencil.loc
|
||||
|
||||
var/datum/bomberman_spawn/sp2 = new/datum/bomberman_spawn()
|
||||
var/datum/bomberman_spawn/sp2 = new()
|
||||
sp2.spawnpoint = T
|
||||
spawns += sp2
|
||||
|
||||
@@ -837,14 +850,14 @@ var/global/list/arenas = list()
|
||||
T = pencil.loc
|
||||
|
||||
if(!(size == "15x13 (2 players)"))
|
||||
var/datum/bomberman_spawn/sp3 = new/datum/bomberman_spawn()
|
||||
var/datum/bomberman_spawn/sp3 = new()
|
||||
sp3.spawnpoint = T
|
||||
spawns += sp3
|
||||
|
||||
pencil.x = x+1
|
||||
T = pencil.loc
|
||||
|
||||
var/datum/bomberman_spawn/sp4 = new/datum/bomberman_spawn()
|
||||
var/datum/bomberman_spawn/sp4 = new()
|
||||
sp4.spawnpoint = T
|
||||
spawns += sp4
|
||||
|
||||
@@ -852,37 +865,37 @@ var/global/list/arenas = list()
|
||||
pencil.x = x + 10
|
||||
pencil.y = y + 7
|
||||
T = pencil.loc
|
||||
var/datum/bomberman_spawn/sp5 = new/datum/bomberman_spawn()
|
||||
var/datum/bomberman_spawn/sp5 = new()
|
||||
sp5.spawnpoint = T
|
||||
spawns += sp5
|
||||
pencil.x = x + 10
|
||||
pencil.y = y + 15
|
||||
T = pencil.loc
|
||||
var/datum/bomberman_spawn/sp6 = new/datum/bomberman_spawn()
|
||||
var/datum/bomberman_spawn/sp6 = new()
|
||||
sp6.spawnpoint = T
|
||||
spawns += sp6
|
||||
pencil.x = x + 19
|
||||
pencil.y = y + 1
|
||||
T = pencil.loc
|
||||
var/datum/bomberman_spawn/sp7 = new/datum/bomberman_spawn()
|
||||
var/datum/bomberman_spawn/sp7 = new()
|
||||
sp7.spawnpoint = T
|
||||
spawns += sp7
|
||||
pencil.x = x + 19
|
||||
pencil.y = y + h - 1
|
||||
T = pencil.loc
|
||||
var/datum/bomberman_spawn/sp8 = new/datum/bomberman_spawn()
|
||||
var/datum/bomberman_spawn/sp8 = new()
|
||||
sp8.spawnpoint = T
|
||||
spawns += sp8
|
||||
pencil.x = x + 28
|
||||
pencil.y = y + 7
|
||||
T = pencil.loc
|
||||
var/datum/bomberman_spawn/sp9 = new/datum/bomberman_spawn()
|
||||
var/datum/bomberman_spawn/sp9 = new()
|
||||
sp9.spawnpoint = T
|
||||
spawns += sp9
|
||||
pencil.x = x + 28
|
||||
pencil.y = y + 15
|
||||
T = pencil.loc
|
||||
var/datum/bomberman_spawn/sp10 = new/datum/bomberman_spawn()
|
||||
var/datum/bomberman_spawn/sp10 = new()
|
||||
sp10.spawnpoint = T
|
||||
spawns += sp10
|
||||
|
||||
@@ -895,7 +908,7 @@ var/global/list/arenas = list()
|
||||
if(istype(T, /turf/simulated/floor/plating))
|
||||
if(prob(60))
|
||||
T = pencil.loc
|
||||
var/obj/structure/softwall/W = new /obj/structure/softwall(T)
|
||||
var/obj/structure/softwall/W = new(T)
|
||||
swalls += W
|
||||
if(opacity)
|
||||
W.opacity = 1
|
||||
@@ -907,6 +920,8 @@ var/global/list/arenas = list()
|
||||
pencil.y = y+h
|
||||
T = pencil.loc
|
||||
T.maptext = name
|
||||
T.maptext_width = 256
|
||||
T.maptext_y = 20
|
||||
|
||||
qdel(pencil) //RIP sweet prince
|
||||
|
||||
@@ -950,7 +965,7 @@ var/global/list/arenas = list()
|
||||
|
||||
/datum/bomberman_arena/proc/spawn_player(var/turf/T)
|
||||
//writepanic("[__FILE__].[__LINE__] ([src.type])([usr ? usr.ckey : ""]) \\/datum/bomberman_arena/proc/spawn_player() called tick#: [world.time]")
|
||||
var/mob/living/carbon/human/M = new/mob/living/carbon/human(T)
|
||||
var/mob/living/carbon/human/M = new(T)
|
||||
M.name = "Bomberman #[rand(1,999)]"
|
||||
M.real_name = M.name
|
||||
var/list/randomhexes = list(
|
||||
@@ -972,10 +987,10 @@ var/global/list/arenas = list()
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/under/darkblue(M), slot_w_uniform)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/shoes/purple(M), slot_shoes)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/bomberman(M), slot_head)
|
||||
var/obj/item/clothing/suit/space/bomberman/bombsuit = new /obj/item/clothing/suit/space/bomberman(M)
|
||||
var/obj/item/clothing/suit/space/bomberman/bombsuit = new(M)
|
||||
M.equip_to_slot_or_del(bombsuit, slot_wear_suit)
|
||||
M.equip_to_slot_or_del(new /obj/item/clothing/gloves/purple(M), slot_gloves)
|
||||
var/obj/item/weapon/bomberman/B = new/obj/item/weapon/bomberman(M)
|
||||
var/obj/item/weapon/bomberman/B = new(M)
|
||||
tools += B
|
||||
B.arena = src
|
||||
if(violence)
|
||||
@@ -991,47 +1006,86 @@ var/global/list/arenas = list()
|
||||
if(violence)
|
||||
C.armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
|
||||
/datum/bomberman_arena/proc/start(var/list/minds)
|
||||
/datum/bomberman_arena/proc/start()
|
||||
//writepanic("[__FILE__].[__LINE__] ([src.type])([usr ? usr.ckey : ""]) \\/datum/bomberman_arena/proc/start() called tick#: [world.time]")
|
||||
status = ARENA_INGAME
|
||||
|
||||
if(counting)
|
||||
counting = 0
|
||||
auto_start = 60
|
||||
for(var/obj/structure/planner/spawnpoint/S in arena)
|
||||
S.overlays.len = 0
|
||||
|
||||
for(var/obj/structure/planner/spawnpoint/P in planners)
|
||||
P.icon_state = "planner_ready"
|
||||
var/i=1
|
||||
|
||||
var/readied = 0
|
||||
for(var/datum/bomberman_spawn/S in spawns)
|
||||
if(!S.player_mind) continue
|
||||
var/datum/mind/p_mind = S.player_mind
|
||||
p_mind = minds[i]
|
||||
if(p_mind in ready_gladiators)
|
||||
ready_gladiators -= p_mind
|
||||
S.availability = 0
|
||||
S.icon.icon_state = "planner_ready"
|
||||
|
||||
if(!S.player_client)
|
||||
continue
|
||||
var/client/C = S.player_client
|
||||
|
||||
var/mob/client_mob = C.mob
|
||||
if(C in ready_gladiators)
|
||||
ready_gladiators -= C
|
||||
|
||||
if(!isobserver(client_mob))
|
||||
continue
|
||||
|
||||
var/mob/living/carbon/human/M = spawn_player(S.spawnpoint)
|
||||
dress_player(M)
|
||||
M.canmove = 0
|
||||
S.player = M
|
||||
var/mob/dead/observer/D = null
|
||||
for(var/mob/dead/observer/O in observers)
|
||||
if(O.ckey == p_mind.key)
|
||||
D = O
|
||||
if(!D) continue
|
||||
M.key = D.ckey
|
||||
players += M
|
||||
S.availability = 0
|
||||
M.stunned = 3
|
||||
M.ckey = C.ckey
|
||||
gladiators += M
|
||||
|
||||
if(S.player_mob)
|
||||
del(S.player_mob)
|
||||
|
||||
S.player_mob = M
|
||||
|
||||
if(S.player_mob.ckey)
|
||||
readied++
|
||||
|
||||
if(readied < min_number_of_players)
|
||||
status = ARENA_AVAILABLE
|
||||
|
||||
for(var/mob/M in arena)
|
||||
M << "<span class='danger'>Not enough players. Round canceled.</span>"
|
||||
|
||||
for(var/mob/M in gladiators)
|
||||
del(M)
|
||||
|
||||
gladiators = list()
|
||||
for (var/datum/bomberman_spawn/S in spawns)
|
||||
S.player_mob = null
|
||||
S.player_client = null
|
||||
S.availability = 1
|
||||
S.icon.icon_state = "planner"
|
||||
return
|
||||
|
||||
for(var/mob/M in arena)
|
||||
if(violence)
|
||||
S.player << "Violence Mode activated! Bombs hurt players! Suits offer no protections! Initial Flame Range increased!"
|
||||
if(S.player.client)
|
||||
S.player.client << sound('sound/bomberman/start.ogg')
|
||||
i++
|
||||
M << "Violence Mode activated! Bombs hurt players! Suits offer no protections! Initial Flame Range increased!"
|
||||
if(M.client)
|
||||
M.client << sound('sound/bomberman/start.ogg')
|
||||
M << "<b>READY?</b>"
|
||||
|
||||
for(var/obj/machinery/computer/security/telescreen/entertainment/E in machines)
|
||||
E.visible_message("\icon[E] \The [E] brightens as it appears that a round is starting in [name].")
|
||||
E.visible_message("<span style='color:grey'>\icon[E] \The [E] brightens as it appears that a round is starting in [name].</span>")
|
||||
flick("entertainment_arena",E)
|
||||
|
||||
for(var/mob/dead/observer/O in observers)
|
||||
O << "<b>A round has began in <A HREF='?src=\ref[O];jumptoarenacood=1;X=[center.x];Y=[center.y];Z=[center.z]'>[name]</A>!</b>"
|
||||
|
||||
sleep(40)
|
||||
for(var/datum/bomberman_spawn/S in spawns)
|
||||
if(S.player)
|
||||
S.player.canmove = 1
|
||||
|
||||
for(var/mob/M in arena)
|
||||
M << "<span class='danger'>GO!</span>"
|
||||
|
||||
return
|
||||
|
||||
/datum/bomberman_arena/proc/end()
|
||||
//writepanic("[__FILE__].[__LINE__] ([src.type])([usr ? usr.ckey : ""]) \\/datum/bomberman_arena/proc/end() called tick#: [world.time]")
|
||||
@@ -1043,53 +1097,53 @@ var/global/list/arenas = list()
|
||||
W.hurt_players = 1 //FINISH THEM!
|
||||
if(istype(W.loc, /mob/living))
|
||||
winner = W.loc
|
||||
for(var/mob/living/M in players)
|
||||
M << "[winner ? "[winner.key] as [winner.name] wins this round! " : ""]Resetting arena in 30 seconds."
|
||||
|
||||
if(winner.key in arena_leaderboard)
|
||||
arena_leaderboard[winner.key] = arena_leaderboard[winner.key] + 1
|
||||
else
|
||||
arena_leaderboard += winner.key
|
||||
arena_leaderboard[winner.key] = 1
|
||||
for(var/mob/M in arena)
|
||||
if(winner)
|
||||
M << "[winner ? "<b>[winner.key]</b> as <b>[winner.name]</b> wins this round! " : ""]Resetting arena in 20 seconds."
|
||||
else
|
||||
M << "Couldn't find a winner. Resetting arena in 20 seconds."
|
||||
|
||||
if(winner)
|
||||
if(winner.key in arena_leaderboard)
|
||||
arena_leaderboard[winner.key] = arena_leaderboard[winner.key] + 1
|
||||
else
|
||||
arena_leaderboard += winner.key
|
||||
arena_leaderboard[winner.key] = 1
|
||||
|
||||
arena_rounds++
|
||||
|
||||
sleep(300)
|
||||
sleep(200)
|
||||
reset()
|
||||
|
||||
|
||||
/datum/bomberman_arena/proc/reset(var/remove_players=1)
|
||||
/datum/bomberman_arena/proc/reset()
|
||||
//writepanic("[__FILE__].[__LINE__] ([src.type])([usr ? usr.ckey : ""]) \\/datum/bomberman_arena/proc/reset() called tick#: [world.time]")
|
||||
status = ARENA_SETUP
|
||||
|
||||
for(var/obj/structure/powerup/P in arena.contents)
|
||||
if(counting)
|
||||
counting = 0
|
||||
auto_start = 60
|
||||
for(var/obj/structure/planner/spawnpoint/S in arena)
|
||||
S.overlays.len = 0
|
||||
|
||||
for (var/datum/bomberman_spawn/S in spawns)
|
||||
S.availability = 0
|
||||
S.icon.icon_state = "planner_ready"
|
||||
|
||||
for(var/obj/structure/powerup/P in arena)
|
||||
qdel(P)
|
||||
|
||||
for(var/obj/item/clothing/C in arena.contents)
|
||||
for(var/obj/item/clothing/C in arena)
|
||||
qdel(C)
|
||||
|
||||
for(var/obj/structure/planner/spawnpoint/P in planners)
|
||||
P.icon_state = "planner"
|
||||
for(var/obj/item/weapon/organ/O in arena)//gibs
|
||||
qdel(O)
|
||||
|
||||
if(!remove_players)
|
||||
for(var/datum/bomberman_spawn/S in spawns)
|
||||
if(S.player_mind)
|
||||
if(S.player)
|
||||
S.player.revive(1)
|
||||
S.player.canmove = 0
|
||||
S.player.loc = S.spawnpoint
|
||||
else //if the player got gibbed
|
||||
var/mob/living/carbon/human/M = spawn_player(S.spawnpoint)
|
||||
var/datum/mind/p_mind = S.player_mind
|
||||
S.player = M
|
||||
dress_player(S.player)
|
||||
S.player.canmove = 0
|
||||
p_mind.transfer_to(S.player)
|
||||
else
|
||||
for(var/mob/living/M in players)
|
||||
if(M)
|
||||
del(M) //qdel doesn't work nicely with mobs
|
||||
players = list()
|
||||
for(var/mob/living/M in gladiators)
|
||||
if(M)
|
||||
del(M) //qdel doesn't work nicely with mobs
|
||||
gladiators = list()
|
||||
|
||||
for(var/obj/structure/softwall/W in swalls)
|
||||
qdel(W)
|
||||
@@ -1100,7 +1154,7 @@ var/global/list/arenas = list()
|
||||
tools = list()
|
||||
|
||||
|
||||
var/obj/structure/planner/pencil = new /obj/structure/planner(center, src)
|
||||
var/obj/structure/planner/pencil = new(center, src)
|
||||
var/w = 1
|
||||
var/h = 1
|
||||
switch(shape)
|
||||
@@ -1130,7 +1184,7 @@ var/global/list/arenas = list()
|
||||
if(istype(T, /turf/simulated/floor/plating))
|
||||
if(prob(60))
|
||||
T = pencil.loc
|
||||
var/obj/structure/softwall/W = new /obj/structure/softwall(T)
|
||||
var/obj/structure/softwall/W = new(T)
|
||||
swalls += W
|
||||
if(opacity)
|
||||
W.opacity = 1
|
||||
@@ -1144,17 +1198,14 @@ var/global/list/arenas = list()
|
||||
for (var/obj/structure/softwall/W in range(S.spawnpoint,1))
|
||||
swalls -= W
|
||||
qdel(W)
|
||||
|
||||
S.player = null
|
||||
S.player_mind = null
|
||||
if(S.player_client)
|
||||
ready_gladiators -= S.player_client
|
||||
S.player_mob = null
|
||||
S.player_client = null
|
||||
S.availability = 1
|
||||
S.icon.icon_state = "planner"
|
||||
|
||||
if(!remove_players)
|
||||
for(var/datum/bomberman_spawn/S in spawns)
|
||||
S.player.canmove = 1
|
||||
status = ARENA_INGAME
|
||||
else
|
||||
status = ARENA_AVAILABLE
|
||||
status = ARENA_AVAILABLE
|
||||
|
||||
/datum/bomberman_arena/proc/close(var/open_space=1)
|
||||
//writepanic("[__FILE__].[__LINE__] ([src.type])([usr ? usr.ckey : ""]) \\/datum/bomberman_arena/proc/close() called tick#: [world.time]")
|
||||
@@ -1174,10 +1225,23 @@ var/global/list/arenas = list()
|
||||
qdel(T)
|
||||
tools = list()
|
||||
|
||||
for(var/mob/living/M in players)
|
||||
for(var/mob/living/M in gladiators)
|
||||
if(M)
|
||||
del(M) //qdel doesn't work nicely with mobs
|
||||
players = list()
|
||||
gladiators = list()
|
||||
|
||||
for(var/obj/item/weapon/organ/O in arena)//gibs
|
||||
qdel(O)
|
||||
|
||||
for(var/obj/effect/decal/cleanable/C in arena)
|
||||
qdel(C)
|
||||
|
||||
for(var/datum/bomberman_spawn/S in arena)
|
||||
arena_spawnpoints -= S
|
||||
if(S.player_client)
|
||||
ready_gladiators -= S.player_client
|
||||
S.player_client = null
|
||||
S.player_mob = null
|
||||
|
||||
under.contents.Add(turfs)
|
||||
for(var/turf/T in turfs)
|
||||
@@ -1192,24 +1256,51 @@ var/global/list/arenas = list()
|
||||
arenas -= src
|
||||
return
|
||||
|
||||
/datum/bomberman_arena/proc/ready()
|
||||
//writepanic("[__FILE__].[__LINE__] ([src.type])([usr ? usr.ckey : ""]) \\/datum/bomberman_arena/proc/ready() called tick#: [world.time]")
|
||||
/datum/bomberman_arena/proc/update_ready()
|
||||
//writepanic("[__FILE__].[__LINE__] ([src.type])([usr ? usr.ckey : ""]) \\/datum/bomberman_arena/proc/update_ready() called tick#: [world.time]")
|
||||
var/list/ready = list()
|
||||
var/slots = 0
|
||||
for(var/datum/bomberman_spawn/S in spawns)
|
||||
slots++
|
||||
if(S.player_mind)
|
||||
ready += S.player_mind
|
||||
if(S.player_client)
|
||||
if(isobserver(S.player_client.mob))
|
||||
ready += S.player_client
|
||||
else
|
||||
S.icon.ghost_unsubscribe(S.player_client.mob)
|
||||
if(slots == ready.len)
|
||||
start(ready)
|
||||
else if(ready.len >= min_number_of_players)
|
||||
if(!counting)
|
||||
counting = 1
|
||||
spawn()
|
||||
countin()
|
||||
else if(counting)
|
||||
counting = 0
|
||||
auto_start = 60
|
||||
for(var/obj/structure/planner/spawnpoint/S in arena)
|
||||
S.overlays.len = 0
|
||||
|
||||
/datum/bomberman_arena/proc/countin()
|
||||
if(counting)
|
||||
auto_start--
|
||||
for(var/obj/structure/planner/spawnpoint/S in arena)
|
||||
S.update_overlay(auto_start)
|
||||
if(auto_start <= 0)
|
||||
counting = 0
|
||||
auto_start = 60
|
||||
for(var/obj/structure/planner/spawnpoint/S in arena)
|
||||
S.overlays.len = 0
|
||||
start()
|
||||
return
|
||||
sleep(10)
|
||||
countin()
|
||||
|
||||
/datum/bomberman_arena/proc/planner(var/size,mob/user)
|
||||
//writepanic("[__FILE__].[__LINE__] ([src.type])([usr ? usr.ckey : ""]) \\/datum/bomberman_arena/proc/planner() called tick#: [world.time]")
|
||||
var/choice = 0
|
||||
switch(size)
|
||||
if("15x13 (2 players)")
|
||||
var/obj/structure/planner/pencil = new /obj/structure/planner(center, src)
|
||||
var/obj/structure/planner/pencil = new(center, src)
|
||||
var/w = 14
|
||||
var/h = 12
|
||||
pencil.x -= (w/2)
|
||||
@@ -1221,7 +1312,7 @@ var/global/list/arenas = list()
|
||||
pencil.x = x
|
||||
while(pencil.x <= (x+w))
|
||||
T = pencil.loc
|
||||
var/obj/structure/planner/P = new /obj/structure/planner(T, src)
|
||||
var/obj/structure/planner/P = new(T, src)
|
||||
if(P.loc)
|
||||
planners += P
|
||||
pencil.x++
|
||||
@@ -1234,7 +1325,7 @@ var/global/list/arenas = list()
|
||||
|
||||
if("15x15 (4 players)")
|
||||
for(var/turf/T in range(center,7))
|
||||
var/obj/structure/planner/P = new /obj/structure/planner(T, src)
|
||||
var/obj/structure/planner/P = new(T, src)
|
||||
if(P.loc)
|
||||
planners += P
|
||||
if(planners.len == 225)
|
||||
@@ -1244,7 +1335,7 @@ var/global/list/arenas = list()
|
||||
else
|
||||
user << "<span class='warning'>Part of the arena was outside the Z-Level.</span>"
|
||||
if("39x23 (10 players)")
|
||||
var/obj/structure/planner/pencil = new /obj/structure/planner(center, src)
|
||||
var/obj/structure/planner/pencil = new(center, src)
|
||||
var/w = 38
|
||||
var/h = 22
|
||||
pencil.x -= (w/2)
|
||||
@@ -1256,7 +1347,7 @@ var/global/list/arenas = list()
|
||||
pencil.x = x
|
||||
while(pencil.x <= (x+w))
|
||||
T = pencil.loc
|
||||
var/obj/structure/planner/P = new /obj/structure/planner(T, src)
|
||||
var/obj/structure/planner/P = new(T, src)
|
||||
if(P.loc)
|
||||
planners += P
|
||||
pencil.x++
|
||||
@@ -1305,22 +1396,37 @@ var/global/list/arenas = list()
|
||||
/obj/structure/planner/spawnpoint/attack_ghost(mob/user)
|
||||
if(arena.status != ARENA_AVAILABLE) return
|
||||
|
||||
if(!user.mind) //Just an ugly hack that gives a propper blank mind to the mindless
|
||||
var/mob/living/carbon/human/M = new(user.loc)
|
||||
M.ckey = user.ckey
|
||||
qdel(M)
|
||||
return
|
||||
|
||||
if(spawnpoint.availability)
|
||||
if(!(user.mind in never_gladiators) && !(user.mind in ready_gladiators))
|
||||
spawnpoint.player_mind = user.mind
|
||||
ready_gladiators += user.mind
|
||||
spawnpoint.availability = 0
|
||||
icon_state = "planner_ready"
|
||||
arena.ready()
|
||||
if(!(user.client in never_gladiators) && !(user.client in ready_gladiators))
|
||||
ghost_subscribe(user)
|
||||
else
|
||||
if(spawnpoint.player_mind == user.mind)
|
||||
spawnpoint.player_mind = null
|
||||
ready_gladiators -= user.mind
|
||||
spawnpoint.availability = 1
|
||||
icon_state = "planner"
|
||||
if(spawnpoint.player_client == user.client)
|
||||
ghost_unsubscribe(user)
|
||||
|
||||
arena.update_ready()
|
||||
|
||||
/obj/structure/planner/spawnpoint/proc/ghost_subscribe(mob/user)
|
||||
spawnpoint.player_client = user.client
|
||||
ready_gladiators += user.client
|
||||
spawnpoint.availability = 0
|
||||
icon_state = "planner_ready"
|
||||
|
||||
/obj/structure/planner/spawnpoint/proc/ghost_unsubscribe(mob/user)
|
||||
spawnpoint.player_client = null
|
||||
ready_gladiators -= user.client
|
||||
spawnpoint.availability = 1
|
||||
icon_state = "planner"
|
||||
|
||||
/obj/structure/planner/spawnpoint/proc/update_overlay(var/currentcount)
|
||||
overlays.len = 0
|
||||
if(arena.counting)
|
||||
var/first = round(currentcount/10)
|
||||
var/second = currentcount%10
|
||||
var/image/I1 = new('icons/obj/centcomm_stuff.dmi',src,"[first]",30)
|
||||
var/image/I2 = new('icons/obj/centcomm_stuff.dmi',src,"[second]",30)
|
||||
I1.pixel_x += 10
|
||||
I2.pixel_x += 17
|
||||
I1.pixel_y -= 11
|
||||
I2.pixel_y -= 11
|
||||
overlays += I1
|
||||
overlays += I2
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 3.0 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 45 KiB |
@@ -8218,7 +8218,7 @@
|
||||
"dcb" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_l"},/turf/space,/area/syndicate_station/start)
|
||||
"dcc" = (/obj/machinery/door/airlock/external,/obj/structure/docking_port/destination/research/outpost{dir = 8},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/entry)
|
||||
"dcd" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_r"},/turf/space,/area/syndicate_station/start)
|
||||
"dce" = (/obj/machinery/camera{pixel_x = 10; network = list("thunder"); c_tag = "Arena"},/turf/simulated/floor/bluegrid,/area/tdome)
|
||||
"dce" = (/obj/machinery/camera/arena{pixel_x = 10; network = list("thunder"); c_tag = "Arena"},/turf/simulated/floor/bluegrid,/area/tdome)
|
||||
"dcf" = (/obj/machinery/door/airlock/external{name = "Mining Shuttle Airlock"; req_access_txt = "48"},/obj/structure/docking_port/destination/mining/outpost{dir = 8},/turf/simulated/floor/plating,/area/mine/living_quarters)
|
||||
"dcg" = (/obj/structure/docking_port/destination/syndicate/start,/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/area/syndicate_mothership)
|
||||
"dch" = (/obj/machinery/door/poddoor{density = 0; opacity = 0; icon_state = "pdoor0"; id_tag = "thunderdomegen"; name = "General Supply"},/turf/unsimulated/floor{icon_state = "floor"},/area/tdome)
|
||||
|
||||
@@ -7597,7 +7597,7 @@
|
||||
"cQe" = (/obj/machinery/flasher{id = "flash"; name = "Thunderdome Flash"},/turf/simulated/floor/bluegrid,/area/tdome)
|
||||
"cQf" = (/obj/machinery/camera{c_tag = "Green Team"; network = "Thunderdome"; pixel_x = 12; pixel_y = -10},/obj/effect/landmark{name = "tdome1"},/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome2)
|
||||
"cQg" = (/obj/machinery/atmospherics/pipe/vent,/turf/simulated/floor/bluegrid,/area/tdome)
|
||||
"cQh" = (/obj/machinery/camera{c_tag = "Arena"; network = "Thunderdome"; pixel_x = 10},/turf/simulated/floor/bluegrid,/area/tdome)
|
||||
"cQh" = (/obj/machinery/camera/arena{c_tag = "Arena"; network = "Thunderdome"; pixel_x = 10},/turf/simulated/floor/bluegrid,/area/tdome)
|
||||
"cQi" = (/obj/machinery/atmospherics/pipe/simple{dir = 5; icon_state = "intact"; level = 2},/turf/simulated/floor,/area/tdome)
|
||||
"cQj" = (/obj/machinery/atmospherics/pipe/manifold{dir = 1; icon_state = "manifold"; level = 2},/turf/simulated/floor,/area/tdome)
|
||||
"cQk" = (/obj/machinery/atmospherics/pipe/simple{dir = 9; icon_state = "intact"; level = 2},/turf/simulated/floor,/area/tdome)
|
||||
|
||||
@@ -9247,7 +9247,7 @@
|
||||
"dvQ" = (/obj/machinery/flasher{id_tag = "flash"; name = "Thunderdome Flash"},/turf/simulated/floor/bluegrid,/area/tdome)
|
||||
"dvR" = (/obj/machinery/camera{pixel_x = 12; pixel_y = -10; network = list("thunder"); c_tag = "Green Team"},/obj/effect/landmark{name = "tdome1"},/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome1)
|
||||
"dvS" = (/obj/machinery/atmospherics/unary/vent,/turf/simulated/floor/bluegrid,/area/tdome)
|
||||
"dvT" = (/obj/machinery/camera{pixel_x = 10; network = list("thunder"); c_tag = "Arena"},/turf/simulated/floor/bluegrid,/area/tdome)
|
||||
"dvT" = (/obj/machinery/camera/arena{pixel_x = 10; network = list("thunder"); c_tag = "Arena"},/turf/simulated/floor/bluegrid,/area/tdome)
|
||||
"dvU" = (/obj/machinery/atmospherics/pipe/simple/general/visible{dir = 5},/turf/simulated/floor,/area/tdome)
|
||||
"dvV" = (/obj/machinery/atmospherics/pipe/manifold/general/visible{dir = 1},/turf/simulated/floor,/area/tdome)
|
||||
"dvW" = (/obj/machinery/atmospherics/pipe/simple/general/visible{dir = 9},/turf/simulated/floor,/area/tdome)
|
||||
|
||||
@@ -2090,7 +2090,7 @@
|
||||
"Oj" = (/obj/structure/table/woodentable,/obj/item/weapon/dice/d20,/obj/item/weapon/dice,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station)
|
||||
"Ok" = (/obj/structure/rack,/obj/item/clothing/suit/wizrobe/marisa,/obj/item/clothing/shoes/sandal/marisa,/obj/item/clothing/head/wizard/marisa,/obj/item/weapon/staff/broom,/turf/unsimulated/floor{icon_state = "grimy"},/area/wizard_station)
|
||||
"Ol" = (/obj/structure/rack,/obj/item/clothing/suit/wizrobe/magusblue,/obj/item/clothing/head/wizard/magus,/obj/item/weapon/staff,/turf/unsimulated/floor{icon_state = "grimy"},/area/wizard_station)
|
||||
"Om" = (/obj/machinery/camera{pixel_x = 10; network = list("thunder"); c_tag = "Arena"},/turf/simulated/floor/bluegrid,/area/tdome)
|
||||
"Om" = (/obj/machinery/camera/arena{pixel_x = 10; network = list("thunder"); c_tag = "Arena"},/turf/simulated/floor/bluegrid,/area/tdome)
|
||||
"On" = (/obj/structure/closet/crate/internals,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start)
|
||||
"Oo" = (/obj/structure/closet/crate/medical,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start)
|
||||
"Op" = (/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/plating,/area/syndicate_station/start)
|
||||
|
||||
@@ -4208,7 +4208,7 @@
|
||||
"bCV" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_l"},/turf/space,/area/syndicate_station/start)
|
||||
"bCW" = (/obj/structure/bed/chair{dir = 4},/obj/machinery/light{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate_elite/mothership)
|
||||
"bCX" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_r"},/turf/space,/area/syndicate_station/start)
|
||||
"bCY" = (/obj/machinery/camera{pixel_x = 10; network = list("thunder"); c_tag = "Arena"},/turf/simulated/floor/bluegrid,/area/tdome)
|
||||
"bCY" = (/obj/machinery/camera/arena{pixel_x = 10; network = list("thunder"); c_tag = "Arena"},/turf/simulated/floor/bluegrid,/area/tdome)
|
||||
"bCZ" = (/obj/machinery/door/poddoor{id_tag = "thunderdomegen"; name = "General Supply"},/turf/unsimulated/floor{icon_state = "floor"},/area/tdome)
|
||||
"bDa" = (/turf/unsimulated/wall{icon_state = "plasma5"},/area/alien)
|
||||
"bDb" = (/obj/machinery/door/poddoor{id_tag = "thunderdomehea"; name = "Heavy Supply"},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome)
|
||||
|
||||
@@ -8784,7 +8784,7 @@
|
||||
"dmV" = (/obj/machinery/flasher{id_tag = "flash"; name = "Thunderdome Flash"},/turf/simulated/floor/bluegrid,/area/tdome)
|
||||
"dmW" = (/obj/machinery/camera{pixel_x = 12; pixel_y = -10; network = list("thunder"); c_tag = "Green Team"},/obj/effect/landmark{name = "tdome1"},/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome1)
|
||||
"dmX" = (/obj/machinery/atmospherics/unary/vent,/turf/simulated/floor/bluegrid,/area/tdome)
|
||||
"dmY" = (/obj/machinery/camera{pixel_x = 10; network = list("thunder"); c_tag = "Arena"},/turf/simulated/floor/bluegrid,/area/tdome)
|
||||
"dmY" = (/obj/machinery/camera/arena{pixel_x = 10; network = list("thunder"); c_tag = "Arena"},/turf/simulated/floor/bluegrid,/area/tdome)
|
||||
"dmZ" = (/obj/machinery/atmospherics/pipe/simple/general/visible{dir = 5},/turf/simulated/floor,/area/tdome)
|
||||
"dna" = (/obj/machinery/atmospherics/pipe/manifold/general/visible{dir = 1},/turf/simulated/floor,/area/tdome)
|
||||
"dnb" = (/obj/machinery/atmospherics/pipe/simple/general/visible{dir = 9},/turf/simulated/floor,/area/tdome)
|
||||
|
||||
@@ -7254,7 +7254,7 @@
|
||||
"cJz" = (/obj/structure/table/reinforced,/obj/item/weapon/clipboard,/obj/item/weapon/stamp,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac)
|
||||
"cJA" = (/turf/space,/area/shuttle/escape_pod5/centcom)
|
||||
"cJB" = (/obj/machinery/atmospherics/pipe/vent,/turf/simulated/floor/bluegrid,/area/tdome)
|
||||
"cJC" = (/obj/machinery/camera{pixel_x = 10; network = list("thunder"); c_tag = "Arena"},/turf/simulated/floor/bluegrid,/area/tdome)
|
||||
"cJC" = (/obj/machinery/camera/arena{pixel_x = 10; network = list("thunder"); c_tag = "Arena"},/turf/simulated/floor/bluegrid,/area/tdome)
|
||||
"cJD" = (/obj/machinery/computer/secure_data,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac)
|
||||
"cJE" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/centcom/evac)
|
||||
"cJF" = (/turf/unsimulated/wall,/area/syndicate_mothership)
|
||||
|
||||
Reference in New Issue
Block a user