The Beruang can now sent to visit the station once per round, with traders gathered, in the same manner as the admin ERT call!

This commit is contained in:
Jon
2016-07-08 16:07:34 +01:00
parent de46ecbbe2
commit 88debefe3e
10 changed files with 3087 additions and 2915 deletions
+1
View File
@@ -68,6 +68,7 @@ var/list/be_special_flags = list(
#define MODE_COMMANDO "commando"
#define MODE_DEATHSQUAD "deathsquad"
#define MODE_ERT "ert"
#define MODE_TRADE "trader"
#define MODE_MERCENARY "mercenary"
#define MODE_NINJA "ninja"
#define MODE_RAIDER "raider"
+65
View File
@@ -0,0 +1,65 @@
var/datum/antagonist/trader/traders
/datum/antagonist/trader
id = MODE_TRADE
role_type = BE_OPERATIVE
role_text = "Trader"
role_text_plural = "Traders"
welcome_text = "As a crewmember of the Beruang, you answer to your captain and international laws of space."
antag_text = "You are an <b>non-antagonist</b> visitor! Within the rules, \
try to provide interesting interaction for the crew. \
Try to make sure other players have <i>fun</i>! If you are confused or at a loss, always adminhelp, \
and before taking extreme actions, please try to also contact the administration! \
Think through your actions and make the roleplay immersive! <b>Please remember all \
rules apply to you.</b>"
leader_welcome_text = "As Captain of the Beruang, you have control over your crew and cargo. It may be worth briefly discussing a consistent shared backstory with your crew."
landmark_id = "Trader"
id_type = /obj/item/weapon/card/id/external
flags = ANTAG_OVERRIDE_JOB | ANTAG_SET_APPEARANCE | ANTAG_HAS_LEADER | ANTAG_CHOOSE_NAME
hard_cap = 5
hard_cap_round = 7
initial_spawn_req = 5
initial_spawn_target = 7
/datum/antagonist/trader/create_default(var/mob/source)
var/mob/living/carbon/human/M = ..()
if(istype(M)) M.age = rand(25,45)
/datum/antagonist/trader/New()
..()
traders = src
/datum/antagonist/trader/greet(var/datum/mind/player)
if(!..())
return
player.current << "The Beruang is an independent cargo hauler, unless you decide otherwise. You're on your way to [station_name()]."
player.current << "You may want to discuss a collective story with the rest of your crew. More members may be joining, so don't move out straight away!"
/datum/antagonist/trader/equip(var/mob/living/carbon/human/player)
player.equip_to_slot_or_del(new /obj/item/clothing/under/rank/cargotech(src), slot_w_uniform)
player.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(src), slot_shoes)
player.equip_to_slot_or_del(new /obj/item/clothing/gloves/brown(src), slot_gloves)
player.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses(src), slot_glasses)
create_radio(PUB_FREQ, player) //Assume they tune their headsets into the station's public radio as they approach
var/obj/item/weapon/card/id/id = create_id("Trader", player, equip = 0)
id.name = "[player.real_name]'s Passport"
id.assignment = "Trader"
id.access |= access_trader
var/obj/item/weapon/storage/wallet/W = new(player)
W.handle_item_insertion(id)
player.equip_to_slot_or_del(W, slot_wear_id)
spawn_money(rand(50,150)*10,W)
return 1
/datum/antagonist/trader/update_access(var/mob/living/player)
for(var/obj/item/weapon/storage/wallet/W in player.contents)
for(var/obj/item/weapon/card/id/id in W.contents)
id.name = "[player.real_name]'s Passport"
id.registered_name = player.real_name
W.name = "[initial(W.name)] ([id.name])"
+2 -1
View File
@@ -12,4 +12,5 @@
#define ACCESS_TYPE_CENTCOM 1
#define ACCESS_TYPE_STATION 2
#define ACCESS_TYPE_SYNDICATE 4
#define ACCESS_TYPE_ALL (ACCESS_TYPE_CENTCOM|ACCESS_TYPE_STATION|ACCESS_TYPE_SYNDICATE)
#define ACCESS_TYPE_PRIVATE 8
#define ACCESS_TYPE_ALL (ACCESS_TYPE_CENTCOM|ACCESS_TYPE_STATION|ACCESS_TYPE_SYNDICATE|ACCESS_TYPE_PRIVATE)
+7
View File
@@ -125,6 +125,13 @@
return priv_syndicate_access
/var/list/priv_private_access
/proc/get_all_private_access()
if(!priv_private_access)
priv_private_access = get_access_ids(ACCESS_TYPE_PRIVATE)
return priv_syndicate_access
/var/list/priv_region_access
/proc/get_region_accesses(var/code)
if(code == ACCESS_REGION_ALL)
+5
View File
@@ -457,3 +457,8 @@
/datum/access/crate_cash
id = access_crate_cash
access_type = ACCESS_TYPE_NONE
/var/const/access_trader = 160//General Beruang Trader Access
/datum/access/trader
id = access_trader
access_type = ACCESS_TYPE_PRIVATE
+8 -1
View File
@@ -350,4 +350,11 @@
desc = "A card which represents common sense and responsibility."
icon_state = "civGold"
primary_color = rgb(0,94,142)
secondary_color = rgb(255,223,127)
secondary_color = rgb(255,223,127)
/obj/item/weapon/card/id/external
name = "identification card"
desc = "An identification card of some sort. It does not look like it is issued by NT."
icon_state = "permit"
primary_color = rgb(142,94,0)
secondary_color = rgb(191,159,95)
+69
View File
@@ -0,0 +1,69 @@
//Based on the ERT setup
var/global/send_beruang = 0
var/can_call_traders = 1
/client/proc/trader_ship()
set name = "Dispatch Beruang Trader Ship"
set category = "Special Verbs"
set desc = "Invite players to join the Beruang."
if(!holder)
usr << "<span class='danger'>Only administrators may use this command.</span>"
return
if(!ticker)
usr << "<span class='danger'>The game hasn't started yet!</span>"
return
if(ticker.current_state == 1)
usr << "<span class='danger'>The round hasn't started yet!</span>"
return
if(send_beruang)
usr << "<span class='danger'>The Beruang has already been sent this round!</span>"
return
if(alert("Do you want to dispatch the Beruang trade ship?",,"Yes","No") != "Yes")
return
if(get_security_level() == "red") // Allow admins to reconsider if the alert level is Red
switch(alert("The station is in red alert. Do you still want to send traders?",,"Yes","No"))
if("No")
return
if(send_beruang)
usr << "<span class='danger'>Looks like somebody beat you to it!</span>"
return
message_admins("[key_name_admin(usr)] is dispatching the Beruang.", 1)
log_admin("[key_name(usr)] used Dispatch Beruang Trader Ship.")
trigger_trader_visit()
client/verb/JoinTraders()
set name = "Join Trader Visit"
set category = "IC"
if(!MayRespawn(1))
usr << "<span class='warning'>You cannot join the traders.</span>"
return
if(istype(usr,/mob/observer/dead) || istype(usr,/mob/new_player))
if(!send_beruang)
usr << "The Beruang is not currently heading to the station."
return
if(traders.current_antagonists.len >= traders.hard_cap)
usr << "The number of trader slots is already full!"
return
traders.create_default(usr)
else
usr << "You need to be an observer or new player to use this."
proc/trigger_trader_visit()
if(!can_call_traders)
return
if(send_beruang)
return
command_announcement.Announce("Incoming cargo hauler: Beruang (Reg: VRS 22EB1F11C2).", "[station_name()] Traffic Control")
can_call_traders = 0 // Only one call per round.
send_beruang = 1
sleep(600 * 5)
send_beruang = 0 // Can no longer join the traders.
+1
View File
@@ -80,6 +80,7 @@ var/list/admin_verbs_admin = list(
/client/proc/man_up,
/client/proc/global_man_up,
/client/proc/response_team, // Response Teams admin verb,
/client/proc/trader_ship, // Trader ship admin verb,
/client/proc/toggle_antagHUD_use,
/client/proc/toggle_antagHUD_restrictions,
/client/proc/allow_character_respawn, // Allows a ghost to respawn ,
+2927 -2913
View File
File diff suppressed because it is too large Load Diff
+2
View File
@@ -268,6 +268,7 @@
#include "code\game\skincmd.dm"
#include "code\game\sound.dm"
#include "code\game\supplyshuttle.dm"
#include "code\game\trader_visit.dm"
#include "code\game\antagonist\_antagonist_setup.dm"
#include "code\game\antagonist\antagonist.dm"
#include "code\game\antagonist\antagonist_add.dm"
@@ -287,6 +288,7 @@
#include "code\game\antagonist\outsider\mercenary.dm"
#include "code\game\antagonist\outsider\ninja.dm"
#include "code\game\antagonist\outsider\raider.dm"
#include "code\game\antagonist\outsider\trader.dm"
#include "code\game\antagonist\outsider\wizard.dm"
#include "code\game\antagonist\station\changeling.dm"
#include "code\game\antagonist\station\cultist.dm"