mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-11 02:34:00 +00:00
Merge pull request #2206 from Yoshax/uplink
Improves/fixes surplus crates
This commit is contained in:
@@ -4,6 +4,7 @@
|
|||||||
/datum/uplink_item/item/ammo
|
/datum/uplink_item/item/ammo
|
||||||
item_cost = 20
|
item_cost = 20
|
||||||
category = /datum/uplink_category/ammunition
|
category = /datum/uplink_category/ammunition
|
||||||
|
blacklisted = 1
|
||||||
|
|
||||||
/datum/uplink_item/item/ammo/a357
|
/datum/uplink_item/item/ammo/a357
|
||||||
name = ".357 Speedloader"
|
name = ".357 Speedloader"
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
*****************/
|
*****************/
|
||||||
/datum/uplink_item/abstract/announcements
|
/datum/uplink_item/abstract/announcements
|
||||||
category = /datum/uplink_category/services
|
category = /datum/uplink_category/services
|
||||||
|
blacklisted = 1
|
||||||
|
|
||||||
/datum/uplink_item/abstract/announcements/buy(var/obj/item/device/uplink/U, var/mob/user)
|
/datum/uplink_item/abstract/announcements/buy(var/obj/item/device/uplink/U, var/mob/user)
|
||||||
. = ..()
|
. = ..()
|
||||||
|
|||||||
@@ -19,6 +19,7 @@
|
|||||||
/datum/uplink_item/item/badassery/random_one
|
/datum/uplink_item/item/badassery/random_one
|
||||||
name = "Random Item"
|
name = "Random Item"
|
||||||
desc = "Buys you one random item."
|
desc = "Buys you one random item."
|
||||||
|
blacklisted = 1
|
||||||
|
|
||||||
/datum/uplink_item/item/badassery/random_one/buy(var/obj/item/device/uplink/U, var/mob/user)
|
/datum/uplink_item/item/badassery/random_one/buy(var/obj/item/device/uplink/U, var/mob/user)
|
||||||
var/datum/uplink_item/item = default_uplink_selection.get_random_item(U.uses)
|
var/datum/uplink_item/item = default_uplink_selection.get_random_item(U.uses)
|
||||||
@@ -78,7 +79,7 @@
|
|||||||
|
|
||||||
/datum/uplink_item/item/badassery/surplus/get_goods(var/obj/item/device/uplink/U, var/loc)
|
/datum/uplink_item/item/badassery/surplus/get_goods(var/obj/item/device/uplink/U, var/loc)
|
||||||
var/obj/structure/largecrate/C = new(loc)
|
var/obj/structure/largecrate/C = new(loc)
|
||||||
var/random_items = get_random_uplink_items(null, item_worth, C)
|
var/random_items = get_surplus_items(null, item_worth, C)
|
||||||
for(var/datum/uplink_item/I in random_items)
|
for(var/datum/uplink_item/I in random_items)
|
||||||
I.purchase_log(U)
|
I.purchase_log(U)
|
||||||
I.get_goods(U, C)
|
I.get_goods(U, C)
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ var/datum/uplink/uplink = new()
|
|||||||
var/item_cost = 0
|
var/item_cost = 0
|
||||||
var/datum/uplink_category/category // Item category
|
var/datum/uplink_category/category // Item category
|
||||||
var/list/datum/antagonist/antag_roles // Antag roles this item is displayed to. If empty, display to all.
|
var/list/datum/antagonist/antag_roles // Antag roles this item is displayed to. If empty, display to all.
|
||||||
|
var/blacklisted = 0
|
||||||
|
|
||||||
/datum/uplink_item/item
|
/datum/uplink_item/item
|
||||||
var/path = null
|
var/path = null
|
||||||
@@ -172,3 +173,15 @@ datum/uplink_item/dd_SortValue()
|
|||||||
remaining_TC -= I.cost(remaining_TC, U)
|
remaining_TC -= I.cost(remaining_TC, U)
|
||||||
|
|
||||||
return bought_items
|
return bought_items
|
||||||
|
|
||||||
|
/proc/get_surplus_items(var/obj/item/device/uplink/U, var/remaining_TC, var/loc)
|
||||||
|
var/list/bought_items = list()
|
||||||
|
var/override = 1
|
||||||
|
while(remaining_TC)
|
||||||
|
var/datum/uplink_item/I = all_uplink_selection.get_random_item(remaining_TC, U, bought_items, override)
|
||||||
|
if(!I)
|
||||||
|
break
|
||||||
|
bought_items += I
|
||||||
|
remaining_TC -= I.cost(remaining_TC, U)
|
||||||
|
|
||||||
|
return bought_items
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
var/datum/uplink_random_selection/default_uplink_selection = new/datum/uplink_random_selection/default()
|
var/datum/uplink_random_selection/default_uplink_selection = new/datum/uplink_random_selection/default()
|
||||||
|
var/datum/uplink_random_selection/all_uplink_selection = new/datum/uplink_random_selection/all()
|
||||||
|
|
||||||
/datum/uplink_random_item
|
/datum/uplink_random_item
|
||||||
var/uplink_item // The uplink item
|
var/uplink_item // The uplink item
|
||||||
@@ -14,16 +15,22 @@ var/datum/uplink_random_selection/default_uplink_selection = new/datum/uplink_ra
|
|||||||
|
|
||||||
/datum/uplink_random_selection
|
/datum/uplink_random_selection
|
||||||
var/list/datum/uplink_random_item/items
|
var/list/datum/uplink_random_item/items
|
||||||
|
var/list/datum/uplink_random_item/all_items
|
||||||
|
|
||||||
/datum/uplink_random_selection/New()
|
/datum/uplink_random_selection/New()
|
||||||
..()
|
..()
|
||||||
items = list()
|
items = list()
|
||||||
|
all_items = list()
|
||||||
|
|
||||||
/datum/uplink_random_selection/proc/get_random_item(var/telecrystals, obj/item/device/uplink/U, var/list/bought_items)
|
/datum/uplink_random_selection/proc/get_random_item(var/telecrystals, obj/item/device/uplink/U, var/list/bought_items, var/items_override = 0)
|
||||||
var/const/attempts = 50
|
var/const/attempts = 50
|
||||||
|
|
||||||
for(var/i = 0; i < attempts; i++)
|
for(var/i = 0; i < attempts; i++)
|
||||||
var/datum/uplink_random_item/RI = pick(items)
|
var/datum/uplink_random_item/RI
|
||||||
|
if(items_override)
|
||||||
|
RI = pick(all_items)
|
||||||
|
else
|
||||||
|
RI = pick(items)
|
||||||
if(!prob(RI.keep_probability))
|
if(!prob(RI.keep_probability))
|
||||||
continue
|
continue
|
||||||
var/datum/uplink_item/I = uplink.items_assoc[RI.uplink_item]
|
var/datum/uplink_item/I = uplink.items_assoc[RI.uplink_item]
|
||||||
@@ -35,6 +42,14 @@ var/datum/uplink_random_selection/default_uplink_selection = new/datum/uplink_ra
|
|||||||
continue
|
continue
|
||||||
return I
|
return I
|
||||||
|
|
||||||
|
/datum/uplink_random_selection/all/New()
|
||||||
|
..()
|
||||||
|
for(var/datum/uplink_item/item in uplink.items)
|
||||||
|
if(item.blacklisted)
|
||||||
|
continue
|
||||||
|
else
|
||||||
|
all_items += new/datum/uplink_random_item(item.type)
|
||||||
|
|
||||||
/datum/uplink_random_selection/default/New()
|
/datum/uplink_random_selection/default/New()
|
||||||
..()
|
..()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user