Ports donor features
@@ -14,6 +14,7 @@
|
||||
#define SOUND_ANNOUNCEMENTS 2048
|
||||
#define DISABLE_DEATHRATTLE 4096
|
||||
#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)
|
||||
|
||||
|
||||
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)
|
||||
Debug("FOC incompatible with antagonist role, Player: [player]")
|
||||
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)
|
||||
Debug("FOC pass, Player: [player], Level:[level]")
|
||||
candidates += player
|
||||
@@ -415,6 +420,8 @@ SUBSYSTEM_DEF(job)
|
||||
if(job && H)
|
||||
job.after_spawn(H, M)
|
||||
|
||||
job.give_donor_stuff(H, M) // yogs - Donor Features
|
||||
|
||||
return H
|
||||
|
||||
|
||||
|
||||
@@ -653,6 +653,13 @@
|
||||
|
||||
else if (href_list["obj_announce"])
|
||||
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
|
||||
if(self_antagging && (!usr || !usr.client) && current.client)
|
||||
@@ -679,10 +686,18 @@
|
||||
qdel(find_syndicate_uplink())
|
||||
|
||||
/datum/mind/proc/make_Traitor()
|
||||
// yogs start - Donor features, quiet round
|
||||
if(quiet_round)
|
||||
return
|
||||
// yogs end
|
||||
if(!(has_antag_datum(/datum/antagonist/traitor)))
|
||||
add_antag_datum(/datum/antagonist/traitor)
|
||||
|
||||
/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)
|
||||
if(!C)
|
||||
C = add_antag_datum(/datum/antagonist/changeling)
|
||||
@@ -690,6 +705,10 @@
|
||||
return C
|
||||
|
||||
/datum/mind/proc/make_Wizard()
|
||||
// yogs start - Donor features, quiet round
|
||||
if(quiet_round)
|
||||
return
|
||||
// yogs end
|
||||
if(!has_antag_datum(/datum/antagonist/wizard))
|
||||
special_role = ROLE_WIZARD
|
||||
assigned_role = ROLE_WIZARD
|
||||
@@ -697,6 +716,10 @@
|
||||
|
||||
|
||||
/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))
|
||||
SSticker.mode.add_cultist(src,FALSE,equip=TRUE)
|
||||
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>")
|
||||
|
||||
/datum/mind/proc/make_Rev()
|
||||
// yogs start - Donor features, quiet round
|
||||
if(quiet_round)
|
||||
return
|
||||
// yogs end
|
||||
var/datum/antagonist/rev/head/head = new()
|
||||
head.give_flash = TRUE
|
||||
head.give_hud = TRUE
|
||||
|
||||
@@ -348,6 +348,10 @@
|
||||
for(var/mob/dead/new_player/player in GLOB.player_list)
|
||||
if(player.client && player.ready == PLAYER_READY_TO_PLAY)
|
||||
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!!!
|
||||
// Goodbye antag dante
|
||||
@@ -355,7 +359,7 @@
|
||||
|
||||
for(var/mob/dead/new_player/player in players)
|
||||
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(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
|
||||
@@ -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(!jobban_isbanned(player, ROLE_SYNDICATE) && !jobban_isbanned(player, role)) //Nodrak/Carn: Antag Job-bans
|
||||
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)
|
||||
for(var/datum/mind/player in drafted) // Remove people who can't be an antagonist
|
||||
|
||||
@@ -98,6 +98,10 @@ GLOBAL_VAR(antag_prototypes)
|
||||
return
|
||||
|
||||
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 += "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>"
|
||||
|
||||
@@ -130,9 +130,13 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
if(istype(C))
|
||||
if(!IsGuestKey(C.key))
|
||||
load_path(C.ckey)
|
||||
unlock_content = C.IsByondMember()
|
||||
unlock_content |= C.IsByondMember() // yogs - Donor features
|
||||
if(unlock_content)
|
||||
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()
|
||||
if(loaded_preferences_successfully)
|
||||
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=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)
|
||||
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)
|
||||
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
|
||||
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>"
|
||||
|
||||
// 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>"
|
||||
|
||||
if(!IsGuestKey(user.key))
|
||||
@@ -572,6 +605,11 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
if((job_civilian_low & ASSISTANT) && (rank != "Assistant") && !jobban_isbanned(user, "Assistant"))
|
||||
HTML += "<font color=orange>[rank]</font></td><td></td></tr>"
|
||||
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
|
||||
HTML += "<b><span class='dark'>[rank]</span></b>"
|
||||
else
|
||||
@@ -851,6 +889,25 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
text += ".</span>"
|
||||
to_chat(user, text)
|
||||
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")
|
||||
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_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
|
||||
if(needs_update >= 0)
|
||||
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_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
|
||||
|
||||
/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["pda_style"], pda_style)
|
||||
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
|
||||
|
||||
|
||||
@@ -327,6 +327,7 @@
|
||||
SSjob.AssignRole(src, rank, 1)
|
||||
|
||||
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)
|
||||
if(isliving(equip)) //Borgs get borged in the equip, so we need to make sure we handle the new mob.
|
||||
character = equip
|
||||
@@ -364,7 +365,7 @@
|
||||
|
||||
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)
|
||||
switch(SSshuttle.emergency.mode)
|
||||
if(SHUTTLE_RECALL, SHUTTLE_IDLE)
|
||||
|
||||
@@ -90,6 +90,7 @@
|
||||
#include "code\__DEFINES\vv.dm"
|
||||
#include "code\__DEFINES\wall_dents.dm"
|
||||
#include "code\__DEFINES\wires.dm"
|
||||
#include "code\__DEFINES\~yogs_defines\preferences.dm"
|
||||
#include "code\__HELPERS\_lists.dm"
|
||||
#include "code\__HELPERS\_logging.dm"
|
||||
#include "code\__HELPERS\_string_lists.dm"
|
||||
@@ -2550,8 +2551,15 @@
|
||||
#include "interface\menu.dm"
|
||||
#include "interface\stylesheet.dm"
|
||||
#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\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\spells\spells.dm"
|
||||
// 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 |