Skip to content

Commit

Permalink
Космические торговцы!!!!! (#13391)
Browse files Browse the repository at this point in the history
* космические торговцы

* фикусы

* суммари

* ещё

* ладно у них не будет кучи мусора в трюме

* переделываем под айтемс рандом

* обошёл всё что есть в билде чтобы составить эти списки ахуеть можно

* проебал две запятые

* !!!!

* всякое

* щас буду мапдиф править

* готов к полёту

* Update trader_shuttle.dm

* копипаст копипаст!!!!!

* в пизду этот копипаст я своё напишу

* добавляем им худ

* вот щас работает почти как надо

* должно быть всё

* Update objects.dm

* фух бля

* исправил док тэги

* минус труба

* Update gamma.dmm

* Update gamma.dmm

* космобайк пока

* перенёс анонс

* Update spawners.dm

* Update code/datums/spawners_menu/spawners.dm

Co-authored-by: Alexander V. <[email protected]>

* саммари

* мапконфликты пока

* вроде перенёс но меня пугает что никакие изменения ко мне не подтянулись

* Update gamma.dmm

* исправляем конфликты

* Update code/game/gamemodes/objectives/traders_objectives.dm

ладно

Co-authored-by: KIBORG04 <[email protected]>

* Update traders_objectives.dm

* сумари

* всё

* Update code/game/machinery/computer/trader_shuttle.dm

Co-authored-by: KIBORG04 <[email protected]>

* Update code/game/gamemodes/objectives/traders_objectives.dm

Co-authored-by: KIBORG04 <[email protected]>

* Update boxstation.dmm

* конфликты офф

* исправления

* ну пусть будет цель на 20к бачей

* твики

* девайс

* gamma fix

---------

Co-authored-by: Alexander V. <[email protected]>
Co-authored-by: KIBORG04 <[email protected]>
  • Loading branch information
3 people committed Sep 29, 2024
1 parent fb36112 commit cea6e61
Show file tree
Hide file tree
Showing 37 changed files with 7,273 additions and 5,860 deletions.
2 changes: 2 additions & 0 deletions code/__DEFINES/gamemodes.dm
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
#define F_XENOMORPH_HIVE "Alien Hivemind"
#define F_ZOMBIES "Zobmies"
#define F_REPLICATORS "Replicators"
#define F_SPACE_TRADERS "Space Traders"

// Role IDs
#define ABDUCTOR_AGENT "Abductor Agent"
Expand Down Expand Up @@ -67,6 +68,7 @@
#define REPLICATOR "Replicator"
#define PIRATE "Pirate"
#define PRISONER "Prisoner"
#define SPACE_TRADER "Space Trader"
#define THIEF "Thief"

////////////////////// GREETS /////////////////////////
Expand Down
1 change: 1 addition & 0 deletions code/_globalvars/lists/names.dm
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ var/global/list/pirate_second = file2list("static/names/piratesecond.txt")
var/global/list/moth_first = file2list("static/names/moth_first.txt")
var/global/list/moth_second = file2list("static/names/moth_second.txt")
var/global/list/serpentid_names = file2list("static/names/serpentid.txt")
var/global/list/tajaran_male_first = file2list("static/names/tajaran_male_first.txt")

// Traitors key-words
var/global/list/rus_nouns
Expand Down
6 changes: 6 additions & 0 deletions code/datums/announcements/events.dm
Original file line number Diff line number Diff line change
Expand Up @@ -266,3 +266,9 @@
name = "Event: Icarus Recovered"
subtitle = "Тревога. Сбойные дроны"
message = "Контроль дронов ВКН Икар разочарован в потере боевого крыла. Выжившие дроны будут восстановлены."

/datum/announcement/centcomm/space_traders
name = "Event: Space Traders"
subtitle = "Космоторговцы."
message = "Мы получили и одобрили запрос на стыковку от группы космоторговцев. " + \
"У них кончаются припасы и есть товары для продажи. Ожидайте гостей."
33 changes: 33 additions & 0 deletions code/datums/outfits/misc/space_traders.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
/datum/outfit/space_trader
survival_box = TRUE
l_ear = /obj/item/device/radio/headset

/datum/outfit/space_trader/dealer
name = "Space Trader Dealer"
uniform = /obj/item/clothing/under/lawyer/oldman
suit = /obj/item/clothing/suit/storage/postal_dude_coat
glasses = /obj/item/clothing/glasses/sunglasses
shoes = /obj/item/clothing/shoes/boots
back = /obj/item/weapon/storage/backpack/satchel/norm

r_pocket = /obj/item/weapon/reagent_containers/spray/pepper

/datum/outfit/space_trader/guard
name = "Space Trader Guard"
uniform = /obj/item/clothing/under/syndicate
suit = /obj/item/clothing/suit/storage/flak
glasses = /obj/item/clothing/glasses/sunglasses
shoes = /obj/item/clothing/shoes/boots
belt = /obj/item/weapon/storage/belt/security/ert
back = /obj/item/weapon/storage/backpack/satchel/sec
gloves = /obj/item/clothing/gloves/security
suit_store = /obj/item/weapon/gun/energy/gun
backpack_contents = list(/obj/item/clothing/head/helmet)

r_pocket = /obj/item/clothing/accessory/holster

/datum/outfit/space_trader/porter
name = "Space Trader Porter"
uniform = /obj/item/clothing/under/rank/cargotech
shoes = /obj/item/clothing/shoes/boots/work
back = /obj/item/weapon/storage/backpack
97 changes: 97 additions & 0 deletions code/datums/spawners_menu/spawners.dm
Original file line number Diff line number Diff line change
Expand Up @@ -746,3 +746,100 @@
var/datum/role/wizard/R = SSticker.mode.CreateRole(/datum/role/wizard, H)
R.rename = FALSE
setup_role(R, TRUE)

/*
* SPACE TRADERS
*/
/datum/spawner/space_trader
name = "Космический торговец"
desc = "Космический торговец."

ranks = list(ROLE_GHOSTLY)

register_only = TRUE
time_for_registration = 0.5 MINUTES

time_while_available = 4 MINUTES
var/money = 100
var/outfit
var/skillset

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

var/mob/living/carbon/human/H = new
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)
add_faction_member(F, H, TRUE, TRUE)

/datum/spawner/space_trader/proc/equip(mob/living/carbon/human/H)
H.equipOutfit(outfit)
H.mind.skills.add_available_skillset(skillset)
H.mind.skills.maximize_active_skills()

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"
money = 200
outfit = /datum/outfit/space_trader/dealer
skillset = /datum/skillset/quartermaster

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

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

/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
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)
add_faction_member(F, H, TRUE, TRUE)

21 changes: 11 additions & 10 deletions code/game/area/shuttle_areas.dm
Original file line number Diff line number Diff line change
Expand Up @@ -262,17 +262,19 @@
icon_state = "shuttlered2"
looped_ambience = 'sound/ambience/loop_space.ogg'

//Administration Centcom Shuttle
/area/shuttle/administration/centcom
name = "Administration Shuttle Centcom"
cases = list("административный шаттл", "административного шаттла", "административному шаттлу", "административный шаттл", "административным шаттлом", "административном шаттле")
//Space Traders Shuttle
/area/shuttle/trader
name = "Trader Shuttle"
cases = list("торговый шаттл", "торгового шаттла", "торговому шаттлу", "торговый шаттл", "торговым шаттлом", "торговом шаттле")
icon_state = "shuttlered"

/area/shuttle/administration/station
name = "Administration Shuttle"
cases = list("административный шаттл", "административного шаттла", "административному шаттлу", "административный шаттл", "административным шаттлом", "административном шаттле")
/area/shuttle/trader/station
name = "Trader Shuttle Station"
ambience = 'sound/ambience/space_traders.ogg'

/area/shuttle/trader/space
name = "Trader Shuttle Space"
icon_state = "shuttlered2"
looped_ambience = 'sound/ambience/loop_space.ogg'

//Vox shuttle
/area/shuttle/vox/arkship
Expand Down Expand Up @@ -390,7 +392,6 @@ var/global/list/centcom_shuttle_areas = list (
/area/shuttle/escape_pod3/centcom,
/area/shuttle/escape_pod4/centcom,
/area/shuttle/transport1/centcom,
/area/shuttle/administration/centcom,
/area/shuttle/specops/centcom,
/area/shuttle/officer/centcom
)
Expand All @@ -403,7 +404,7 @@ var/global/list/station_shuttle_areas = list (
/area/shuttle/escape_pod3/station,
/area/shuttle/escape_pod4/station,
/area/shuttle/transport1/station,
/area/shuttle/administration/station,
/area/shuttle/trader/station,
/area/shuttle/specops/station,
/area/shuttle/officer/station,
/area/shuttle/supply/station,
Expand Down
33 changes: 33 additions & 0 deletions code/game/gamemodes/factions/space_traders.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
/obj/effect/landmark/space_traders/product
name = "Space Traders Product"
icon = 'icons/obj/storage.dmi'
icon_state = "crate"

/obj/effect/landmark/space_traders/dealer
name = "Space Trader Dealer"
icon = 'icons/mob/landmarks.dmi'
icon_state = "Quartermaster"

/obj/effect/landmark/space_traders/guard
name = "Space Trader Guard"
icon = 'icons/mob/landmarks.dmi'
icon_state = "Blueshield Officer"

/obj/effect/landmark/space_traders/porter
name = "Space Trader Porter"
icon = 'icons/mob/landmarks.dmi'
icon_state = "Trader Porter"

/datum/faction/space_traders
name = F_SPACE_TRADERS
ID = F_SPACE_TRADERS

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

/datum/faction/space_traders/forgeObjectives()
if(!..())
return FALSE
AppendObjective(/datum/objective/make_money/faction/traders)
return TRUE
102 changes: 102 additions & 0 deletions code/game/gamemodes/objectives/traders_objectives.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
/datum/objective/make_money
var/required_money

/datum/objective/make_money/New()
explanation_text = "Заработать [required_money] кредитов. В конце смены они должны находиться на вашем счёте."

/datum/objective/make_money/check_completion()
if(owner)
var/datum/money_account/MA = get_account(owner.get_key_memory(MEM_ACCOUNT_NUMBER))
if(MA.money >= required_money)
return OBJECTIVE_WIN
return OBJECTIVE_LOSS

/datum/objective/make_money/faction/check_completion()
if(faction)
var/total_money = 0
for(var/datum/role/R in faction.members)
var/datum/money_account/MA = get_account(R.antag.get_key_memory(MEM_ACCOUNT_NUMBER))
total_money += MA.money
if(total_money >= required_money)
return OBJECTIVE_WIN
return OBJECTIVE_LOSS

/datum/objective/make_money/faction/traders
required_money = 20000


/datum/objective/trader_purchase
var/list/items = list()
var/static/possible_items[] = list(
"эмиттер" = /obj/machinery/power/emitter,
"инкубатор вирусов" = /obj/machinery/disease2/incubator,
"хим диспенсер" = /obj/machinery/chem_dispenser,
"микроволновку" = /obj/machinery/kitchen_machine/microwave,
"бипски" = /obj/machinery/bot/secbot/beepsky,
"биогенератор" = /obj/machinery/biogenerator,
"экстрактор семян" = /obj/machinery/seed_extractor,
"бухломат" = /obj/machinery/vending/boozeomat,
"переносной флэшер" = /obj/machinery/flasher/portable,
"шкаф главы службы безопасности" = /obj/structure/closet/secure_closet/hos,
"канистру азота" = /obj/machinery/portable_atmospherics/canister/nitrogen,
"факс" = /obj/machinery/faxmachine,
"ядерную боеголовку" = /obj/machinery/nuclearbomb,
"раздатчик атмосферных труб" = /obj/machinery/pipedispenser,
"кошку главврача Дасти" = /mob/living/simple_animal/cat/dusty,
"плазменный дробовик" = /obj/item/weapon/gun/plasma/p104sass,
"ручной телепортер" = /obj/item/weapon/hand_tele,
"тыквяк" = /obj/item/weapon/reagent_containers/food/snacks/grown/gourd,
"имплант защиты разума" = /obj/item/weapon/implantcase/mindshield,
"смирительную рубашку" = /obj/item/clothing/suit/straight_jacket,
"капитанское жёлтое мыло" = /obj/item/weapon/reagent_containers/food/snacks/soap/deluxe,
"мулбота" = /obj/machinery/bot/mulebot,
"новогоднюю ёлку" = /obj/item/device/flashlight/lamp/fir,
"двухстволку бармена" = /obj/item/weapon/gun/projectile/revolver/doublebarrel,
"джукбокс" = /obj/machinery/media/jukebox/bar,
"полностью собранное ядро ИИ" = /obj/structure/AIcore/deactivated,
"алтарь священника" = /obj/structure/altar_of_gods)

/datum/objective/trader_purchase/New()
var/indx = rand(1, possible_items.len)
var/offset = rand(1, possible_items.len - 1)
var/new_indx = (indx + offset) % possible_items.len
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/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[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(checks[1] || checks[2])
return OBJECTIVE_HALFWIN
return OBJECTIVE_LOSS


/datum/objective/traders_escape
explanation_text = "Живыми улететь на своём шаттле со станции."

/datum/objective/traders_escape/check_completion()
var/counter = 0
if(faction)
var/list/mems = faction.members
for(var/datum/role/R in mems)
var/mob/M = R.antag.current
if(!M || ((M.stat == DEAD) && !M.fake_death) || isbrain(M) || issilicon(M)) // alive?
continue
if(istype(get_area(M), /area/shuttle/trader/space)) // in space on shuttle?
counter++
if(counter == mems.len) // ALL TRADERS ESCAPE ALIVE
return OBJECTIVE_WIN
else if(counter) // AT LEAST ONE TRADER ESCAPE ALIVE
return OBJECTIVE_HALFWIN
else
return OBJECTIVE_LOSS
return OBJECTIVE_LOSS
25 changes: 25 additions & 0 deletions code/game/gamemodes/roles/space_trader.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
/datum/role/space_trader
name = SPACE_TRADER
id = SPACE_TRADER

disallow_job = TRUE
logo_state = "space_traders"

/datum/role/space_trader/Greet(greeting, custom)
. = ..()
to_chat(antag.current, {"<span class='notice'><b>Вы - космический торговец. Всего вас трое.
<BR>1. Барыга - он главный, он владеет всем, он нанимает остальных, он отдаёт приказы, он решает что делать.
Слушайтесь его и помогайте ему.
<BR>2. ЧОПовец - охранник корабля и товара, у него есть ствол и полное право использовать его на территории корабля.
Но даже в мыслях не имейте стреляться с кем-то на станции, это явно не понравится службе безопасности.
<BR>3. Грузчик - мальчик на побегушках, таскает товар, гоняет на станцию за едой и припасами.
<BR>Кем бы вы ни были, вы все имеете 3 общие цели.
<BR>1. Заработать денег.
В трюме корабля навалом товара, сбудьте его по как можно большей цене, торгуйтесь за каждую безделушку.
Не весь товар легален. В трюме, справа от постера, есть тайник, никто со станции не сможет его открыть, можете спокойно прятать там контрабанду.
Если товар распродан, оказывайте услуги, ради денег вы даже можете нарушить закон, но будьте готовы к соответствующей реакции со стороны службы безопасности.
<BR>2. Достать на шаттл какие-то вещи.
Для достижения цели можете делать что угодно. Попытаетесь вы выкупить или украсть, подрядите кого-то сделать или достать.
Главное чтобы нужные вещи были на корабле, когда смена на станции закончится.
<BR>3. Улететь со станции живыми. Крайне желательно сделать это в полном составе.
------------------</b></span>"})
4 changes: 3 additions & 1 deletion code/game/jobs/access.dm
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@
/var/const/access_engineering_lobby = 71
/var/const/access_medbay_storage = 72
/var/const/access_oldstation = 73
/var/const/access_space_traders = 74

//BEGIN CENTCOM ACCESS
/*Should leave plenty of room if we need to add more access levels.
Expand Down Expand Up @@ -554,7 +555,8 @@
"Marine",
"Marine Squad Leader",
"Senior Engineer",
"Senior Medic")
"Senior Medic",
"Space Trader")

/obj/proc/GetJobName() //Used in secHUD icon generation
if (!istype(src, /obj/item/device/pda) && !istype(src,/obj/item/weapon/card/id))
Expand Down
Loading

0 comments on commit cea6e61

Please sign in to comment.