diff --git a/code/game/objects/items/toys/mech_toys.dm b/code/game/objects/items/toys/mech_toys.dm index a8dd875f30..3fdb9c6659 100644 --- a/code/game/objects/items/toys/mech_toys.dm +++ b/code/game/objects/items/toys/mech_toys.dm @@ -2,7 +2,7 @@ * Mech toys (previously labeled prizes, but that's unintuitive) * Mech toy combat */ - + // Mech battle special attack types. #define SPECIAL_ATTACK_HEAL 1 #define SPECIAL_ATTACK_DAMAGE 2 @@ -17,7 +17,7 @@ icon_state = "ripleytoy" drop_sound = 'sound/mecha/mechstep.ogg' reach = 2 // So you can battle across the table! - + // Mech Battle Vars var/timer = 0 // Timer when it'll be off cooldown var/cooldown = 1.5 SECONDS // Cooldown between play sessions (and interactions) @@ -34,7 +34,7 @@ var/special_attack_cooldown = 0 // Current cooldown of their special attack var/wins = 0 // This mech's win count in combat var/losses = 0 // ...And their loss count in combat - + /obj/item/toy/mecha/Initialize() . = ..() desc = "Mini-Mecha action figure! Collect them all! Attack your friends or another mech with one to initiate epic mech combat! [desc]." @@ -58,7 +58,7 @@ return 0 //not in range and not telekinetic /** - * this proc combines "sleep" while also checking for if the battle should continue + * this proc combines "sleep" while also checking for if the battle should continue * * this goes through some of the checks - the toys need to be next to each other to fight! * if it's player vs themself: They need to be able to "control" both mechs (either must be adjacent or using TK). @@ -112,7 +112,7 @@ // If all that is good, then we can sleep peacefully. sleep(delay) return TRUE - + //all credit to skasi for toy mech fun ideas /obj/item/toy/mecha/attack_self(mob/user) if(timer < world.time) @@ -130,15 +130,15 @@ attack_self(user) /** - * If you attack a mech with a mech, initiate combat between them + * If you attack a mech with a mech, initiate combat between them */ /obj/item/toy/mecha/attackby(obj/item/user_toy, mob/living/user) - if(istype(user_toy, /obj/item/toy/mecha)) + if(istype(user_toy, /obj/item/toy/mecha)) var/obj/item/toy/mecha/M = user_toy if(check_battle_start(user, M)) mecha_brawl(M, user) ..() - + /** * Attack is called from the user's toy, aimed at target(another human), checking for target's toy. */ @@ -241,9 +241,9 @@ sleep(1 SECONDS) //--THE BATTLE BEGINS-- - while(combat_health > 0 && attacker.combat_health > 0 && battle_length < MAX_BATTLE_LENGTH) + while(combat_health > 0 && attacker.combat_health > 0 && battle_length < MAX_BATTLE_LENGTH) if(!combat_sleep(0.5 SECONDS, attacker, attacker_controller, opponent)) //combat_sleep checks everything we need to have checked for combat to continue - break + break //before we do anything - deal with charged attacks if(special_attack_charged) @@ -269,7 +269,7 @@ attacker.special_attack_charged = TRUE attacker_controller.visible_message(" [attacker] begins charging its special attack!! ", \ " You begin charging [attacker]'s special attack! ") - else //just attack + else //just attack attacker.SpinAnimation(5, 0) playsound(attacker, 'sound/mecha/mechstep.ogg', 30, TRUE) combat_health-- @@ -322,7 +322,7 @@ special_attack_charged = TRUE src_controller.visible_message(" [src] begins charging its special attack!! ", \ " You begin charging [src]'s special attack! ") - else //just attack + else //just attack SpinAnimation(5, 0) playsound(src, 'sound/mecha/mechstep.ogg', 30, TRUE) attacker.combat_health-- @@ -333,12 +333,12 @@ attacker.combat_health-- playsound(attacker, 'sound/effects/meteorimpact.ogg', 20, TRUE) src_controller.visible_message(" ...and lands a CRIPPLING BLOW! ", \ - " ...and you land a CRIPPLING blow on [attacker]! ", null) + " ...and you land a CRIPPLING blow on [attacker]! ", null) else attacker_controller.visible_message(" [src] and [attacker] stand around awkwardly.", \ - " You don't know what to do next.") + " You don't know what to do next.") - battle_length++ + battle_length++ sleep(0.5 SECONDS) /// Lines chosen for the winning mech @@ -347,7 +347,7 @@ if(attacker.combat_health <= 0 && combat_health <= 0) //both lose playsound(src, 'sound/machines/warning-buzzer.ogg', 20, TRUE) attacker_controller.visible_message(" MUTUALLY ASSURED DESTRUCTION!! [src] and [attacker] both end up destroyed!", \ - " Both [src] and [attacker] are destroyed!") + " Both [src] and [attacker] are destroyed!") else if(attacker.combat_health <= 0) //src wins wins++ attacker.losses++ @@ -359,7 +359,7 @@ " You raise up [src] victoriously over [attacker]!") else if (combat_health <= 0) //attacker wins attacker.wins++ - losses++ + losses++ playsound(src, 'sound/effects/light_flicker.ogg', 20, TRUE) src_controller.visible_message(" [src] collapses!", \ " [src] collapses!", null) @@ -374,7 +374,7 @@ in_combat = FALSE attacker.in_combat = FALSE - combat_health = max_combat_health + combat_health = max_combat_health attacker.combat_health = attacker.max_combat_health return @@ -382,49 +382,49 @@ /** * This proc checks if a battle can be initiated between src and attacker. * - * Both SRC and attacker (if attacker is included) timers are checked if they're on cooldown, and + * Both SRC and attacker (if attacker is included) timers are checked if they're on cooldown, and * both SRC and attacker (if attacker is included) are checked if they are in combat already. * If any of the above are true, the proc returns FALSE and sends a message to user (and target, if included) otherwise, it returns TRUE * Arguments: * * user: the user who is initiating the battle - * * attacker: optional arg for checking two mechs at once + * * attacker: optional arg for checking two mechs at once * * target: optional arg used in Mech PvP battles (if used, attacker is target's toy) */ -/obj/item/toy/mecha/proc/check_battle_start(mob/living/carbon/user, obj/item/toy/mecha/attacker, mob/living/carbon/target) - var/datum/gender/T +/obj/item/toy/mecha/proc/check_battle_start(mob/living/carbon/user, obj/item/toy/mecha/attacker, mob/living/carbon/target) + var/datum/gender/T if(target) T = gender_datums[target.get_visible_gender()] // Doing this because Polaris Code has shitty gender datums and it's clunkier than FUCK. if(attacker && attacker.in_combat) to_chat(user, "[target ? T.His : "Your" ] [attacker.name] is in combat.") - if(target) + if(target) to_chat(target, "Your [attacker.name] is in combat.") - return FALSE + return FALSE if(in_combat) to_chat(user, "Your [name] is in combat.") - if(target) + if(target) to_chat(target, "[T.His] [name] is in combat.") - return FALSE + return FALSE if(attacker && attacker.timer > world.time) to_chat(user, "[target?T.His : "Your" ] [attacker.name] isn't ready for battle.") - if(target) + if(target) to_chat(target, "Your [attacker.name] isn't ready for battle.") - return FALSE + return FALSE if(timer > world.time) to_chat(user, "Your [name] isn't ready for battle.") - if(target) + if(target) to_chat(target, "[T.His] [name] isn't ready for battle.") - return FALSE + return FALSE return TRUE /** - * Processes any special attack moves that happen in the battle (called in the mechaBattle proc). + * Processes any special attack moves that happen in the battle (called in the mechaBattle proc). * * Makes the toy shout their special attack cry and updates its cooldown. Then, does the special attack. * Arguments: * * victim - the toy being hit by the special move */ -/obj/item/toy/mecha/proc/special_attack_move(obj/item/toy/mecha/victim) +/obj/item/toy/mecha/proc/special_attack_move(obj/item/toy/mecha/victim) visible_message(special_attack_cry + "!!") special_attack_charged = FALSE @@ -447,15 +447,15 @@ visible_message("I FORGOT MY SPECIAL ATTACK...") /** - * Base proc for 'other' special attack moves. + * Base proc for 'other' special attack moves. * - * This one is only for inheritance, each mech with an 'other' type move has their procs below. + * This one is only for inheritance, each mech with an 'other' type move has their procs below. * Arguments: * * victim - the toy being hit by the super special move (doesn't necessarily need to be used) */ -/obj/item/toy/mecha/proc/super_special_attack(obj/item/toy/mecha/victim) +/obj/item/toy/mecha/proc/super_special_attack(obj/item/toy/mecha/victim) visible_message(" [src] does a cool flip.") - + /obj/random/mech_toy name = "Random Mech Toy" desc = "This is a random mech toy." @@ -488,8 +488,8 @@ special_attack_type = SPECIAL_ATTACK_OTHER special_attack_type_message = "instantly destroys the opposing mech if its health is less than this mech's health." special_attack_cry = "KILLER CLAMP" - -/obj/item/toy/mecha/deathripley/super_special_attack(obj/item/toy/mecha/victim) + +/obj/item/toy/mecha/deathripley/super_special_attack(obj/item/toy/mecha/victim) playsound(src, 'sound/weapons/sonic_jackhammer.ogg', 20, TRUE) if(victim.combat_health < combat_health) // Instantly kills the other mech if it's health is below our's. visible_message("EXECUTE!!") @@ -522,7 +522,7 @@ special_attack_type_message = "puts the opposing mech's special move on cooldown and heals this mech." special_attack_cry = "MEGA HORN" -/obj/item/toy/mecha/honk/super_special_attack(obj/item/toy/mecha/victim) +/obj/item/toy/mecha/honk/super_special_attack(obj/item/toy/mecha/victim) playsound(src, 'sound/machines/honkbot_evil_laugh.ogg', 20, TRUE) victim.special_attack_cooldown += 3 // Adds cooldown to the other mech and gives a minor self heal combat_health++ @@ -577,7 +577,7 @@ special_attack_type_message = "has a lower cooldown than normal special moves, increases the opponent's cooldown, and deals damage." special_attack_cry = "*wave" -/obj/item/toy/mecha/reticence/super_special_attack(obj/item/toy/mecha/victim) +/obj/item/toy/mecha/reticence/super_special_attack(obj/item/toy/mecha/victim) special_attack_cooldown-- //Has a lower cooldown... victim.special_attack_cooldown++ //and increases the opponent's cooldown by 1... victim.combat_health-- //and some free damage. diff --git a/code/game/objects/items/toys/toys_vr.dm b/code/game/objects/items/toys/toys_vr.dm index 3884b0a17c..cb05e944cf 100644 --- a/code/game/objects/items/toys/toys_vr.dm +++ b/code/game/objects/items/toys/toys_vr.dm @@ -1,9 +1,42 @@ +/* Virgo Toys! + * Contains: + * Mistletoe + * Plushies + * Pet rocks + * Chew toys + * Cat toys + * Fake flash + * Big red button + * Garden gnome + * Toy AI + * Hand buzzer + * Toy cuffs + * Toy nuke + * Toy gibber + * Toy xeno + * Russian revolver + * Trick revolver + * Toy chainsaw + * Random miniature spawner + * Snake popper + * Professor Who universal ID + * Professor Who sonic driver + * Action figures + */ + + +/* + * Mistletoe + */ /obj/item/toy/mistletoe name = "mistletoe" desc = "You are supposed to kiss someone under these" icon = 'icons/obj/toy_vr.dmi' icon_state = "mistletoe" +/* + * Plushies + */ /obj/item/toy/plushie/lizardplushie name = "lizard plushie" desc = "An adorable stuffed toy that resembles a lizardperson." @@ -101,38 +134,6 @@ /obj/item/toy/plushie/vox/proc/cooldownreset() cooldown = 0 -/* -* 4/9/21 * -* IPC Plush -* Toaster plush -* Snake plush -* Cube plush -* Pip plush -* Moth plush -* Crab plush -* Possum plush -* Goose plush -* White mouse plush -* Pet rock -* Pet rock (m) -* Pet rock (f) -* Chew toys -* Cat toy * 2 -* Toy flash -* Toy button -* Gnome -* Toy AI -* Buzzer ring -* Fake handcuffs -* Nuke toy -* Toy gibber -* Toy xeno -* Fake gun * 2 -* Toy chainsaw -* Random tabletop miniature spawner -* snake popper -*/ - /obj/item/toy/plushie/ipc name = "IPC plushie" desc = "A pleasing soft-toy of a monitor-headed robot. Toaster functionality included." @@ -172,7 +173,6 @@ else return ..() - /obj/item/toy/plushie/ipc/attack_self(mob/user as mob) if(!cooldown) playsound(user, 'sound/machines/ping.ogg', 10, 0) @@ -274,7 +274,9 @@ /obj/item/toy/plushie/goose name = "goose plushie" - desc = "An adorable likeness of a terrifying beast. It's simple existance chills you to the bone and compells you to hide any loose objects it might steal." + desc = "An adorable likeness of a terrifying beast. \ + It's simple existance chills you to the bone and \ + compells you to hide any loose objects it might steal." icon = 'icons/obj/toy_vr.dmi' icon_state = "goose" attack_verb = list("honked") @@ -284,9 +286,54 @@ icon_state = "mouse" icon = 'icons/obj/toy_vr.dmi' +/obj/item/toy/plushie/susred + name = "red spaceman plushie" + desc = "A suspicious looking red spaceman plushie. Why does it smell like the vents?" + icon = 'icons/obj/toy_vr.dmi' + icon_state = "sus_red" + attack_verb = list("stabbed", "slashed") + +/obj/item/toy/plushie/ipc/toaster/attack_self(mob/user as mob) + if(!cooldown) + playsound(user, 'sound/weapons/slice.ogg', 10, 0) + src.visible_message("Stab!") + cooldown = 1 + addtimer(CALLBACK(src, .proc/cooldownreset), 50) + return ..() + +/obj/item/toy/plushie/susblue + name = "blue spaceman plushie" + desc = "A dapper looking blue spaceman plushie. Looks very intuitive." + icon = 'icons/obj/toy_vr.dmi' + icon_state = "sus_blue" + +/obj/item/toy/plushie/suswhite + name = "white spaceman plushie" + desc = "A whiny looking white spaceman plushie. Looks like it could cry at any moment." + icon = 'icons/obj/toy_vr.dmi' + icon_state = "sus_white" + +/obj/item/toy/plushie/bigcat + name = "big cat plushie" + desc = "A big, fluffy looking cat that just looks very huggable." + icon = 'icons/obj/toy_vr.dmi' + icon_state = "big_cat" + +/obj/item/toy/plushie/basset + name = "basset plushie" + desc = "A sleepy looking basset hound plushie." + icon = 'icons/obj/toy_vr.dmi' + icon_state = "basset" + +/* + * Pet rocks + */ /obj/item/toy/rock name = "pet rock" - desc = "A stuffed version of the classic pet. The soft ones were made after kids kept throwing them at each other. It has a small piece of soft plastic that you can draw on if you wanted." + desc = "A stuffed version of the classic pet. \ + The soft ones were made after kids kept throwing \ + them at each other. It has a small piece of soft \ + plastic that you can draw on if you wanted." icon = 'icons/obj/toy_vr.dmi' icon_state = "rock" attack_verb = list("grug'd", "unga'd") @@ -307,6 +354,9 @@ to_chat(user, "You draw a face on the rock and pull aside the plastic slightly, revealing a small pink bow.") return +/* + * Chew toys + */ /obj/item/toy/chewtoy name = "chew toy" desc = "A red hard-rubber chew toy shaped like a bone. Perfect for your dog! You wouldn't want to chew on it, right?" @@ -330,6 +380,9 @@ playsound(loc, 'sound/items/drop/plushie.ogg', 50, 1) user.visible_message("\The [user] gnaws on [src]!","You gnaw on [src]!") +/* + * Cat toys + */ /obj/item/toy/cat_toy name = "toy mouse" desc = "A colorful toy mouse!" @@ -349,6 +402,9 @@ slot_r_hand_str = 'icons/mob/items/righthand_material.dmi', ) +/* + * Fake flash + */ /obj/item/toy/flash name = "toy flash" desc = "FOR THE REVOLU- Oh wait, that's just a toy." @@ -374,6 +430,9 @@ /obj/item/toy/flash/proc/cooldownreset() cooldown = 0 +/* + * Big red button + */ /obj/item/toy/redbutton name = "big red button" desc = "A big, plastic red button. Reads 'From HonkCo Pranks?' on the back." @@ -394,12 +453,18 @@ else to_chat(user, "Nothing happens.") +/* + * Garden gnome + */ /obj/item/toy/gnome name = "garden gnome" desc = "It's a gnome, not a gnelf. Made of weak ceramic." icon = 'icons/obj/toy_vr.dmi' icon_state = "gnome" +/* + * Toy AI + */ /obj/item/toy/AI name = "toy AI" desc = "A little toy model AI core with real law announcing action!" @@ -434,6 +499,9 @@ /obj/item/toy/AI/proc/cooldownreset() cooldown = 0 +/* + * Hand buzzer + */ /obj/item/clothing/gloves/ring/buzzer/toy name = "steel ring" desc = "Torus shaped finger decoration. It has a small piece of metal on the palm-side." @@ -460,6 +528,9 @@ return 0 +/* + * Toy cuffs + */ /obj/item/weapon/handcuffs/fake name = "plastic handcuffs" desc = "Use this to keep plastic prisoners in line." @@ -484,6 +555,9 @@ foldable = null can_hold = list(/obj/item/weapon/handcuffs/fake, /obj/item/weapon/handcuffs/legcuffs/fake) +/* + * Toy nuke + */ /obj/item/toy/nuke name = "\improper Nuclear Fission Explosive toy" desc = "A plastic model of a Nuclear Fission Explosive." @@ -510,6 +584,9 @@ if(istype(I, /obj/item/weapon/disk/nuclear)) to_chat(user, "Nice try. Put that disk back where it belongs.") +/* + * Toy gibber + */ /obj/item/toy/minigibber name = "miniature gibber" desc = "A miniature recreation of NanoTrasen's famous meat grinder. Equipped with a special interlock that prevents insertion of organic material." @@ -547,6 +624,9 @@ else ..() +/* + * Toy xeno + */ /obj/item/toy/toy_xeno icon = 'icons/obj/toy_vr.dmi' icon_state = "xeno" @@ -571,6 +651,9 @@ to_chat(user, "The string on [src] hasn't rewound all the way!") return +/* + * Russian revolver + */ /obj/item/toy/russian_revolver name = "russian revolver" desc = "For fun and games!" @@ -641,6 +724,9 @@ to_chat(user, "[src] needs to be reloaded.") return FALSE +/* + * Trick revolver + */ /obj/item/toy/russian_revolver/trick_revolver name = "\improper .357 revolver" desc = "A suspicious revolver. Uses .357 ammo." @@ -668,6 +754,9 @@ sleep(5) icon_state = "[initial(icon_state)]" +/* + * Toy chainsaw + */ /obj/item/toy/chainsaw name = "Toy Chainsaw" desc = "A toy chainsaw with a rubber edge. Ages 8 and up" @@ -690,6 +779,9 @@ /obj/item/toy/chainsaw/proc/cooldownreset() cooldown = 0 +/* + * Random miniature spawner + */ /obj/random/miniature name = "Random miniature" desc = "This is a random miniature." @@ -699,6 +791,9 @@ /obj/random/miniature/item_to_spawn() return pick(typesof(/obj/item/toy/character)) +/* + * Snake popper + */ /obj/item/toy/snake_popper name = "bread tube" desc = "Bread in a tube. Chewy...and surprisingly tasty." @@ -775,3 +870,93 @@ real = 2 to_chat(user, "You short out the bluespace refill system of [src].") +/* + * Professor Who universal ID + */ +/obj/item/clothing/under/universalid + name = "identification card" + desc = "A novelty identification card based on Professor Who's Universal ID." + icon = 'icons/obj/toy_vr.dmi' + icon_state = "universal_id" + w_class = ITEMSIZE_TINY + slot_flags = SLOT_ID | SLOT_EARS + body_parts_covered = 0 + equip_sound = null + + sprite_sheets = null + + item_state = "golem" //This is dumb and hacky but was here when I got here. + worn_state = "golem" //It's basically just a coincidentally black iconstate in the file. + +/* + * Professor Who sonic driver + */ +/obj/item/weapon/tool/screwdriver/sdriver + name = "sonic driver" + desc = "A novelty screwdriver that uses tiny magnets to manipulate screws." + icon = 'icons/obj/toy_vr.dmi' + icon_state = "sonic_driver" + item_state = "screwdriver_black" + usesound = 'sound/items/sonic_driver.ogg' + toolspeed = 1 + random_color = FALSE + +/* + * Professor Who time capsule + */ +/obj/item/weapon/storage/box/timecap + name = "action time capsule" + desc = "A toy recreation of the Time Capsule from Professor Who. Can hold up to two action figures." + icon = 'icons/obj/toy_vr.dmi' + icon_state = "time_cap" + can_hold = list(/obj/item/toy/figure) + max_w_class = ITEMSIZE_TINY + max_storage_space = ITEMSIZE_COST_TINY * 2 + use_sound = 'sound/machines/click.ogg' + drop_sound = 'sound/items/drop/accessory.ogg' + pickup_sound = 'sound/items/pickup/accessory.ogg' + +/* + * Action figures + */ +/obj/item/toy/figure/ranger + name = "Space Ranger action figure" + desc = "A \"Space Life\" brand Space Ranger action figure." + icon = 'icons/obj/toy_vr.dmi' + icon_state = "ranger" + toysay = "To the Fontier and beyond!" + +/obj/item/toy/figure/leadbandit + name = "Bandit Leader action figure" + desc = "A \"Space Life\" brand Bandit Leader action figure." + icon = 'icons/obj/toy_vr.dmi' + icon_state = "bandit_lead" + toysay = "Give us yer bluespace crystals!" + +/obj/item/toy/figure/bandit + name = "Bandit action figure" + desc = "A \"Space Life\" brand Bandit action figure." + icon = 'icons/obj/toy_vr.dmi' + icon_state = "bandit" + toysay = "Stick em' up!" + +/obj/item/toy/figure/abe + name = "Action Abe action figure" + desc = "A \"Space Life\" brand Action Abe action figure." + icon = 'icons/obj/toy_vr.dmi' + icon_state = "action_abe" + toysay = "Four score and seven decades ago..." + +/obj/item/toy/figure/profwho + name = "Professor Who action figure" + desc = "A \"Space Life\" brand Professor Who action figure." + icon = 'icons/obj/toy_vr.dmi' + icon_state = "prof_who" + toysay = "Smells like... bad wolf..." + +/obj/item/toy/figure/prisoner + name = "prisoner action figure" + desc = "A \"Space Life\" brand prisoner action figure." + icon = 'icons/obj/toy_vr.dmi' + icon_state = "prisoner" + toysay = "I did not hit her! I did not!" diff --git a/code/modules/games/cah_black_cards.dm b/code/modules/games/cah_black_cards.dm index 0bc5cc6d0f..c2c32b9948 100644 --- a/code/modules/games/cah_black_cards.dm +++ b/code/modules/games/cah_black_cards.dm @@ -1,4 +1,6 @@ -// Black cards. +/* + * Black CAH cards + */ /obj/item/weapon/deck/cah/black/card_text_list = list( "Why am I itchy?", "Today, Security shot ____.", diff --git a/code/modules/games/cah_white_cards.dm b/code/modules/games/cah_white_cards.dm index 5c8e592b7e..3ab0df883a 100644 --- a/code/modules/games/cah_white_cards.dm +++ b/code/modules/games/cah_white_cards.dm @@ -1,4 +1,6 @@ -// White cards. +/* + * White CAH cards + */ /obj/item/weapon/deck/cah/var/list/card_text_list = list( "Those motherfucking carp", "Having sex in the maintenance tunnels", diff --git a/code/modules/games/cardemon.dm b/code/modules/games/cardemon.dm index a99e656add..0345cf0d18 100644 --- a/code/modules/games/cardemon.dm +++ b/code/modules/games/cardemon.dm @@ -1,3 +1,6 @@ +/* + * Cardmon trading card game + */ /obj/item/weapon/pack/cardemon name = "cardemon booster pack" desc = "Finally! A children's card game in space!" diff --git a/code/modules/games/spaceball_cards.dm b/code/modules/games/spaceball_cards.dm index d9c932908c..48c5407759 100644 --- a/code/modules/games/spaceball_cards.dm +++ b/code/modules/games/spaceball_cards.dm @@ -1,3 +1,6 @@ +/* + * Spaceball collectable cards + */ /obj/item/weapon/pack/spaceball name = "spaceball booster pack" desc = "Officially licensed to take your money." diff --git a/code/modules/games/tarot.dm b/code/modules/games/tarot.dm index 7c49f7ec43..df5fb73b23 100644 --- a/code/modules/games/tarot.dm +++ b/code/modules/games/tarot.dm @@ -1,6 +1,6 @@ -/* this is a playing card deck based off of the Rider-Waite Tarot Deck. -*/ - +/* + * This is a playing card deck based off of the Rider-Waite Tarot Deck. + */ /obj/item/weapon/deck/tarot name = "deck of tarot cards" desc = "For all your occult needs!" diff --git a/code/modules/games/wizoff.dm b/code/modules/games/wizoff.dm new file mode 100644 index 0000000000..11cf179735 --- /dev/null +++ b/code/modules/games/wizoff.dm @@ -0,0 +1,57 @@ +/* It's Wiz-Off, the wizard themed card game! + * Each player draws 5 cards. There are five rounds. Each round, + * a player selects a card to play, and the winner is selected + * based on the following rules: + * -Defensive (D) beats Offensive (O)! + * -Offensive (O) beats Utility (U)! + * -Utility (U) beats Defensive (D)! + * -If both players play the same type of spell, the higher number wins! + * The player who wins the most of the 5 rounds wins the game! + * Now get ready to battle for the fate of the universe: Wiz-Off! + */ + +/obj/item/weapon/deck/wizoff + name = "\improper Wiz-Off deck" + desc = "A Wiz-Off deck. Fight an arcane battle for the fate of the universe: Draw 5! Play 5! Best of 5!" + icon_state = "wizoff" + +/obj/item/weapon/deck/wizoff/New() + ..() + var/datum/playingcard/P + for(var/cardtext in card_wiz_list) + P = new() + P.name = "[cardtext]" + P.card_icon = "[icon_state]_card" + P.back_icon = "[icon_state]_card_back" + cards += P + +/obj/item/weapon/deck/wizoff/var/list/card_wiz_list = list( + "O1: Spell Cards", + "O2: Summon Bees", + "O3: Polymorph", + "O4: Tesla Blast", + "O5: Rod Form", + "O6: Mutate", + "O7: Fireball", + "O8: Mjolnir", + "O9: Smite", + "D1: Smoke", + "D2: Battlemage Armor", + "D3: Repulse", + "D4: Magic Missile", + "D5: Disable Technology", + "D6: Spell Trap", + "D7: Forcewall", + "D8: Arcane Heal", + "D9: Stop Time", + "U1: Shapechange", + "U2: Spacetime Distortion", + "U3: Scrying Orb", + "U4: Blink", + "U5: Knock", + "U6: Teleport", + "U7: Bind Soul", + "U8: Warp Whistle", + "U9: Jaunt" + ) + diff --git a/icons/obj/playing_cards.dmi b/icons/obj/playing_cards.dmi index 04e7af96fe..0195f8e6f4 100644 Binary files a/icons/obj/playing_cards.dmi and b/icons/obj/playing_cards.dmi differ diff --git a/icons/obj/toy.dmi b/icons/obj/toy.dmi index b7235b7e58..98519ef659 100644 Binary files a/icons/obj/toy.dmi and b/icons/obj/toy.dmi differ diff --git a/icons/obj/toy_vr.dmi b/icons/obj/toy_vr.dmi index 3ad106945b..9b3ca4d9d0 100644 Binary files a/icons/obj/toy_vr.dmi and b/icons/obj/toy_vr.dmi differ diff --git a/sound/items/sonic_driver.ogg b/sound/items/sonic_driver.ogg new file mode 100644 index 0000000000..d02a2b6709 Binary files /dev/null and b/sound/items/sonic_driver.ogg differ