Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Donor items #335

Merged
merged 12 commits into from
Sep 10, 2023
72 changes: 0 additions & 72 deletions code/game/objects/items/choice_beacon.dm
Original file line number Diff line number Diff line change
Expand Up @@ -175,75 +175,3 @@
GLOB.holy_armor_type = choice_path
return ..()

// Pet Beacon for Monkecoin shop

/obj/item/choice_beacon/pet
name = "Pet Delivery Beacon"
desc = "For those shifts when you need a little piece of home and some company."
company_message = span_bold("Pet request received. Your friend is on the way.")
var/default_name = "Stinko"

/obj/item/choice_beacon/pet/generate_display_names()
var/static/list/pet_list
if(!pet_list)
// Bug SeeBeeSee on Discord if you want an animal type added
// (no, you cannot have a pet goliath or other hostile mob)
pet_list = list()
var/list/selectable_pets = list(
/mob/living/basic/mothroach,
/mob/living/basic/axolotl,
/mob/living/basic/mouse,
/mob/living/basic/mouse/rat,
/mob/living/simple_animal/parrot,
/mob/living/basic/butterfly,
/mob/living/simple_animal/crab,
/mob/living/simple_animal/crab/evil,
/mob/living/basic/pet/penguin/baby,
/mob/living/basic/pet/fox,
/mob/living/simple_animal/pet/cat,
/mob/living/simple_animal/pet/cat/kitten,
/mob/living/basic/pet/dog/corgi,
/mob/living/basic/pet/dog/pug,
/mob/living/basic/pet/dog/bullterrier,
/mob/living/basic/lizard,
/mob/living/basic/ant
)

for(var/mob/living/basic_mob as anything in selectable_pets)
pet_list[initial(basic_mob.name)] = basic_mob

return pet_list

/obj/item/choice_beacon/pet/open_options_menu(mob/living/user)
var/input_name = stripped_input(user, "What would you like your new pet to be named?", "New Pet Name", default_name, MAX_NAME_LEN)
if (!input_name)
return
var/list/display_names = generate_display_names()
if(!length(display_names))
return
var/choice = tgui_input_list(user, "Which pet would you like to order?", "Select a new friend", display_names)
if(isnull(choice) || isnull(display_names[choice]))
return
if(!can_use_beacon(user))
return

consume_use(display_names[choice], user, input_name)

/obj/item/choice_beacon/pet/consume_use(obj/choice_path, mob/living/user, name)
to_chat(user, span_hear("You hear something crackle from the beacon for a moment before a voice speaks. \
\"Please stand by for a message from [company_source]. Message as follows: [company_message] Message ends.\""))

var/obj/structure/closet/supplypod/bluespacepod/pod = new()
var/mob/your_pet = new choice_path(pod)
pod.explosionSize = list(0,0,0,0)
your_pet.name = name
your_pet.real_name = name

new /obj/effect/pod_landingzone(get_turf(src), pod)

uses--
if(uses <= 0)
qdel(src)
return

to_chat(user, span_notice("[uses] use[uses > 1 ? "s" : ""] remain[uses > 1 ? "" : "s"] on [src]."))
72 changes: 72 additions & 0 deletions monkestation/code/game/objects/items/choice_beacon.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
// Pet Beacon for Monkecoin shop

/obj/item/choice_beacon/pet
name = "Pet Delivery Beacon"
desc = "For those shifts when you need a little piece of home and some company."
company_message = span_bold("Pet request received. Your friend is on the way.")
var/default_name = "Stinko"

/obj/item/choice_beacon/pet/generate_display_names()
var/static/list/pet_list
if(!pet_list)
// Bug SeeBeeSee on Discord if you want an animal type added
// (no, you cannot have a pet goliath or other hostile mob)
pet_list = list()
var/list/selectable_pets = list(
/mob/living/basic/mothroach,
/mob/living/basic/axolotl,
/mob/living/basic/mouse,
/mob/living/basic/mouse/rat,
/mob/living/simple_animal/parrot,
/mob/living/basic/butterfly,
/mob/living/simple_animal/crab,
/mob/living/simple_animal/crab/evil,
/mob/living/basic/pet/penguin/baby,
/mob/living/basic/pet/fox,
/mob/living/simple_animal/pet/cat,
/mob/living/simple_animal/pet/cat/kitten,
/mob/living/basic/pet/dog/corgi,
/mob/living/basic/pet/dog/pug,
/mob/living/basic/pet/dog/bullterrier,
/mob/living/basic/lizard,
/mob/living/basic/ant
)

for(var/mob/living/basic_mob as anything in selectable_pets)
pet_list[initial(basic_mob.name)] = basic_mob

return pet_list

/obj/item/choice_beacon/pet/open_options_menu(mob/living/user)
var/input_name = stripped_input(user, "What would you like your new pet to be named?", "New Pet Name", default_name, MAX_NAME_LEN)
if (!input_name)
return
var/list/display_names = generate_display_names()
if(!length(display_names))
return
var/choice = tgui_input_list(user, "Which pet would you like to order?", "Select a new friend", display_names)
if(isnull(choice) || isnull(display_names[choice]))
return
if(!can_use_beacon(user))
return

consume_use(display_names[choice], user, input_name)

/obj/item/choice_beacon/pet/consume_use(obj/choice_path, mob/living/user, name)
to_chat(user, span_hear("You hear something crackle from the beacon for a moment before a voice speaks. \
\"Please stand by for a message from [company_source]. Message as follows: [company_message] Message ends.\""))

var/obj/structure/closet/supplypod/bluespacepod/pod = new()
var/mob/your_pet = new choice_path(pod)
pod.explosionSize = list(0,0,0,0)
your_pet.name = name
your_pet.real_name = name

new /obj/effect/pod_landingzone(get_turf(src), pod)

uses--
if(uses <= 0)
qdel(src)
return

to_chat(user, span_notice("[uses] use[uses > 1 ? "s" : ""] remain[uses > 1 ? "" : "s"] on [src]."))
38 changes: 38 additions & 0 deletions monkestation/code/modules/donator/README.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
## Title: <!--Title of your addition-->

<!-- uppercase, underscore_connected name of your module, that you use to mark files-->
MODULE ID: DONATOR_ITEMS

### Description:

This PR adds adds donator specific items to the game. Also migrates old donator items to the game for easy CRUD.


<!-- Here, try to describe what your PR does, what features it provides and any other directly useful information -->

### TG Proc/File Changes:

<!-- If you had to edit, or append to any core procs in the process of making this PR, list them here. APPEND: Also, please include any files that you've changed. .DM files that is. -->

### Defines:

<!-- If you needed to add any defines, mention the files you added those defines in -->


### Master file additions

- N/A
<!-- Any master file changes you've made to existing master files or if you've added a new master file. Please mark either as #NEW or #CHANGE -->

### Included files that are not contained in this module:

- N/A
<!-- Likewise, be it a non-modular file or a modular one that's not contained within the folder belonging to this specific module, it should be mentioned here -->

### Credits:

<!-- Here go the credits to you, dear coder, and in case of collaborative work or ports, credits to the original source of the code -->
<!-- Orignal Coders -->
Code and sprites done by Lmenvs.
<!-- Orignal Coders -->

53 changes: 53 additions & 0 deletions monkestation/code/modules/donator/code/datum/loadout.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
//bidlink

/datum/loadout_item/suit/cirno_outfit
name = "Cirno Outfit"
item_path = /obj/item/clothing/suit/costume/cirno


/datum/loadout_item/head/cirno
name = "Cirno Wig"
item_path = /obj/item/clothing/head/costume/cirno

/datum/loadout_item/pocket_items/donator/cirno
name = "Pet Delivery Beacon"
item_path = /obj/item/choice_beacon/pet/donator/cirno
requires_purchase = FALSE
ckeywhitelist = list("bidlink2")

//ttnt

/datum/loadout_item/head/pot
name = "Dented Pot"
item_path = /obj/item/clothing/head/costume/pot


/datum/loadout_item/pocket_items/donator/spycrab
name = "Pet Delivery Beacon"
item_path = /obj/item/choice_beacon/pet/donator/spycrab
requires_purchase = FALSE
ckeywhitelist = list("unknown")

//spinnermaster

/datum/loadout_item/pocket_items/donator/void_mothroach
name = "Pet Delivery Beacon"
item_path = /obj/item/choice_beacon/pet/donator/void_mothroach
requires_purchase = FALSE
ckeywhitelist = list("spinnermaster")

//ruby_flamewing

/datum/loadout_item/pocket_items/donator/blahaj
name = "Pet Delivery Beacon"
item_path = /obj/item/choice_beacon/pet/donator/blahaj
requires_purchase = FALSE
ckeywhitelist = list("ruby_flamewing")

//happiestplane
/datum/loadout_item/mask/zoro
name = "Zoro Mask"
item_path = /obj/item/clothing/mask/zoro



25 changes: 25 additions & 0 deletions monkestation/code/modules/donator/code/datum/store_items.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
//bidlink

/datum/store_item/suit/cirno_outfit
name = "Cirno Outfit"
item_path = /obj/item/clothing/suit/costume/cirno
item_cost = 4000

/datum/store_item/head/cirno
name = "Cirno Wig"
item_path = /obj/item/clothing/head/costume/cirno
item_cost = 4000

//ttnt

/datum/store_item/head/pot
name = "Dented Pot"
item_path = /obj/item/clothing/head/costume/pot
item_cost = 4000

//happiestplane
/datum/store_item/mask/zoro
name = "Zoro Mask"
item_path = /obj/item/clothing/mask/zoro
item_cost = 4000

58 changes: 58 additions & 0 deletions monkestation/code/modules/donator/code/item/choice_beacon.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@

//Donator specific pet beacons
/obj/item/choice_beacon/pet/donator
var/mob/living/donator_pet = /mob/living/basic/axolotl

/obj/item/choice_beacon/pet/donator/generate_display_names()
var/static/list/pet_list
if(!pet_list)
pet_list = list()
var/list/selectable_pet = list(donator_pet)

for(var/mob/living/basic_mob as anything in selectable_pet)
pet_list[initial(basic_mob.name)] = basic_mob

return pet_list

/obj/item/choice_beacon/pet/donator/open_options_menu(mob/living/user)
var/input_name = stripped_input(user, "What would you like your new pet to be named?", "New Pet Name", default_name, MAX_NAME_LEN)
if (!input_name)
return
if(!can_use_beacon(user))
return
consume_use(donator_pet, user, input_name)

/obj/item/choice_beacon/pet/donator/spycrab
name = "Mann Co. Crustacean Deployment Apparatus"
default_name = "Spy Crab"
company_source = "Mann Co."
company_message = "Prepare for infiltrator deployment."
donator_pet = /mob/living/simple_animal/crab/spycrab

/obj/item/choice_beacon/pet/donator/void_mothroach
name = "Secret Beacon of the Stars"
default_name = "Moffles"
company_source = "*UNINTELLIGBLE BUZZING*"
company_message = "*LOUD MOFF NOISES*"
donator_pet = /mob/living/basic/mothroach/void

/obj/item/choice_beacon/pet/donator/void_mothroach
name = "Secret Beacon of the Stars"
default_name = "Moffles"
company_source = "*UNINTELLIGBLE BUZZING*"
company_message = "*LOUD MOFF NOISES*"
donator_pet = /mob/living/basic/mothroach/void

/obj/item/choice_beacon/pet/donator/blahaj
name = "Blahaj"
default_name = "Blahaj"
company_source = "IKEA"
company_message = "Please enjoy your new pet -- some assembly required."
donator_pet = /mob/living/basic/lizard/blahaj

/obj/item/choice_beacon/pet/donator/cirno
name = "Cirno"
default_name = "Cirno?"
company_source = "Touhou"
company_message = "Please handle with care!"
donator_pet = /mob/living/basic/lizard/cirno
34 changes: 34 additions & 0 deletions monkestation/code/modules/donator/code/item/clothing.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
/obj/item/clothing/suit/costume/cirno
name = "\improper Cirno's dress'"
desc = "A dress that is styled like Cirno's."
icon = 'monkestation/code/modules/donator/icons/obj/clothing.dmi'
worn_icon = 'monkestation/code/modules/donator/icons/mob/clothing.dmi'
icon_state = "cirno_dress"
inhand_icon_state = null
body_parts_covered = CHEST|GROIN

/obj/item/clothing/head/costume/cirno
name = "Cirno wig"
desc = "A wig that is styled like Cirno."
icon = 'monkestation/code/modules/donator/icons/obj/clothing.dmi'
worn_icon = 'monkestation/code/modules/donator/icons/mob/clothing.dmi'
icon_state = "cirno_hat"
inhand_icon_state = null
flags_inv = HIDEFACE|HIDEHAIR

/obj/item/clothing/head/costume/pot
name = "pot shaped hat"
desc = "You are literally just putting a pot on your head."
icon = 'monkestation/code/modules/donator/icons/obj/clothing.dmi'
worn_icon = 'monkestation/code/modules/donator/icons/mob/clothing.dmi'
icon_state = "pot"
inhand_icon_state = null

/obj/item/clothing/mask/zoro
name = "zoro mask"
desc = "A mask made to look like an old hero."
icon = 'monkestation/code/modules/donator/icons/obj/clothing.dmi'
worn_icon = 'monkestation/code/modules/donator/icons/mob/clothing.dmi'
icon_state = "zoro"
inhand_icon_state = null
flags_inv = HIDEFACE
Loading
Loading