Ports donor features
@@ -14,6 +14,7 @@
|
|||||||
#define SOUND_ANNOUNCEMENTS 2048
|
#define SOUND_ANNOUNCEMENTS 2048
|
||||||
#define DISABLE_DEATHRATTLE 4096
|
#define DISABLE_DEATHRATTLE 4096
|
||||||
#define DISABLE_ARRIVALRATTLE 8192
|
#define DISABLE_ARRIVALRATTLE 8192
|
||||||
|
#define QUIET_ROUND 16384 // yogs - Donor features, quiet round; "why isn't this in ~yogs_defines?" - This has to be a unique power of 2, if /tg/ adds another flag it will have merge conflicts and will be obvious this has to be updated. If I put this in a different file it wouldn't be obvious and silently break stuff.
|
||||||
|
|
||||||
#define TOGGLES_DEFAULT (SOUND_ADMINHELP|SOUND_MIDI|SOUND_AMBIENCE|SOUND_LOBBY|MEMBER_PUBLIC|INTENT_STYLE|MIDROUND_ANTAG|SOUND_INSTRUMENTS|SOUND_SHIP_AMBIENCE|SOUND_PRAYERS|SOUND_ANNOUNCEMENTS)
|
#define TOGGLES_DEFAULT (SOUND_ADMINHELP|SOUND_MIDI|SOUND_AMBIENCE|SOUND_LOBBY|MEMBER_PUBLIC|INTENT_STYLE|MIDROUND_ANTAG|SOUND_INSTRUMENTS|SOUND_SHIP_AMBIENCE|SOUND_PRAYERS|SOUND_ANNOUNCEMENTS)
|
||||||
|
|
||||||
|
|||||||
1
code/__DEFINES/~yogs_defines/preferences.dm
Normal file
@@ -0,0 +1 @@
|
|||||||
|
#define DONOR_CHARACTER_SLOTS 6
|
||||||
@@ -107,6 +107,11 @@ SUBSYSTEM_DEF(job)
|
|||||||
if(player.mind && job.title in player.mind.restricted_roles)
|
if(player.mind && job.title in player.mind.restricted_roles)
|
||||||
Debug("FOC incompatible with antagonist role, Player: [player]")
|
Debug("FOC incompatible with antagonist role, Player: [player]")
|
||||||
continue
|
continue
|
||||||
|
// yogs start - Donor features, quiet round
|
||||||
|
if(((job.title in GLOB.command_positions) || (job.title in GLOB.nonhuman_positions)) && (player.client.prefs.toggles & QUIET_ROUND))
|
||||||
|
Debug("FOC quiet check failed, Player: [player]")
|
||||||
|
continue
|
||||||
|
// yogs end
|
||||||
if(player.client.prefs.GetJobDepartment(job, level) & job.flag)
|
if(player.client.prefs.GetJobDepartment(job, level) & job.flag)
|
||||||
Debug("FOC pass, Player: [player], Level:[level]")
|
Debug("FOC pass, Player: [player], Level:[level]")
|
||||||
candidates += player
|
candidates += player
|
||||||
@@ -415,6 +420,8 @@ SUBSYSTEM_DEF(job)
|
|||||||
if(job && H)
|
if(job && H)
|
||||||
job.after_spawn(H, M)
|
job.after_spawn(H, M)
|
||||||
|
|
||||||
|
job.give_donor_stuff(H, M) // yogs - Donor Features
|
||||||
|
|
||||||
return H
|
return H
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -653,6 +653,13 @@
|
|||||||
|
|
||||||
else if (href_list["obj_announce"])
|
else if (href_list["obj_announce"])
|
||||||
announce_objectives()
|
announce_objectives()
|
||||||
|
|
||||||
|
// yogs start - Donor features, quiet round
|
||||||
|
else if (href_list["quiet_override"])
|
||||||
|
quiet_round = FALSE
|
||||||
|
message_admins("[key_name_admin(usr)] has disabled [current]'s quiet round mode.")
|
||||||
|
log_admin("[key_name(usr)] has disabled [current]'s quiet round mode.")
|
||||||
|
// yogs end
|
||||||
|
|
||||||
//Something in here might have changed your mob
|
//Something in here might have changed your mob
|
||||||
if(self_antagging && (!usr || !usr.client) && current.client)
|
if(self_antagging && (!usr || !usr.client) && current.client)
|
||||||
@@ -679,10 +686,18 @@
|
|||||||
qdel(find_syndicate_uplink())
|
qdel(find_syndicate_uplink())
|
||||||
|
|
||||||
/datum/mind/proc/make_Traitor()
|
/datum/mind/proc/make_Traitor()
|
||||||
|
// yogs start - Donor features, quiet round
|
||||||
|
if(quiet_round)
|
||||||
|
return
|
||||||
|
// yogs end
|
||||||
if(!(has_antag_datum(/datum/antagonist/traitor)))
|
if(!(has_antag_datum(/datum/antagonist/traitor)))
|
||||||
add_antag_datum(/datum/antagonist/traitor)
|
add_antag_datum(/datum/antagonist/traitor)
|
||||||
|
|
||||||
/datum/mind/proc/make_Changling()
|
/datum/mind/proc/make_Changling()
|
||||||
|
// yogs start - Donor features, quiet round
|
||||||
|
if(quiet_round)
|
||||||
|
return
|
||||||
|
// yogs end
|
||||||
var/datum/antagonist/changeling/C = has_antag_datum(/datum/antagonist/changeling)
|
var/datum/antagonist/changeling/C = has_antag_datum(/datum/antagonist/changeling)
|
||||||
if(!C)
|
if(!C)
|
||||||
C = add_antag_datum(/datum/antagonist/changeling)
|
C = add_antag_datum(/datum/antagonist/changeling)
|
||||||
@@ -690,6 +705,10 @@
|
|||||||
return C
|
return C
|
||||||
|
|
||||||
/datum/mind/proc/make_Wizard()
|
/datum/mind/proc/make_Wizard()
|
||||||
|
// yogs start - Donor features, quiet round
|
||||||
|
if(quiet_round)
|
||||||
|
return
|
||||||
|
// yogs end
|
||||||
if(!has_antag_datum(/datum/antagonist/wizard))
|
if(!has_antag_datum(/datum/antagonist/wizard))
|
||||||
special_role = ROLE_WIZARD
|
special_role = ROLE_WIZARD
|
||||||
assigned_role = ROLE_WIZARD
|
assigned_role = ROLE_WIZARD
|
||||||
@@ -697,6 +716,10 @@
|
|||||||
|
|
||||||
|
|
||||||
/datum/mind/proc/make_Cultist()
|
/datum/mind/proc/make_Cultist()
|
||||||
|
// yogs start - Donor features, quiet round
|
||||||
|
if(quiet_round)
|
||||||
|
return
|
||||||
|
// yogs end
|
||||||
if(!has_antag_datum(/datum/antagonist/cult,TRUE))
|
if(!has_antag_datum(/datum/antagonist/cult,TRUE))
|
||||||
SSticker.mode.add_cultist(src,FALSE,equip=TRUE)
|
SSticker.mode.add_cultist(src,FALSE,equip=TRUE)
|
||||||
special_role = ROLE_CULTIST
|
special_role = ROLE_CULTIST
|
||||||
@@ -704,6 +727,10 @@
|
|||||||
to_chat(current, "<font color=\"purple\"><b><i>Assist your new bretheren in their dark dealings. Their goal is yours, and yours is theirs. You serve the Dark One above all else. Bring It back.</b></i></font>")
|
to_chat(current, "<font color=\"purple\"><b><i>Assist your new bretheren in their dark dealings. Their goal is yours, and yours is theirs. You serve the Dark One above all else. Bring It back.</b></i></font>")
|
||||||
|
|
||||||
/datum/mind/proc/make_Rev()
|
/datum/mind/proc/make_Rev()
|
||||||
|
// yogs start - Donor features, quiet round
|
||||||
|
if(quiet_round)
|
||||||
|
return
|
||||||
|
// yogs end
|
||||||
var/datum/antagonist/rev/head/head = new()
|
var/datum/antagonist/rev/head/head = new()
|
||||||
head.give_flash = TRUE
|
head.give_flash = TRUE
|
||||||
head.give_hud = TRUE
|
head.give_hud = TRUE
|
||||||
|
|||||||
@@ -348,6 +348,10 @@
|
|||||||
for(var/mob/dead/new_player/player in GLOB.player_list)
|
for(var/mob/dead/new_player/player in GLOB.player_list)
|
||||||
if(player.client && player.ready == PLAYER_READY_TO_PLAY)
|
if(player.client && player.ready == PLAYER_READY_TO_PLAY)
|
||||||
players += player
|
players += player
|
||||||
|
// yogs start - Donor features, quiet round
|
||||||
|
if(player.client.prefs.toggles & QUIET_ROUND)
|
||||||
|
player.mind.quiet_round = TRUE
|
||||||
|
// yogs end
|
||||||
|
|
||||||
// Shuffling, the players list is now ping-independent!!!
|
// Shuffling, the players list is now ping-independent!!!
|
||||||
// Goodbye antag dante
|
// Goodbye antag dante
|
||||||
@@ -355,7 +359,7 @@
|
|||||||
|
|
||||||
for(var/mob/dead/new_player/player in players)
|
for(var/mob/dead/new_player/player in players)
|
||||||
if(player.client && player.ready == PLAYER_READY_TO_PLAY)
|
if(player.client && player.ready == PLAYER_READY_TO_PLAY)
|
||||||
if(role in player.client.prefs.be_special)
|
if(role in player.client.prefs.be_special && !(player.mind.quiet_round)) // yogs - Donor features, quiet round
|
||||||
if(!jobban_isbanned(player, ROLE_SYNDICATE) && !jobban_isbanned(player, role)) //Nodrak/Carn: Antag Job-bans
|
if(!jobban_isbanned(player, ROLE_SYNDICATE) && !jobban_isbanned(player, role)) //Nodrak/Carn: Antag Job-bans
|
||||||
if(age_check(player.client)) //Must be older than the minimum age
|
if(age_check(player.client)) //Must be older than the minimum age
|
||||||
candidates += player.mind // Get a list of all the people who want to be the antagonist for this round
|
candidates += player.mind // Get a list of all the people who want to be the antagonist for this round
|
||||||
@@ -372,6 +376,11 @@
|
|||||||
if(!(role in player.client.prefs.be_special)) // We don't have enough people who want to be antagonist, make a separate list of people who don't want to be one
|
if(!(role in player.client.prefs.be_special)) // We don't have enough people who want to be antagonist, make a separate list of people who don't want to be one
|
||||||
if(!jobban_isbanned(player, ROLE_SYNDICATE) && !jobban_isbanned(player, role)) //Nodrak/Carn: Antag Job-bans
|
if(!jobban_isbanned(player, ROLE_SYNDICATE) && !jobban_isbanned(player, role)) //Nodrak/Carn: Antag Job-bans
|
||||||
drafted += player.mind
|
drafted += player.mind
|
||||||
|
// yogs start - Donor features, quiet round
|
||||||
|
if(player.mind.quiet_round)
|
||||||
|
to_chat(player, "<span class='userdanger'>There aren't enough antag volunteers, so your quiet round setting will not be considered!</span>")
|
||||||
|
player.mind.quiet_round = FALSE
|
||||||
|
// yogs end
|
||||||
|
|
||||||
if(restricted_jobs)
|
if(restricted_jobs)
|
||||||
for(var/datum/mind/player in drafted) // Remove people who can't be an antagonist
|
for(var/datum/mind/player in drafted) // Remove people who can't be an antagonist
|
||||||
|
|||||||
@@ -98,6 +98,10 @@ GLOBAL_VAR(antag_prototypes)
|
|||||||
return
|
return
|
||||||
|
|
||||||
var/out = "<B>[name]</B>[(current && (current.real_name!=name))?" (as [current.real_name])":""]<br>"
|
var/out = "<B>[name]</B>[(current && (current.real_name!=name))?" (as [current.real_name])":""]<br>"
|
||||||
|
// yogs start - Donor features, quiet round
|
||||||
|
if(quiet_round)
|
||||||
|
out += "<font color=red><b>QUIET ROUND ACTIVE</b></font> (<a href='?src=\ref[src];quiet_override=1'>Override</a>)<br>"
|
||||||
|
// yogs end
|
||||||
out += "Mind currently owned by key: [key] [active?"(synced)":"(not synced)"]<br>"
|
out += "Mind currently owned by key: [key] [active?"(synced)":"(not synced)"]<br>"
|
||||||
out += "Assigned role: [assigned_role]. <a href='?src=[REF(src)];role_edit=1'>Edit</a><br>"
|
out += "Assigned role: [assigned_role]. <a href='?src=[REF(src)];role_edit=1'>Edit</a><br>"
|
||||||
out += "Faction and special role: <b><font color='red'>[special_role]</font></b><br>"
|
out += "Faction and special role: <b><font color='red'>[special_role]</font></b><br>"
|
||||||
|
|||||||
@@ -130,9 +130,13 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
|||||||
if(istype(C))
|
if(istype(C))
|
||||||
if(!IsGuestKey(C.key))
|
if(!IsGuestKey(C.key))
|
||||||
load_path(C.ckey)
|
load_path(C.ckey)
|
||||||
unlock_content = C.IsByondMember()
|
unlock_content |= C.IsByondMember() // yogs - Donor features
|
||||||
if(unlock_content)
|
if(unlock_content)
|
||||||
max_save_slots = 8
|
max_save_slots = 8
|
||||||
|
// yogs start - Donor features
|
||||||
|
else if(is_donator(C))
|
||||||
|
max_save_slots = DONOR_CHARACTER_SLOTS
|
||||||
|
// yogs end
|
||||||
var/loaded_preferences_successfully = load_preferences()
|
var/loaded_preferences_successfully = load_preferences()
|
||||||
if(loaded_preferences_successfully)
|
if(loaded_preferences_successfully)
|
||||||
if(load_character())
|
if(load_character())
|
||||||
@@ -155,6 +159,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
|||||||
|
|
||||||
dat += "<a href='?_src_=prefs;preference=tab;tab=0' [current_tab == 0 ? "class='linkOn'" : ""]>Character Settings</a> "
|
dat += "<a href='?_src_=prefs;preference=tab;tab=0' [current_tab == 0 ? "class='linkOn'" : ""]>Character Settings</a> "
|
||||||
dat += "<a href='?_src_=prefs;preference=tab;tab=1' [current_tab == 1 ? "class='linkOn'" : ""]>Game Preferences</a>"
|
dat += "<a href='?_src_=prefs;preference=tab;tab=1' [current_tab == 1 ? "class='linkOn'" : ""]>Game Preferences</a>"
|
||||||
|
dat += "<a href='?_src_=prefs;preference=tab;tab=2' [current_tab == 2 ? "class='linkOn'" : ""]>Donator Preferences</a>" // yogs - Donor features
|
||||||
|
|
||||||
if(!path)
|
if(!path)
|
||||||
dat += "<div class='notice'>Please create an account to save your preferences</div>"
|
dat += "<div class='notice'>Please create an account to save your preferences</div>"
|
||||||
@@ -496,11 +501,39 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
|||||||
|
|
||||||
if(days_remaining)
|
if(days_remaining)
|
||||||
dat += "<b>Be [capitalize(i)]:</b> <font color=red> \[IN [days_remaining] DAYS]</font><br>"
|
dat += "<b>Be [capitalize(i)]:</b> <font color=red> \[IN [days_remaining] DAYS]</font><br>"
|
||||||
|
// yogs start - Donor features
|
||||||
|
else if(src.toggles & QUIET_ROUND)
|
||||||
|
dat += "<b>Be [capitalize(i)]:</b> <font color=blue><b>\[QUIET ROUND\]</b></font><br>"
|
||||||
|
// yogs end
|
||||||
else
|
else
|
||||||
dat += "<b>Be [capitalize(i)]:</b> <a href='?_src_=prefs;preference=be_special;be_special_type=[i]'>[(i in be_special) ? "Yes" : "No"]</a><br>"
|
dat += "<b>Be [capitalize(i)]:</b> <a href='?_src_=prefs;preference=be_special;be_special_type=[i]'>[(i in be_special) ? "Yes" : "No"]</a><br>"
|
||||||
|
|
||||||
|
// yogs start - Donor features
|
||||||
|
if(is_donator(user.client))
|
||||||
|
dat += "<b>Quiet round:</b> <a href='?_src_=prefs;preference=donor;task=quiet_round'>[(src.toggles & QUIET_ROUND) ? "Yes" : "No"]</a><br>"
|
||||||
|
// yogs end
|
||||||
dat += "</td></tr></table>"
|
dat += "</td></tr></table>"
|
||||||
|
|
||||||
|
// yogs start - Donor features
|
||||||
|
if (2) //Donator preferences
|
||||||
|
dat += "<table><tr><td width='500px' height='300px' valign='top'>"
|
||||||
|
dat += "<h2>Donator Preferences</h2>"
|
||||||
|
if(is_donator(user.client))
|
||||||
|
dat += "<b>Quiet round:</b> <a href='?_src_=prefs;preference=donor;task=quiet_round'>[(src.toggles & QUIET_ROUND) ? "Yes" : "No"]</a><br>"
|
||||||
|
dat += "<b>Fancy Hat:</b> "
|
||||||
|
var/type = donor_hat ? donor_start_items[donor_hat] : null
|
||||||
|
var/temp_hat = donor_hat ? (new type()) : "None selected"
|
||||||
|
dat += "<a href='?_src_=prefs;preference=donor;task=hat'>Pick</a> [temp_hat]<BR>"
|
||||||
|
if(donor_hat)
|
||||||
|
qdel(temp_hat)
|
||||||
|
dat += "<b>Fancy PDA:</b> "
|
||||||
|
dat += "<a href='?_src_=prefs;preference=donor;task=pda'>[donor_pdas[donor_pda]]</a><BR>"
|
||||||
|
dat += "<b>Purrbation (Humans only)</b> "
|
||||||
|
dat += "<a href='?_src_=prefs;preference=donor;task=purrbation'>[purrbation ? "Yes" : "No"]</a><BR>"
|
||||||
|
else
|
||||||
|
dat += "<b><a href='http://www.yogstation.net/index.php?do=donate'>Donate here</b>"
|
||||||
|
// yogs end
|
||||||
|
|
||||||
dat += "<hr><center>"
|
dat += "<hr><center>"
|
||||||
|
|
||||||
if(!IsGuestKey(user.key))
|
if(!IsGuestKey(user.key))
|
||||||
@@ -572,6 +605,11 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
|||||||
if((job_civilian_low & ASSISTANT) && (rank != "Assistant") && !jobban_isbanned(user, "Assistant"))
|
if((job_civilian_low & ASSISTANT) && (rank != "Assistant") && !jobban_isbanned(user, "Assistant"))
|
||||||
HTML += "<font color=orange>[rank]</font></td><td></td></tr>"
|
HTML += "<font color=orange>[rank]</font></td><td></td></tr>"
|
||||||
continue
|
continue
|
||||||
|
// yogs start - Donor features, quiet round
|
||||||
|
if(((rank in GLOB.command_positions) || (rank in GLOB.nonhuman_positions)) && (src.toggles & QUIET_ROUND))
|
||||||
|
HTML += "<font color=blue>[rank]</font></td><td><font color=blue><b> \[QUIET\]</b></font></td></tr>"
|
||||||
|
continue
|
||||||
|
// yogs end
|
||||||
if((rank in GLOB.command_positions) || (rank == "AI"))//Bold head jobs
|
if((rank in GLOB.command_positions) || (rank == "AI"))//Bold head jobs
|
||||||
HTML += "<b><span class='dark'>[rank]</span></b>"
|
HTML += "<b><span class='dark'>[rank]</span></b>"
|
||||||
else
|
else
|
||||||
@@ -851,6 +889,25 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
|||||||
text += ".</span>"
|
text += ".</span>"
|
||||||
to_chat(user, text)
|
to_chat(user, text)
|
||||||
return
|
return
|
||||||
|
// yogs start - Donor features
|
||||||
|
if(href_list["preference"] == "donor")
|
||||||
|
if(is_donator(user))
|
||||||
|
switch(href_list["task"])
|
||||||
|
if("hat")
|
||||||
|
var/item = input(usr, "What would you like to start with?","Donator fun","Nothing") as null|anything in donor_start_items
|
||||||
|
if(item)
|
||||||
|
donor_hat = donor_start_items.Find(item)
|
||||||
|
else
|
||||||
|
donor_hat = 0
|
||||||
|
if("quiet_round")
|
||||||
|
toggles ^= QUIET_ROUND
|
||||||
|
if("pda")
|
||||||
|
donor_pda = donor_pda % donor_pdas.len + 1
|
||||||
|
if("purrbation")
|
||||||
|
purrbation = !purrbation
|
||||||
|
else
|
||||||
|
message_admins("EXPLOIT \[donor\]: [user] tried to access donor only functions (as a non-donor). Attempt made on \"[href_list["preference"]]\" -> \"[href_list["task"]]\".")
|
||||||
|
// yogs end
|
||||||
|
|
||||||
if(href_list["preference"] == "job")
|
if(href_list["preference"] == "job")
|
||||||
switch(href_list["task"])
|
switch(href_list["task"])
|
||||||
|
|||||||
@@ -103,6 +103,12 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
|||||||
S["pda_style"] >> pda_style
|
S["pda_style"] >> pda_style
|
||||||
S["pda_color"] >> pda_color
|
S["pda_color"] >> pda_color
|
||||||
|
|
||||||
|
// yogs start - Donor features
|
||||||
|
S["donor_pda"] >> donor_pda
|
||||||
|
S["donor_hat"] >> donor_hat
|
||||||
|
S["purrbation"] >> purrbation
|
||||||
|
// yogs end
|
||||||
|
|
||||||
//try to fix any outdated data if necessary
|
//try to fix any outdated data if necessary
|
||||||
if(needs_update >= 0)
|
if(needs_update >= 0)
|
||||||
update_preferences(needs_update, S) //needs_update = savefile_version if we need an update (positive integer)
|
update_preferences(needs_update, S) //needs_update = savefile_version if we need an update (positive integer)
|
||||||
@@ -129,6 +135,12 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
|||||||
pda_style = sanitize_inlist(MONO, VT, SHARE, ORBITRON)
|
pda_style = sanitize_inlist(MONO, VT, SHARE, ORBITRON)
|
||||||
pda_color = sanitize_hexcolor(pda_color, 6, 1, initial(pda_color))
|
pda_color = sanitize_hexcolor(pda_color, 6, 1, initial(pda_color))
|
||||||
|
|
||||||
|
// yogs start - Donor features
|
||||||
|
donor_pda = sanitize_integer(donor_pda, 1, donor_pdas.len, 1)
|
||||||
|
donor_hat = sanitize_integer(donor_hat, 0, donor_start_items.len, 0)
|
||||||
|
purrbation = sanitize_integer(purrbation, 0, 1, initial(purrbation))
|
||||||
|
// yogs end
|
||||||
|
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
/datum/preferences/proc/save_preferences()
|
/datum/preferences/proc/save_preferences()
|
||||||
@@ -170,6 +182,12 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
|||||||
WRITE_FILE(S["tip_delay"], tip_delay)
|
WRITE_FILE(S["tip_delay"], tip_delay)
|
||||||
WRITE_FILE(S["pda_style"], pda_style)
|
WRITE_FILE(S["pda_style"], pda_style)
|
||||||
WRITE_FILE(S["pda_color"], pda_color)
|
WRITE_FILE(S["pda_color"], pda_color)
|
||||||
|
|
||||||
|
// yogs start - Donor features
|
||||||
|
WRITE_FILE(S["donor_pda"], donor_pda)
|
||||||
|
WRITE_FILE(S["donor_hat"], donor_hat)
|
||||||
|
WRITE_FILE(S["purrbation"], purrbation)
|
||||||
|
// yogs end
|
||||||
|
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
|
|||||||
@@ -327,6 +327,7 @@
|
|||||||
SSjob.AssignRole(src, rank, 1)
|
SSjob.AssignRole(src, rank, 1)
|
||||||
|
|
||||||
var/mob/living/character = create_character(TRUE) //creates the human and transfers vars and mind
|
var/mob/living/character = create_character(TRUE) //creates the human and transfers vars and mind
|
||||||
|
character.mind.quiet_round = character.client.prefs.toggles & QUIET_ROUND // yogs - Donor Features
|
||||||
var/equip = SSjob.EquipRank(character, rank, 1)
|
var/equip = SSjob.EquipRank(character, rank, 1)
|
||||||
if(isliving(equip)) //Borgs get borged in the equip, so we need to make sure we handle the new mob.
|
if(isliving(equip)) //Borgs get borged in the equip, so we need to make sure we handle the new mob.
|
||||||
character = equip
|
character = equip
|
||||||
@@ -364,7 +365,7 @@
|
|||||||
|
|
||||||
GLOB.joined_player_list += character.ckey
|
GLOB.joined_player_list += character.ckey
|
||||||
|
|
||||||
if(CONFIG_GET(flag/allow_latejoin_antagonists) && humanc) //Borgs aren't allowed to be antags. Will need to be tweaked if we get true latejoin ais.
|
if(CONFIG_GET(flag/allow_latejoin_antagonists) && humanc && !character.mind.quiet_round) //Borgs aren't allowed to be antags. Will need to be tweaked if we get true latejoin ais. // yogs - Donor Features
|
||||||
if(SSshuttle.emergency)
|
if(SSshuttle.emergency)
|
||||||
switch(SSshuttle.emergency.mode)
|
switch(SSshuttle.emergency.mode)
|
||||||
if(SHUTTLE_RECALL, SHUTTLE_IDLE)
|
if(SHUTTLE_RECALL, SHUTTLE_IDLE)
|
||||||
|
|||||||
@@ -90,6 +90,7 @@
|
|||||||
#include "code\__DEFINES\vv.dm"
|
#include "code\__DEFINES\vv.dm"
|
||||||
#include "code\__DEFINES\wall_dents.dm"
|
#include "code\__DEFINES\wall_dents.dm"
|
||||||
#include "code\__DEFINES\wires.dm"
|
#include "code\__DEFINES\wires.dm"
|
||||||
|
#include "code\__DEFINES\~yogs_defines\preferences.dm"
|
||||||
#include "code\__HELPERS\_lists.dm"
|
#include "code\__HELPERS\_lists.dm"
|
||||||
#include "code\__HELPERS\_logging.dm"
|
#include "code\__HELPERS\_logging.dm"
|
||||||
#include "code\__HELPERS\_string_lists.dm"
|
#include "code\__HELPERS\_string_lists.dm"
|
||||||
@@ -2550,8 +2551,15 @@
|
|||||||
#include "interface\menu.dm"
|
#include "interface\menu.dm"
|
||||||
#include "interface\stylesheet.dm"
|
#include "interface\stylesheet.dm"
|
||||||
#include "interface\skin.dmf"
|
#include "interface\skin.dmf"
|
||||||
|
#include "yogstation\code\__HELPERS\mobs.dm"
|
||||||
|
#include "yogstation\code\datums\mind.dm"
|
||||||
|
#include "yogstation\code\modules\client\preferences.dm"
|
||||||
#include "yogstation\code\modules\client\verbs\ooc.dm"
|
#include "yogstation\code\modules\client\verbs\ooc.dm"
|
||||||
#include "yogstation\code\modules\clothing\clothing.dm"
|
#include "yogstation\code\modules\clothing\clothing.dm"
|
||||||
|
#include "yogstation\code\modules\clothing\donator.dm"
|
||||||
|
#include "yogstation\code\modules\clothing\shoes\miscellaneous.dm"
|
||||||
|
#include "yogstation\code\modules\donor\donor_items.dm"
|
||||||
|
#include "yogstation\code\modules\jobs\job_types\job.dm"
|
||||||
#include "yogstation\code\modules\libvg\utf8.dm"
|
#include "yogstation\code\modules\libvg\utf8.dm"
|
||||||
#include "yogstation\code\modules\spells\spells.dm"
|
#include "yogstation\code\modules\spells\spells.dm"
|
||||||
// END_INCLUDE
|
// END_INCLUDE
|
||||||
|
|||||||
28
yogstation/code/__HELPERS/mobs.dm
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
/proc/is_admin(var/user)
|
||||||
|
if(ismob(user))
|
||||||
|
var/mob/temp = user
|
||||||
|
if(temp && temp.client && temp.client.holder)
|
||||||
|
return TRUE
|
||||||
|
|
||||||
|
else if(istype(user, /client))
|
||||||
|
var/client/temp = user
|
||||||
|
if(temp && temp.holder)
|
||||||
|
return TRUE
|
||||||
|
|
||||||
|
return FALSE
|
||||||
|
|
||||||
|
/proc/is_donator(var/user)
|
||||||
|
if(is_admin(user))
|
||||||
|
return TRUE
|
||||||
|
|
||||||
|
if(ismob(user))
|
||||||
|
var/mob/temp = user
|
||||||
|
if(temp && temp.client && temp.client.prefs)
|
||||||
|
return (temp.client.prefs.unlock_content & 2)
|
||||||
|
|
||||||
|
else if(istype(user, /client))
|
||||||
|
var/client/temp = user
|
||||||
|
if(temp && temp.prefs)
|
||||||
|
return (temp.prefs.unlock_content & 2)
|
||||||
|
|
||||||
|
return FALSE
|
||||||
2
yogstation/code/datums/mind.dm
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
/datum/mind
|
||||||
|
var/quiet_round = FALSE //Won't be picked as target in most cases
|
||||||
5
yogstation/code/modules/client/preferences.dm
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
/datum/preferences
|
||||||
|
var/donor_hat = 0
|
||||||
|
var/donor_pda = 1
|
||||||
|
var/quiet_round = FALSE
|
||||||
|
var/purrbation = null
|
||||||
83
yogstation/code/modules/clothing/donator.dm
Normal file
@@ -0,0 +1,83 @@
|
|||||||
|
/obj/item/clothing/head/yogs/beanie
|
||||||
|
name = "beanie"
|
||||||
|
desc = "A nice comfy beanie hat."
|
||||||
|
icon_state = "beanie"
|
||||||
|
item_state = "beanie"
|
||||||
|
|
||||||
|
/obj/item/clothing/head/yogs/bike
|
||||||
|
name = "bike helmet"
|
||||||
|
desc = "A bike helmet. Although it looks cool, it is made from recycled materials and is extremely flimsy. You can plainly see the face of the wearer through the darkened visor."
|
||||||
|
icon_state = "bike"
|
||||||
|
item_state = "bike"
|
||||||
|
|
||||||
|
/obj/item/clothing/head/yogs/hardsuit_helm_clown
|
||||||
|
name = "clown hardsuit helm"
|
||||||
|
desc = "An incredibly flimsy helm made to look like a hardsuit helm. You can plainly see the face of the wearer through the visor."
|
||||||
|
icon_state = "hardsuit_helm_clown"
|
||||||
|
item_state = "hardsuit_helm_clown"
|
||||||
|
|
||||||
|
/obj/item/clothing/head/yogs/cowboy
|
||||||
|
name = "cowboy hat"
|
||||||
|
desc = "A cowboy hat. YEEEHAWWWWW."
|
||||||
|
icon_state = "cowboy_hat"
|
||||||
|
item_state = "cowboy_hat"
|
||||||
|
|
||||||
|
/obj/item/clothing/head/yogs/crusader
|
||||||
|
name = "crusader helmet"
|
||||||
|
desc = "A thin metal crusader helmet. It looks like it wouldn't take much of a beating."
|
||||||
|
icon_state = "crusader"
|
||||||
|
item_state = "crusader"
|
||||||
|
|
||||||
|
/obj/item/clothing/head/yogs/cowboy_sheriff
|
||||||
|
name = "sheriff cowboy hat"
|
||||||
|
desc = "A sheriffs hat. YEEEHAWWWWW!"
|
||||||
|
icon_state = "cowboy_sheriff"
|
||||||
|
item_state = "cowboy_sheriff"
|
||||||
|
|
||||||
|
/obj/item/clothing/head/yogs/dallas
|
||||||
|
name = "dallas hat"
|
||||||
|
desc = "A patriotic hat."
|
||||||
|
icon_state = "dallas"
|
||||||
|
item_state = "dallas"
|
||||||
|
|
||||||
|
/obj/item/clothing/head/yogs/drinking_hat
|
||||||
|
name = "drinking hat"
|
||||||
|
desc = "A utilitarian drinking hat."
|
||||||
|
icon_state = "drinking_hat"
|
||||||
|
item_state = "drinking_hat"
|
||||||
|
|
||||||
|
/obj/item/clothing/head/yogs/microwave
|
||||||
|
name = "microwave hat"
|
||||||
|
desc = "A microwave hat. Luckily the harmful components were removed. Safety first!"
|
||||||
|
icon_state = "microwave"
|
||||||
|
item_state = "microwave"
|
||||||
|
|
||||||
|
/obj/item/clothing/head/yogs/sith_hood
|
||||||
|
name = "sith hood"
|
||||||
|
desc = "A sith hood."
|
||||||
|
icon_state = "sith_hood"
|
||||||
|
item_state = "sith_hood"
|
||||||
|
|
||||||
|
/obj/item/clothing/head/yogs/turban
|
||||||
|
name = "turban"
|
||||||
|
desc = "A turban."
|
||||||
|
icon_state = "turban"
|
||||||
|
item_state = "turban"
|
||||||
|
|
||||||
|
/obj/item/clothing/neck/yogs/sith_cloak
|
||||||
|
name = "sith cloak"
|
||||||
|
desc = "A sith cloak."
|
||||||
|
icon_state = "sith_cloak"
|
||||||
|
item_state = "sith_cloak"
|
||||||
|
|
||||||
|
/obj/item/clothing/suit/yogs/armor/sith_suit
|
||||||
|
name = "sith suit"
|
||||||
|
desc = "A sith suit."
|
||||||
|
icon_state = "sith_suit"
|
||||||
|
item_state = "sith_suit"
|
||||||
|
|
||||||
|
/obj/item/clothing/suit/yogs/armor/hardsuit_clown
|
||||||
|
name = "clown hardsuit"
|
||||||
|
desc = "A clown hardsuit. The joke being that it is anything but."
|
||||||
|
icon_state = "hardsuit_clown"
|
||||||
|
item_state = "hardsuit_clown"
|
||||||
5
yogstation/code/modules/clothing/shoes/miscellaneous.dm
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
/obj/item/clothing/shoes/yogs/fuzzy_slippers
|
||||||
|
name = "fuzzy bunny slippers"
|
||||||
|
desc = "No animals were harmed in the making of these fuzzy slippers"
|
||||||
|
icon_state = "fuzzyslippers"
|
||||||
|
item_state = "fuzzyslippers"
|
||||||
64
yogstation/code/modules/donor/donor_items.dm
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
var/list/donor_start_items = list(\
|
||||||
|
/obj/item/clothing/head/yogs/beanie, \
|
||||||
|
/obj/item/clothing/head/yogs/bike, \
|
||||||
|
/obj/item/clothing/head/yogs/hardsuit_helm_clown, \
|
||||||
|
/obj/item/clothing/head/yogs/cowboy, \
|
||||||
|
/obj/item/clothing/head/yogs/crusader, \
|
||||||
|
/obj/item/clothing/head/yogs/cowboy_sheriff, \
|
||||||
|
/obj/item/clothing/head/yogs/dallas, \
|
||||||
|
/obj/item/clothing/head/yogs/drinking_hat, \
|
||||||
|
/obj/item/clothing/head/yogs/microwave, \
|
||||||
|
/obj/item/clothing/head/yogs/sith_hood, \
|
||||||
|
/obj/item/clothing/head/yogs/turban, \
|
||||||
|
/obj/item/clothing/head/collectable/petehat, \
|
||||||
|
/obj/item/clothing/head/collectable/slime, \
|
||||||
|
/obj/item/clothing/head/collectable/xenom, \
|
||||||
|
/obj/item/clothing/head/collectable/chef, \
|
||||||
|
/obj/item/clothing/head/collectable/paper, \
|
||||||
|
/obj/item/clothing/head/collectable/tophat, \
|
||||||
|
/obj/item/clothing/head/collectable/captain, \
|
||||||
|
/obj/item/clothing/head/collectable/police, \
|
||||||
|
/obj/item/clothing/head/collectable/welding, \
|
||||||
|
/obj/item/clothing/head/collectable/flatcap, \
|
||||||
|
/obj/item/clothing/head/collectable/pirate, \
|
||||||
|
/obj/item/clothing/head/collectable/kitty, \
|
||||||
|
/obj/item/clothing/head/collectable/rabbitears, \
|
||||||
|
/obj/item/clothing/head/collectable/wizard, \
|
||||||
|
/obj/item/clothing/head/collectable/hardhat, \
|
||||||
|
/obj/item/clothing/head/collectable/HoS, \
|
||||||
|
/obj/item/clothing/head/collectable/thunderdome, \
|
||||||
|
/obj/item/clothing/head/collectable/swat, \
|
||||||
|
/obj/item/clothing/head/hardhat/cakehat, \
|
||||||
|
/obj/item/clothing/head/ushanka, \
|
||||||
|
/obj/item/clothing/head/hardhat/pumpkinhead, \
|
||||||
|
/obj/item/clothing/head/kitty, \
|
||||||
|
/obj/item/clothing/head/hardhat/reindeer, \
|
||||||
|
/obj/item/clothing/head/powdered_wig, \
|
||||||
|
/obj/item/clothing/head/that, \
|
||||||
|
/obj/item/clothing/head/redcoat, \
|
||||||
|
/obj/item/clothing/head/mailman, \
|
||||||
|
/obj/item/clothing/head/plaguedoctorhat, \
|
||||||
|
/obj/item/clothing/head/hasturhood, \
|
||||||
|
/obj/item/clothing/head/nursehat, \
|
||||||
|
/obj/item/clothing/head/cardborg, \
|
||||||
|
/obj/item/clothing/head/justice, \
|
||||||
|
/obj/item/clothing/head/rabbitears, \
|
||||||
|
/obj/item/clothing/head/flatcap, \
|
||||||
|
/obj/item/clothing/head/pirate, \
|
||||||
|
/obj/item/clothing/head/bowler, \
|
||||||
|
/obj/item/clothing/head/witchwig, \
|
||||||
|
/obj/item/clothing/head/chicken, \
|
||||||
|
/obj/item/clothing/head/fedora, \
|
||||||
|
/obj/item/clothing/head/sombrero, \
|
||||||
|
/obj/item/clothing/head/sombrero/green, \
|
||||||
|
/obj/item/clothing/head/cone, \
|
||||||
|
/obj/item/clothing/head/collectable/beret, \
|
||||||
|
/obj/item/clothing/head/crown, \
|
||||||
|
/obj/item/clothing/head/wizard/marisa/fake, \
|
||||||
|
/obj/item/clothing/neck/yogs/sith_cloak, \
|
||||||
|
/obj/item/clothing/suit/yogs/armor/sith_suit, \
|
||||||
|
/obj/item/clothing/suit/yogs/armor/hardsuit_clown, \
|
||||||
|
/obj/item/clothing/shoes/yogs/fuzzy_slippers
|
||||||
|
)
|
||||||
|
|
||||||
|
var/list/donor_pdas = list("Normal", "Transparent", "Pip Boy", "Rainbow")
|
||||||
36
yogstation/code/modules/jobs/job_types/job.dm
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
/datum/job/proc/give_donor_stuff(mob/living/H, mob/M)
|
||||||
|
var/client/C = M.client
|
||||||
|
if(!C)
|
||||||
|
C = H.client
|
||||||
|
if(!C)
|
||||||
|
return // nice
|
||||||
|
|
||||||
|
if(!is_donator(C))
|
||||||
|
return
|
||||||
|
|
||||||
|
if(C.prefs.purrbation)
|
||||||
|
purrbation_toggle(H)
|
||||||
|
|
||||||
|
if(C.prefs.donor_hat)
|
||||||
|
var/obj/item/storage/backpack/BP = locate(/obj/item/storage/backpack) in H.GetAllContents()
|
||||||
|
if(BP)
|
||||||
|
var/type = donor_start_items[C.prefs.donor_hat]
|
||||||
|
var/obj/hat = new type()
|
||||||
|
hat.forceMove(BP)
|
||||||
|
|
||||||
|
switch(C.prefs.donor_pda)
|
||||||
|
if(2)//transparent
|
||||||
|
var/obj/item/device/pda/PDA = locate(/obj/item/device/pda) in H.GetAllContents()
|
||||||
|
if(PDA)
|
||||||
|
PDA.icon = 'yogstation/icons/obj/pda.dmi'
|
||||||
|
PDA.icon_state = "pda-clear"
|
||||||
|
if(3)//pip-boy
|
||||||
|
var/obj/item/device/pda/PDA = locate(/obj/item/device/pda) in H.GetAllContents()
|
||||||
|
if(PDA)
|
||||||
|
PDA.icon = 'yogstation/icons/obj/pda.dmi'
|
||||||
|
PDA.icon_state = "pda-pipboy"
|
||||||
|
PDA.slot_flags |= SLOT_GLOVES
|
||||||
|
if(4)//rainbow
|
||||||
|
var/obj/item/device/pda/PDA = locate(/obj/item/device/pda) in H.GetAllContents()
|
||||||
|
if(PDA)
|
||||||
|
PDA.icon_state = "pda-rainbow"
|
||||||
|
Before Width: | Height: | Size: 182 B After Width: | Height: | Size: 448 B |
|
Before Width: | Height: | Size: 182 B After Width: | Height: | Size: 386 B |
|
Before Width: | Height: | Size: 182 B After Width: | Height: | Size: 4.8 KiB |
|
Before Width: | Height: | Size: 182 B After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 182 B After Width: | Height: | Size: 4.9 KiB |
|
Before Width: | Height: | Size: 182 B After Width: | Height: | Size: 331 B |
|
Before Width: | Height: | Size: 182 B After Width: | Height: | Size: 282 B |
BIN
yogstation/icons/obj/pda.dmi
Normal file
|
After Width: | Height: | Size: 705 B |