From c3cb4d5e997e0fae06c69949ddfa8cb7beba5c95 Mon Sep 17 00:00:00 2001 From: VerySoft Date: Sat, 26 Feb 2022 01:57:50 -0500 Subject: [PATCH 1/4] Trader tweak delete empty money, and only say they returned something if they actually returned something. --- code/modules/economy/trader.dm | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/code/modules/economy/trader.dm b/code/modules/economy/trader.dm index dc179523759..0b8840f230e 100644 --- a/code/modules/economy/trader.dm +++ b/code/modules/economy/trader.dm @@ -127,7 +127,6 @@ to_chat(user, "You aren't close enough.") trading = FALSE return - visible_message("\The [src] drops the banked [welcome_accepts_name].") return_funds() else to_chat(user, "You decided leave your change banked.") @@ -199,6 +198,9 @@ var/obj/item/weapon/spacecash/a = c a.worth -= amount a.update_icon() + if(a.worth <= 0) + bank -= a + qdel(a) if("item") var/v = amount while(v > 0) @@ -209,8 +211,11 @@ v -= accepted_item_worth /obj/trader/proc/return_funds() + var/u_get_refund = FALSE switch(accepts) if("coin") + if(coinbalance) + u_get_refund = TRUE while(coinbalance > 0) if(coinbalance >= 20) new /obj/item/weapon/aliencoin/phoron(get_turf(loc)) @@ -226,12 +231,18 @@ coinbalance -- if("money") for(var/obj/c in bank) + u_get_refund = TRUE c.forceMove(get_turf(loc)) bank -= c if("item") for(var/obj/c in bank) + u_get_refund = TRUE c.forceMove(get_turf(loc)) bank -= c + if(u_get_refund) + visible_message("\The [src] drops the banked [welcome_accepts_name].") + else + visible_message("\The [src] doesn't have anything banked for you.") /obj/trader/capture_crystal name = "curious trader" From 8ac1694aaf8ba48e723728f73a136d6c0785aa9a Mon Sep 17 00:00:00 2001 From: VerySoft Date: Sat, 26 Feb 2022 03:54:24 -0500 Subject: [PATCH 2/4] The tweakening --- code/modules/economy/trader.dm | 26 ++++++++++++++++++++++++++ icons/obj/landmark_vr.dmi | Bin 0 -> 798 bytes 2 files changed, 26 insertions(+) create mode 100644 icons/obj/landmark_vr.dmi diff --git a/code/modules/economy/trader.dm b/code/modules/economy/trader.dm index 0b8840f230e..4bac0dfbfd7 100644 --- a/code/modules/economy/trader.dm +++ b/code/modules/economy/trader.dm @@ -24,6 +24,7 @@ var/sound_lastplayed = 0 //Automatically set when the sound is played. var/pick_inventory = FALSE //If true, when initialized the trader will randomly pick things from its start products list to set up var/pick_inventory_quantity = 0 //This is how many things will be picked if pick_inventory is TRUE + var/move_trader = FALSE /obj/trader/Initialize(mapload) . = ..() @@ -39,6 +40,8 @@ var/obj/p = new item(src) products += p start_products -= item + if(move_trader) + move_trader() /obj/trader/Destroy() . = ..() @@ -244,6 +247,29 @@ else visible_message("\The [src] doesn't have anything banked for you.") +/obj/trader/proc/move_trader() + var/list/pt = list() + for(var/obj/move_trader_landmark/t in world) + if(t.trader_type == type) + pt += t + if(pt.len > 0) + var/obj/dt = pick(pt) + forceMove(get_turf(dt)) + dir = dt.dir + else + log_and_message_admins("tried to move itself but its target pick list was empty, so it was not moved. (JMP)") + +/obj/move_trader_landmark //You need to place the trader somewhere in the world and enable the 'move_trader' var. When the trader initializes, it will make a list of these landmarks and then move itself. + name = "trader spawner" + desc = "Spawns a trader!" + icon = 'icons/obj/landmark_vr.dmi' + icon_state = "blue-x" + invisibility = 101 + mouse_opacity = 0 + density = 0 + anchored = 1 + var/trader_type //The type path for the trader you want to be able to land here. + /obj/trader/capture_crystal name = "curious trader" desc = "A tall metal cylander on a squarish base. It looks almost like a vending machine, but there's nowhere to swipe your card. It appears to accept some kind of triangle currency..." diff --git a/icons/obj/landmark_vr.dmi b/icons/obj/landmark_vr.dmi new file mode 100644 index 0000000000000000000000000000000000000000..709bcfcfde5cbc1c54032bb6186690313b597a44 GIT binary patch literal 798 zcmV+(1L6FMP)fFDZ*Bkpc$`yKaB_9`^iy#0_2eo`Eh^5;&r`5fFwryM;w;ZhDainGjE%TB zGg33tGfE(w;*!LYR3K9+DW^15w?c`FGbOXA7^I7fGp#5wHxaP4-_h~=4ZQM=N_pmASOowyya#0v!&V+0o z6uOFfTTNnLs&hZ)$Uet#J$$5B(16bk53F?`U*mwPjB3KOik+)r2m);g1Y;{tICqYtl00~CC4g@J93U^oIs$(;B%ra#8#uW2He#ftO0G_(-wwV&vs5 z%bAutZy?z)9K1z&OET~w5NZ0ne==5tLhJ~5a0&1s!$)HoOd>(=4|hmS^pM8H{U#LV zbOFWSO2L$8KLk^*;lC_7#L^%pL`EA%BJw{VTp;p4piM6n Date: Sat, 26 Feb 2022 03:59:13 -0500 Subject: [PATCH 3/4] This one too! --- code/modules/economy/trader.dm | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/code/modules/economy/trader.dm b/code/modules/economy/trader.dm index 4bac0dfbfd7..6fce85ecf9b 100644 --- a/code/modules/economy/trader.dm +++ b/code/modules/economy/trader.dm @@ -335,7 +335,8 @@ /obj/item/device/denecrotizer = 10, /obj/item/clothing/shoes/boots/speed = 15, /obj/item/weapon/bluespace_harpoon = 20, - /obj/item/weapon/telecube/randomized = 5 + /obj/item/weapon/telecube/randomized = 5, + /obj/item/device/bodysnatcher = 20 ) prices = list( /obj/item/capture_crystal/basic = 6, @@ -354,7 +355,8 @@ /obj/item/device/denecrotizer = 20, /obj/item/clothing/shoes/boots/speed = 20, /obj/item/weapon/bluespace_harpoon = 20, - /obj/item/weapon/telecube/randomized = 50 + /obj/item/weapon/telecube/randomized = 50, + /obj/item/device/bodysnatcher = 20 ) multiple = list( /obj/item/capture_crystal/basic = 10, From 6a08aed66e4c6721565165afa7615daf1d10490d Mon Sep 17 00:00:00 2001 From: VerySoft Date: Sat, 26 Feb 2022 04:28:26 -0500 Subject: [PATCH 4/4] These too --- code/modules/economy/trader.dm | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/code/modules/economy/trader.dm b/code/modules/economy/trader.dm index 6fce85ecf9b..b95fcfa6bbd 100644 --- a/code/modules/economy/trader.dm +++ b/code/modules/economy/trader.dm @@ -336,7 +336,12 @@ /obj/item/clothing/shoes/boots/speed = 15, /obj/item/weapon/bluespace_harpoon = 20, /obj/item/weapon/telecube/randomized = 5, - /obj/item/device/bodysnatcher = 20 + /obj/item/device/bodysnatcher = 20, + /obj/item/device/survivalcapsule = 25, + /obj/item/device/survivalcapsule/luxury = 20, + /obj/item/device/survivalcapsule/luxurybar = 15, + /obj/item/device/survivalcapsule/popcabin = 20, + /obj/item/device/survivalcapsule/escapepod = 5 ) prices = list( /obj/item/capture_crystal/basic = 6, @@ -356,7 +361,12 @@ /obj/item/clothing/shoes/boots/speed = 20, /obj/item/weapon/bluespace_harpoon = 20, /obj/item/weapon/telecube/randomized = 50, - /obj/item/device/bodysnatcher = 20 + /obj/item/device/bodysnatcher = 20, + /obj/item/device/survivalcapsule = 10, + /obj/item/device/survivalcapsule/luxury = 20, + /obj/item/device/survivalcapsule/luxurybar = 25, + /obj/item/device/survivalcapsule/popcabin = 10, + /obj/item/device/survivalcapsule/escapepod = 30 ) multiple = list( /obj/item/capture_crystal/basic = 10,