The Tau Ceti Foreign Legion (#5779)

This pr adds the Tau Ceti Foreign Legion, at the request of the lore team, to replace/be an alternative to the ert.
This commit is contained in:
Alberyk
2018-12-30 12:06:21 +01:00
committed by Werner
parent 03b689bd5f
commit ed0297a697
84 changed files with 69634 additions and 67896 deletions
+46
View File
@@ -0,0 +1,46 @@
var/datum/antagonist/legion/legion
/datum/antagonist/legion
id = MODE_LEGION
bantype = "Tau Ceti Foreign Legion"
role_text = "Tau Ceti Foreign Legion Volunteer"
role_text_plural = "Tau Ceti Foreign Legion Volunteers"
welcome_text = "As member of the Tau Ceti Foreign Legion, you answer to your leader and NanoTrasen officials."
leader_welcome_text = "As leader of the Tau Ceti Foreign Legion Team, you answer only to the Tau Ceti goverment and NanoTrasen officials. It is recommended that you attempt to cooperate with the captain and the crew when possible."
landmark_id = "Tau Ceti Legion"
id_type = /obj/item/weapon/card/id/legion
flags = ANTAG_OVERRIDE_JOB | ANTAG_SET_APPEARANCE | ANTAG_HAS_LEADER | ANTAG_CHOOSE_NAME | ANTAG_RANDOM_EXCEPTED
antaghud_indicator = "hudloyalist"
hard_cap = 5
hard_cap_round = 7
initial_spawn_req = 5
initial_spawn_target = 7
/datum/antagonist/legion/create_default(var/mob/source)
var/mob/living/carbon/human/M = ..()
if(istype(M)) M.age = rand(25,45)
/datum/antagonist/legion/New()
..()
legion = src
/datum/antagonist/legion/greet(var/datum/mind/player)
if(!..())
return
to_chat(player.current, "The Tau Ceti Foreign Legion works for the Republic of Biesel; your job is to protect [current_map.company_name]. There is a code red alert on [station_name()], you are tasked to go and fix the problem.")
to_chat(player.current, "You should first gear up and discuss a plan with your team. More members may be joining, don't move out before you're ready.")
/datum/antagonist/legion/equip(var/mob/living/carbon/human/player)
player.equip_to_slot_or_del(new /obj/item/device/radio/headset/legion(src), slot_l_ear)
player.equip_to_slot_or_del(new /obj/item/clothing/under/legion(src), slot_w_uniform)
player.equip_to_slot_or_del(new /obj/item/clothing/shoes/swat(src), slot_shoes)
player.equip_to_slot_or_del(new /obj/item/clothing/gloves/swat(src), slot_gloves)
player.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses(src), slot_glasses)
player.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/legion(src), slot_back)
create_id(role_text, player)
return 1
+6
View File
@@ -476,6 +476,12 @@ var/const/access_journalist = 70//journalist's office access
desc = "Merchant Access"
access_type = ACCESS_TYPE_CENTCOM
/var/const/access_legion = 111//tau ceti foreign legion access
/datum/access/legion
id = access_legion
desc = "Tau Ceti Foreign Legion Access"
access_type = ACCESS_TYPE_CENTCOM
/***************
* Antag access *
***************/
+1 -1
View File
@@ -672,7 +672,7 @@
desc = "Spare tool vending. What? Did you expect some witty description?"
icon_state = "engivend"
icon_deny = "engivend-deny"
req_access = list(access_engine_equip)
req_access = list(access_engine)
vend_id = "tools"
products = list(
/obj/item/clothing/glasses/meson = 2,
+30 -1
View File
@@ -8,7 +8,7 @@
/obj/mecha/combat/tank
name = "light adhomian tank"
desc = "The Ha'rron MK.IV light tank is an armored vehicle commonly used by tajaran military forces."
icon = 'icons/mecha/mecha_large.dmi'
icon = 'icons/mecha/mecha_64x64.dmi'
icon_state = "tank"
initial_icon = "tank"
pixel_x = -16
@@ -127,6 +127,35 @@
playsound(src.loc, file, 100, 0, -6.6, environment=1)
/obj/mecha/combat/tank/jotun
name = "Jotun"
desc = "A heavy armored vehicle. Commonly produced by the Sol Alliance and fielded by the forces of the Tau Ceti Foreign Legion."
icon = 'icons/mecha/mecha_114x59.dmi'
icon_state = "jotun"
initial_icon = "jotun"
pixel_x = -41
health = 950
w_class = 45
/obj/mecha/combat/tank/jotun/Initialize()
.= ..()
var/obj/item/mecha_parts/mecha_equipment/ME
if(equipment.len)//Now to remove it and equip anew.
for(ME in equipment)
ME.detach(src)
qdel(ME)
ME = new /obj/item/mecha_parts/mecha_equipment/weapon/energy/pulse
ME.attach(src)
ME = new /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/cannon
ME.attach(src)
ME = new /obj/item/mecha_parts/mecha_equipment/tool/passenger
ME.attach(src)
ME = new /obj/item/mecha_parts/mecha_equipment/armor_booster/antiproj_armor_booster
ME.attach(src)
return
#undef NOMINAL
#undef FIRSTRUN
#undef POWER
+1 -1
View File
@@ -205,7 +205,7 @@
/obj/effect/decal/mecha_wreckage/tank
name = "adhomian light tank wreckage"
desc = "Remains of some unfortunate armored vehicle. Completely unrepairable."
icon = 'icons/mecha/mecha_large.dmi'
icon = 'icons/mecha/mecha_64x64.dmi'
icon_state = "tank-broken"
anchored = TRUE
pixel_x = -16
+21
View File
@@ -71,3 +71,24 @@
qdel (B)
/obj/mecha/working/ripley/combat
desc = "A large APLU unit fitted with specialized composite armor and fancy, though old targeting systems."
name = "combat APLU \"Ripley\""
icon_state = "combatripley"
initial_icon = "combatripley"
health = 300
wreckage = /obj/effect/decal/mecha_wreckage/ripley
deflect_chance = 10
damage_absorption = list("brute"=0.75,"fire"=1,"bullet"=0.8,"laser"=0.7,"energy"=0.85,"bomb"=1)
/obj/mecha/working/ripley/combat/Initialize()
.= ..()
var/obj/item/mecha_parts/mecha_equipment/ME = new /obj/item/mecha_parts/mecha_equipment/weapon/energy/riggedlaser
ME.attach(src)
ME = new /obj/item/mecha_parts/mecha_equipment/tool/drill
ME.attach(src)
ME = new /obj/item/mecha_parts/mecha_equipment/tool/passenger
ME.attach(src)
ME = new /obj/item/mecha_parts/mecha_equipment/tool/passenger
ME.attach(src)
return
@@ -63,4 +63,11 @@
/obj/effect/projectile/muzzle/tachyon
icon_state = "muzzle_pulse"
light_color = LIGHT_COLOR_CYAN
light_color = LIGHT_COLOR_CYAN
/obj/effect/projectile/muzzle/bolt
icon_state = "muzzle_bolt"
light_color = LIGHT_COLOR_FIRE
/obj/effect/projectile/muzzle/gauss
icon_state = "muzzle_gauss"
@@ -136,6 +136,10 @@
name = "\improper ERT radio encryption key"
channels = list("Response Team" = 1, "Science" = 1, "Command" = 1, "Medical" = 1, "Engineering" = 1, "Security" = 1, "Supply" = 1, "Service" = 1)
/obj/item/device/encryptionkey/onlyert
name = "\improper ERT radio encryption key"
channels = list("Response Team" = 1)
/obj/item/device/encryptionkey/entertainment
name = "entertainment radio key"
channels = list("Entertainment" = 1)
@@ -219,6 +219,13 @@
item_state = "headset"
ks2type = /obj/item/device/encryptionkey/ert
/obj/item/device/radio/headset/legion
name = "Tau Ceti Foreign Legion radio headset"
desc = "The headset used by NanoTrasen sanctioned response forces."
icon_state = "com_headset"
item_state = "headset"
ks2type = /obj/item/device/encryptionkey/onlyert
/obj/item/device/radio/headset/ia
name = "internal affairs headset"
desc = "The headset of your worst enemy."
@@ -363,6 +363,12 @@ obj/item/weapon/card/id/ert/New()
access = get_all_station_access() + get_centcom_access("Emergency Response Team")
..()
/obj/item/weapon/card/id/legion
name = "\improper Tau Ceti Foreign Legion ID"
icon_state = "centcom"
assignment = "Tau Ceti Foreign Legion Volunteer"
access = list(access_legion, access_maint_tunnels, access_external_airlocks, access_security, access_engine, access_medical, access_research)
/obj/item/weapon/card/id/all_access
name = "\improper Administrator's spare ID"
desc = "The spare ID of the Lord of Lords himself."
@@ -370,6 +376,7 @@ obj/item/weapon/card/id/ert/New()
item_state = "tdgreen"
registered_name = "Administrator"
assignment = "Administrator"
/obj/item/weapon/card/id/all_access/New()
access = get_access_ids()
..()
@@ -258,12 +258,28 @@
name = "energy cutlass"
desc = "Arrrr matey."
icon_state = "cutlass0"
base_reflectchance = 60
base_block_chance = 60
/obj/item/weapon/melee/energy/sword/pirate/activate(mob/living/user)
..()
icon_state = "cutlass1"
/obj/item/weapon/melee/energy/sword/knife
name = "energy utility knife"
desc = "Some cheap energy blade, branded at the hilt with the logo of the Tau Ceti Foreign Legion."
icon_state = "edagger0"
base_reflectchance = 10
base_block_chance = 10
active_force = 20
force = 10
origin_tech = list(TECH_MAGNET = 3)
/obj/item/weapon/melee/energy/sword/knife/activate(mob/living/user)
..()
icon_state = "edagger1"
/*
*Power Sword
*/
@@ -227,6 +227,18 @@
else
set_light(0)
/obj/item/weapon/shield/energy/legion
name = "energy barrier"
desc = "A large deployable energy shield meant to provide excellent protection against ranged attacks."
icon_state = "ebarrier0"
/obj/item/weapon/shield/energy/legion/update_icon()
icon_state = "ebarrier[active]"
if(active)
set_light(1.5, 1.5, "#33FFFF")
else
set_light(0)
// tact
/obj/item/weapon/shield/riot/tact
name = "tactical shield"
@@ -465,5 +465,10 @@
/obj/item/weapon/storage/backpack/messenger/wizard
name = "wizardly messenger bag"
desc = "A wizardly backpack worn over one shoulder. This one is in blue and purple colors. "
desc = "A wizardly backpack worn over one shoulder. This one is in blue and purple colors."
icon_state = "courierbagwizard"
/obj/item/weapon/storage/backpack/legion
name = "military rucksack"
desc = "A sturdy backpack with the emblems and markings of the Tau Ceti Foreign Legion."
icon_state = "legion_bag"
+32 -6
View File
@@ -5,6 +5,7 @@ var/global/send_emergency_team = 0 // Used for automagic response teams
// 'admin_emergency_team' for admin-spawned response teams
var/ert_base_chance = 10 // Default base chance. Will be incremented by increment ERT chance.
var/can_call_ert
var/ert_type = "NanoTrasen Response Team" //what ert type will be deployed
/client/proc/response_team()
set name = "Dispatch Emergency Response Team"
@@ -26,13 +27,19 @@ var/can_call_ert
switch(alert("The station is not in red alert. Do you still want to dispatch a response team?",,"Yes","No"))
if("No")
return
var/choice = input("Select the response team type","Response team selection") as null|anything in list("NanoTrasen Response Team", "Tau Ceti Foreign Legion")
if(choice)
ert_type = choice
if(send_emergency_team)
usr << "<span class='danger'>Looks like somebody beat you to it!</span>"
return
message_admins("[key_name_admin(usr)] is dispatching an Emergency Response Team.", 1)
log_admin("[key_name(usr)] used Dispatch Response Team.",admin_key=key_name(usr))
trigger_armed_response_team(1)
trigger_armed_response_team(1, TRUE)
client/verb/JoinResponseTeam()
@@ -44,16 +51,30 @@ client/verb/JoinResponseTeam()
return
if(istype(usr,/mob/abstract/observer) || istype(usr,/mob/abstract/new_player))
if(!send_emergency_team)
usr << "No emergency response team is currently being sent."
return
if(jobban_isbanned(usr, "Antagonist") || jobban_isbanned(usr, "Emergency Response Team") || jobban_isbanned(usr, "Security Officer"))
usr << "<span class='danger'>You are jobbanned from the emergency reponse team!</span>"
return
if(ert.current_antagonists.len >= ert.hard_cap)
usr << "The emergency response team is already full!"
return
ert.create_default(usr)
switch(ert_type)
if("Tau Ceti Foreign Legion")
if(ert.current_antagonists.len >= ert.hard_cap)
usr << "The emergency response team is already full!"
return
legion.create_default(usr)
else
if(ert.current_antagonists.len >= ert.hard_cap)
usr << "The emergency response team is already full!"
return
ert.create_default(usr)
else
usr << "You need to be an observer or new player to use this."
@@ -96,7 +117,7 @@ proc/increment_ert_chance()
sleep(600 * 3) // Minute * Number of Minutes
proc/trigger_armed_response_team(var/force = 0)
proc/trigger_armed_response_team(var/force = 0, forced_choice = FALSE)
if(!can_call_ert && !force)
return
if(send_emergency_team)
@@ -117,8 +138,13 @@ proc/trigger_armed_response_team(var/force = 0)
command_announcement.Announce("It would appear that an emergency response team was requested for [station_name()]. We will prepare and send one as soon as possible.", "[current_map.boss_name]")
if(!forced_choice)
var/random_team = pick("NanoTrasen Response Team", "Tau Ceti Foreign Legion")
ert_type = random_team
can_call_ert = 0 // Only one call per round, gentleman.
send_emergency_team = 1
sleep(600 * 5)
send_emergency_team = 0 // Can no longer join the ERT.
ert_type = "NanoTrasen Response Team"