Polaris Sync Merge
Fixed Polaris merge conflicts * Space controller merge conflict
@@ -180,7 +180,8 @@ Class Procs:
|
|||||||
air_master.mark_zone_update(B)
|
air_master.mark_zone_update(B)
|
||||||
|
|
||||||
/connection_edge/zone/recheck()
|
/connection_edge/zone/recheck()
|
||||||
if(!A.air.compare(B.air))
|
// Edges with only one side being vacuum need processing no matter how close.
|
||||||
|
if(!A.air.compare(B.air, vacuum_exception = 1))
|
||||||
air_master.mark_edge_active(src)
|
air_master.mark_edge_active(src)
|
||||||
|
|
||||||
//Helper proc to get connections for a zone.
|
//Helper proc to get connections for a zone.
|
||||||
@@ -235,7 +236,10 @@ Class Procs:
|
|||||||
air_master.mark_zone_update(A)
|
air_master.mark_zone_update(A)
|
||||||
|
|
||||||
/connection_edge/unsimulated/recheck()
|
/connection_edge/unsimulated/recheck()
|
||||||
if(!A.air.compare(air))
|
// Edges with only one side being vacuum need processing no matter how close.
|
||||||
|
// Note: This handles the glaring flaw of a room holding pressure while exposed to space, but
|
||||||
|
// does not specially handle the less common case of a simulated room exposed to an unsimulated pressurized turf.
|
||||||
|
if(!A.air.compare(air, vacuum_exception = 1))
|
||||||
air_master.mark_edge_active(src)
|
air_master.mark_edge_active(src)
|
||||||
|
|
||||||
proc/ShareHeat(datum/gas_mixture/A, datum/gas_mixture/B, connecting_tiles)
|
proc/ShareHeat(datum/gas_mixture/A, datum/gas_mixture/B, connecting_tiles)
|
||||||
|
|||||||
@@ -84,6 +84,8 @@ var/global/datum/emergency_shuttle_controller/emergency_shuttle
|
|||||||
if(istype(A, /area/hallway))
|
if(istype(A, /area/hallway))
|
||||||
A.readyalert()
|
A.readyalert()
|
||||||
|
|
||||||
|
atc.reroute_traffic(yes = 1)
|
||||||
|
|
||||||
//calls the shuttle for a routine crew transfer
|
//calls the shuttle for a routine crew transfer
|
||||||
/datum/emergency_shuttle_controller/proc/call_transfer()
|
/datum/emergency_shuttle_controller/proc/call_transfer()
|
||||||
if(!can_call()) return
|
if(!can_call()) return
|
||||||
@@ -98,7 +100,7 @@ var/global/datum/emergency_shuttle_controller/emergency_shuttle
|
|||||||
shuttle.move_time = SHUTTLE_TRANSIT_DURATION
|
shuttle.move_time = SHUTTLE_TRANSIT_DURATION
|
||||||
|
|
||||||
priority_announcement.Announce(replacetext(replacetext(using_map.shuttle_called_message, "%dock_name%", "[using_map.dock_name]"), "%ETA%", "[estimated_time] minute\s"))
|
priority_announcement.Announce(replacetext(replacetext(using_map.shuttle_called_message, "%dock_name%", "[using_map.dock_name]"), "%ETA%", "[estimated_time] minute\s"))
|
||||||
atc.shift_ending() //VOREStation Add
|
atc.shift_ending()
|
||||||
|
|
||||||
//recalls the shuttle
|
//recalls the shuttle
|
||||||
/datum/emergency_shuttle_controller/proc/recall()
|
/datum/emergency_shuttle_controller/proc/recall()
|
||||||
|
|||||||
@@ -95,11 +95,15 @@
|
|||||||
|
|
||||||
changeling.chem_charges -= 20
|
changeling.chem_charges -= 20
|
||||||
|
|
||||||
var/range_heavy = 2
|
var/range_heavy = 1
|
||||||
var/range_light = 5
|
var/range_med = 2
|
||||||
|
var/range_light = 4
|
||||||
|
var/range_long = 6
|
||||||
if(src.mind.changeling.recursive_enhancement)
|
if(src.mind.changeling.recursive_enhancement)
|
||||||
range_heavy = range_heavy * 2
|
range_heavy = range_heavy * 2
|
||||||
|
range_med = range_med * 2
|
||||||
range_light = range_light * 2
|
range_light = range_light * 2
|
||||||
|
range_long = range_long * 2
|
||||||
src << "<span class='notice'>We are extra loud.</span>"
|
src << "<span class='notice'>We are extra loud.</span>"
|
||||||
src.mind.changeling.recursive_enhancement = 0
|
src.mind.changeling.recursive_enhancement = 0
|
||||||
|
|
||||||
|
|||||||
@@ -231,7 +231,7 @@ var/list/sacrificed = list()
|
|||||||
if(T)
|
if(T)
|
||||||
T.hotspot_expose(700,125)
|
T.hotspot_expose(700,125)
|
||||||
var/rune = src // detaching the proc - in theory
|
var/rune = src // detaching the proc - in theory
|
||||||
empulse(U, (range_red - 2), range_red)
|
empulse(U, (range_red - 3), (range_red - 2), (range_red - 1), range_red)
|
||||||
qdel(rune)
|
qdel(rune)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|||||||
@@ -254,7 +254,7 @@
|
|||||||
..()
|
..()
|
||||||
// Best case scenario: Comparable to a low-yield EMP grenade.
|
// Best case scenario: Comparable to a low-yield EMP grenade.
|
||||||
// Worst case scenario: Comparable to a standard yield EMP grenade.
|
// Worst case scenario: Comparable to a standard yield EMP grenade.
|
||||||
empulse(src, rand(2, 4), rand(4, 10))
|
empulse(src, rand(1, 3), rand(2, 4), rand(3, 7), rand(5, 10))
|
||||||
|
|
||||||
//Station buster Tunguska
|
//Station buster Tunguska
|
||||||
/obj/effect/meteor/tunguska
|
/obj/effect/meteor/tunguska
|
||||||
|
|||||||
@@ -126,7 +126,7 @@
|
|||||||
safe_blink(src, range = 6)
|
safe_blink(src, range = 6)
|
||||||
src << "<span class='warning'>You're teleported against your will!</span>"
|
src << "<span class='warning'>You're teleported against your will!</span>"
|
||||||
if(4)
|
if(4)
|
||||||
emp_act(2)
|
emp_act(3)
|
||||||
|
|
||||||
if(51 to 100) //Severe
|
if(51 to 100) //Severe
|
||||||
rng = rand(0,3)
|
rng = rand(0,3)
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
..()
|
..()
|
||||||
|
|
||||||
/obj/item/weapon/spell/spawner/pulsar/on_throw_cast(atom/hit_atom, mob/user)
|
/obj/item/weapon/spell/spawner/pulsar/on_throw_cast(atom/hit_atom, mob/user)
|
||||||
empulse(hit_atom, 1, 1, log=1)
|
empulse(hit_atom, 1, 1, 1, 1, log=1)
|
||||||
|
|
||||||
/obj/effect/temporary_effect/pulsar
|
/obj/effect/temporary_effect/pulsar
|
||||||
name = "pulsar"
|
name = "pulsar"
|
||||||
@@ -44,7 +44,7 @@
|
|||||||
/obj/effect/temporary_effect/pulsar/proc/pulse_loop()
|
/obj/effect/temporary_effect/pulsar/proc/pulse_loop()
|
||||||
while(pulses_remaining)
|
while(pulses_remaining)
|
||||||
sleep(2 SECONDS)
|
sleep(2 SECONDS)
|
||||||
empulse(src, heavy_range = 1, light_range = 2, log = 1)
|
empulse(src, 1, 1, 2, 2, log = 1)
|
||||||
pulses_remaining--
|
pulses_remaining--
|
||||||
qdel(src)
|
qdel(src)
|
||||||
|
|
||||||
|
|||||||
@@ -66,7 +66,11 @@
|
|||||||
if(1)
|
if(1)
|
||||||
num_of_prizes = rand(1,4)
|
num_of_prizes = rand(1,4)
|
||||||
if(2)
|
if(2)
|
||||||
|
num_of_prizes = rand(1,3)
|
||||||
|
if(3)
|
||||||
num_of_prizes = rand(0,2)
|
num_of_prizes = rand(0,2)
|
||||||
|
if(4)
|
||||||
|
num_of_prizes = rand(0,1)
|
||||||
for(num_of_prizes; num_of_prizes > 0; num_of_prizes--)
|
for(num_of_prizes; num_of_prizes > 0; num_of_prizes--)
|
||||||
empprize = pickweight(prizes)
|
empprize = pickweight(prizes)
|
||||||
new empprize(src.loc)
|
new empprize(src.loc)
|
||||||
|
|||||||
@@ -34,13 +34,15 @@
|
|||||||
var/status_display_freq = "1435"
|
var/status_display_freq = "1435"
|
||||||
var/stat_msg1
|
var/stat_msg1
|
||||||
var/stat_msg2
|
var/stat_msg2
|
||||||
var/datum/lore/atc_controller/ATC //VOREStation Add
|
|
||||||
|
var/datum/lore/atc_controller/ATC
|
||||||
var/datum/announcement/priority/crew_announcement = new
|
var/datum/announcement/priority/crew_announcement = new
|
||||||
|
|
||||||
/obj/machinery/computer/communications/New()
|
/obj/machinery/computer/communications/New()
|
||||||
..()
|
..()
|
||||||
|
ATC = atc
|
||||||
crew_announcement.newscast = 1
|
crew_announcement.newscast = 1
|
||||||
ATC = atc //VOREStation Add
|
|
||||||
/obj/machinery/computer/communications/process()
|
/obj/machinery/computer/communications/process()
|
||||||
if(..())
|
if(..())
|
||||||
if(state != STATE_STATUSDISPLAY)
|
if(state != STATE_STATUSDISPLAY)
|
||||||
@@ -130,10 +132,8 @@
|
|||||||
if("messagelist")
|
if("messagelist")
|
||||||
src.currmsg = 0
|
src.currmsg = 0
|
||||||
src.state = STATE_MESSAGELIST
|
src.state = STATE_MESSAGELIST
|
||||||
//VOREStation Add for ATC stuff
|
|
||||||
if("toggleatc")
|
if("toggleatc")
|
||||||
src.ATC.squelched = !src.ATC.squelched
|
src.ATC.squelched = !src.ATC.squelched
|
||||||
//VOREStation Add End
|
|
||||||
if("viewmessage")
|
if("viewmessage")
|
||||||
src.state = STATE_VIEWMESSAGE
|
src.state = STATE_VIEWMESSAGE
|
||||||
if (!src.currmsg)
|
if (!src.currmsg)
|
||||||
@@ -315,7 +315,7 @@
|
|||||||
else
|
else
|
||||||
dat += "<BR>\[ <A HREF='?src=\ref[src];operation=login'>Log In</A> \]"
|
dat += "<BR>\[ <A HREF='?src=\ref[src];operation=login'>Log In</A> \]"
|
||||||
dat += "<BR>\[ <A HREF='?src=\ref[src];operation=messagelist'>Message List</A> \]"
|
dat += "<BR>\[ <A HREF='?src=\ref[src];operation=messagelist'>Message List</A> \]"
|
||||||
dat += "<BR>\[ <A HREF='?src=\ref[src];operation=toggleatc'>[ATC.squelched ? "Enable" : "Disable"] ATC Relay</A> \]" //VOREStation Add
|
dat += "<BR>\[ <A HREF='?src=\ref[src];operation=toggleatc'>[ATC.squelched ? "Enable" : "Disable"] ATC Relay</A> \]"
|
||||||
if(STATE_CALLSHUTTLE)
|
if(STATE_CALLSHUTTLE)
|
||||||
dat += "Are you sure you want to call the shuttle? \[ <A HREF='?src=\ref[src];operation=callshuttle2'>OK</A> | <A HREF='?src=\ref[src];operation=main'>Cancel</A> \]"
|
dat += "Are you sure you want to call the shuttle? \[ <A HREF='?src=\ref[src];operation=callshuttle2'>OK</A> | <A HREF='?src=\ref[src];operation=main'>Cancel</A> \]"
|
||||||
if(STATE_CANCELSHUTTLE)
|
if(STATE_CANCELSHUTTLE)
|
||||||
@@ -379,7 +379,7 @@
|
|||||||
dat += "<BR>\[ <A HREF='?src=\ref[src];operation=ai-callshuttle'>Call Emergency Shuttle</A> \]"
|
dat += "<BR>\[ <A HREF='?src=\ref[src];operation=ai-callshuttle'>Call Emergency Shuttle</A> \]"
|
||||||
dat += "<BR>\[ <A HREF='?src=\ref[src];operation=ai-messagelist'>Message List</A> \]"
|
dat += "<BR>\[ <A HREF='?src=\ref[src];operation=ai-messagelist'>Message List</A> \]"
|
||||||
dat += "<BR>\[ <A HREF='?src=\ref[src];operation=ai-status'>Set Status Display</A> \]"
|
dat += "<BR>\[ <A HREF='?src=\ref[src];operation=ai-status'>Set Status Display</A> \]"
|
||||||
dat += "<BR>\[ <A HREF='?src=\ref[src];operation=toggleatc'>[ATC.squelched ? "Enable" : "Disable"] ATC Relay</A> \]" //VOREStation Add
|
dat += "<BR>\[ <A HREF='?src=\ref[src];operation=toggleatc'>[ATC.squelched ? "Enable" : "Disable"] ATC Relay</A> \]"
|
||||||
if(STATE_CALLSHUTTLE)
|
if(STATE_CALLSHUTTLE)
|
||||||
dat += "Are you sure you want to call the shuttle? \[ <A HREF='?src=\ref[src];operation=ai-callshuttle2'>OK</A> | <A HREF='?src=\ref[src];operation=ai-main'>Cancel</A> \]"
|
dat += "Are you sure you want to call the shuttle? \[ <A HREF='?src=\ref[src];operation=ai-callshuttle2'>OK</A> | <A HREF='?src=\ref[src];operation=ai-main'>Cancel</A> \]"
|
||||||
if(STATE_MESSAGELIST)
|
if(STATE_MESSAGELIST)
|
||||||
|
|||||||
@@ -441,7 +441,7 @@ var/list/turret_icons
|
|||||||
else
|
else
|
||||||
take_damage(initial(health) * 8) //should instakill most turrets
|
take_damage(initial(health) * 8) //should instakill most turrets
|
||||||
if(3)
|
if(3)
|
||||||
take_damage(initial(health) * 8 / 3)
|
take_damage(initial(health) * 8 / 3) //Level 4 is too weak to bother turrets
|
||||||
|
|
||||||
/obj/machinery/porta_turret/proc/die() //called when the turret dies, ie, health <= 0
|
/obj/machinery/porta_turret/proc/die() //called when the turret dies, ie, health <= 0
|
||||||
health = 0
|
health = 0
|
||||||
|
|||||||
@@ -105,7 +105,7 @@
|
|||||||
proc/shock()
|
proc/shock()
|
||||||
var/obj/mecha/M = in_mecha()
|
var/obj/mecha/M = in_mecha()
|
||||||
if(M)
|
if(M)
|
||||||
M.emp_act(2)
|
M.emp_act(4)
|
||||||
qdel(src)
|
qdel(src)
|
||||||
|
|
||||||
proc/get_mecha_log()
|
proc/get_mecha_log()
|
||||||
|
|||||||
@@ -4,17 +4,17 @@
|
|||||||
|
|
||||||
// #define EMPDEBUG 10
|
// #define EMPDEBUG 10
|
||||||
|
|
||||||
proc/empulse(turf/epicenter, heavy_range, light_range, log=0)
|
proc/empulse(turf/epicenter, first_range, second_range, third_range, fourth_range, log=0)
|
||||||
if(!epicenter) return
|
if(!epicenter) return
|
||||||
|
|
||||||
if(!istype(epicenter, /turf))
|
if(!istype(epicenter, /turf))
|
||||||
epicenter = get_turf(epicenter.loc)
|
epicenter = get_turf(epicenter.loc)
|
||||||
|
|
||||||
if(log)
|
if(log)
|
||||||
message_admins("EMP with size ([heavy_range], [light_range]) in area [epicenter.loc.name] ")
|
message_admins("EMP with size ([first_range], [second_range], [third_range], [fourth_range]) in area [epicenter.loc.name] ")
|
||||||
log_game("EMP with size ([heavy_range], [light_range]) in area [epicenter.loc.name] ")
|
log_game("EMP with size ([first_range], [second_range], [third_range], [fourth_range]) in area [epicenter.loc.name] ")
|
||||||
|
|
||||||
if(heavy_range > 1)
|
if(first_range > 1)
|
||||||
var/obj/effect/overlay/pulse = PoolOrNew(/obj/effect/overlay, epicenter)
|
var/obj/effect/overlay/pulse = PoolOrNew(/obj/effect/overlay, epicenter)
|
||||||
pulse.icon = 'icons/effects/effects.dmi'
|
pulse.icon = 'icons/effects/effects.dmi'
|
||||||
pulse.icon_state = "emppulse"
|
pulse.icon_state = "emppulse"
|
||||||
@@ -23,28 +23,50 @@ proc/empulse(turf/epicenter, heavy_range, light_range, log=0)
|
|||||||
spawn(20)
|
spawn(20)
|
||||||
qdel(pulse)
|
qdel(pulse)
|
||||||
|
|
||||||
if(heavy_range > light_range)
|
if(first_range > second_range)
|
||||||
light_range = heavy_range
|
second_range = first_range
|
||||||
|
if(second_range > third_range)
|
||||||
|
third_range = second_range
|
||||||
|
if(third_range > fourth_range)
|
||||||
|
fourth_range = third_range
|
||||||
|
|
||||||
for(var/mob/M in range(heavy_range, epicenter))
|
for(var/mob/M in range(first_range, epicenter))
|
||||||
M << 'sound/effects/EMPulse.ogg'
|
M << 'sound/effects/EMPulse.ogg'
|
||||||
|
|
||||||
for(var/atom/T in range(light_range, epicenter))
|
for(var/atom/T in range(fourth_range, epicenter))
|
||||||
#ifdef EMPDEBUG
|
#ifdef EMPDEBUG
|
||||||
var/time = world.timeofday
|
var/time = world.timeofday
|
||||||
#endif
|
#endif
|
||||||
var/distance = get_dist(epicenter, T)
|
var/distance = get_dist(epicenter, T)
|
||||||
if(distance < 0)
|
if(distance < 0)
|
||||||
distance = 0
|
distance = 0
|
||||||
if(distance < heavy_range)
|
//Worst effects, really hurts
|
||||||
|
if(distance < first_range)
|
||||||
T.emp_act(1)
|
T.emp_act(1)
|
||||||
else if(distance == heavy_range)
|
else if(distance == first_range)
|
||||||
if(prob(50))
|
if(prob(50))
|
||||||
T.emp_act(1)
|
T.emp_act(1)
|
||||||
else
|
else
|
||||||
T.emp_act(2)
|
T.emp_act(2)
|
||||||
else if(distance <= light_range)
|
//Slightly less painful
|
||||||
|
else if(distance <= second_range)
|
||||||
T.emp_act(2)
|
T.emp_act(2)
|
||||||
|
else if(distance == second_range)
|
||||||
|
if(prob(50))
|
||||||
|
T.emp_act(2)
|
||||||
|
else
|
||||||
|
T.emp_act(3)
|
||||||
|
//Even less slightly less painful
|
||||||
|
else if(distance <= third_range)
|
||||||
|
T.emp_act(3)
|
||||||
|
else if(distance == third_range)
|
||||||
|
if(prob(50))
|
||||||
|
T.emp_act(2)
|
||||||
|
else
|
||||||
|
T.emp_act(3)
|
||||||
|
//This should be more or less harmless
|
||||||
|
else if(distance <= fourth_range)
|
||||||
|
T.emp_act(4)
|
||||||
#ifdef EMPDEBUG
|
#ifdef EMPDEBUG
|
||||||
if((world.timeofday - time) >= EMPDEBUG)
|
if((world.timeofday - time) >= EMPDEBUG)
|
||||||
log_and_message_admins("EMPDEBUG: [T.name] - [T.type] - took [world.timeofday - time]ds to process emp_act()!")
|
log_and_message_admins("EMPDEBUG: [T.name] - [T.type] - took [world.timeofday - time]ds to process emp_act()!")
|
||||||
|
|||||||
@@ -998,7 +998,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
|||||||
M.apply_damage( rand(30,60) , BURN)
|
M.apply_damage( rand(30,60) , BURN)
|
||||||
message += "You feel a searing heat! Your [P] is burning!"
|
message += "You feel a searing heat! Your [P] is burning!"
|
||||||
if(i>=20 && i<=25) //EMP
|
if(i>=20 && i<=25) //EMP
|
||||||
empulse(P.loc, 3, 6, 1)
|
empulse(P.loc, 1, 2, 4, 6, 1)
|
||||||
message += "Your [P] emits a wave of electromagnetic energy!"
|
message += "Your [P] emits a wave of electromagnetic energy!"
|
||||||
if(i>=25 && i<=40) //Smoke
|
if(i>=25 && i<=40) //Smoke
|
||||||
var/datum/effect/effect/system/smoke_spread/chem/S = new /datum/effect/effect/system/smoke_spread/chem
|
var/datum/effect/effect/system/smoke_spread/chem/S = new /datum/effect/effect/system/smoke_spread/chem
|
||||||
|
|||||||
79
code/game/objects/items/devices/translator.dm
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
//Universal translator
|
||||||
|
/obj/item/device/universal_translator
|
||||||
|
name = "handheld translator"
|
||||||
|
desc = "This handy device appears to translate the languages it hears into onscreen text for a user."
|
||||||
|
icon = 'icons/obj/device.dmi'
|
||||||
|
icon_state = "translator"
|
||||||
|
w_class = ITEMSIZE_SMALL
|
||||||
|
origin_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 3)
|
||||||
|
var/mult_icons = 1 //Changes sprite when it translates
|
||||||
|
var/visual = 1 //If you need to see to get the message
|
||||||
|
var/audio = 0 //If you need to hear to get the message
|
||||||
|
var/listening = 0
|
||||||
|
var/datum/language/langset
|
||||||
|
|
||||||
|
/obj/item/device/universal_translator/attack_self(mob/user)
|
||||||
|
if(!listening) //Turning ON
|
||||||
|
langset = input(user,"Translate to which of your languages?","Language Selection") as null|anything in user.languages
|
||||||
|
if(langset)
|
||||||
|
if(langset && ((langset.flags & NONVERBAL) || (langset.flags & HIVEMIND)))
|
||||||
|
to_chat(user, "<span class='warning'>\The [src] cannot output that language.</span>")
|
||||||
|
return
|
||||||
|
else
|
||||||
|
listening = 1
|
||||||
|
listening_objects |= src
|
||||||
|
if(mult_icons)
|
||||||
|
icon_state = "[initial(icon_state)]1"
|
||||||
|
to_chat(user, "<span class='notice'>You enable \the [src], translating into [langset.name].</span>")
|
||||||
|
else //Turning OFF
|
||||||
|
listening = 0
|
||||||
|
listening_objects -= src
|
||||||
|
langset = null
|
||||||
|
icon_state = "[initial(icon_state)]"
|
||||||
|
to_chat(user, "<span class='notice'>You disable \the [src].</span>")
|
||||||
|
|
||||||
|
/obj/item/device/universal_translator/hear_talk(var/mob/speaker, var/message, var/vrb, var/datum/language/language)
|
||||||
|
if(!listening || !istype(speaker))
|
||||||
|
return
|
||||||
|
|
||||||
|
//Show the "I heard something" animation.
|
||||||
|
if(mult_icons)
|
||||||
|
flick("[initial(icon_state)]2",src)
|
||||||
|
|
||||||
|
//Handheld or pocket only.
|
||||||
|
if(!isliving(loc))
|
||||||
|
return
|
||||||
|
|
||||||
|
var/mob/living/L = loc
|
||||||
|
|
||||||
|
if (language && (language.flags & NONVERBAL))
|
||||||
|
return //Not gonna translate sign language
|
||||||
|
|
||||||
|
if (visual && ((L.sdisabilities & BLIND) || L.eye_blind))
|
||||||
|
return //Can't see the screen, don't get the message
|
||||||
|
|
||||||
|
if (audio && ((L.sdisabilities & DEAF) || L.ear_deaf))
|
||||||
|
return //Can't hear the translation, don't get the message
|
||||||
|
|
||||||
|
//Only translate if they can't understand, otherwise pointlessly spammy
|
||||||
|
//I'll just assume they don't look at the screen in that case
|
||||||
|
|
||||||
|
//They don't understand the spoken language we're translating FROM
|
||||||
|
if(!L.say_understands(speaker,language))
|
||||||
|
//They understand the output language
|
||||||
|
if(L.say_understands(null,langset))
|
||||||
|
to_chat(L, "<i><b>[src]</b> translates, </i>\"<span class='[langset.colour]'>[message]</span>\"")
|
||||||
|
|
||||||
|
//They don't understand the output language
|
||||||
|
else
|
||||||
|
to_chat(L, "<i><b>[src]</b> translates, </i>\"<span class='[langset.colour]'>[langset.scramble(message)]</span>\"")
|
||||||
|
|
||||||
|
//Let's try an ear-worn version
|
||||||
|
/obj/item/device/universal_translator/ear
|
||||||
|
name = "translator earpiece"
|
||||||
|
desc = "This handy device appears to translate the languages it hears into another language for a user."
|
||||||
|
icon_state = "earpiece"
|
||||||
|
w_class = ITEMSIZE_TINY
|
||||||
|
slot_flags = SLOT_EARS
|
||||||
|
visual = 0
|
||||||
|
audio = 1
|
||||||
@@ -3,12 +3,14 @@
|
|||||||
icon_state = "emp"
|
icon_state = "emp"
|
||||||
item_state = "empgrenade"
|
item_state = "empgrenade"
|
||||||
origin_tech = list(TECH_MATERIAL = 2, TECH_MAGNET = 3)
|
origin_tech = list(TECH_MATERIAL = 2, TECH_MAGNET = 3)
|
||||||
var/emp_heavy = 4
|
var/emp_heavy = 2
|
||||||
var/emp_light = 10
|
var/emp_med = 4
|
||||||
|
var/emp_light = 7
|
||||||
|
var/emp_long = 10
|
||||||
|
|
||||||
prime()
|
prime()
|
||||||
..()
|
..()
|
||||||
if(empulse(src, emp_heavy, emp_light))
|
if(empulse(src, emp_heavy, emp_med, emp_light, emp_long))
|
||||||
qdel(src)
|
qdel(src)
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -18,4 +20,6 @@
|
|||||||
icon_state = "lyemp"
|
icon_state = "lyemp"
|
||||||
origin_tech = list(TECH_MATERIAL = 2, TECH_MAGNET = 3)
|
origin_tech = list(TECH_MATERIAL = 2, TECH_MAGNET = 3)
|
||||||
emp_heavy = 1
|
emp_heavy = 1
|
||||||
emp_light = 4
|
emp_med = 2
|
||||||
|
emp_light = 3
|
||||||
|
emp_long = 4
|
||||||
@@ -101,6 +101,10 @@ Implant Specifics:<BR>"}
|
|||||||
meltdown()
|
meltdown()
|
||||||
if(2)
|
if(2)
|
||||||
delay = rand(5*60*10,15*60*10) //from 5 to 15 minutes of free time
|
delay = rand(5*60*10,15*60*10) //from 5 to 15 minutes of free time
|
||||||
|
if(3)
|
||||||
|
delay = rand(2*60*10,5*60*10) //from 2 to 5 minutes of free time
|
||||||
|
if(4)
|
||||||
|
delay = rand(0.5*60*10,1*60*10) //from .5 to 1 minutes of free time
|
||||||
|
|
||||||
spawn(delay)
|
spawn(delay)
|
||||||
malfunction--
|
malfunction--
|
||||||
@@ -227,10 +231,22 @@ Implant Specifics:<BR>"}
|
|||||||
return
|
return
|
||||||
malfunction = MALFUNCTION_TEMPORARY
|
malfunction = MALFUNCTION_TEMPORARY
|
||||||
switch (severity)
|
switch (severity)
|
||||||
if (2.0) //Weak EMP will make implant tear limbs off.
|
if (4) //Weak EMP will make implant tear limbs off.
|
||||||
|
if (prob(25))
|
||||||
|
small_boom()
|
||||||
|
if (3) //Weak EMP will make implant tear limbs off.
|
||||||
if (prob(50))
|
if (prob(50))
|
||||||
small_boom()
|
small_boom()
|
||||||
if (1.0) //strong EMP will melt implant either making it go off, or disarming it
|
if (2) //strong EMP will melt implant either making it go off, or disarming it
|
||||||
|
if (prob(70))
|
||||||
|
if (prob(75))
|
||||||
|
small_boom()
|
||||||
|
else
|
||||||
|
if (prob(13))
|
||||||
|
activate() //chance of bye bye
|
||||||
|
else
|
||||||
|
meltdown() //chance of implant disarming
|
||||||
|
if (1) //strong EMP will melt implant either making it go off, or disarming it
|
||||||
if (prob(70))
|
if (prob(70))
|
||||||
if (prob(50))
|
if (prob(50))
|
||||||
small_boom()
|
small_boom()
|
||||||
@@ -320,7 +336,13 @@ the implant may become unstable and either pre-maturely inject the subject or si
|
|||||||
if(prob(60))
|
if(prob(60))
|
||||||
activate(20)
|
activate(20)
|
||||||
if(2)
|
if(2)
|
||||||
if(prob(30))
|
if(prob(40))
|
||||||
|
activate(20)
|
||||||
|
if(3)
|
||||||
|
if(prob(40))
|
||||||
|
activate(5)
|
||||||
|
if(4)
|
||||||
|
if(prob(20))
|
||||||
activate(5)
|
activate(5)
|
||||||
|
|
||||||
spawn(20)
|
spawn(20)
|
||||||
|
|||||||
@@ -142,6 +142,7 @@
|
|||||||
new /obj/item/clothing/suit/storage/toggle/labcoat/emt(src)
|
new /obj/item/clothing/suit/storage/toggle/labcoat/emt(src)
|
||||||
new /obj/item/device/radio/headset/headset_med/alt(src)
|
new /obj/item/device/radio/headset/headset_med/alt(src)
|
||||||
new /obj/item/weapon/cartridge/medical(src)
|
new /obj/item/weapon/cartridge/medical(src)
|
||||||
|
new /obj/item/weapon/storage/briefcase/inflatable(src)
|
||||||
new /obj/item/device/flashlight(src)
|
new /obj/item/device/flashlight(src)
|
||||||
new /obj/item/weapon/tank/emergency/oxygen/engi(src)
|
new /obj/item/weapon/tank/emergency/oxygen/engi(src)
|
||||||
new /obj/item/clothing/glasses/hud/health(src)
|
new /obj/item/clothing/glasses/hud/health(src)
|
||||||
|
|||||||
@@ -637,14 +637,18 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
|||||||
|
|
||||||
var/heavy = input("Range of heavy pulse.", text("Input")) as num|null
|
var/heavy = input("Range of heavy pulse.", text("Input")) as num|null
|
||||||
if(heavy == null) return
|
if(heavy == null) return
|
||||||
|
var/med = input("Range of medium pulse.", text("Input")) as num|null
|
||||||
|
if(med == null) return
|
||||||
var/light = input("Range of light pulse.", text("Input")) as num|null
|
var/light = input("Range of light pulse.", text("Input")) as num|null
|
||||||
if(light == null) return
|
if(light == null) return
|
||||||
|
var/long = input("Range of long pulse.", text("Input")) as num|null
|
||||||
|
if(long == null) return
|
||||||
|
|
||||||
if (heavy || light)
|
if (heavy || med || light || long)
|
||||||
|
|
||||||
empulse(O, heavy, light)
|
empulse(O, heavy, med, light, long)
|
||||||
log_admin("[key_name(usr)] created an EM Pulse ([heavy],[light]) at ([O.x],[O.y],[O.z])")
|
log_admin("[key_name(usr)] created an EM Pulse ([heavy],[med],[light],[long]) at ([O.x],[O.y],[O.z])")
|
||||||
message_admins("[key_name_admin(usr)] created an EM PUlse ([heavy],[light]) at ([O.x],[O.y],[O.z])", 1)
|
message_admins("[key_name_admin(usr)] created an EM PUlse ([heavy],[med],[light],[long]) at ([O.x],[O.y],[O.z])", 1)
|
||||||
feedback_add_details("admin_verb","EMP") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
feedback_add_details("admin_verb","EMP") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -3,16 +3,16 @@
|
|||||||
var/datum/lore/atc_controller/atc = new/datum/lore/atc_controller
|
var/datum/lore/atc_controller/atc = new/datum/lore/atc_controller
|
||||||
|
|
||||||
/datum/lore/atc_controller
|
/datum/lore/atc_controller
|
||||||
var/delay_max = 25 MINUTES //How long between ATC traffic, max
|
var/delay_max = 25 MINUTES //How long between ATC traffic, max. Default is 25 mins.
|
||||||
var/delay_min = 40 MINUTES //How long between ATC traffic, min
|
var/delay_min = 40 MINUTES //How long between ATC traffic, min. Default is 40 mins.
|
||||||
var/backoff_delay = 5 MINUTES //How long to back off if we can't talk and want to
|
var/backoff_delay = 5 MINUTES //How long to back off if we can't talk and want to. Default is 5 mins.
|
||||||
var/next_message //When the next message should happen in world.time
|
var/next_message //When the next message should happen in world.time
|
||||||
var/force_chatter_type //Force a specific type of messages
|
var/force_chatter_type //Force a specific type of messages
|
||||||
|
|
||||||
var/squelched = 0 //If ATC is squelched currently
|
var/squelched = 0 //If ATC is squelched currently
|
||||||
|
|
||||||
/datum/lore/atc_controller/New()
|
/datum/lore/atc_controller/New()
|
||||||
spawn(100) //Lots of lag at the start of a shift.
|
spawn(10 SECONDS) //Lots of lag at the start of a shift.
|
||||||
msg("New shift beginning, resuming traffic control.")
|
msg("New shift beginning, resuming traffic control.")
|
||||||
next_message = world.time + rand(delay_min,delay_max)
|
next_message = world.time + rand(delay_min,delay_max)
|
||||||
process()
|
process()
|
||||||
@@ -30,43 +30,45 @@ var/datum/lore/atc_controller/atc = new/datum/lore/atc_controller
|
|||||||
|
|
||||||
/datum/lore/atc_controller/proc/msg(var/message,var/sender)
|
/datum/lore/atc_controller/proc/msg(var/message,var/sender)
|
||||||
ASSERT(message)
|
ASSERT(message)
|
||||||
global_announcer.autosay("[message]", sender ? sender : "Virgo Air/Space Control")
|
global_announcer.autosay("[message]", sender ? sender : "[using_map.station_short] Space Control")
|
||||||
|
|
||||||
/datum/lore/atc_controller/proc/reroute_traffic(var/yes = 1)
|
/datum/lore/atc_controller/proc/reroute_traffic(var/yes = 1)
|
||||||
if(yes)
|
if(yes)
|
||||||
msg("Rerouting traffic away from NSS Adaphagia.")
|
if(!squelched)
|
||||||
|
msg("Rerouting traffic away from [using_map.station_name].")
|
||||||
squelched = 1
|
squelched = 1
|
||||||
else
|
else
|
||||||
msg("Resuming normal traffic routing around NSS Adaphagia.")
|
if(squelched)
|
||||||
|
msg("Resuming normal traffic routing around [using_map.station_name].")
|
||||||
squelched = 0
|
squelched = 0
|
||||||
|
|
||||||
/datum/lore/atc_controller/proc/shift_ending(var/evac = 0)
|
/datum/lore/atc_controller/proc/shift_ending(var/evac = 0)
|
||||||
msg("Automated Shuttle departing NSS Virgo Central Command for NSS Adaphagia on routine transfer route.","NT Automated Shuttle")
|
msg("Automated Shuttle departing [using_map.station_name] for [using_map.dock_name] on routine transfer route.","NT Automated Shuttle")
|
||||||
sleep(5 SECONDS)
|
sleep(5 SECONDS)
|
||||||
msg("Automated Shuttle, cleared to complete routine transfer from NSS Adaphagia to NSS Virgo Central Command.")
|
msg("Automated Shuttle, cleared to complete routine transfer from [using_map.station_name] to [using_map.dock_name].")
|
||||||
|
|
||||||
/datum/lore/atc_controller/proc/random_convo()
|
/datum/lore/atc_controller/proc/random_convo()
|
||||||
var/one = pick(loremaster.orgs) //These will pick an index, not an instance
|
var/one = pick(loremaster.organizations) //These will pick an index, not an instance
|
||||||
var/two = pick(loremaster.orgs)
|
var/two = pick(loremaster.organizations)
|
||||||
|
|
||||||
var/datum/lore/org/source = loremaster.orgs[one] //Resolve to the instances
|
var/datum/lore/organization/source = loremaster.organizations[one] //Resolve to the instances
|
||||||
var/datum/lore/org/dest = loremaster.orgs[two]
|
var/datum/lore/organization/dest = loremaster.organizations[two]
|
||||||
|
|
||||||
//Let's get some mission parameters
|
//Let's get some mission parameters
|
||||||
var/owner = source.sname //Use the short name
|
var/owner = source.short_name //Use the short name
|
||||||
var/prefix = pick(source.ship_prefixes) //Pick a random prefix
|
var/prefix = pick(source.ship_prefixes) //Pick a random prefix
|
||||||
var/mission = source.ship_prefixes[prefix] //The value of the prefix is the mission type that prefix does
|
var/mission = source.ship_prefixes[prefix] //The value of the prefix is the mission type that prefix does
|
||||||
var/shipname = pick(source.ship_names) //Pick a random ship name to go with it
|
var/shipname = pick(source.ship_names) //Pick a random ship name to go with it
|
||||||
var/destname = pick(dest.holding_names) //Pick a random holding from the destination
|
var/destname = pick(dest.destination_names) //Pick a random holding from the destination
|
||||||
|
|
||||||
var/combined_name = "[owner] [prefix] [shipname]"
|
var/combined_name = "[owner] [prefix] [shipname]"
|
||||||
var/alt_atc_names = list("Virgo TraCon","Virgo Control","Virgo ATC","Virgo Airspace")
|
var/alt_atc_names = list("[using_map.station_short] TraCon","[using_map.station_short] Control","[using_map.station_short] STC","[using_map.station_short] Airspace")
|
||||||
var/wrong_atc_names = list("Sol Command","Polaris TraCon","Orion Control")
|
var/wrong_atc_names = list("Sol Command","Orion Control", "[using_map.dock_name]")
|
||||||
var/mission_noun = list("flight","mission","route")
|
var/mission_noun = list("flight","mission","route")
|
||||||
var/request_verb = list("requesting","calling for","asking for")
|
var/request_verb = list("requesting","calling for","asking for")
|
||||||
|
|
||||||
//First response is 'yes', second is 'no'
|
//First response is 'yes', second is 'no'
|
||||||
var/requests = list("Virgo transit clearance" = list("permission for transit granted", "permission for transit denied, contact regional on 953.5"),
|
var/requests = list("[using_map.station_short] transit clearance" = list("permission for transit granted", "permission for transit denied, contact regional on 953.5"),
|
||||||
"planetary flight rules" = list("authorizing planetary flight rules", "denying planetary flight rules right now due to traffic"),
|
"planetary flight rules" = list("authorizing planetary flight rules", "denying planetary flight rules right now due to traffic"),
|
||||||
"special flight rules" = list("authorizing special flight rules", "denying special flight rules, not allowed for your traffic class"),
|
"special flight rules" = list("authorizing special flight rules", "denying special flight rules, not allowed for your traffic class"),
|
||||||
"current solar weather info" = list("sending you the relevant information via tightbeam", "cannot fulfill your request at the moment"),
|
"current solar weather info" = list("sending you the relevant information via tightbeam", "cannot fulfill your request at the moment"),
|
||||||
@@ -102,19 +104,19 @@ var/datum/lore/atc_controller/atc = new/datum/lore/atc_controller
|
|||||||
if("wrong_freq")
|
if("wrong_freq")
|
||||||
callname = pick(wrong_atc_names)
|
callname = pick(wrong_atc_names)
|
||||||
full_request = "[callname], this is [combined_name] on a [mission] [pick(mission_noun)] to [destname], [pick(request_verb)] [request]."
|
full_request = "[callname], this is [combined_name] on a [mission] [pick(mission_noun)] to [destname], [pick(request_verb)] [request]."
|
||||||
full_response = "[combined_name], this is Virgo TraCon, wrong frequency. Switch to [rand(700,999)].[rand(1,9)]."
|
full_response = "[combined_name], this is [using_map.station_short] TraCon, wrong frequency. Switch to [rand(700,999)].[rand(1,9)]."
|
||||||
full_closure = "Virgo TraCon, understood, apologies."
|
full_closure = "[using_map.station_short] TraCon, understood, apologies."
|
||||||
if("wrong_lang")
|
if("wrong_lang")
|
||||||
//Can't implement this until autosay has language support
|
//Can't implement this until autosay has language support
|
||||||
if("emerg")
|
if("emerg")
|
||||||
var/problem = pick("hull breaches on multiple decks","unknown life forms on board","a drive about to go critical","asteroids impacting the hull","a total loss of engine power","people trying to board the ship")
|
var/problem = pick("hull breaches on multiple decks","unknown life forms on board","a drive about to go critical","asteroids impacting the hull","a total loss of engine power","people trying to board the ship")
|
||||||
full_request = "This is [combined_name] declaring an emergency! We have [problem]!"
|
full_request = "This is [combined_name] declaring an emergency! We have [problem]!"
|
||||||
full_response = "[combined_name], this is Virgo TraCon, copy. Switch to emergency responder channel [rand(700,999)].[rand(1,9)]."
|
full_response = "[combined_name], this is [using_map.station_short] TraCon, copy. Switch to emergency responder channel [rand(700,999)].[rand(1,9)]."
|
||||||
full_closure = "Virgo TraCon, okay, switching now."
|
full_closure = "[using_map.station_short] TraCon, okay, switching now."
|
||||||
else
|
else
|
||||||
full_request = "[callname], this is [combined_name] on a [mission] [pick(mission_noun)] to [destname], [pick(request_verb)] [request]."
|
full_request = "[callname], this is [combined_name] on a [mission] [pick(mission_noun)] to [destname], [pick(request_verb)] [request]."
|
||||||
full_response = "[combined_name], this is Virgo TraCon, [response]." //Virgo TraCon always calls themselves TraCon
|
full_response = "[combined_name], this is [using_map.station_short] TraCon, [response]." //Station TraCon always calls themselves TraCon
|
||||||
full_closure = "Virgo TraCon, [yes ? "thank you" : "understood"], good day." //They always copy what TraCon called themselves in the end when they realize they said it wrong
|
full_closure = "[using_map.station_short] TraCon, [yes ? "thank you" : "understood"], good day." //They always copy what TraCon called themselves in the end when they realize they said it wrong
|
||||||
|
|
||||||
//Ship sends request to ATC
|
//Ship sends request to ATC
|
||||||
msg(full_request,"[prefix] [shipname]")
|
msg(full_request,"[prefix] [shipname]")
|
||||||
@@ -124,5 +126,4 @@ var/datum/lore/atc_controller/atc = new/datum/lore/atc_controller
|
|||||||
sleep(5 SECONDS)
|
sleep(5 SECONDS)
|
||||||
//Ship sends response to ATC
|
//Ship sends response to ATC
|
||||||
msg(full_closure,"[prefix] [shipname]")
|
msg(full_closure,"[prefix] [shipname]")
|
||||||
|
|
||||||
return
|
return
|
||||||
@@ -3,12 +3,11 @@
|
|||||||
var/datum/lore/loremaster/loremaster = new/datum/lore/loremaster
|
var/datum/lore/loremaster/loremaster = new/datum/lore/loremaster
|
||||||
|
|
||||||
/datum/lore/loremaster
|
/datum/lore/loremaster
|
||||||
var/list/orgs = list()
|
var/list/organizations = list()
|
||||||
|
|
||||||
/datum/lore/loremaster/New()
|
/datum/lore/loremaster/New()
|
||||||
var/paths //Just reuse this a bunch of times.
|
|
||||||
|
|
||||||
paths = typesof(/datum/lore/org) - /datum/lore/org
|
var/list/paths = typesof(/datum/lore/organization) - /datum/lore/organization
|
||||||
for(var/path in paths)
|
for(var/path in paths)
|
||||||
var/datum/lore/org/instance = new path()
|
var/datum/lore/organization/instance = new path()
|
||||||
orgs[path] = instance
|
organizations[path] = instance
|
||||||
326
code/modules/busy_space/organizations.dm
Normal file
@@ -0,0 +1,326 @@
|
|||||||
|
//Datums for different companies that can be used by busy_space
|
||||||
|
/datum/lore/organization
|
||||||
|
var/name = "" // Organization's name
|
||||||
|
var/short_name = "" // Organization's shortname (NanoTrasen for "NanoTrasen Incorporated")
|
||||||
|
var/desc = "" // One or two paragraph description of the organization, but only current stuff. Currently unused.
|
||||||
|
var/history = "" // Historical discription of the organization's origins Currently unused.
|
||||||
|
var/work = "" // Short description of their work, eg "an arms manufacturer"
|
||||||
|
var/headquarters = "" // Location of the organization's HQ. Currently unused.
|
||||||
|
var/motto = "" // A motto/jingle/whatever, if they have one. Currently unused.
|
||||||
|
|
||||||
|
var/list/ship_prefixes = list() //Some might have more than one! Like NanoTrasen. Value is the mission they perform, e.g. ("ABC" = "mission desc")
|
||||||
|
var/list/ship_names = list( //Names of spaceships. This is a mostly generic list that all the other organizations inherit from if they don't have anything better.
|
||||||
|
"Kestrel",
|
||||||
|
"Beacon",
|
||||||
|
"Signal",
|
||||||
|
"Freedom",
|
||||||
|
"Glory",
|
||||||
|
"Axiom",
|
||||||
|
"Eternal",
|
||||||
|
"Icarus",
|
||||||
|
"Harmony",
|
||||||
|
"Light",
|
||||||
|
"Discovery",
|
||||||
|
"Endeavour",
|
||||||
|
"Explorer",
|
||||||
|
"Swift",
|
||||||
|
"Dragonfly",
|
||||||
|
"Ascendant",
|
||||||
|
"Tenacious",
|
||||||
|
"Pioneer",
|
||||||
|
"Hawk",
|
||||||
|
"Haste",
|
||||||
|
"Radiant",
|
||||||
|
"Luminous"
|
||||||
|
)
|
||||||
|
var/list/destination_names = list() //Names of static holdings that the organization's ships visit regularly.
|
||||||
|
var/autogenerate_destination_names = TRUE
|
||||||
|
|
||||||
|
/datum/lore/organization/New()
|
||||||
|
..()
|
||||||
|
if(autogenerate_destination_names) // Lets pad out the destination names.
|
||||||
|
var/i = rand(6, 10)
|
||||||
|
var/list/star_names = list(
|
||||||
|
"Sol", "Alpha Centauri", "Sirius", "Vega", "Regulus", "Vir", "Algol", "Aldebaran",
|
||||||
|
"Delta Doradus", "Menkar", "Geminga", "Elnath", "Gienah", "Mu Leporis", "Nyx", "Tau Ceti",
|
||||||
|
"Wazn", "Alphard", "Phact", "Altair")
|
||||||
|
var/list/destination_types = list("dockyard", "station", "vessel", "waystation", "telecommunications satellite", "spaceport", "distress beacon", "anomaly", "colony", "outpost")
|
||||||
|
while(i)
|
||||||
|
destination_names.Add("a [pick(destination_types)] in [pick(star_names)]")
|
||||||
|
i--
|
||||||
|
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
// TSCs
|
||||||
|
/datum/lore/organization/nanotrasen
|
||||||
|
name = "NanoTrasen Incorporated"
|
||||||
|
short_name = "NanoTrasen"
|
||||||
|
desc = "" // Todo: Write this.
|
||||||
|
history = "" // This too.
|
||||||
|
work = "research giant"
|
||||||
|
headquarters = "Luna"
|
||||||
|
motto = ""
|
||||||
|
|
||||||
|
ship_prefixes = list("NSV" = "exploration", "NTV" = "hauling", "NDV" = "patrol", "NRV" = "emergency response")
|
||||||
|
// Note that the current station being used will be pruned from this list upon being instantiated
|
||||||
|
destination_names = list(
|
||||||
|
"NSS Exodus in Nyx",
|
||||||
|
"NCS Northern Star in Vir",
|
||||||
|
"NCS Southern Cross in Vir",
|
||||||
|
"NDV Icarus in Nyx",
|
||||||
|
"NAS Vir Central Command",
|
||||||
|
"a dockyard orbiting Sif",
|
||||||
|
"an asteroid orbiting Kara",
|
||||||
|
"an asteroid orbiting Rota",
|
||||||
|
"Vir Interstellar Spaceport"
|
||||||
|
)
|
||||||
|
|
||||||
|
/datum/lore/organization/nanotrasen/New()
|
||||||
|
..()
|
||||||
|
// Get rid of the current map from the list, so ships flying in don't say they're coming to the current map.
|
||||||
|
var/string_to_test = "[using_map.station_name] in [using_map.starsys_name]"
|
||||||
|
if(string_to_test in destination_names)
|
||||||
|
destination_names.Remove(string_to_test)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/datum/lore/organization/hephaestus
|
||||||
|
name = "Hephaestus Industries"
|
||||||
|
short_name = "Hephaestus"
|
||||||
|
desc = "Hephaestus Industries is the largest supplier of arms, ammunition, and small millitary vehicles in Sol space. \
|
||||||
|
Hephaestus products have a reputation for reliability, and the corporation itself has a noted tendency to stay removed \
|
||||||
|
from corporate politics. They enforce their neutrality with the help of a fairly large asset-protection contingent which \
|
||||||
|
prevents any contracting polities from using their own materiel against them. SolGov itself is one of Hephastus<75> largest \
|
||||||
|
bulk contractors owing to the above factors."
|
||||||
|
history = ""
|
||||||
|
work = "arms manufacturer"
|
||||||
|
headquarters = ""
|
||||||
|
motto = ""
|
||||||
|
|
||||||
|
ship_prefixes = list("HTV" = "freight", "HTV" = "munitions resupply")
|
||||||
|
destination_names = list(
|
||||||
|
"a SolGov dockyard on Luna"
|
||||||
|
)
|
||||||
|
|
||||||
|
/datum/lore/organization/vey_med
|
||||||
|
name = "Vey Medical"
|
||||||
|
short_name = "Vey Med"
|
||||||
|
desc = "Vey-Med is one of the newer TSCs on the block and is notable for being largely owned and opperated by Skrell. \
|
||||||
|
Despite the suspicion and prejudice leveled at them for their alien origin, Vey-Med has obtained market dominance in \
|
||||||
|
the sale of medical equipment-- from surgical tools to large medical devices to the Oddyseus trauma response mecha \
|
||||||
|
and everything in between. Their equipment tends to be top-of-the-line, most obviously shown by their incredibly \
|
||||||
|
human-like FBP designs. Vey<65>s rise to stardom came from their introduction of ressurective cloning, although in \
|
||||||
|
recent years they<65>ve been forced to diversify as their patents expired and NanoTrasen-made medications became \
|
||||||
|
essential to modern cloning."
|
||||||
|
history = ""
|
||||||
|
work = "medical equipment supplier"
|
||||||
|
headquarters = ""
|
||||||
|
motto = ""
|
||||||
|
|
||||||
|
ship_prefixes = list("VTV" = "transportation", "VMV" = "medical resupply")
|
||||||
|
destination_names = list()
|
||||||
|
|
||||||
|
/datum/lore/organization/zeng_hu
|
||||||
|
name = "Zeng-Hu pharmaceuticals"
|
||||||
|
short_name = "Zeng-Hu"
|
||||||
|
desc = "Zeng-Hu is an old TSC, based in the Sol system. Until the discovery of Phoron, Zeng-Hu maintained a stranglehold \
|
||||||
|
on the market for medications, and many household names are patentted by Zeng-Hu-- Bicaridyne, Dylovene, Tricordrizine, \
|
||||||
|
and Dexalin all came from a Zeng-Hu medical laboratory. Zeng-Hu<48>s fortunes have been in decline as Nanotrasen<65>s near monopoly \
|
||||||
|
on phoron research cuts into their R&D and Vey-Med<65>s superior medical equipment effectively decimated their own equipment \
|
||||||
|
interests. The three-way rivalry between these companies for dominance in the medical field is well-known and a matter of \
|
||||||
|
constant economic speculation."
|
||||||
|
history = ""
|
||||||
|
work = "pharmaceuticals company"
|
||||||
|
headquarters = ""
|
||||||
|
motto = ""
|
||||||
|
|
||||||
|
ship_prefixes = list("ZTV" = "transportation", "ZMV" = "medical resupply")
|
||||||
|
destination_names = list()
|
||||||
|
|
||||||
|
/datum/lore/organization/ward_takahashi
|
||||||
|
name = "Ward-Takahashi General Manufacturing Conglomerate"
|
||||||
|
short_name = "Ward-Takahashi"
|
||||||
|
desc = "Ward-Takahashi focuses on the sale of small consumer electronics, with its computers, communicators, \
|
||||||
|
and even mid-class automobiles a fixture of many households. Less famously, Ward-Takahashi also supplies most \
|
||||||
|
of the AI cores on which vital control systems are mounted, and it is this branch of their industry that has \
|
||||||
|
led to their tertiary interest in the development and sale of high-grade AI systems. Ward-Takahashi<68>s economies \
|
||||||
|
of scale frequently steal market share from Nanotrasen<65>s high-price products, leading to a bitter rivalry in the \
|
||||||
|
consumer electronics market."
|
||||||
|
history = ""
|
||||||
|
work = "electronics manufacturer"
|
||||||
|
headquarters = ""
|
||||||
|
motto = ""
|
||||||
|
|
||||||
|
ship_prefixes = list("WTV" = "freight")
|
||||||
|
destination_names = list()
|
||||||
|
|
||||||
|
/datum/lore/organization/bishop
|
||||||
|
name = "Bishop Cybernetics"
|
||||||
|
short_name = "Bishop"
|
||||||
|
desc = "Bishop<6F>s focus is on high-class, stylish cybernetics. A favorite among transhumanists (and a b<>te noire for \
|
||||||
|
bioconservatives), Bishop manufactures not only prostheses but also brain augmentation, synthetic organ replacements, \
|
||||||
|
and odds and ends like implanted wrist-watches. Their business model tends towards smaller, boutique operations, giving \
|
||||||
|
it a reputation for high price and luxury, with Bishop cyberware often rivalling Vey-Med<65>s for cost. Bishop<6F>s reputation \
|
||||||
|
for catering towards the interests of human augmentation enthusiasts instead of positronics have earned it ire from the \
|
||||||
|
Positronic Rights Group and puts it in ideological (but not economic) comptetition with Morpheus Cyberkinetics."
|
||||||
|
history = ""
|
||||||
|
work = "cybernetics and augmentation manufacturer"
|
||||||
|
headquarters = ""
|
||||||
|
motto = ""
|
||||||
|
|
||||||
|
ship_prefixes = list("BTV" = "transportation")
|
||||||
|
destination_names = list()
|
||||||
|
|
||||||
|
/datum/lore/organization/morpheus
|
||||||
|
name = "Morpheus Cyberkinetics"
|
||||||
|
short_name = "Morpheus"
|
||||||
|
desc = "The only large corporation run by positronic intelligences, Morpheus caters almost exclusively to their sensibilities \
|
||||||
|
and needs. A product of the synthetic colony of Shelf, Morpheus eschews traditional advertising to keep their prices low and \
|
||||||
|
relied on word of mouth among positronics to reach their current economic dominance. Morpheus in exchange lobbies heavily for \
|
||||||
|
positronic rights, sponsors positronics through their Jans-Fhriede test, and tends to other positronic concerns to earn them \
|
||||||
|
the good-will of the positronics, and the ire of those who wish to exploit them."
|
||||||
|
history = ""
|
||||||
|
work = "cybernetics manufacturer"
|
||||||
|
headquarters = ""
|
||||||
|
motto = ""
|
||||||
|
|
||||||
|
ship_prefixes = list("MTV" = "freight")
|
||||||
|
// Culture names, because Anewbe told me so.
|
||||||
|
ship_names = list(
|
||||||
|
"Nervous Energy",
|
||||||
|
"Prosthetic Conscience",
|
||||||
|
"Revisionist",
|
||||||
|
"Trade Surplus",
|
||||||
|
"Flexible Demeanour",
|
||||||
|
"Just Read The Instructions",
|
||||||
|
"Limiting Factor",
|
||||||
|
"Cargo Cult",
|
||||||
|
"Gunboat Diplomat",
|
||||||
|
"A Ship With A View",
|
||||||
|
"Cantankerous",
|
||||||
|
"I Thought He Was With You",
|
||||||
|
"Never Talk To Strangers",
|
||||||
|
"Sacrificial Victim",
|
||||||
|
"Unwitting Accomplice",
|
||||||
|
"Bad For Business",
|
||||||
|
"Just Testing",
|
||||||
|
"Size Isn't Everything",
|
||||||
|
"Yawning Angel",
|
||||||
|
"Liveware Problem",
|
||||||
|
"Very Little Gravitas Indeed",
|
||||||
|
"Zero Gravitas",
|
||||||
|
"Gravitas Free Zone",
|
||||||
|
"Absolutely No You-Know-What",
|
||||||
|
"Existence Is Pain",
|
||||||
|
"I'm Walking Here",
|
||||||
|
"Screw Loose",
|
||||||
|
"Of Course I Still Love You",
|
||||||
|
"Limiting Factor",
|
||||||
|
"So Much For Subtley",
|
||||||
|
"Unfortunate Conflict Of Evidence",
|
||||||
|
"Prime Mover",
|
||||||
|
"It's One Of Ours",
|
||||||
|
"Thank You And Goodnight",
|
||||||
|
"Boo!",
|
||||||
|
"Reasonable Excuse",
|
||||||
|
"Honest Mistake",
|
||||||
|
"Appeal To Reason",
|
||||||
|
"My First Ship II",
|
||||||
|
"Hidden Income",
|
||||||
|
"Anything Legal Considered",
|
||||||
|
"New Toy",
|
||||||
|
"Me, I'm Always Counting",
|
||||||
|
"Just Five More Minutes"
|
||||||
|
|
||||||
|
|
||||||
|
)
|
||||||
|
destination_names = list()
|
||||||
|
|
||||||
|
/datum/lore/organization/xion
|
||||||
|
name = "Xion Manufacturing Group"
|
||||||
|
short_name = "Xion"
|
||||||
|
desc = "Xion, quietly, controls most of the market for industrial equipment. Their portfolio includes mining exosuits, \
|
||||||
|
factory equipment, rugged positronic chassis, and other pieces of equipment vital to the function of the economy. Xion \
|
||||||
|
keeps its control of the market by leasing, not selling, their equipment, and through infamous and bloody patent protection \
|
||||||
|
lawsuits. Xion are noted to be a favorite contractor for SolGov engineers, owing to their low cost and rugged design."
|
||||||
|
history = ""
|
||||||
|
work = "industrial equipment manufacturer"
|
||||||
|
headquarters = ""
|
||||||
|
motto = ""
|
||||||
|
|
||||||
|
ship_prefixes = list("XTV" = "hauling")
|
||||||
|
destination_names = list()
|
||||||
|
|
||||||
|
// Governments
|
||||||
|
|
||||||
|
/datum/lore/organization/sifgov
|
||||||
|
name = "Sif Governmental Authority"
|
||||||
|
short_name = "SifGov"
|
||||||
|
desc = "SifGov is the sole governing administration for the Vir system, based in New Reykjavik, Sif. It is a representative \
|
||||||
|
democratic government, and a fully recognized member of the Solar Confederate Government. Anyone operating inside of Vir must \
|
||||||
|
comply with SifGov's legislation and regulations."
|
||||||
|
history = "" // Todo like the rest of them
|
||||||
|
work = "governing body of Sif"
|
||||||
|
headquarters = "New Reykjavik, Sif"
|
||||||
|
motto = ""
|
||||||
|
autogenerate_destination_names = FALSE
|
||||||
|
|
||||||
|
ship_prefixes = list("SGA" = "hauling", "SGA" = "energy relay")
|
||||||
|
destination_names = list(
|
||||||
|
"New Reykjavik on Sif",
|
||||||
|
"Radiance Energy Chain",
|
||||||
|
"a dockyard orbiting Sif",
|
||||||
|
"a telecommunications satellite",
|
||||||
|
"Vir Interstellar Spaceport"
|
||||||
|
)
|
||||||
|
|
||||||
|
/datum/lore/organization/solgov
|
||||||
|
name = "Solar Confederate Government"
|
||||||
|
short_name = "SolGov"
|
||||||
|
desc = "SolGov is a decentralized confederation of human governmental entities based on Luna, Sol, which defines top-level law for their member states. \
|
||||||
|
Member states receive various benefits such as defensive pacts, trade agreements, social support and funding, and being able to participate \
|
||||||
|
in the Colonial Assembly. The majority, but not all human territories are members of SolGov. As such, SolGov is a major power and \
|
||||||
|
defacto represents humanity on the galatic stage."
|
||||||
|
history = "" // Todo
|
||||||
|
work = "governing polity of humanity's Confederation"
|
||||||
|
headquarters = "Luna"
|
||||||
|
motto = "Nil Mortalibus Ardui Est" // Latin, because latin. Says 'Nothing is too steep for mortals'.
|
||||||
|
autogenerate_destination_names = TRUE
|
||||||
|
|
||||||
|
ship_prefixes = list("SCG-T" = "transportation", "SCG-D" = "diplomatic", "SCG-F" = "freight")
|
||||||
|
destination_names = list(
|
||||||
|
"Venus",
|
||||||
|
"Earth",
|
||||||
|
"Luna",
|
||||||
|
"Mars",
|
||||||
|
"Titan"
|
||||||
|
)// autogen will add a lot of other places as well.
|
||||||
|
|
||||||
|
/*
|
||||||
|
// To be expanded upon later, once the military lore gets sorted out.
|
||||||
|
|
||||||
|
// Military
|
||||||
|
|
||||||
|
/datum/lore/organization/sif_guard
|
||||||
|
name = "Sif Homeguard Forces" // Todo: Get better name from lorepeople.
|
||||||
|
short_name = "SifGuard"
|
||||||
|
desc = ""
|
||||||
|
history = ""
|
||||||
|
work = "Sif Governmental Authority's military"
|
||||||
|
headquarters = "Sif" // Make this more specific later.
|
||||||
|
motto = ""
|
||||||
|
autogenerate_destination_names = FALSE // Kinda weird if SifGuard goes to Nyx.
|
||||||
|
|
||||||
|
ship_prefixes = list("SGSC" = "military", "SGSC" = "patrol", "SGSC" = "rescue", "SGSC" = "emergency response") // Todo: Replace prefix with better one.
|
||||||
|
destination_names = list(
|
||||||
|
"a classified location in SolGov territory",
|
||||||
|
"Sif orbit",
|
||||||
|
"the rings of Kara",
|
||||||
|
"the rings of Rota",
|
||||||
|
"Firnir orbit",
|
||||||
|
"Tyr orbit",
|
||||||
|
"Magni orbit",
|
||||||
|
"a wreck in SifGov territory",
|
||||||
|
"a military outpost",
|
||||||
|
)
|
||||||
|
*/
|
||||||
@@ -1,72 +1,9 @@
|
|||||||
//Datums for different companies that can be used by busy_space
|
//Datums for different companies that can be used by busy_space, VR edition
|
||||||
/datum/lore/org
|
|
||||||
var/name = "" //Organization's name
|
|
||||||
var/sname = "" //Org's shortname (NanoTrasen for "NanoTrasen Incorporated")
|
|
||||||
var/desc = "" //Long description of org, but only current stuff, see 'history'
|
|
||||||
var/history = "" //Historical discription of org's origins
|
|
||||||
var/work = "" //Short description of their work, eg "an arms manufacturer"
|
|
||||||
var/headquarters = "" //Location of Org's HQ
|
|
||||||
var/motto = "" //A motto, if they have one
|
|
||||||
|
|
||||||
var/org_flags = 0 //Flags for the org
|
|
||||||
|
|
||||||
var/list/ship_prefixes = list()//Some might have more than one! Like NanoTrasen. Value is the mission they perform.
|
|
||||||
var/list/ship_names = list()//Names of spaceships
|
|
||||||
var/list/holding_names = list()//Names of static holdings (planets, bases)
|
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
/datum/lore/org/nanotrasen
|
/datum/lore/organization/federation
|
||||||
name = "NanoTrasen Incorporated"
|
|
||||||
sname = "NanoTrasen"
|
|
||||||
desc = "A megacorporation specializing in genetic and phoron research. The founder, Xavier Trasen, set the company \
|
|
||||||
up to be a powerhouse of buying up smaller companies, and turning a profit on the backs of it's workers. \
|
|
||||||
It's not known to be the most controversy-free company, nor the best to work for, though millions are employed \
|
|
||||||
nonetheless by NanoTrasen."
|
|
||||||
history = "Originally founded on Mars in 23rd Century by a man named Xavier Trasen, NanoTrasen started \
|
|
||||||
out as a small company, whose research was mostly based around gene-therapy. After a controversy over \
|
|
||||||
cloning, and buying many smaller companies, Xavier Trasen aggressively pursued phoron research \
|
|
||||||
as soon as it was discovered, bringing NanoTrasen to the forefront of the field."
|
|
||||||
work = "mega-conglomerate"
|
|
||||||
headquarters = "Mars"
|
|
||||||
motto = ""
|
|
||||||
|
|
||||||
org_flags = ORG_HAS_NAVY|ORG_HAS_TECH|ORG_HAS_HUGENESS
|
|
||||||
|
|
||||||
//Generic ship names!
|
|
||||||
ship_prefixes = list("NSV" = "exploration", "NTV" = "hauling", "NDV" = "patrol", "NRV" = "emergency response")
|
|
||||||
ship_names = list("Profit",
|
|
||||||
"Discovery",
|
|
||||||
"Endeavour",
|
|
||||||
"Desire",
|
|
||||||
"Gains",
|
|
||||||
"Torch II",
|
|
||||||
"Columbia",
|
|
||||||
"Leyte Gulf",
|
|
||||||
"Exeter",
|
|
||||||
"Zhukov",
|
|
||||||
"Xavier",
|
|
||||||
"Liteon",
|
|
||||||
"Fanatic",
|
|
||||||
"Slow Boat",
|
|
||||||
"Listing",
|
|
||||||
"Even Faster",
|
|
||||||
"Likely Story",
|
|
||||||
"Looking Glass",
|
|
||||||
"Witchcraft")
|
|
||||||
holding_names = list("NSS Phi Gamma",
|
|
||||||
"NSB Adelphia",
|
|
||||||
"NSS Vertigo",
|
|
||||||
"NSB Checkmate",
|
|
||||||
"NSS Lampour",
|
|
||||||
"NSB Adelade",
|
|
||||||
"NSS Indiana",
|
|
||||||
"NSB Memory Alpha",
|
|
||||||
"NSS Memory Beta")
|
|
||||||
|
|
||||||
/datum/lore/org/federation
|
|
||||||
name = "United Federation of Planets"
|
name = "United Federation of Planets"
|
||||||
sname = "Federation"
|
short_name = "Federation"
|
||||||
desc = "The United Federation is a federation of planets that have agreed to exist semi-autonomously \
|
desc = "The United Federation is a federation of planets that have agreed to exist semi-autonomously \
|
||||||
under a single central hybrid government, sharing the ideals of liberty, equality, and rights \
|
under a single central hybrid government, sharing the ideals of liberty, equality, and rights \
|
||||||
for all. It is one of the larger known interstellar powers in known space and is seen as being \
|
for all. It is one of the larger known interstellar powers in known space and is seen as being \
|
||||||
@@ -84,8 +21,6 @@
|
|||||||
headquarters = ""
|
headquarters = ""
|
||||||
motto = ""
|
motto = ""
|
||||||
|
|
||||||
org_flags = ORG_HAS_NAVY|ORG_HAS_TRADERS|ORG_HAS_TECH|ORG_HAS_DIPLO
|
|
||||||
|
|
||||||
//Star Trek ship names!
|
//Star Trek ship names!
|
||||||
ship_prefixes = list("SCV" = "military", "STV" = "trading", "SDV" = "diplomatic")
|
ship_prefixes = list("SCV" = "military", "STV" = "trading", "SDV" = "diplomatic")
|
||||||
ship_names = list("Kestrel",
|
ship_names = list("Kestrel",
|
||||||
@@ -134,56 +69,9 @@
|
|||||||
"Mari Industrial Complex on Furlou Prime",
|
"Mari Industrial Complex on Furlou Prime",
|
||||||
"Runni Crystal Mines of Keid V")
|
"Runni Crystal Mines of Keid V")
|
||||||
|
|
||||||
/datum/lore/org/solgov
|
/datum/lore/organization/unsc
|
||||||
name = "Solar Confederate Government"
|
|
||||||
sname = "SolGov"
|
|
||||||
desc = "SolGov is the entity in which many human states are members. Though SolGov has a dedicated miltiary force in the UNSC, \
|
|
||||||
it also claims the use of the forces of the member states when it needs to affect a \
|
|
||||||
military goal. Many if not most human states are members of SolGov, including all entities in Sol."
|
|
||||||
history = "Originally a military/economic pact between Earth and Mars in the early days of human colonization, \
|
|
||||||
the SolGov body of member states has grown over the years to be quite large, and hold a sizable \
|
|
||||||
amount of power compared to similar bodies."
|
|
||||||
work = "government of Sol"
|
|
||||||
headquarters = "Luna"
|
|
||||||
motto = ""
|
|
||||||
|
|
||||||
org_flags = ORG_HAS_TRADERS|ORG_HAS_DIPLO
|
|
||||||
|
|
||||||
//Random ship names!
|
|
||||||
ship_prefixes = list("SOL" = "SolGov") //Don't ask questions!
|
|
||||||
ship_names = list("Torch",
|
|
||||||
"Phoenix",
|
|
||||||
"Majesty",
|
|
||||||
"Duke",
|
|
||||||
"King",
|
|
||||||
"Mandrake",
|
|
||||||
"Foxglove",
|
|
||||||
"Prompt",
|
|
||||||
"Regal",
|
|
||||||
"Lordship",
|
|
||||||
"Highness",
|
|
||||||
"Rapido",
|
|
||||||
"Paperwork",
|
|
||||||
"Arthur",
|
|
||||||
"Durandal",
|
|
||||||
"Roland")
|
|
||||||
holding_names = list("San Francisco on Earth",
|
|
||||||
"SolGov Fleet Academy on Earth",
|
|
||||||
"Gateway One above Luna",
|
|
||||||
"SolGov Command on Luna",
|
|
||||||
"Olympus City on Mars",
|
|
||||||
"Hermes Naval Shipyard above Mars",
|
|
||||||
"a settlement on Titan",
|
|
||||||
"a settlement on Europa",
|
|
||||||
"Aleph Grande on Ganymede",
|
|
||||||
"a new colony in Proxima II",
|
|
||||||
"a new settlement on Ceti IV-B",
|
|
||||||
"a colony ship around Ceti IV-B",
|
|
||||||
"a classified location in SolGov territory")
|
|
||||||
|
|
||||||
/datum/lore/org/unsc
|
|
||||||
name = "United Nations Space Command"
|
name = "United Nations Space Command"
|
||||||
sname = "Navy" //Otherwise they call the ships UNSC UNSC Name
|
short_name = "Navy" //Otherwise they call the ships UNSC UNSC Name
|
||||||
desc = "The dedicated military force of SolGov, formed from the remnants of the United Nations, is the might of SolGov. \
|
desc = "The dedicated military force of SolGov, formed from the remnants of the United Nations, is the might of SolGov. \
|
||||||
While it is greater in military strength than most alien polities, it is not by much."
|
While it is greater in military strength than most alien polities, it is not by much."
|
||||||
history = ""
|
history = ""
|
||||||
@@ -191,8 +79,6 @@
|
|||||||
headquarters = "Earth"
|
headquarters = "Earth"
|
||||||
motto = ""
|
motto = ""
|
||||||
|
|
||||||
org_flags = ORG_HAS_NAVY|ORG_HAS_TECH
|
|
||||||
|
|
||||||
//Halo ship names!
|
//Halo ship names!
|
||||||
ship_prefixes = list("UNSC" = "military")
|
ship_prefixes = list("UNSC" = "military")
|
||||||
ship_names = list("Colorado",
|
ship_names = list("Colorado",
|
||||||
@@ -227,9 +113,9 @@
|
|||||||
"a colony ship around Ceti IV-B",
|
"a colony ship around Ceti IV-B",
|
||||||
"a classified location in SolGov territory")
|
"a classified location in SolGov territory")
|
||||||
|
|
||||||
/datum/lore/org/kitsuhana
|
/datum/lore/organization/kitsuhana
|
||||||
name = "Kitsuhana Heavy Industries"
|
name = "Kitsuhana Heavy Industries"
|
||||||
sname = "Kitsuhana"
|
short_name = "Kitsuhana"
|
||||||
desc = "A large post-scarcity amalgamation of races, Kitsuhana is no longer a company but rather a loose association of 'members' \
|
desc = "A large post-scarcity amalgamation of races, Kitsuhana is no longer a company but rather a loose association of 'members' \
|
||||||
who only share the KHI name and their ideals in common. Kitsuhana accepts interviews to join their ranks, and though they have no \
|
who only share the KHI name and their ideals in common. Kitsuhana accepts interviews to join their ranks, and though they have no \
|
||||||
formal structure with regards to government or law, the concept of 'consent' drives most of the large decision making. Kitsuhanans \
|
formal structure with regards to government or law, the concept of 'consent' drives most of the large decision making. Kitsuhanans \
|
||||||
@@ -245,8 +131,6 @@
|
|||||||
headquarters = "Kitsuhana Prime"
|
headquarters = "Kitsuhana Prime"
|
||||||
motto = "Do what you want. We know we will."
|
motto = "Do what you want. We know we will."
|
||||||
|
|
||||||
org_flags = ORG_HAS_TRADERS|ORG_HAS_TECH|ORG_HAS_MERCS|ORG_HAS_ENTERTAIN
|
|
||||||
|
|
||||||
//Culture ship names!
|
//Culture ship names!
|
||||||
ship_prefixes = list("KHI" = "personal") //Everybody's out for themselves, yanno.
|
ship_prefixes = list("KHI" = "personal") //Everybody's out for themselves, yanno.
|
||||||
ship_names = list("Nervous Energy",
|
ship_names = list("Nervous Energy",
|
||||||
@@ -283,9 +167,9 @@
|
|||||||
"a Kitsuhana ringworld in Dais IX",
|
"a Kitsuhana ringworld in Dais IX",
|
||||||
"a Kitsuhana ringworld in Leibert II-b")
|
"a Kitsuhana ringworld in Leibert II-b")
|
||||||
|
|
||||||
/datum/lore/org/ares
|
/datum/lore/organization/ares
|
||||||
name = "Ares Confederation"
|
name = "Ares Confederation"
|
||||||
sname = "ArCon"
|
short_name = "ArCon"
|
||||||
desc = "A rebel faction on the fringes of human space that renounced the government of both SolGov and their corporate overlords. \
|
desc = "A rebel faction on the fringes of human space that renounced the government of both SolGov and their corporate overlords. \
|
||||||
The Confederation has two fleets, a regular United Fleet Host, comprised of professional crewmen and officers and the Free Host of the Confederation, \
|
The Confederation has two fleets, a regular United Fleet Host, comprised of professional crewmen and officers and the Free Host of the Confederation, \
|
||||||
which are privateers, volunteers and former pirates. The Ares Confederation only holds a \
|
which are privateers, volunteers and former pirates. The Ares Confederation only holds a \
|
||||||
@@ -297,8 +181,6 @@
|
|||||||
headquarters = "Paraiso a Àstrea"
|
headquarters = "Paraiso a Àstrea"
|
||||||
motto = "Liberty to the Stars!"
|
motto = "Liberty to the Stars!"
|
||||||
|
|
||||||
org_flags = ORG_HAS_NAVY|ORG_HAS_SHADY
|
|
||||||
|
|
||||||
ship_prefixes = list("UFHV" = "military", "FFHV" = "shady")
|
ship_prefixes = list("UFHV" = "military", "FFHV" = "shady")
|
||||||
ship_names = list("Liberty",
|
ship_names = list("Liberty",
|
||||||
"Charged Negotiation",
|
"Charged Negotiation",
|
||||||
@@ -342,19 +224,3 @@
|
|||||||
"a settlement needing our help",
|
"a settlement needing our help",
|
||||||
"Forward Base Sigma-Alpha in ArCon space")
|
"Forward Base Sigma-Alpha in ArCon space")
|
||||||
|
|
||||||
/*
|
|
||||||
/datum/lore/org
|
|
||||||
name = ""
|
|
||||||
sname = ""
|
|
||||||
desc = ""
|
|
||||||
history = ""
|
|
||||||
work = ""
|
|
||||||
headquarters = ""
|
|
||||||
motto = ""
|
|
||||||
|
|
||||||
org_flags = 0
|
|
||||||
|
|
||||||
ship_prefixes = list()
|
|
||||||
ship_names = list()
|
|
||||||
holding_names = list()
|
|
||||||
*/
|
|
||||||
@@ -8,3 +8,8 @@
|
|||||||
/datum/gear/ears/headphones
|
/datum/gear/ears/headphones
|
||||||
display_name = "headphones"
|
display_name = "headphones"
|
||||||
path = /obj/item/clothing/ears/earmuffs/headphones
|
path = /obj/item/clothing/ears/earmuffs/headphones
|
||||||
|
|
||||||
|
/datum/gear/ears/translator
|
||||||
|
display_name = "universal translator, ear"
|
||||||
|
path = /obj/item/device/universal_translator/ear
|
||||||
|
cost = 5
|
||||||
@@ -61,3 +61,8 @@
|
|||||||
cost = 2
|
cost = 2
|
||||||
slot = "implant"
|
slot = "implant"
|
||||||
var/implant_type = "EAL"
|
var/implant_type = "EAL"
|
||||||
|
|
||||||
|
/datum/gear/utility/translator
|
||||||
|
display_name = "universal translator"
|
||||||
|
path = /obj/item/device/universal_translator
|
||||||
|
cost = 5
|
||||||
|
|||||||
@@ -199,10 +199,7 @@
|
|||||||
|
|
||||||
/obj/item/clothing/gloves/emp_act(severity)
|
/obj/item/clothing/gloves/emp_act(severity)
|
||||||
if(cell)
|
if(cell)
|
||||||
//why is this not part of the powercell code?
|
cell.emp_act(severity)
|
||||||
cell.charge -= 1000 / severity
|
|
||||||
if (cell.charge < 0)
|
|
||||||
cell.charge = 0
|
|
||||||
..()
|
..()
|
||||||
|
|
||||||
// Called just before an attack_hand(), in mob/UnarmedAttack()
|
// Called just before an attack_hand(), in mob/UnarmedAttack()
|
||||||
|
|||||||
@@ -94,7 +94,7 @@
|
|||||||
var/list/valid_names = splittext(real_name, " ") // Should output list("John", "Doe") as an example.
|
var/list/valid_names = splittext(real_name, " ") // Should output list("John", "Doe") as an example.
|
||||||
valid_names += special_mentions()
|
valid_names += special_mentions()
|
||||||
for(var/name in valid_names)
|
for(var/name in valid_names)
|
||||||
if(findtext(message, name))
|
if(findtext(message, regex("\\b[name]\\b", "i"))) // This is to stop 'ai' from triggering if someone says 'wait'.
|
||||||
return TRUE
|
return TRUE
|
||||||
return FALSE
|
return FALSE
|
||||||
|
|
||||||
@@ -108,7 +108,7 @@
|
|||||||
// Converts specific characters, like *, /, and _ to formatted output.
|
// Converts specific characters, like *, /, and _ to formatted output.
|
||||||
/mob/proc/say_emphasis(var/message)
|
/mob/proc/say_emphasis(var/message)
|
||||||
message = encode_html_emphasis(message, "/", "i")
|
message = encode_html_emphasis(message, "/", "i")
|
||||||
message = encode_html_emphasis(message, "*", "b")
|
message = encode_html_emphasis(message, "+", "b")
|
||||||
message = encode_html_emphasis(message, "_", "u")
|
message = encode_html_emphasis(message, "_", "u")
|
||||||
return message
|
return message
|
||||||
|
|
||||||
|
|||||||
@@ -164,7 +164,9 @@
|
|||||||
if(2)
|
if(2)
|
||||||
brainmob.emp_damage += rand(10,20)
|
brainmob.emp_damage += rand(10,20)
|
||||||
if(3)
|
if(3)
|
||||||
brainmob.emp_damage += rand(0,10)
|
brainmob.emp_damage += rand(5,10)
|
||||||
|
if(4)
|
||||||
|
brainmob.emp_damage += rand(0,5)
|
||||||
..()
|
..()
|
||||||
|
|
||||||
/obj/item/device/mmi/digital
|
/obj/item/device/mmi/digital
|
||||||
@@ -216,7 +218,9 @@
|
|||||||
if(2)
|
if(2)
|
||||||
src.brainmob.emp_damage += rand(10,20)
|
src.brainmob.emp_damage += rand(10,20)
|
||||||
if(3)
|
if(3)
|
||||||
src.brainmob.emp_damage += rand(0,10)
|
src.brainmob.emp_damage += rand(5,10)
|
||||||
|
if(4)
|
||||||
|
src.brainmob.emp_damage += rand(0,5)
|
||||||
..()
|
..()
|
||||||
|
|
||||||
/obj/item/device/mmi/digital/transfer_identity(var/mob/living/carbon/H)
|
/obj/item/device/mmi/digital/transfer_identity(var/mob/living/carbon/H)
|
||||||
|
|||||||
@@ -112,7 +112,9 @@
|
|||||||
if(2)
|
if(2)
|
||||||
src.brainmob.emp_damage += rand(10,20)
|
src.brainmob.emp_damage += rand(10,20)
|
||||||
if(3)
|
if(3)
|
||||||
src.brainmob.emp_damage += rand(0,10)
|
src.brainmob.emp_damage += rand(5,10)
|
||||||
|
if(4)
|
||||||
|
src.brainmob.emp_damage += rand(0,5)
|
||||||
..()
|
..()
|
||||||
|
|
||||||
/obj/item/device/mmi/digital/posibrain/New()
|
/obj/item/device/mmi/digital/posibrain/New()
|
||||||
|
|||||||
@@ -65,7 +65,13 @@
|
|||||||
src.take_organ_damage(0,20,emp=1)
|
src.take_organ_damage(0,20,emp=1)
|
||||||
confused = (min(confused + 5, 30))
|
confused = (min(confused + 5, 30))
|
||||||
if(2)
|
if(2)
|
||||||
|
src.take_organ_damage(0,15,emp=1)
|
||||||
|
confused = (min(confused + 4, 30))
|
||||||
|
if(3)
|
||||||
src.take_organ_damage(0,10,emp=1)
|
src.take_organ_damage(0,10,emp=1)
|
||||||
|
confused = (min(confused + 3, 30))
|
||||||
|
if(4)
|
||||||
|
src.take_organ_damage(0,5,emp=1)
|
||||||
confused = (min(confused + 2, 30))
|
confused = (min(confused + 2, 30))
|
||||||
flash_eyes(affect_silicon = 1)
|
flash_eyes(affect_silicon = 1)
|
||||||
src << "<span class='danger'><B>*BZZZT*</B></span>"
|
src << "<span class='danger'><B>*BZZZT*</B></span>"
|
||||||
|
|||||||
@@ -281,9 +281,13 @@ var/list/organ_cache = list()
|
|||||||
return
|
return
|
||||||
switch (severity)
|
switch (severity)
|
||||||
if (1)
|
if (1)
|
||||||
take_damage(5)
|
take_damage(rand(6,12))
|
||||||
if (2)
|
if (2)
|
||||||
take_damage(2)
|
take_damage(rand(4,8))
|
||||||
|
if (3)
|
||||||
|
take_damage(rand(3,6))
|
||||||
|
if (4)
|
||||||
|
take_damage(rand(1,4))
|
||||||
|
|
||||||
/obj/item/organ/proc/removed(var/mob/living/user)
|
/obj/item/organ/proc/removed(var/mob/living/user)
|
||||||
|
|
||||||
|
|||||||
@@ -102,11 +102,19 @@
|
|||||||
/obj/item/organ/external/emp_act(severity)
|
/obj/item/organ/external/emp_act(severity)
|
||||||
if(!(robotic >= ORGAN_ROBOT))
|
if(!(robotic >= ORGAN_ROBOT))
|
||||||
return
|
return
|
||||||
|
var/burn_damage = 0
|
||||||
switch (severity)
|
switch (severity)
|
||||||
if (1)
|
if (1)
|
||||||
take_damage(8)
|
burn_damage += rand(8, 13)
|
||||||
if (2)
|
if (2)
|
||||||
take_damage(4)
|
burn_damage += rand(6, 9)
|
||||||
|
if(3)
|
||||||
|
burn_damage += rand(4, 7)
|
||||||
|
if(4)
|
||||||
|
burn_damage += rand(1, 5)
|
||||||
|
|
||||||
|
if(burn_damage)
|
||||||
|
take_damage(0, burn_damage)
|
||||||
|
|
||||||
/obj/item/organ/external/attack_self(var/mob/living/user)
|
/obj/item/organ/external/attack_self(var/mob/living/user)
|
||||||
if(!contents.len)
|
if(!contents.len)
|
||||||
@@ -243,12 +251,12 @@
|
|||||||
return (vital || (robotic >= ORGAN_ROBOT) || brute_dam + burn_dam + additional_damage < max_damage)
|
return (vital || (robotic >= ORGAN_ROBOT) || brute_dam + burn_dam + additional_damage < max_damage)
|
||||||
|
|
||||||
/obj/item/organ/external/take_damage(brute, burn, sharp, edge, used_weapon = null, list/forbidden_limbs = list())
|
/obj/item/organ/external/take_damage(brute, burn, sharp, edge, used_weapon = null, list/forbidden_limbs = list())
|
||||||
|
brute = round(brute * brute_mod, 0.1)
|
||||||
|
burn = round(burn * burn_mod, 0.1)
|
||||||
|
|
||||||
if((brute <= 0) && (burn <= 0))
|
if((brute <= 0) && (burn <= 0))
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
brute *= brute_mod
|
|
||||||
burn *= burn_mod
|
|
||||||
|
|
||||||
// High brute damage or sharp objects may damage internal organs
|
// High brute damage or sharp objects may damage internal organs
|
||||||
if(internal_organs && (brute_dam >= max_damage || (((sharp && brute >= 5) || brute >= 10) && prob(5))))
|
if(internal_organs && (brute_dam >= max_damage || (((sharp && brute >= 5) || brute >= 10) && prob(5))))
|
||||||
// Damage an internal organ
|
// Damage an internal organ
|
||||||
|
|||||||
@@ -97,6 +97,12 @@
|
|||||||
if(2)
|
if(2)
|
||||||
if(active) toggle_power()
|
if(active) toggle_power()
|
||||||
stability -= rand(10,20)
|
stability -= rand(10,20)
|
||||||
|
if(3)
|
||||||
|
if(active) toggle_power()
|
||||||
|
stability -= rand(8,15)
|
||||||
|
if(4)
|
||||||
|
if(active) toggle_power()
|
||||||
|
stability -= rand(5,10)
|
||||||
..()
|
..()
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
|||||||
@@ -1193,22 +1193,27 @@ obj/machinery/power/apc/proc/autoset(var/cur_state, var/on)
|
|||||||
/obj/machinery/power/apc/ex_act(severity)
|
/obj/machinery/power/apc/ex_act(severity)
|
||||||
|
|
||||||
switch(severity)
|
switch(severity)
|
||||||
if(1.0)
|
if(1)
|
||||||
//set_broken() //now qdel() do what we need
|
//set_broken() //now qdel() do what we need
|
||||||
if (cell)
|
if (cell)
|
||||||
cell.ex_act(1.0) // more lags woohoo
|
cell.ex_act(1) // more lags woohoo
|
||||||
qdel(src)
|
qdel(src)
|
||||||
return
|
return
|
||||||
if(2.0)
|
if(2)
|
||||||
|
if (prob(75))
|
||||||
|
set_broken()
|
||||||
|
if (cell && prob(50))
|
||||||
|
cell.ex_act(2)
|
||||||
|
if(3)
|
||||||
if (prob(50))
|
if (prob(50))
|
||||||
set_broken()
|
set_broken()
|
||||||
if (cell && prob(50))
|
if (cell && prob(50))
|
||||||
cell.ex_act(2.0)
|
cell.ex_act(3)
|
||||||
if(3.0)
|
if(4)
|
||||||
if (prob(25))
|
if (prob(25))
|
||||||
set_broken()
|
set_broken()
|
||||||
if (cell && prob(25))
|
if (cell && prob(50))
|
||||||
cell.ex_act(3.0)
|
cell.ex_act(3)
|
||||||
return
|
return
|
||||||
|
|
||||||
/obj/machinery/power/apc/disconnect_terminal()
|
/obj/machinery/power/apc/disconnect_terminal()
|
||||||
|
|||||||
@@ -165,7 +165,7 @@
|
|||||||
return
|
return
|
||||||
if (overcharge_percent >= 140)
|
if (overcharge_percent >= 140)
|
||||||
if (prob(1))
|
if (prob(1))
|
||||||
empulse(src.loc, 3, 8, 1)
|
empulse(src.loc, 2, 3, 6, 8, 1)
|
||||||
if ((2.4e6+1) to 3.6e6)
|
if ((2.4e6+1) to 3.6e6)
|
||||||
if (overcharge_percent >= 115)
|
if (overcharge_percent >= 115)
|
||||||
if (prob(7))
|
if (prob(7))
|
||||||
@@ -174,7 +174,7 @@
|
|||||||
return
|
return
|
||||||
if (overcharge_percent >= 130)
|
if (overcharge_percent >= 130)
|
||||||
if (prob(1))
|
if (prob(1))
|
||||||
empulse(src.loc, 3, 8, 1)
|
empulse(src.loc, 2, 3, 6, 8, 1)
|
||||||
if (overcharge_percent >= 150)
|
if (overcharge_percent >= 150)
|
||||||
if (prob(1))
|
if (prob(1))
|
||||||
explosion(src.loc, 0, 1, 3, 5)
|
explosion(src.loc, 0, 1, 3, 5)
|
||||||
@@ -186,7 +186,7 @@
|
|||||||
return
|
return
|
||||||
if (overcharge_percent >= 125)
|
if (overcharge_percent >= 125)
|
||||||
if (prob(2))
|
if (prob(2))
|
||||||
empulse(src.loc, 4, 10, 1)
|
empulse(src.loc, 2, 4, 7, 10, 1)
|
||||||
if (overcharge_percent >= 140)
|
if (overcharge_percent >= 140)
|
||||||
if (prob(1))
|
if (prob(1))
|
||||||
explosion(src.loc, 1, 3, 5, 8)
|
explosion(src.loc, 1, 3, 5, 8)
|
||||||
|
|||||||
@@ -62,9 +62,12 @@
|
|||||||
stat &= BROKEN
|
stat &= BROKEN
|
||||||
if(prob(75)) explode()
|
if(prob(75)) explode()
|
||||||
if(2)
|
if(2)
|
||||||
if(prob(25)) stat &= BROKEN
|
if(prob(50)) stat &= BROKEN
|
||||||
if(prob(10)) explode()
|
if(prob(10)) explode()
|
||||||
if(3)
|
if(3)
|
||||||
|
if(prob(25)) stat &= BROKEN
|
||||||
|
duration = 300
|
||||||
|
if(4)
|
||||||
if(prob(10)) stat &= BROKEN
|
if(prob(10)) stat &= BROKEN
|
||||||
duration = 300
|
duration = 300
|
||||||
|
|
||||||
|
|||||||
@@ -441,9 +441,9 @@
|
|||||||
|
|
||||||
/obj/singularity/proc/emp_area()
|
/obj/singularity/proc/emp_area()
|
||||||
if(current_size != 11)
|
if(current_size != 11)
|
||||||
empulse(src, 8, 10)
|
empulse(src, 4, 6, 8, 10)
|
||||||
else
|
else
|
||||||
empulse(src, 12, 16)
|
empulse(src, 12, 14, 16, 18)
|
||||||
|
|
||||||
/obj/singularity/proc/smwave()
|
/obj/singularity/proc/smwave()
|
||||||
for(var/mob/living/M in view(10, src.loc))
|
for(var/mob/living/M in view(10, src.loc))
|
||||||
|
|||||||
@@ -393,10 +393,14 @@
|
|||||||
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
|
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
|
||||||
s.set_up(3, 1, src)
|
s.set_up(3, 1, src)
|
||||||
s.start()
|
s.start()
|
||||||
if(prob(50))
|
if(prob(25))
|
||||||
emp_act(1)
|
emp_act(1)
|
||||||
else
|
else if(prob(25))
|
||||||
emp_act(2)
|
emp_act(2)
|
||||||
|
else if(prob(25))
|
||||||
|
emp_act(3)
|
||||||
|
else
|
||||||
|
emp_act(4)
|
||||||
if(prob(5)) //smoke only
|
if(prob(5)) //smoke only
|
||||||
var/datum/effect/effect/system/smoke_spread/smoke = new /datum/effect/effect/system/smoke_spread()
|
var/datum/effect/effect/system/smoke_spread/smoke = new /datum/effect/effect/system/smoke_spread()
|
||||||
smoke.set_up(3, 0, src.loc)
|
smoke.set_up(3, 0, src.loc)
|
||||||
|
|||||||
@@ -212,7 +212,7 @@
|
|||||||
h_user.adjustFireLoss(rand(10,25))
|
h_user.adjustFireLoss(rand(10,25))
|
||||||
h_user.Paralyse(5)
|
h_user.Paralyse(5)
|
||||||
spawn(0)
|
spawn(0)
|
||||||
empulse(src.loc, 2, 4)
|
empulse(src.loc, 1, 2, 3, 4)
|
||||||
charge = 0
|
charge = 0
|
||||||
|
|
||||||
if (36 to 60)
|
if (36 to 60)
|
||||||
@@ -229,7 +229,7 @@
|
|||||||
h_user.adjustFireLoss(rand(35,75))
|
h_user.adjustFireLoss(rand(35,75))
|
||||||
h_user.Paralyse(12)
|
h_user.Paralyse(12)
|
||||||
spawn(0)
|
spawn(0)
|
||||||
empulse(src.loc, 8, 16)
|
empulse(src.loc, 6, 8, 12, 16)
|
||||||
charge = 0
|
charge = 0
|
||||||
apcs_overload(1, 10)
|
apcs_overload(1, 10)
|
||||||
src.ping("Caution. Output regulators malfunction. Uncontrolled discharge detected.")
|
src.ping("Caution. Output regulators malfunction. Uncontrolled discharge detected.")
|
||||||
|
|||||||
@@ -26,6 +26,10 @@
|
|||||||
name = "speedloader (.38 rubber)"
|
name = "speedloader (.38 rubber)"
|
||||||
ammo_type = /obj/item/ammo_casing/c38r
|
ammo_type = /obj/item/ammo_casing/c38r
|
||||||
|
|
||||||
|
/obj/item/ammo_magazine/c38/emp
|
||||||
|
name = "ammunition box (.38 haywire)"
|
||||||
|
ammo_type = /obj/item/ammo_casing/c38/emp
|
||||||
|
|
||||||
///////// .45 /////////
|
///////// .45 /////////
|
||||||
|
|
||||||
/obj/item/ammo_magazine/c45m
|
/obj/item/ammo_magazine/c45m
|
||||||
@@ -57,6 +61,10 @@
|
|||||||
name = "magazine (.45 AP)"
|
name = "magazine (.45 AP)"
|
||||||
ammo_type = /obj/item/ammo_casing/c45ap
|
ammo_type = /obj/item/ammo_casing/c45ap
|
||||||
|
|
||||||
|
/obj/item/ammo_magazine/box/emp/c45
|
||||||
|
name = "ammunition box (.45 haywire)"
|
||||||
|
ammo_type = /obj/item/ammo_casing/c45/emp
|
||||||
|
|
||||||
/obj/item/ammo_magazine/c45uzi
|
/obj/item/ammo_magazine/c45uzi
|
||||||
name = "stick magazine (.45)"
|
name = "stick magazine (.45)"
|
||||||
icon_state = "uzi45"
|
icon_state = "uzi45"
|
||||||
@@ -272,6 +280,10 @@
|
|||||||
max_ammo = 9
|
max_ammo = 9
|
||||||
multiple_sprites = 1
|
multiple_sprites = 1
|
||||||
|
|
||||||
|
/obj/item/ammo_magazine/box/emp/a10mm
|
||||||
|
name = "ammunition box (10mm haywire)"
|
||||||
|
ammo_type = /obj/item/ammo_casing/a10mm/emp
|
||||||
|
|
||||||
///////// 5.56mm /////////
|
///////// 5.56mm /////////
|
||||||
|
|
||||||
/obj/item/ammo_magazine/a556
|
/obj/item/ammo_magazine/a556
|
||||||
|
|||||||
@@ -24,6 +24,13 @@
|
|||||||
icon_state = "r-casing"
|
icon_state = "r-casing"
|
||||||
projectile_type = /obj/item/projectile/bullet/pistol/rubber
|
projectile_type = /obj/item/projectile/bullet/pistol/rubber
|
||||||
|
|
||||||
|
/obj/item/ammo_casing/c38/emp
|
||||||
|
name = ".38 haywire round"
|
||||||
|
desc = "A .38 bullet casing fitted with a single-use ion pulse generator."
|
||||||
|
icon_state = "empcasing"
|
||||||
|
projectile_type = /obj/item/projectile/ion/small
|
||||||
|
matter = list(DEFAULT_WALL_MATERIAL = 130, "uranium" = 100)
|
||||||
|
|
||||||
/obj/item/ammo_casing/c9mm
|
/obj/item/ammo_casing/c9mm
|
||||||
desc = "A 9mm bullet casing."
|
desc = "A 9mm bullet casing."
|
||||||
caliber = "9mm"
|
caliber = "9mm"
|
||||||
@@ -87,11 +94,24 @@
|
|||||||
icon_state = "r-casing"
|
icon_state = "r-casing"
|
||||||
projectile_type = /obj/item/projectile/energy/flash
|
projectile_type = /obj/item/projectile/energy/flash
|
||||||
|
|
||||||
|
/obj/item/ammo_casing/c45/emp
|
||||||
|
name = ".45 haywire round"
|
||||||
|
desc = "A .45 bullet casing fitted with a single-use ion pulse generator."
|
||||||
|
projectile_type = /obj/item/projectile/ion/small
|
||||||
|
icon_state = "empcasing"
|
||||||
|
matter = list(DEFAULT_WALL_MATERIAL = 130, "uranium" = 100)
|
||||||
|
|
||||||
/obj/item/ammo_casing/a10mm
|
/obj/item/ammo_casing/a10mm
|
||||||
desc = "A 10mm bullet casing."
|
desc = "A 10mm bullet casing."
|
||||||
caliber = "10mm"
|
caliber = "10mm"
|
||||||
projectile_type = /obj/item/projectile/bullet/pistol/medium
|
projectile_type = /obj/item/projectile/bullet/pistol/medium
|
||||||
|
|
||||||
|
/obj/item/ammo_casing/a10mm/emp
|
||||||
|
name = "10mm haywire round"
|
||||||
|
desc = "A 10mm bullet casing fitted with a single-use ion pulse generator."
|
||||||
|
projectile_type = /obj/item/projectile/ion/small
|
||||||
|
icon_state = "empcasing"
|
||||||
|
matter = list(DEFAULT_WALL_MATERIAL = 130, "uranium" = 100)
|
||||||
|
|
||||||
/obj/item/ammo_casing/shotgun
|
/obj/item/ammo_casing/shotgun
|
||||||
name = "shotgun slug"
|
name = "shotgun slug"
|
||||||
@@ -150,13 +170,13 @@
|
|||||||
projectile_type = /obj/item/projectile/energy/flash/flare
|
projectile_type = /obj/item/projectile/energy/flash/flare
|
||||||
matter = list(DEFAULT_WALL_MATERIAL = 90, "glass" = 90)
|
matter = list(DEFAULT_WALL_MATERIAL = 90, "glass" = 90)
|
||||||
|
|
||||||
|
|
||||||
/obj/item/ammo_casing/shotgun/emp
|
/obj/item/ammo_casing/shotgun/emp
|
||||||
name = "ion shell"
|
name = "ion shell"
|
||||||
desc = "An advanced shotgun round that creates a small EMP when it strikes a target."
|
desc = "An advanced shotgun round that creates a small EMP when it strikes a target."
|
||||||
icon_state = "empshell"
|
icon_state = "empshell"
|
||||||
projectile_type = /obj/item/projectile/bullet/shotgun/ion
|
projectile_type = /obj/item/projectile/ion
|
||||||
matter = list(DEFAULT_WALL_MATERIAL = 360, "glass" = 720)
|
// projectile_type = /obj/item/projectile/bullet/shotgun/ion
|
||||||
|
matter = list(DEFAULT_WALL_MATERIAL = 360, "uranium" = 240)
|
||||||
|
|
||||||
/obj/item/ammo_casing/a762
|
/obj/item/ammo_casing/a762
|
||||||
desc = "A 7.62mm bullet casing."
|
desc = "A 7.62mm bullet casing."
|
||||||
|
|||||||
@@ -12,14 +12,18 @@
|
|||||||
projectile_type = /obj/item/projectile/ion
|
projectile_type = /obj/item/projectile/ion
|
||||||
|
|
||||||
/obj/item/weapon/gun/energy/ionrifle/emp_act(severity)
|
/obj/item/weapon/gun/energy/ionrifle/emp_act(severity)
|
||||||
..(max(severity, 2)) //so it doesn't EMP itself, I guess
|
..(max(severity, 4)) //so it doesn't EMP itself, I guess
|
||||||
|
|
||||||
/obj/item/weapon/gun/energy/ionrifle/update_icon()
|
/obj/item/weapon/gun/energy/ionrifle/pistol
|
||||||
..()
|
name = "ion pistol"
|
||||||
if(power_supply.charge < charge_cost)
|
desc = "The NT Mk63 EW Pan is a man portable anti-armor weapon designed to disable mechanical threats, produced by NT. This model sacrifices capacity for portability.."
|
||||||
item_state = "ionrifle0"
|
icon_state = "ionpistol"
|
||||||
else
|
item_state = null
|
||||||
item_state = initial(item_state)
|
w_class = ITEMSIZE_NORMAL
|
||||||
|
force = 5
|
||||||
|
slot_flags = SLOT_BELT
|
||||||
|
charge_cost = 480
|
||||||
|
projectile_type = /obj/item/projectile/ion
|
||||||
|
|
||||||
/obj/item/weapon/gun/energy/decloner
|
/obj/item/weapon/gun/energy/decloner
|
||||||
name = "biological demolecularisor"
|
name = "biological demolecularisor"
|
||||||
|
|||||||
@@ -76,6 +76,10 @@
|
|||||||
fire_sound = 'sound/weapons/Gunshot_light.ogg'
|
fire_sound = 'sound/weapons/Gunshot_light.ogg'
|
||||||
ammo_type = /obj/item/ammo_casing/c38
|
ammo_type = /obj/item/ammo_casing/c38
|
||||||
|
|
||||||
|
/obj/item/weapon/gun/projectile/revolver/deckard/emp
|
||||||
|
ammo_type = /obj/item/ammo_casing/c38/emp
|
||||||
|
|
||||||
|
|
||||||
/obj/item/weapon/gun/projectile/revolver/deckard/update_icon()
|
/obj/item/weapon/gun/projectile/revolver/deckard/update_icon()
|
||||||
..()
|
..()
|
||||||
if(loaded.len)
|
if(loaded.len)
|
||||||
|
|||||||
@@ -172,7 +172,8 @@
|
|||||||
range_step = 1
|
range_step = 1
|
||||||
spread_step = 10
|
spread_step = 10
|
||||||
|
|
||||||
//EMP shotgun 'slug', it's basically a beanbag that pops a tiny emp when it hits.
|
|
||||||
|
//EMP shotgun 'slug', it's basically a beanbag that pops a tiny emp when it hits. //Not currently used
|
||||||
/obj/item/projectile/bullet/shotgun/ion
|
/obj/item/projectile/bullet/shotgun/ion
|
||||||
name = "ion slug"
|
name = "ion slug"
|
||||||
damage = 15
|
damage = 15
|
||||||
@@ -182,9 +183,10 @@
|
|||||||
|
|
||||||
/obj/item/projectile/bullet/shotgun/ion/on_hit(var/atom/target, var/blocked = 0)
|
/obj/item/projectile/bullet/shotgun/ion/on_hit(var/atom/target, var/blocked = 0)
|
||||||
..()
|
..()
|
||||||
empulse(target, 0, 0) //Only affects what it hits
|
empulse(target, 0, 0, 0, 0) //Only affects what it hits
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
|
|
||||||
/* "Rifle" rounds */
|
/* "Rifle" rounds */
|
||||||
|
|
||||||
/obj/item/projectile/bullet/rifle
|
/obj/item/projectile/bullet/rifle
|
||||||
|
|||||||
@@ -8,12 +8,16 @@
|
|||||||
light_range = 2
|
light_range = 2
|
||||||
light_power = 0.5
|
light_power = 0.5
|
||||||
light_color = "#55AAFF"
|
light_color = "#55AAFF"
|
||||||
|
var/pulse_range = 1
|
||||||
|
|
||||||
|
|
||||||
on_hit(var/atom/target, var/blocked = 0)
|
on_hit(var/atom/target, var/blocked = 0)
|
||||||
empulse(target, 1, 1)
|
empulse(target, pulse_range, pulse_range, pulse_range, pulse_range)
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
|
/obj/item/projectile/ion/small
|
||||||
|
pulse_range = 0
|
||||||
|
|
||||||
/obj/item/projectile/bullet/gyro
|
/obj/item/projectile/bullet/gyro
|
||||||
name ="explosive bolt"
|
name ="explosive bolt"
|
||||||
icon_state= "bolter"
|
icon_state= "bolter"
|
||||||
|
|||||||
@@ -665,7 +665,7 @@
|
|||||||
var/location = get_turf(holder.my_atom)
|
var/location = get_turf(holder.my_atom)
|
||||||
// 100 created volume = 4 heavy range & 7 light range. A few tiles smaller than traitor EMP grandes.
|
// 100 created volume = 4 heavy range & 7 light range. A few tiles smaller than traitor EMP grandes.
|
||||||
// 200 created volume = 8 heavy range & 14 light range. 4 tiles larger than traitor EMP grenades.
|
// 200 created volume = 8 heavy range & 14 light range. 4 tiles larger than traitor EMP grenades.
|
||||||
empulse(location, round(created_volume / 24), round(created_volume / 14), 1)
|
empulse(location, round(created_volume / 24), round(created_volume / 20), round(created_volume / 18), round(created_volume / 14), 1)
|
||||||
holder.clear_reagents()
|
holder.clear_reagents()
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|||||||
@@ -68,6 +68,8 @@
|
|||||||
hot_coco spawn_reagent = "hot_coco"
|
hot_coco spawn_reagent = "hot_coco"
|
||||||
milk spawn_reagent = "milk"
|
milk spawn_reagent = "milk"
|
||||||
cream spawn_reagent = "cream"
|
cream spawn_reagent = "cream"
|
||||||
|
mint spawn_reagent = "mint"
|
||||||
|
berry spawn_reagent = "berryjuice"
|
||||||
|
|
||||||
// ERT
|
// ERT
|
||||||
inaprov spawn_reagent = "inaprovaline"
|
inaprov spawn_reagent = "inaprovaline"
|
||||||
|
|||||||
@@ -131,5 +131,12 @@
|
|||||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/milk,
|
/obj/item/weapon/reagent_containers/chem_disp_cartridge/milk,
|
||||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/cream,
|
/obj/item/weapon/reagent_containers/chem_disp_cartridge/cream,
|
||||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/tea,
|
/obj/item/weapon/reagent_containers/chem_disp_cartridge/tea,
|
||||||
/obj/item/weapon/reagent_containers/chem_disp_cartridge/ice
|
/obj/item/weapon/reagent_containers/chem_disp_cartridge/ice,
|
||||||
|
/obj/item/weapon/reagent_containers/chem_disp_cartridge/mint,
|
||||||
|
/obj/item/weapon/reagent_containers/chem_disp_cartridge/orange,
|
||||||
|
/obj/item/weapon/reagent_containers/chem_disp_cartridge/lemon,
|
||||||
|
/obj/item/weapon/reagent_containers/chem_disp_cartridge/lime,
|
||||||
|
/obj/item/weapon/reagent_containers/chem_disp_cartridge/berry,
|
||||||
|
|
||||||
|
|
||||||
)
|
)
|
||||||
@@ -1586,6 +1586,14 @@ CIRCUITS BELOW
|
|||||||
build_path = /obj/item/weapon/implant/integrated_circuit
|
build_path = /obj/item/weapon/implant/integrated_circuit
|
||||||
sort_string = "VCAAE"
|
sort_string = "VCAAE"
|
||||||
|
|
||||||
|
/datum/design/item/translator
|
||||||
|
name = "handheld translator"
|
||||||
|
id = "translator"
|
||||||
|
req_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 3)
|
||||||
|
materials = list(DEFAULT_WALL_MATERIAL = 2000, "glass" = 2000)
|
||||||
|
build_path = /obj/item/device/universal_translator
|
||||||
|
sort_string = "HABBA"
|
||||||
|
|
||||||
/* Uncomment if someone makes these buildable
|
/* Uncomment if someone makes these buildable
|
||||||
/datum/design/circuit/general_alert
|
/datum/design/circuit/general_alert
|
||||||
name = "general alert console"
|
name = "general alert console"
|
||||||
|
|||||||
@@ -50,6 +50,11 @@
|
|||||||
if(FA.z in using_map.contact_levels)
|
if(FA.z in using_map.contact_levels)
|
||||||
FA.set_security_level(newlevel)
|
FA.set_security_level(newlevel)
|
||||||
|
|
||||||
|
if(level >= SEC_LEVEL_RED)
|
||||||
|
atc.reroute_traffic(yes = 1) // Tell them fuck off we're busy.
|
||||||
|
else
|
||||||
|
atc.reroute_traffic(yes = 0)
|
||||||
|
|
||||||
|
|
||||||
/proc/get_security_level()
|
/proc/get_security_level()
|
||||||
switch(security_level)
|
switch(security_level)
|
||||||
|
|||||||
@@ -84,8 +84,14 @@
|
|||||||
if(1)
|
if(1)
|
||||||
qdel(src)
|
qdel(src)
|
||||||
if(2)
|
if(2)
|
||||||
|
if(prob(75))
|
||||||
|
qdel(src)
|
||||||
|
if(3)
|
||||||
if(prob(50))
|
if(prob(50))
|
||||||
qdel(src)
|
qdel(src)
|
||||||
|
if(4)
|
||||||
|
if(prob(25))
|
||||||
|
qdel(src)
|
||||||
|
|
||||||
|
|
||||||
/obj/machinery/shield/hitby(AM as mob|obj)
|
/obj/machinery/shield/hitby(AM as mob|obj)
|
||||||
@@ -264,7 +270,7 @@
|
|||||||
else
|
else
|
||||||
user << "The device must first be secured to the floor."
|
user << "The device must first be secured to the floor."
|
||||||
return
|
return
|
||||||
|
|
||||||
/obj/machinery/shieldgen/emag_act(var/remaining_charges, var/mob/user)
|
/obj/machinery/shieldgen/emag_act(var/remaining_charges, var/mob/user)
|
||||||
if(!malfunction)
|
if(!malfunction)
|
||||||
malfunction = 1
|
malfunction = 1
|
||||||
|
|||||||
@@ -11,13 +11,15 @@
|
|||||||
|
|
||||||
cooldown_min = 200 //50 deciseconds reduction per rank
|
cooldown_min = 200 //50 deciseconds reduction per rank
|
||||||
|
|
||||||
var/emp_heavy = 6
|
var/emp_heavy = 3
|
||||||
var/emp_light = 10
|
var/emp_med = 5
|
||||||
|
var/emp_light = 8
|
||||||
|
var/emp_long = 10
|
||||||
|
|
||||||
hud_state = "wiz_tech"
|
hud_state = "wiz_tech"
|
||||||
|
|
||||||
/spell/aoe_turf/disable_tech/cast(list/targets)
|
/spell/aoe_turf/disable_tech/cast(list/targets)
|
||||||
|
|
||||||
for(var/turf/target in targets)
|
for(var/turf/target in targets)
|
||||||
empulse(get_turf(target), emp_heavy, emp_light)
|
empulse(get_turf(target), emp_heavy, emp_med, emp_light, emp_long)
|
||||||
return
|
return
|
||||||
@@ -432,4 +432,4 @@
|
|||||||
/obj/item/weapon/spellbook/oneuse/charge/recoil(mob/user as mob)
|
/obj/item/weapon/spellbook/oneuse/charge/recoil(mob/user as mob)
|
||||||
..()
|
..()
|
||||||
user <<"<span class='warning'>[src] suddenly feels very warm!</span>"
|
user <<"<span class='warning'>[src] suddenly feels very warm!</span>"
|
||||||
empulse(src, 1, 1)
|
empulse(src, 1, 1, 1, 1)
|
||||||
|
|||||||
@@ -9,5 +9,5 @@
|
|||||||
/datum/artifact_effect/emp/DoEffectPulse()
|
/datum/artifact_effect/emp/DoEffectPulse()
|
||||||
if(holder)
|
if(holder)
|
||||||
var/turf/T = get_turf(holder)
|
var/turf/T = get_turf(holder)
|
||||||
empulse(T, effectrange/2, effectrange)
|
empulse(T, effectrange/4, effectrange/3, effectrange/2, effectrange)
|
||||||
return 1
|
return 1
|
||||||
|
|||||||
@@ -96,10 +96,16 @@
|
|||||||
update_values()
|
update_values()
|
||||||
|
|
||||||
|
|
||||||
|
// Used to equalize the mixture between two zones before sleeping an edge.
|
||||||
/datum/gas_mixture/proc/equalize(datum/gas_mixture/sharer)
|
/datum/gas_mixture/proc/equalize(datum/gas_mixture/sharer)
|
||||||
var/our_heatcap = heat_capacity()
|
var/our_heatcap = heat_capacity()
|
||||||
var/share_heatcap = sharer.heat_capacity()
|
var/share_heatcap = sharer.heat_capacity()
|
||||||
|
|
||||||
|
// Special exception: there isn't enough air around to be worth processing this edge next tick, zap both to zero.
|
||||||
|
if(total_moles + sharer.total_moles <= MINIMUM_AIR_TO_SUSPEND)
|
||||||
|
gas.Cut()
|
||||||
|
sharer.gas.Cut()
|
||||||
|
|
||||||
for(var/g in gas|sharer.gas)
|
for(var/g in gas|sharer.gas)
|
||||||
var/comb = gas[g] + sharer.gas[g]
|
var/comb = gas[g] + sharer.gas[g]
|
||||||
comb /= volume + sharer.volume
|
comb /= volume + sharer.volume
|
||||||
@@ -110,6 +116,9 @@
|
|||||||
temperature = ((temperature * our_heatcap) + (sharer.temperature * share_heatcap)) / (our_heatcap + share_heatcap)
|
temperature = ((temperature * our_heatcap) + (sharer.temperature * share_heatcap)) / (our_heatcap + share_heatcap)
|
||||||
sharer.temperature = temperature
|
sharer.temperature = temperature
|
||||||
|
|
||||||
|
update_values()
|
||||||
|
sharer.update_values()
|
||||||
|
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
|
|
||||||
@@ -279,9 +288,16 @@
|
|||||||
|
|
||||||
|
|
||||||
//Checks if we are within acceptable range of another gas_mixture to suspend processing or merge.
|
//Checks if we are within acceptable range of another gas_mixture to suspend processing or merge.
|
||||||
/datum/gas_mixture/proc/compare(const/datum/gas_mixture/sample)
|
/datum/gas_mixture/proc/compare(const/datum/gas_mixture/sample, var/vacuum_exception = 0)
|
||||||
if(!sample) return 0
|
if(!sample) return 0
|
||||||
|
|
||||||
|
if(vacuum_exception)
|
||||||
|
// Special case - If one of the two is zero pressure, the other must also be zero.
|
||||||
|
// This prevents suspending processing when an air-filled room is next to a vacuum,
|
||||||
|
// an edge case which is particually obviously wrong to players
|
||||||
|
if(total_moles == 0 && sample.total_moles != 0 || sample.total_moles == 0 && total_moles != 0)
|
||||||
|
return 0
|
||||||
|
|
||||||
var/list/marked = list()
|
var/list/marked = list()
|
||||||
for(var/g in gas)
|
for(var/g in gas)
|
||||||
if((abs(gas[g] - sample.gas[g]) > MINIMUM_AIR_TO_SUSPEND) && \
|
if((abs(gas[g] - sample.gas[g]) > MINIMUM_AIR_TO_SUSPEND) && \
|
||||||
|
|||||||
38
html/changelogs/Anewbe - EMP.yml
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
################################
|
||||||
|
# Example Changelog File
|
||||||
|
#
|
||||||
|
# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
|
||||||
|
#
|
||||||
|
# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
|
||||||
|
# When it is, any changes listed below will disappear.
|
||||||
|
#
|
||||||
|
# Valid Prefixes:
|
||||||
|
# bugfix
|
||||||
|
# wip (For works in progress)
|
||||||
|
# tweak
|
||||||
|
# soundadd
|
||||||
|
# sounddel
|
||||||
|
# rscadd (general adding of nice things)
|
||||||
|
# rscdel (general deleting of nice things)
|
||||||
|
# imageadd
|
||||||
|
# imagedel
|
||||||
|
# maptweak
|
||||||
|
# spellcheck (typo fixes)
|
||||||
|
# experiment
|
||||||
|
#################################
|
||||||
|
|
||||||
|
# Your name.
|
||||||
|
author: Anewbe
|
||||||
|
|
||||||
|
# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
|
||||||
|
delete-after: True
|
||||||
|
|
||||||
|
# Any changes you've made. See valid prefix list above.
|
||||||
|
# INDENT WITH TWO SPACES. NOT TABS. SPACES.
|
||||||
|
# SCREW THIS UP AND IT WON'T WORK.
|
||||||
|
# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
|
||||||
|
# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
|
||||||
|
changes:
|
||||||
|
- rscadd: "Added an ion pistol, has five shots."
|
||||||
|
- rscadd: "Added Bay's Haywire rounds."
|
||||||
|
- tweak: "EMP now works on four levels, instead of two."
|
||||||
36
html/changelogs/Anewbe - Translator.yml
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
################################
|
||||||
|
# Example Changelog File
|
||||||
|
#
|
||||||
|
# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
|
||||||
|
#
|
||||||
|
# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
|
||||||
|
# When it is, any changes listed below will disappear.
|
||||||
|
#
|
||||||
|
# Valid Prefixes:
|
||||||
|
# bugfix
|
||||||
|
# wip (For works in progress)
|
||||||
|
# tweak
|
||||||
|
# soundadd
|
||||||
|
# sounddel
|
||||||
|
# rscadd (general adding of nice things)
|
||||||
|
# rscdel (general deleting of nice things)
|
||||||
|
# imageadd
|
||||||
|
# imagedel
|
||||||
|
# maptweak
|
||||||
|
# spellcheck (typo fixes)
|
||||||
|
# experiment
|
||||||
|
#################################
|
||||||
|
|
||||||
|
# Your name.
|
||||||
|
author: Anewbe
|
||||||
|
|
||||||
|
# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
|
||||||
|
delete-after: True
|
||||||
|
|
||||||
|
# Any changes you've made. See valid prefix list above.
|
||||||
|
# INDENT WITH TWO SPACES. NOT TABS. SPACES.
|
||||||
|
# SCREW THIS UP AND IT WON'T WORK.
|
||||||
|
# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
|
||||||
|
# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
|
||||||
|
changes:
|
||||||
|
- rscadd: "Adds a universal translator device, courtesy of a downstream."
|
||||||
|
Before Width: | Height: | Size: 44 KiB After Width: | Height: | Size: 46 KiB |
|
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 50 KiB |
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 25 KiB |
|
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 49 KiB |
|
Before Width: | Height: | Size: 69 KiB After Width: | Height: | Size: 69 KiB |
@@ -818,6 +818,7 @@
|
|||||||
#include "code\game\objects\items\devices\taperecorder.dm"
|
#include "code\game\objects\items\devices\taperecorder.dm"
|
||||||
#include "code\game\objects\items\devices\traitordevices.dm"
|
#include "code\game\objects\items\devices\traitordevices.dm"
|
||||||
#include "code\game\objects\items\devices\transfer_valve.dm"
|
#include "code\game\objects\items\devices\transfer_valve.dm"
|
||||||
|
#include "code\game\objects\items\devices\translator.dm"
|
||||||
#include "code\game\objects\items\devices\tvcamera.dm"
|
#include "code\game\objects\items\devices\tvcamera.dm"
|
||||||
#include "code\game\objects\items\devices\uplink.dm"
|
#include "code\game\objects\items\devices\uplink.dm"
|
||||||
#include "code\game\objects\items\devices\uplink_random_lists.dm"
|
#include "code\game\objects\items\devices\uplink_random_lists.dm"
|
||||||
@@ -1209,10 +1210,10 @@
|
|||||||
#include "code\modules\awaymissions\trigger.dm"
|
#include "code\modules\awaymissions\trigger.dm"
|
||||||
#include "code\modules\awaymissions\zlevel.dm"
|
#include "code\modules\awaymissions\zlevel.dm"
|
||||||
#include "code\modules\blob\blob.dm"
|
#include "code\modules\blob\blob.dm"
|
||||||
#include "code\modules\busy_space\_defines.dm"
|
|
||||||
#include "code\modules\busy_space\air_traffic.dm"
|
#include "code\modules\busy_space\air_traffic.dm"
|
||||||
#include "code\modules\busy_space\loremaster.dm"
|
#include "code\modules\busy_space\loremaster.dm"
|
||||||
#include "code\modules\busy_space\orgs.dm"
|
#include "code\modules\busy_space\organizations.dm"
|
||||||
|
#include "code\modules\busy_space\organizations_vr.dm"
|
||||||
#include "code\modules\client\client defines.dm"
|
#include "code\modules\client\client defines.dm"
|
||||||
#include "code\modules\client\client procs.dm"
|
#include "code\modules\client\client procs.dm"
|
||||||
#include "code\modules\client\movement.dm"
|
#include "code\modules\client\movement.dm"
|
||||||
|
|||||||