mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-07-12 07:35:31 +01:00
Toy Additions
Second Commit
This commit is contained in:
@@ -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("<span class='danger'> [attacker] begins charging its special attack!! </span>", \
|
||||
"<span class='danger'> You begin charging [attacker]'s special attack! </span>")
|
||||
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("<span class='danger'> [src] begins charging its special attack!! </span>", \
|
||||
"<span class='danger'> You begin charging [src]'s special attack! </span>")
|
||||
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("<span class='boldwarning'> ...and lands a CRIPPLING BLOW! </span>", \
|
||||
"<span class='boldwarning'> ...and you land a CRIPPLING blow on [attacker]! </span>", null)
|
||||
"<span class='boldwarning'> ...and you land a CRIPPLING blow on [attacker]! </span>", null)
|
||||
else
|
||||
attacker_controller.visible_message("<span class='notice'> [src] and [attacker] stand around awkwardly.</span>", \
|
||||
"<span class='notice'> You don't know what to do next.</span>")
|
||||
"<span class='notice'> You don't know what to do next.</span>")
|
||||
|
||||
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("<span class='boldnotice'> MUTUALLY ASSURED DESTRUCTION!! [src] and [attacker] both end up destroyed!</span>", \
|
||||
"<span class='boldnotice'> Both [src] and [attacker] are destroyed!</span>")
|
||||
"<span class='boldnotice'> Both [src] and [attacker] are destroyed!</span>")
|
||||
else if(attacker.combat_health <= 0) //src wins
|
||||
wins++
|
||||
attacker.losses++
|
||||
@@ -359,7 +359,7 @@
|
||||
"<span class='notice'> You raise up [src] victoriously over [attacker]!</span>")
|
||||
else if (combat_health <= 0) //attacker wins
|
||||
attacker.wins++
|
||||
losses++
|
||||
losses++
|
||||
playsound(src, 'sound/effects/light_flicker.ogg', 20, TRUE)
|
||||
src_controller.visible_message("<span class='notice'> [src] collapses!</span>", \
|
||||
"<span class='notice'> [src] collapses!</span>", 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, "<span class='notice'>[target ? T.His : "Your" ] [attacker.name] is in combat.</span>")
|
||||
if(target)
|
||||
if(target)
|
||||
to_chat(target, "<span class='notice'>Your [attacker.name] is in combat.</span>")
|
||||
return FALSE
|
||||
return FALSE
|
||||
if(in_combat)
|
||||
to_chat(user, "<span class='notice'>Your [name] is in combat.</span>")
|
||||
if(target)
|
||||
if(target)
|
||||
to_chat(target, "<span class='notice'>[T.His] [name] is in combat.</span>")
|
||||
return FALSE
|
||||
return FALSE
|
||||
if(attacker && attacker.timer > world.time)
|
||||
to_chat(user, "<span class='notice'>[target?T.His : "Your" ] [attacker.name] isn't ready for battle.</span>")
|
||||
if(target)
|
||||
if(target)
|
||||
to_chat(target, "<span class='notice'>Your [attacker.name] isn't ready for battle.</span>")
|
||||
return FALSE
|
||||
return FALSE
|
||||
if(timer > world.time)
|
||||
to_chat(user, "<span class='notice'>Your [name] isn't ready for battle.</span>")
|
||||
if(target)
|
||||
if(target)
|
||||
to_chat(target, "<span class='notice'>[T.His] [name] isn't ready for battle.</span>")
|
||||
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("<span class='notice'> [src] does a cool flip.</span>")
|
||||
|
||||
|
||||
/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.
|
||||
|
||||
@@ -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("<span class='danger'>Stab!</span>")
|
||||
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("<span class='notice'><b>\The [user]</b> gnaws on [src]!</span>","<span class='notice'>You gnaw on [src]!</span>")
|
||||
|
||||
/*
|
||||
* 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, "<span class='alert'>Nothing happens.</span>")
|
||||
|
||||
/*
|
||||
* 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, "<span class='alert'>Nice try. Put that disk back where it belongs.</span>")
|
||||
|
||||
/*
|
||||
* 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, "<span class='warning'>The string on [src] hasn't rewound all the way!</span>")
|
||||
return
|
||||
|
||||
/*
|
||||
* Russian revolver
|
||||
*/
|
||||
/obj/item/toy/russian_revolver
|
||||
name = "russian revolver"
|
||||
desc = "For fun and games!"
|
||||
@@ -641,6 +724,9 @@
|
||||
to_chat(user, "<span class='warning'>[src] needs to be reloaded.</span>")
|
||||
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, "<span class='notice'>You short out the bluespace refill system of [src].</span>")
|
||||
|
||||
/*
|
||||
* 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!"
|
||||
|
||||
@@ -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 ____.",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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!"
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
/*
|
||||
* Spaceball collectable cards
|
||||
*/
|
||||
/obj/item/weapon/pack/spaceball
|
||||
name = "spaceball booster pack"
|
||||
desc = "Officially licensed to take your money."
|
||||
|
||||
@@ -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!"
|
||||
|
||||
@@ -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"
|
||||
)
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 3.7 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 81 KiB After Width: | Height: | Size: 79 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 26 KiB |
Binary file not shown.
Reference in New Issue
Block a user