mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-20 19:44:09 +01:00
Holoparasites are now discountable (#25943)
* Discount the parasite! * Fix testing values * More testing values gone * Carp scroll not discountable again
This commit is contained in:
@@ -30,13 +30,11 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
|
||||
var/datum/uplink_item/A = new I.type
|
||||
var/discount = 0.5
|
||||
A.limited_stock = 1
|
||||
I.refundable = FALSE
|
||||
A.refundable = FALSE
|
||||
if(A.cost >= 100)
|
||||
discount *= 0.5 // If the item costs 100TC or more, it's only 25% off.
|
||||
A.cost = max(round(A.cost * (1-discount)),1)
|
||||
A.cost = max(round(A.cost * (1 - discount)), 1)
|
||||
A.category = "Discounted Gear"
|
||||
A.name += " ([round(((initial(A.cost)-A.cost)/initial(A.cost))*100)]% off!)"
|
||||
A.name += " ([round(((initial(A.cost) - A.cost) / initial(A.cost)) * 100)]% off!)"
|
||||
A.job = null // If you get a job specific item selected, actually lets you buy it in the discount section
|
||||
A.species = null //same as above for species speific items
|
||||
A.reference = "DIS[newreference]"
|
||||
@@ -106,6 +104,8 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
|
||||
if(item && !uses_special_spawn)
|
||||
return new item(loc)
|
||||
|
||||
if(limited_stock)
|
||||
limited_stock -= 1 // In case we are handling discount items differently
|
||||
return UPLINK_SPECIAL_SPAWNING
|
||||
|
||||
/datum/uplink_item/proc/description()
|
||||
|
||||
@@ -424,13 +424,19 @@
|
||||
reference = "HPA"
|
||||
desc = "Though capable of near sorcerous feats via use of hardlight holograms and nanomachines, they require an organic host as a home base and source of fuel. \
|
||||
The holoparasites are unable to incoporate themselves to changeling and vampire agents."
|
||||
item = /obj/item/storage/box/syndie_kit/guardian
|
||||
item = /obj/item/storage/box/syndie_kit/guardian/uplink
|
||||
excludefrom = list(UPLINK_TYPE_NUCLEAR, UPLINK_TYPE_SST)
|
||||
cost = 60
|
||||
refund_path = /obj/item/guardiancreator/tech/choose
|
||||
refundable = TRUE
|
||||
surplus = 0 // This being refundable makes this a big no no in my mind.
|
||||
can_discount = FALSE
|
||||
uses_special_spawn = TRUE
|
||||
|
||||
/datum/uplink_item/dangerous/guardian/spawn_item(turf/loc, obj/item/uplink/U)
|
||||
if(..() != UPLINK_SPECIAL_SPAWNING)
|
||||
return FALSE
|
||||
|
||||
new /obj/item/storage/box/syndie_kit/guardian/uplink(loc, cost)
|
||||
|
||||
/datum/uplink_item/stealthy_weapons/martialarts
|
||||
name = "Martial Arts Scroll"
|
||||
|
||||
@@ -412,6 +412,10 @@
|
||||
"Lilac" = "#C7A0F6",
|
||||
"Orchid" = "#F62CF5")
|
||||
name_list = list("Gallium", "Indium", "Thallium", "Bismuth", "Aluminium", "Mercury", "Iron", "Silver", "Zinc", "Titanium", "Chromium", "Nickel", "Platinum", "Tellurium", "Palladium", "Rhodium", "Cobalt", "Osmium", "Tungsten", "Iridium")
|
||||
/// How much do we refund this for?
|
||||
var/refund_cost = 0
|
||||
/// Is this discounted?
|
||||
var/is_discounted = FALSE
|
||||
|
||||
/obj/item/guardiancreator/tech/create_theme(mob/living/simple_animal/hostile/guardian/G, mob/living/user, picked_name, color)
|
||||
G.name = "[picked_name] [color]"
|
||||
@@ -500,3 +504,16 @@
|
||||
/obj/item/storage/box/syndie_kit/guardian/populate_contents()
|
||||
new /obj/item/guardiancreator/tech/choose(src)
|
||||
new /obj/item/paper/guardian(src)
|
||||
|
||||
/obj/item/storage/box/syndie_kit/guardian/uplink
|
||||
var/holopara_cost = 60
|
||||
|
||||
/obj/item/storage/box/syndie_kit/guardian/uplink/Initialize(mapload, new_cost)
|
||||
. = ..()
|
||||
var/obj/item/guardiancreator/tech/choose/holopara = new(src)
|
||||
if(holopara_cost != new_cost)
|
||||
holopara.is_discounted = TRUE
|
||||
holopara.refund_cost = new_cost
|
||||
|
||||
/obj/item/storage/box/syndie_kit/guardian/uplink/populate_contents()
|
||||
new /obj/item/paper/guardian(src)
|
||||
|
||||
@@ -129,20 +129,31 @@ GLOBAL_LIST_EMPTY(world_uplinks)
|
||||
|
||||
/obj/item/uplink/proc/refund(mob/user as mob)
|
||||
var/obj/item/I = user.get_active_hand()
|
||||
if(I) // Make sure there's actually something in the hand before even bothering to check
|
||||
for(var/category in uplink_items)
|
||||
for(var/item in uplink_items[category])
|
||||
var/datum/uplink_item/UI = item
|
||||
var/path = UI.refund_path || UI.item
|
||||
var/cost = UI.refund_amount || UI.cost
|
||||
if(I.type == path && UI.refundable && I.check_uplink_validity())
|
||||
uses += cost
|
||||
used_TC -= cost
|
||||
to_chat(user, "<span class='notice'>[I] refunded.</span>")
|
||||
qdel(I)
|
||||
return
|
||||
// If we are here, we didnt refund
|
||||
if(!I) // Make sure there's actually something in the hand before even bothering to check
|
||||
to_chat(user, "<span class='warning'>[I] is not refundable.</span>")
|
||||
return
|
||||
|
||||
for(var/category in uplink_items)
|
||||
for(var/item in uplink_items[category])
|
||||
var/datum/uplink_item/UI = item
|
||||
var/path = UI.refund_path || UI.item
|
||||
var/cost = UI.refund_amount || UI.cost
|
||||
|
||||
if(ispath(I.type, path) && UI.refundable && I.check_uplink_validity())
|
||||
var/refund_amount = cost
|
||||
if(istype(I, /obj/item/guardiancreator/tech))
|
||||
var/obj/item/guardiancreator/tech/holopara = I
|
||||
if(holopara.is_discounted && cost != holopara.refund_cost) // This has to be done because the normal holopara uplink datum precedes the discounted uplink datum
|
||||
continue
|
||||
refund_amount = holopara.refund_cost
|
||||
uses += refund_amount
|
||||
used_TC -= refund_amount
|
||||
to_chat(user, "<span class='notice'>[I] refunded.</span>")
|
||||
qdel(I)
|
||||
return
|
||||
|
||||
// If we are here, we didnt refund
|
||||
to_chat(user, "<span class='warning'>[I] is not refundable.</span>")
|
||||
|
||||
// HIDDEN UPLINK - Can be stored in anything but the host item has to have a trigger for it.
|
||||
/* How to create an uplink in 3 easy steps!
|
||||
|
||||
Reference in New Issue
Block a user