mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-08-23 20:17:15 +01:00
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:
@@ -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"
|
||||
|
||||
@@ -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])"
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
@@ -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.
|
||||
@@ -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
File diff suppressed because it is too large
Load Diff
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user