diff --git a/code/game/objects/random/maintenance.dm b/code/game/objects/random/maintenance.dm index 56366d7cdd9..25f70920591 100644 --- a/code/game/objects/random/maintenance.dm +++ b/code/game/objects/random/maintenance.dm @@ -112,7 +112,8 @@ something, make sure it's not in one of the other lists.*/ prob(2);/obj/item/toy/tennis/blue, prob(2);/obj/item/toy/tennis/purple, prob(1);/obj/item/toy/baseball, - prob(1);/obj/item/pizzavoucher + prob(1);/obj/item/pizzavoucher, + prob(2);/obj/item/weapon/cracker /* VOREStation Edit End */ ) diff --git a/code/game/objects/random/misc.dm b/code/game/objects/random/misc.dm index 3f0f80593ca..a02ac5de5a1 100644 --- a/code/game/objects/random/misc.dm +++ b/code/game/objects/random/misc.dm @@ -1132,5 +1132,13 @@ prob(8);/obj/item/capture_crystal/random, prob(10);/obj/item/weapon/bluespace_harpoon, prob(10);/obj/item/weapon/bluespace_crystal, - prob(1);/obj/item/clothing/glasses/graviton + prob(1);/obj/item/clothing/glasses/graviton, + prob(10);/obj/item/weapon/cracker, + prob(1);/obj/item/weapon/cracker/shrinking, + prob(1);/obj/item/weapon/cracker/growing, + prob(1);/obj/item/weapon/cracker/invisibility, + prob(1);/obj/item/weapon/cracker/drugged, + prob(1);/obj/item/weapon/cracker/knockover, + prob(1);/obj/item/weapon/cracker/vore, + prob(1);/obj/item/weapon/cracker/money ) \ No newline at end of file diff --git a/code/game/objects/structures/trash_pile_vr.dm b/code/game/objects/structures/trash_pile_vr.dm index 4fcfc0619a7..535b0198a86 100644 --- a/code/game/objects/structures/trash_pile_vr.dm +++ b/code/game/objects/structures/trash_pile_vr.dm @@ -281,6 +281,7 @@ prob(4);/obj/item/weapon/gun/energy/sizegun, prob(4);/obj/item/device/slow_sizegun, prob(4);/obj/item/clothing/accessory/collar/shock/bluespace, + prob(3);/obj/item/weapon/cracker, prob(3);/obj/item/weapon/material/butterfly, prob(3);/obj/item/weapon/material/butterfly/switchblade, prob(3);/obj/item/clothing/gloves/knuckledusters, @@ -313,7 +314,8 @@ prob(1);/obj/item/device/perfect_tele/one_beacon, prob(1);/obj/item/clothing/gloves/bluespace, prob(1);/obj/item/weapon/gun/energy/mouseray, - prob(1);/obj/item/clothing/accessory/collar/shock/bluespace/modified) + prob(1);/obj/item/clothing/accessory/collar/shock/bluespace/modified, + prob(1);/obj/item/weapon/gun/energy/sizegun/backfire) var/obj/item/I = new path() return I diff --git a/code/modules/vore/resizing/crackers.dm b/code/modules/vore/resizing/crackers.dm new file mode 100644 index 00000000000..b88a87cb2a7 --- /dev/null +++ b/code/modules/vore/resizing/crackers.dm @@ -0,0 +1,177 @@ +//A bluespace cracker item that can be pulled between two characters. +//The winner of the pull has an effect applied to them. +//Crackers do already exist, but these ones are a more memey scene item. + +/obj/item/weapon/cracker + name = "bluespace cracker" //I have no idea why this was called shrink ray when this increased and decreased size. + desc = "A celebratory little game with a bluespace twist! Pull it between two people until it snaps, and the person who recieves the larger end gets a prize!" + icon = 'icons/obj/crackers.dmi' + icon_state = "blue" + item_icons = list( + slot_l_hand_str = 'icons/mob/items/lefthand_cracker.dmi', + slot_r_hand_str = 'icons/mob/items/righthand_cracker.dmi', + ) + item_state = "blue" + var/rigged = 0 //So that they can be rigged by varedits to go one way or the other. positive values mean holder always wins, negative values mean target always wins. + var/list/prizes = list("shrinking","growing","drugged","invisibility","knocked over","teleport","wealth") + var/list/jokes = list( + "When is a boat just like snow? When it’s adrift.", + "What happens to naughty elves? Santa gives them the sack.", + "What do you call an old snowman? Water.", + "Why has Santa been banned from sooty chimneys? Carbon footprints.", + "What goes down but doesn't come up? A yo.", + "What's green and fuzzy, has four legs and would kill you if it fell from a tree? A pool table.", + "Why did the blind man fall into the well? Because he couldn't see that well.", + "What did the pirate get on his report card? Seven Cs", + "What do you call a fish with no eyes? Fsh", + "How do you make an egg roll? You push it.", + "What do you call a deer with no eyes? NO EYED DEER!", + "What's red, and smells like blue paint? Red paint.", + "Where do cows go to dance? A meat ball.", + "What do you call a person who steals all your toenail clippings? A cliptoemaniac.", + "What’s brown and sticky? A stick.", + "What's the best way to kill a circus? Go for the juggler.", + "What do you call a cow with no legs? Ground Beef.", + "Why'd the scarecrow win the Nobel prize? He was outstanding in his field.") + +/obj/item/weapon/cracker/attack(atom/A, mob/living/user, adjacent, params) + var/mob/living/carbon/human/target = A + if(!istype(target)) + return + if(target.stat) + return + if(target == user) + to_chat(user, "You can't pull \the [src] by yourself, that would just be sad!") + return + var/check_pull = tgui_alert(target, "\The [user] is offering to pull \the [src] with you, do you want to pull it?", "Pull Cracker", list("Yes", "No")) + if(check_pull == "No") + to_chat(user, "\The [target] chose not to pull \the [src]!") + return + if(!adjacent) + to_chat(user, "\The [target] is not standing close enough to pull \the [src]!") + return + var/prize = pick(prizes) + var/joke = pick(jokes) + var/mob/living/carbon/human/winner + var/mob/living/carbon/human/loser + if(!rigged) + if(prob(50)) + winner = user + loser = target + else + winner = target + loser = user + else + if(rigged > 0) + winner = user + loser = target + else + winner = target + loser = user + + var/spawnloc = get_turf(winner) + + winner.visible_message("\The [winner] wins the cracker prize!","You win the cracker prize!") + if(prize == "shrinking") + winner.resize(0.25) + winner.visible_message("\The [winner] shrinks suddenly!") + if(prize == "growing") + winner.resize(2) + winner.visible_message("\The [winner] grows in height suddenly.") + if(prize == "drugged") + winner.druggy = max(winner.druggy, 50) + if(prize == "invisibility") + if(!winner.cloaked) + winner.visible_message("\The [winner] vanishes from sight.") + winner.cloak() + spawn(600) + if(winner.cloaked) + winner.uncloak() + winner.visible_message("\The [winner] appears as if from thin air.") + if(prize == "knocked over") + winner.visible_message("\The [winner] is suddenly knocked to the ground.") + winner.weakened = max(winner.weakened,50) + if(prize == "teleport") + if(loser.can_be_drop_pred && loser.vore_selected) + if(winner.devourable && winner.can_be_drop_prey) + winner.visible_message("\The [winner] is teleported to somewhere nearby...") + var/datum/effect/effect/system/spark_spread/spk + spk = new(winner) + + var/T = get_turf(winner) + spk.set_up(5, 0, winner) + spk.attach(winner) + playsound(T, "sparks", 50, 1) + anim(T,winner,'icons/mob/mob.dmi',,"phaseout",,winner.dir) + winner.forceMove(loser.vore_selected) + if(prize == "wealth") + new /obj/random/cash/huge(spawnloc) + new /obj/random/cash/huge(spawnloc) + winner.visible_message("\The [winner] has a whole load of cash fall at their feet!") + + playsound(user, 'sound/effects/snap.ogg', 50, 1) + user.drop_item(src) + new /obj/random/toy(spawnloc) + new /obj/item/clothing/head/paper_crown(spawnloc) + var/obj/item/weapon/paper/cracker_joke/J = new(spawnloc) + J.info = joke + qdel(src) + +/obj/item/weapon/cracker/Initialize() + var/list/styles = list("blue","green","yellow","red","heart","hazard") + var/style = pick(styles) + icon_state = style + item_state = style + ..() + +/obj/item/weapon/cracker/shrinking + name = "shrinking bluespace cracker" + prizes = list("shrinking") + +/obj/item/weapon/cracker/growing + name = "growing bluespace cracker" + prizes = list("growing") + +/obj/item/weapon/cracker/invisibility + name = "cloaking bluespace cracker" + prizes = list("invisibility") + +/obj/item/weapon/cracker/drugged + name = "psychedelic bluespace cracker" + prizes = list("drugged") + +/obj/item/weapon/cracker/knockover + name = "forceful bluespace cracker" + prizes = list("knocked over") + +/obj/item/weapon/cracker/vore + name = "teleporting bluespace cracker" + prizes = list("teleport") + +/obj/item/weapon/cracker/money + name = "fortuitous bluespace cracker" + prizes = list("wealth") + +/obj/item/clothing/head/paper_crown + name = "paper crown" + icon_state = "paper_crown_blue" + item_state = "paper_crown_blue" + item_icons = list(slot_head_str = 'icons/inventory/head/mob.dmi') + desc = "A paper crown so thin that you can see through it." + flags_inv = 0 + body_parts_covered = 0 + armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) + +/obj/item/clothing/head/paper_crown/Initialize() + var/list/styles = list("paper_crown_blue","paper_crown_green","paper_crown_yellow","paper_crown_red","paper_crown_pink") + var/style = pick(styles) + icon_state = style + item_state = style + ..() + +/obj/item/weapon/paper/cracker_joke + name = "joke" + icon_state = "joke" + +/obj/item/weapon/paper/cracker_joke/update_icon() + return diff --git a/icons/inventory/head/item.dmi b/icons/inventory/head/item.dmi index 538c3a57ee2..7897ed22072 100644 Binary files a/icons/inventory/head/item.dmi and b/icons/inventory/head/item.dmi differ diff --git a/icons/inventory/head/mob.dmi b/icons/inventory/head/mob.dmi index 635188fbada..8f7e232b3d2 100644 Binary files a/icons/inventory/head/mob.dmi and b/icons/inventory/head/mob.dmi differ diff --git a/icons/mob/items/lefthand_cracker.dmi b/icons/mob/items/lefthand_cracker.dmi new file mode 100644 index 00000000000..6e2d5776fce Binary files /dev/null and b/icons/mob/items/lefthand_cracker.dmi differ diff --git a/icons/mob/items/righthand_cracker.dmi b/icons/mob/items/righthand_cracker.dmi new file mode 100644 index 00000000000..0818ed3ebc6 Binary files /dev/null and b/icons/mob/items/righthand_cracker.dmi differ diff --git a/icons/obj/bureaucracy.dmi b/icons/obj/bureaucracy.dmi index 5c0531f5b7d..61365297d24 100644 Binary files a/icons/obj/bureaucracy.dmi and b/icons/obj/bureaucracy.dmi differ diff --git a/icons/obj/crackers.dmi b/icons/obj/crackers.dmi new file mode 100644 index 00000000000..ac657f46f92 Binary files /dev/null and b/icons/obj/crackers.dmi differ diff --git a/vorestation.dme b/vorestation.dme index cd19d2ec9ea..0c8fdc28ee4 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -4190,6 +4190,7 @@ #include "code\modules\vore\fluffstuff\custom_mecha_vr.dm" #include "code\modules\vore\fluffstuff\custom_permits_vr.dm" #include "code\modules\vore\persist\persist_vr.dm" +#include "code\modules\vore\resizing\crackers.dm" #include "code\modules\vore\resizing\grav_pull_vr.dm" #include "code\modules\vore\resizing\holder_micro_vr.dm" #include "code\modules\vore\resizing\holder_vr.dm"