Skip to content

Commit

Permalink
всё
Browse files Browse the repository at this point in the history
  • Loading branch information
Tap0r committed Sep 14, 2024
1 parent e51da86 commit 08b6ab3
Show file tree
Hide file tree
Showing 7 changed files with 70 additions and 95 deletions.
53 changes: 38 additions & 15 deletions code/datums/spawners_menu/spawners.dm
Original file line number Diff line number Diff line change
Expand Up @@ -760,7 +760,8 @@
time_for_registration = 0.5 MINUTES

time_while_available = 4 MINUTES
var/datum/role/role
var/money = 100
var/outfit

/datum/spawner/space_trader/spawn_body(mob/dead/spectator)
var/spawnloc = pick_spawn_location()
Expand All @@ -770,47 +771,69 @@
C.create_human_apperance(H)
H.key = C.key
H.forceMove(spawnloc)
equip(H)

var/datum/faction/space_traders/F = find_faction_by_type(/datum/faction/space_traders)
F.roletype = role
add_faction_member(F, H, TRUE, TRUE)

/datum/spawner/space_trader/proc/equip(mob/living/carbon/human/H)
H.equipOutfit(outfit)

var/datum/money_account/MA = create_random_account_and_store_in_mind(H, money)
var/obj/item/weapon/card/id/cargo/C = new(H)
C.rank = "Space Trader"
C.assignment = C.rank
C.assign(H.real_name)
C.access = list(access_space_traders)
C.associated_account_number = MA.account_number
H.equip_or_collect(C, SLOT_WEAR_ID)

var/obj/item/device/pda/pda = new(H)
pda.assign(H.real_name)
pda.ownrank = C.rank
pda.owner_account = MA.account_number
pda.owner_fingerprints += C.fingerprint_hash
MA.owner_PDA = pda
H.equip_or_collect(pda, SLOT_R_STORE)

/datum/spawner/space_trader/dealer
name = "Космоторговец барыга"
desc = "Барыга, владеющий торговым судном и товаром на нём. Заработайте столько денег, сколько сможете увезти!"
spawn_landmark_name = "Space Trader Dealer"
role = /datum/role/space_trader/dealer
money = 200
outfit = /datum/outfit/space_trader/dealer

/datum/spawner/space_trader/guard
name = "Космоторговец охранник"
desc = "ЧОПовец, нанятый барыгой для охраны судна и товара на нём от станционных воришек и космических пиратов."
spawn_landmark_name = "Space Trader Guard"
role = /datum/role/space_trader/guard
outfit = /datum/outfit/space_trader/guard

/datum/spawner/space_trader/porter
name = "Космоторговец посыльный"
desc = "Таяран грузчик, работающий на барыгу. Таскайте грузы, выставляйте товары на продажу, помогите барыге обогатиться и не забудьте спросить свою долю!"
spawn_landmark_name = "Space Trader Porter"
role = /datum/role/space_trader/porter

// porter - always tajaran
/datum/spawner/space_trader/porter/can_spawn(mob/dead/spectator)
if(is_alien_whitelisted_banned(spectator, TAJARAN) || !is_alien_whitelisted(spectator, TAJARAN))
to_chat(spectator, "<span class='warning'>Вы не можете играть за таярана.</span>")
return FALSE
return ..()
money = 20
outfit = /datum/outfit/space_trader/porter

/datum/spawner/space_trader/porter/spawn_body(mob/dead/spectator)
var/spawnloc = pick_spawn_location()
var/client/C = spectator.client

var/mob/living/carbon/human/H = new(null, TAJARAN)
var/new_name = capitalize(pick(global.tajaran_male_first)) + " " + capitalize(pick(global.last_names))
var/mob/living/carbon/human/H
var/new_name

if(is_alien_whitelisted_banned(spectator, TAJARAN) || !is_alien_whitelisted(spectator, TAJARAN))
H = new
else
H = new(null, TAJARAN)
new_name = capitalize(pick(global.tajaran_male_first)) + " " + capitalize(pick(global.last_names))

C.create_human_apperance(H, new_name)
H.key = C.key
H.forceMove(spawnloc)
equip(H)

var/datum/faction/space_traders/F = find_faction_by_type(/datum/faction/space_traders)
F.roletype = role
add_faction_member(F, H, TRUE, TRUE)

1 change: 1 addition & 0 deletions code/game/gamemodes/factions/space_traders.dm
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@

logo_state = "space_traders"
max_roles = 3
roletype = /datum/role/space_trader

/datum/faction/space_traders/forgeObjectives()
if(!..())
Expand Down
21 changes: 11 additions & 10 deletions code/game/gamemodes/objectives/traders_objectives.dm
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,7 @@


/datum/objective/trader_purchase
var/item_name1
var/item_name2
var/list/items = list()
var/static/possible_items[] = list(
"эмиттер" = /obj/machinery/power/emitter,
"инкубатор вирусов" = /obj/machinery/disease2/incubator,
Expand Down Expand Up @@ -61,20 +60,22 @@
var/indx = rand(1, possible_items.len)
var/offset = rand(1, possible_items.len -1) // -1, чтобы не вступить в тот же элемент
var/new_indx = (indx + offset) % possible_items.len
item_name1 = possible_items[indx]
item_name2 = possible_items[new_indx == 0 ? possible_items.len : new_indx] // этот финт, потому что в бъонде листы начинаются с 1
explanation_text = "Достать и притащить на наш шаттл [item_name1] и [item_name2]."
items += possible_items[indx]
items += possible_items[new_indx == 0 ? possible_items.len : new_indx]
explanation_text = "Достать и притащить на наш шаттл [items[1]] и [items[2]]."

/datum/objective/trader_purchase/check_completion()
var/list/areas = list(/area/shuttle/trader/space, /area/shuttle/trader/station)
var/counter = 0
var/list/checks = list(FALSE, FALSE)
for(var/type in areas)
for(var/obj/O in get_area_by_type(type))
if(istype(O, possible_items[item_name1]) || istype(O, possible_items[item_name2]))
counter++
if(counter == 2)
if(istype(O, possible_items[items[1]]))
checks[1] = TRUE
else if(istype(O, possible_items[items[2]]))
checks[2] = TRUE
if(checks[1] && checks[2])
return OBJECTIVE_WIN
else if(counter)
else if(checks[1] || checks[2])
return OBJECTIVE_HALFWIN
return OBJECTIVE_LOSS

Expand Down
83 changes: 16 additions & 67 deletions code/game/gamemodes/roles/space_trader.dm
Original file line number Diff line number Diff line change
Expand Up @@ -4,73 +4,22 @@

disallow_job = TRUE
logo_state = "space_traders"
var/datum/outfit/outfit
var/money = 100
var/greet = "<span class='notice'><b>Вы - космический торговец.</b></span>"

/datum/role/space_trader/Greet(greeting, custom)
. = ..()
to_chat(antag.current, greet)

/datum/role/space_trader/OnPostSetup(laterole)
. = ..()
var/mob/living/carbon/human/H = antag.current

H.equipOutfit(outfit)

var/datum/money_account/MA = create_random_account_and_store_in_mind(H, money)
var/obj/item/weapon/card/id/cargo/C = new(H)
C.rank = "Space Trader"
C.assignment = C.rank
C.assign(H.real_name)
C.access = list(access_space_traders)
C.associated_account_number = MA.account_number
H.equip_or_collect(C, SLOT_WEAR_ID)

var/obj/item/device/pda/pda = new(H)
pda.assign(H.real_name)
pda.ownrank = C.rank
pda.owner_account = MA.account_number
pda.owner_fingerprints += C.fingerprint_hash
MA.owner_PDA = pda
H.equip_or_collect(pda, SLOT_R_STORE)

/datum/role/space_trader/dealer
skillset_type = /datum/skillset/quartermaster
outfit = /datum/outfit/space_trader/dealer
money = 500
greet = {"<span class='notice'><b>Вы - барыга, владеющий торговым судном и товаром на нём.
Вместе с вами на корабле находятся ваши работники - охранник и грузчик.
У вас есть 4 минуты чтобы разложить товар по прилавку и витринам, после чего вы сможете отправиться на станцию.
В вашем трюме могут находится не вполне законные вещи, для их сокрытия от службы безопасности в трюме есть тайник.
Тайник находится в углу, ближайшем к носу корабля, справа от постера. Он вмонтирован в стену и открыть его можете только вы.
Ваша первая общая цель - заработок, но что же делать если товар уже распродан, а денег не хватает?
Попробуйте найти этим двум оболтусам работёнку на станции. Она может быть и не вполне законной, но кого это волнует, когда за это платят деньги.
Ваша вторая общая цель - добыча определённых предметов на станции. Вы можете действовать как хотите.
Попробуете ли вы выкупить нужную вещь, выкрасть, или подрядить на это дело кого-то на станции, это не важно.
Важно лишь чтобы цель была в вашем трюме в конце смены.
Не забывайте что вы не одни, а цели общие. Действуйте сообща с вашими работниками.
------------------</b></span>"}

/datum/role/space_trader/guard
skillset_type = /datum/skillset/officer
outfit = /datum/outfit/space_trader/guard
money = 200
greet = {"<span class='notice'><b>Вы - ЧОПовец, нанятый для охраны.
Охранять вам нужно всё, корабль, товар на нём и конечно же вашего нанимателя барыгу.
У вас есть пушка и вы можете свободно использовать её, но только на территории корабля.
Выходя на станцию, не забывайте, что вы на ней гость, не стоит по поводу и без размахивать стволом, лишнее внимание от службы безопасности вам ни к чему.
Так или иначе у вас есть общие цели, так что не оставайтесь в стороне, может и для вас найтись работа.
Не забывайте что вы не одни, а цели общие. Действуйте сообща с барыгой и грузчиком.
------------------</b></span>"}

/datum/role/space_trader/porter
skillset_type = /datum/skillset/cargotech
outfit = /datum/outfit/space_trader/porter
money = 20
greet = {"<span class='notice'><b>Вы - грузчик, нанятый барыгой.
Таскайте грузы, выставляйте товары на продажу, помогите барыге обогатиться и не забудьте спросить свою долю!
У вас есть 4 минуты чтобы помочь барыге разложить товар по прилавку и витринам, после чего вы сможете отправиться на станцию.
Кроме того у вас есть общие цели, не оставайтесь в стороне и окажите команде посильную помощь в их выполнении.
Не забывайте что вы не одни, а цели общие. Действуйте сообща с барыгой и охранником.
------------------</b></span>"}
to_chat(antag.current, {"<span class='notice'><b>Вы - космический торговец. Всего вас трое.
<BR>1. Барыга - он главный, он владеет всем, он нанимает остальных, он отдаёт приказы, он решает что делать.
Слушайтесь его и помогайте ему.
<BR>2. ЧОПовец - охранник корабля и товара, у него есть ствол и полное право использовать его на территории корабля.
Но даже в мыслях не имейте стреляться с кем-то на станции, это явно не понравится службе безопасности.
<BR>3. Грузчик - мальчик на побегушках, таскает товар, гоняет на станцию за едой и припасами.
<BR>Кем бы вы ни были, вы все имеете 3 общие цели.
<BR>1. Заработать денег.
В трюме корабля навалом товара, сбудьте его по как можно большей цене, торгуйтесь за каждую безделушку.
Не весь товар легален. В трюме, справа от постера, есть тайник, никто со станции не сможет его открыть, можете спокойно прятать там контрабанду.
Если товар распродан, оказывайте услуги, ради денег вы даже можете нарушить закон, но будьте готовы к соответствующей реакции со стороны службы безопасности.
<BR>2. Достать на шаттл какие-то вещи.
Для достижения цели можете делать что угодно. Попытаетесь вы выкупить или украсть, подрядите кого-то сделать или достать.
Главное чтобы нужные вещи были на корабле, когда смена на станции закончится.
<BR>3. Улететь со станции живыми. Крайне желательно сделать это в полном составе.
------------------</b></span>"})
2 changes: 1 addition & 1 deletion code/game/machinery/computer/trader_shuttle.dm
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@
docked = FALSE
undock_to_station()

last_move = world.time
lastMove = world.time
updateUsrDialog()

/obj/machinery/computer/trader_shuttle/proc/dock_to_station()
Expand Down
5 changes: 3 additions & 2 deletions code/modules/locations/shuttles/closet.dm
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@
density = FALSE

/obj/structure/closet/trader_stash/toggle(mob/user)
if(!isrole(SPACE_TRADER, user)) // only traders can open this
return
if(user.loc != src) // you can't lock a person inside
if(!isrole(SPACE_TRADER, user)) // only traders can open this
return
..()
Binary file modified sound/ambience/space_traders.ogg
Binary file not shown.

0 comments on commit 08b6ab3

Please sign in to comment.