Donk Co. Toys
@@ -25,8 +25,8 @@
|
||||
var/obj/item/weapon/storage/briefcase/new_briefcase = new(H)
|
||||
for(var/obj/item/briefcase_item in new_briefcase)
|
||||
qdel(briefcase_item)
|
||||
new_briefcase.contents += new /obj/item/toy/crossbow
|
||||
new_briefcase.contents += new /obj/item/weapon/gun/projectile/revolver/capgun
|
||||
new_briefcase.contents += new /obj/item/weapon/gun/projectile/pistol/toy
|
||||
new_briefcase.contents += new /obj/item/ammo_magazine/mfoam_dart/pistol
|
||||
new_briefcase.contents += new /obj/item/clothing/mask/gas/clown_hat
|
||||
H.equip_to_slot_or_del(new_briefcase, slot_l_hand)
|
||||
|
||||
@@ -102,7 +102,7 @@
|
||||
suit = /obj/item/clothing/suit/storage/toggle/brown_jacket/sleeveless
|
||||
shoes = /obj/item/clothing/shoes/boots/jackboots
|
||||
gloves = /obj/item/clothing/gloves/fingerless
|
||||
l_pocket = /obj/item/toy/crossbow
|
||||
l_pocket = /obj/item/weapon/gun/projectile/revolver/toy/crossbow/halloween
|
||||
r_pocket = /obj/item/device/flashlight/color/red
|
||||
|
||||
/decl/hierarchy/outfit/costume/pirate
|
||||
@@ -119,4 +119,12 @@
|
||||
shoes = /obj/item/clothing/shoes/white
|
||||
suit = /obj/item/clothing/suit/storage/hooded/chaplain_hoodie/whiteout
|
||||
gloves = /obj/item/clothing/gloves/white
|
||||
mask = /obj/item/clothing/mask/surgical
|
||||
mask = /obj/item/clothing/mask/surgical
|
||||
|
||||
/decl/hierarchy/outfit/costume/marine
|
||||
name = OUTFIT_COSTUME("Ruin Marine")
|
||||
uniform = /obj/item/clothing/under/color/grey
|
||||
shoes = /obj/item/clothing/shoes/brown
|
||||
head = /obj/item/clothing/head/marine
|
||||
suit = /obj/item/clothing/suit/marine
|
||||
r_hand = /obj/item/weapon/gun/projectile/revolver/toy/sawnoff
|
||||
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* Here is where any supply packs
|
||||
* related to recreation live.
|
||||
*/
|
||||
* Here is where any supply packs
|
||||
* related to recreation live.
|
||||
*/
|
||||
|
||||
|
||||
/datum/supply_pack/recreation
|
||||
@@ -23,6 +23,25 @@
|
||||
containertype = /obj/structure/closet/crate/allico
|
||||
containername = "foam weapon crate"
|
||||
|
||||
/datum/supply_pack/recreation/donksoftweapons
|
||||
name = "Donk-Soft Weapon Crate"
|
||||
contains = list(
|
||||
/obj/item/ammo_magazine/ammo_box/foam = 2,
|
||||
/obj/item/weapon/gun/projectile/shotgun/pump/toy = 2,
|
||||
/obj/item/weapon/gun/projectile/pistol/toy = 2,
|
||||
/obj/item/ammo_magazine/mfoam_dart/pistol = 2
|
||||
)
|
||||
cost = 50
|
||||
containertype = /obj/structure/closet/crate/allico
|
||||
containername = "foam weapon crate"
|
||||
|
||||
/datum/supply_pack/recreation/donksoftvend
|
||||
name = "Donk-Soft Vendor Crate"
|
||||
contains = list()
|
||||
cost = 75
|
||||
containertype = /obj/structure/largecrate/donksoftvendor
|
||||
containername = "\improper Donk-Soft vendor crate"
|
||||
|
||||
/datum/supply_pack/recreation/lasertag
|
||||
name = "Lasertag equipment"
|
||||
contains = list(
|
||||
|
||||
@@ -8,8 +8,8 @@
|
||||
/obj/item/toy/blink = 2,
|
||||
/obj/item/clothing/under/syndicate/tacticool = 2,
|
||||
/obj/item/toy/sword = 2,
|
||||
/obj/item/weapon/gun/projectile/revolver/capgun = 2,
|
||||
/obj/item/toy/crossbow = 2,
|
||||
/obj/item/weapon/storage/box/capguntoy = 2,
|
||||
/obj/item/weapon/gun/projectile/revolver/toy/crossbow = 2,
|
||||
/obj/item/clothing/suit/syndicatefake = 2,
|
||||
/obj/item/weapon/storage/fancy/crayons = 2,
|
||||
/obj/item/toy/spinningtoy = 2,
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
/obj/item/toy/blink = 2,
|
||||
/obj/item/clothing/under/syndicate/tacticool = 2,
|
||||
/obj/item/toy/sword = 2,
|
||||
/obj/item/weapon/gun/projectile/revolver/capgun = 2,
|
||||
/obj/item/toy/crossbow = 2,
|
||||
/obj/item/weapon/storage/box/capguntoy = 2,
|
||||
/obj/item/weapon/gun/projectile/revolver/toy/crossbow = 2,
|
||||
/obj/item/clothing/suit/syndicatefake = 2,
|
||||
/obj/item/weapon/storage/fancy/crayons = 2,
|
||||
/obj/item/toy/spinningtoy = 2,
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -3,8 +3,6 @@
|
||||
* Balloons
|
||||
* Fake telebeacon
|
||||
* Fake singularity
|
||||
* Toy gun
|
||||
* Toy crossbow
|
||||
* Toy swords
|
||||
* Toy bosun's whistle
|
||||
* Snap pops
|
||||
@@ -145,127 +143,6 @@
|
||||
icon = 'icons/obj/singularity.dmi'
|
||||
icon_state = "singularity_s1"
|
||||
|
||||
/*
|
||||
* Toy crossbow
|
||||
*/
|
||||
|
||||
/obj/item/toy/crossbow
|
||||
name = "foam dart crossbow"
|
||||
desc = "A weapon favored by many overactive children. Ages 8 and up."
|
||||
icon = 'icons/obj/gun.dmi'
|
||||
icon_state = "crossbow"
|
||||
item_icons = list(
|
||||
icon_l_hand = 'icons/mob/items/lefthand_guns.dmi',
|
||||
icon_r_hand = 'icons/mob/items/righthand_guns.dmi',
|
||||
)
|
||||
slot_flags = SLOT_HOLSTER
|
||||
w_class = ITEMSIZE_SMALL
|
||||
attack_verb = list("attacked", "struck", "hit")
|
||||
var/bullets = 5
|
||||
drop_sound = 'sound/items/drop/gun.ogg'
|
||||
|
||||
/obj/item/toy/crossbow/examine(mob/user)
|
||||
. = ..()
|
||||
if(bullets && get_dist(user, src) <= 2)
|
||||
. += "<span class='notice'>It is loaded with [bullets] foam darts!</span>"
|
||||
|
||||
/obj/item/toy/crossbow/attackby(obj/item/I as obj, mob/user as mob)
|
||||
if(istype(I, /obj/item/toy/ammo/crossbow))
|
||||
if(bullets <= 4)
|
||||
user.drop_item()
|
||||
qdel(I)
|
||||
bullets++
|
||||
to_chat(user, "<span class='notice'>You load the foam dart into the crossbow.</span>")
|
||||
else
|
||||
to_chat(usr, "<span class='warning'>It's already fully loaded.</span>")
|
||||
|
||||
|
||||
/obj/item/toy/crossbow/afterattack(atom/target as mob|obj|turf|area, mob/user as mob, flag)
|
||||
if(!isturf(target.loc) || target == user) return
|
||||
if(flag) return
|
||||
|
||||
if (locate (/obj/structure/table, src.loc))
|
||||
return
|
||||
else if (bullets)
|
||||
var/turf/trg = get_turf(target)
|
||||
var/obj/effect/foam_dart_dummy/D = new/obj/effect/foam_dart_dummy(get_turf(src))
|
||||
bullets--
|
||||
D.icon_state = "foamdart"
|
||||
D.name = "foam dart"
|
||||
playsound(src, 'sound/items/syringeproj.ogg', 50, 1)
|
||||
|
||||
for(var/i=0, i<6, i++)
|
||||
if (D)
|
||||
if(D.loc == trg) break
|
||||
step_towards(D,trg)
|
||||
|
||||
for(var/mob/living/M in D.loc)
|
||||
if(!istype(M,/mob/living)) continue
|
||||
if(M == user) continue
|
||||
for(var/mob/O in viewers(world.view, D))
|
||||
O.show_message(text("<span class='warning'>\The [] was hit by the foam dart!</span>", M), 1)
|
||||
new /obj/item/toy/ammo/crossbow(M.loc)
|
||||
qdel(D)
|
||||
return
|
||||
|
||||
for(var/atom/A in D.loc)
|
||||
if(A == user) continue
|
||||
if(A.density)
|
||||
new /obj/item/toy/ammo/crossbow(A.loc)
|
||||
qdel(D)
|
||||
|
||||
sleep(1)
|
||||
|
||||
spawn(10)
|
||||
if(D)
|
||||
new /obj/item/toy/ammo/crossbow(D.loc)
|
||||
qdel(D)
|
||||
|
||||
return
|
||||
else if (bullets == 0)
|
||||
user.Weaken(5)
|
||||
for(var/mob/O in viewers(world.view, user))
|
||||
O.show_message(text("<span class='warning'>\The [] realized they were out of ammo and starting scrounging for some!</span>", user), 1)
|
||||
|
||||
|
||||
/obj/item/toy/crossbow/attack(mob/M as mob, mob/user as mob)
|
||||
src.add_fingerprint(user)
|
||||
|
||||
// ******* Check
|
||||
|
||||
if (src.bullets > 0 && M.lying)
|
||||
|
||||
for(var/mob/O in viewers(M, null))
|
||||
if(O.client)
|
||||
O.show_message(text("<span class='danger'>\The [] casually lines up a shot with []'s head and pulls the trigger!</span>", user, M), 1, "<span class='warning'>You hear the sound of foam against skull</span>", 2)
|
||||
O.show_message(text("<span class='warning'>\The [] was hit in the head by the foam dart!</span>", M), 1)
|
||||
|
||||
playsound(src, 'sound/items/syringeproj.ogg', 50, 1)
|
||||
new /obj/item/toy/ammo/crossbow(M.loc)
|
||||
src.bullets--
|
||||
else if (M.lying && src.bullets == 0)
|
||||
for(var/mob/O in viewers(M, null))
|
||||
if (O.client) O.show_message(text("<span class='danger'>\The [] casually lines up a shot with []'s head, pulls the trigger, then realizes they are out of ammo and drops to the floor in search of some!</span>", user, M), 1, "<span class='warning'>You hear someone fall</span>", 2)
|
||||
user.Weaken(5)
|
||||
return
|
||||
|
||||
/obj/item/toy/ammo/crossbow
|
||||
name = "foam dart"
|
||||
desc = "It's nerf or nothing! Ages 8 and up."
|
||||
icon = 'icons/obj/toy.dmi'
|
||||
icon_state = "foamdart"
|
||||
w_class = ITEMSIZE_TINY
|
||||
slot_flags = SLOT_EARS
|
||||
drop_sound = 'sound/items/drop/food.ogg'
|
||||
|
||||
/obj/effect/foam_dart_dummy
|
||||
name = ""
|
||||
desc = ""
|
||||
icon = 'icons/obj/toy.dmi'
|
||||
icon_state = "null"
|
||||
anchored = TRUE
|
||||
density = FALSE
|
||||
|
||||
/*
|
||||
* Toy swords
|
||||
*/
|
||||
@@ -394,7 +271,6 @@
|
||||
/*
|
||||
* Bosun's whistle
|
||||
*/
|
||||
|
||||
/obj/item/toy/bosunwhistle
|
||||
name = "bosun's whistle"
|
||||
desc = "A genuine Admiral Krush Bosun's Whistle, for the aspiring ship's captain! Suitable for ages 8 and up, do not swallow."
|
||||
@@ -1526,7 +1402,7 @@
|
||||
name = "black king"
|
||||
desc = "A black king chess piece."
|
||||
description_info = "The King can move exactly one square horizontally, vertically, or diagonally. If your opponent captures this piece, you lose."
|
||||
icon_state = "black_king"
|
||||
icon_state = "black_king"
|
||||
|
||||
/// Balloon structures
|
||||
|
||||
|
||||
@@ -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."
|
||||
@@ -103,38 +136,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."
|
||||
@@ -174,7 +175,6 @@
|
||||
else
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/item/toy/plushie/ipc/attack_self(mob/user as mob)
|
||||
if(!cooldown)
|
||||
playsound(user, 'sound/machines/ping.ogg', 10, 0)
|
||||
@@ -278,7 +278,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")
|
||||
@@ -288,9 +290,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")
|
||||
@@ -311,6 +358,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?"
|
||||
@@ -334,6 +384,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!"
|
||||
@@ -353,6 +406,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."
|
||||
@@ -378,6 +434,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."
|
||||
@@ -398,12 +457,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!"
|
||||
@@ -438,6 +503,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."
|
||||
@@ -464,6 +532,9 @@
|
||||
|
||||
return 0
|
||||
|
||||
/*
|
||||
* Toy cuffs
|
||||
*/
|
||||
/obj/item/weapon/handcuffs/fake
|
||||
name = "plastic handcuffs"
|
||||
desc = "Use this to keep plastic prisoners in line."
|
||||
@@ -488,6 +559,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."
|
||||
@@ -514,6 +588,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."
|
||||
@@ -551,6 +628,9 @@
|
||||
|
||||
else ..()
|
||||
|
||||
/*
|
||||
* Toy xeno
|
||||
*/
|
||||
/obj/item/toy/toy_xeno
|
||||
icon = 'icons/obj/toy_vr.dmi'
|
||||
icon_state = "xeno"
|
||||
@@ -575,6 +655,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!"
|
||||
@@ -645,6 +728,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."
|
||||
@@ -672,6 +758,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"
|
||||
@@ -694,6 +783,9 @@
|
||||
/obj/item/toy/chainsaw/proc/cooldownreset()
|
||||
cooldown = 0
|
||||
|
||||
/*
|
||||
* Random miniature spawner
|
||||
*/
|
||||
/obj/random/miniature
|
||||
name = "Random miniature"
|
||||
desc = "This is a random miniature."
|
||||
@@ -703,6 +795,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."
|
||||
@@ -779,3 +874,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!"
|
||||
|
||||
@@ -85,8 +85,8 @@
|
||||
/obj/item/weapon/beach_ball/holoball,
|
||||
/obj/item/toy/balloon,
|
||||
/obj/item/toy/blink,
|
||||
/obj/item/toy/crossbow,
|
||||
/obj/item/weapon/gun/projectile/revolver/capgun,
|
||||
/obj/item/weapon/gun/projectile/revolver/toy/crossbow,
|
||||
/obj/item/weapon/storage/box/capguntoy,
|
||||
/obj/item/toy/katana,
|
||||
/obj/item/toy/mecha/deathripley,
|
||||
/obj/item/toy/mecha/durand,
|
||||
|
||||
@@ -123,11 +123,11 @@
|
||||
)
|
||||
|
||||
/obj/item/weapon/storage/belt/utility/holding
|
||||
name = "tool-belt of holding"
|
||||
name = "tool-belt of holding"
|
||||
desc = "A belt that uses localized bluespace pockets to hold more items than expected!"
|
||||
icon_state = "utility_holding"
|
||||
storage_slots = 14 //twice the amount as a normal belt
|
||||
max_storage_space = ITEMSIZE_COST_NORMAL * 14
|
||||
max_storage_space = ITEMSIZE_COST_NORMAL * 14
|
||||
can_hold = list(
|
||||
/obj/item/weapon/tool/crowbar,
|
||||
/obj/item/weapon/tool/screwdriver,
|
||||
@@ -164,7 +164,7 @@
|
||||
/obj/item/stack/material/steel,
|
||||
/obj/item/stack/material/glass,
|
||||
/obj/item/device/lightreplacer,
|
||||
/obj/item/weapon/pickaxe/plasmacutter
|
||||
/obj/item/weapon/pickaxe/plasmacutter
|
||||
)
|
||||
|
||||
|
||||
@@ -207,11 +207,11 @@
|
||||
icon_state = "ems"
|
||||
|
||||
/obj/item/weapon/storage/belt/medical/holding
|
||||
name = "medical belt of holding"
|
||||
name = "medical belt of holding"
|
||||
desc = "A belt that uses localized bluespace pockets to hold more items than expected!"
|
||||
icon_state = "med_holding"
|
||||
storage_slots = 14 //twice the amount as a normal belt
|
||||
max_storage_space = ITEMSIZE_COST_NORMAL * 14
|
||||
max_storage_space = ITEMSIZE_COST_NORMAL * 14
|
||||
|
||||
/obj/item/weapon/storage/belt/security
|
||||
name = "security belt"
|
||||
@@ -530,3 +530,12 @@
|
||||
desc = "The fancy utility-belt holding the tools, cuffs and gadgets of the Go Go ERT-Rangers. The belt buckle is not real phoron, but it is still surprisingly comfortable to wear."
|
||||
icon = 'icons/obj/clothing/ranger.dmi'
|
||||
icon_state = "ranger_belt"
|
||||
|
||||
/obj/item/weapon/storage/belt/dbandolier
|
||||
name = "\improper Donk-Soft bandolier"
|
||||
desc = "A Donk-Soft bandolier! Carry your spare darts anywhere! Ages 8 and up."
|
||||
icon_state = "dbandolier"
|
||||
storage_slots = 8
|
||||
can_hold = list(
|
||||
/obj/item/ammo_casing/afoam_dart
|
||||
)
|
||||
@@ -568,3 +568,17 @@
|
||||
name = "ambrosia deus seeds box"
|
||||
desc = "Contains the seeds you need to get a proper healthy high."
|
||||
starts_with = list(/obj/item/seeds/ambrosiadeusseed = 7)
|
||||
|
||||
/obj/item/weapon/storage/box/capguntoy
|
||||
name = "\improper AlliCo \"Zipper\" Cap Gun"
|
||||
icon = 'icons/obj/gun_toy.dmi'
|
||||
icon_state = "cap_gun_box"
|
||||
desc = "This box is shaped on the inside so that only the \"Zipper\" Capgun and extra caps can fit."
|
||||
item_state_slots = list(slot_r_hand_str = "syringe_kit", slot_l_hand_str = "syringe_kit")
|
||||
storage_slots = 2
|
||||
max_w_class = ITEMSIZE_NORMAL
|
||||
can_hold = list(/obj/item/weapon/gun/projectile/revolver/capgun, /obj/item/ammo_magazine/ammo_box/cap)
|
||||
starts_with = list(
|
||||
/obj/item/weapon/gun/projectile/revolver/capgun = 1,
|
||||
/obj/item/ammo_magazine/ammo_box/cap = 1
|
||||
)
|
||||
|
||||
0
code/game/objects/random/gradient.dm
Normal file
@@ -745,7 +745,7 @@
|
||||
/obj/item/toy/snappop,
|
||||
/obj/item/toy/sword,
|
||||
/obj/item/toy/balloon,
|
||||
/obj/item/toy/crossbow,
|
||||
/obj/item/weapon/gun/projectile/revolver/toy/crossbow,
|
||||
/obj/item/toy/blink,
|
||||
/obj/item/weapon/reagent_containers/spray/waterflower,
|
||||
/obj/item/toy/eight_ball,
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
if(AM.simulated)
|
||||
AM.forceMove(T)
|
||||
//VOREStation Add Start
|
||||
if(isanimal(AM))
|
||||
if(isanimal(AM))
|
||||
var/mob/living/simple_mob/AMBLINAL = AM
|
||||
if(!AMBLINAL.mind)
|
||||
AMBLINAL.ghostjoin = 1
|
||||
@@ -65,6 +65,11 @@
|
||||
ME.attach(H)
|
||||
..()
|
||||
|
||||
/obj/structure/largecrate/donksoftvendor
|
||||
name = "\improper Donk-Soft vendor crate"
|
||||
desc = "A hefty wooden crate displaying the logo of Donk-Soft. It's rather heavy."
|
||||
starts_with = list(/obj/machinery/vending/donksoft)
|
||||
|
||||
/obj/structure/largecrate/vehicle
|
||||
name = "vehicle crate"
|
||||
desc = "Wulf Aeronautics says it comes in a box for the consumer's sake... How is this so light?"
|
||||
|
||||
@@ -529,4 +529,27 @@
|
||||
/obj/item/clothing/head/wheat
|
||||
name = "straw hat"
|
||||
desc = "It's a hat made from synthetic straw. Brought to you by \"Country Girls LLC.\" the choice brand for the galaxy's working class."
|
||||
icon_state = "wheat"
|
||||
icon_state = "wheat"
|
||||
|
||||
//Ruin Marine (Doom Marine)
|
||||
/obj/item/clothing/head/marine
|
||||
name = "marine helmet"
|
||||
desc = "A marine helmet prop from the popular game 'Ruin'."
|
||||
icon_state = "marine"
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|BLOCKHAIR
|
||||
body_parts_covered = HEAD|FACE|EYES
|
||||
|
||||
//Laser Tag Helmets
|
||||
/obj/item/clothing/head/bluetag
|
||||
name = "blue laser tag helmet"
|
||||
desc = "Blue Pride, Station Wide."
|
||||
icon_state = "bluetag"
|
||||
flags_inv = HIDEEARS|BLOCKHEADHAIR
|
||||
body_parts_covered = HEAD|EYES
|
||||
|
||||
/obj/item/clothing/head/redtag
|
||||
name = "red laser tag helmet"
|
||||
desc = "Reputed to go faster."
|
||||
icon_state = "redtag"
|
||||
flags_inv = HIDEEARS|BLOCKHEADHAIR
|
||||
body_parts_covered = HEAD|EYES
|
||||
@@ -13,7 +13,7 @@
|
||||
*/
|
||||
|
||||
/obj/item/clothing/suit/bluetag
|
||||
name = "blue laser tag armour"
|
||||
name = "blue laser tag armor"
|
||||
desc = "Blue Pride, Station Wide."
|
||||
icon_state = "bluetag"
|
||||
item_state_slots = list(slot_r_hand_str = "tdblue", slot_l_hand_str = "tdblue")
|
||||
@@ -22,8 +22,13 @@
|
||||
allowed = list (/obj/item/weapon/gun/energy/lasertag/blue)
|
||||
siemens_coefficient = 3.0
|
||||
|
||||
/obj/item/clothing/suit/bluetag/sub
|
||||
name = "Brigader Armor"
|
||||
desc = "Repilca rmor commonly worn by Spacer Union Brigade members from the hit series Spacer Trail. Modified for Laser Tag (Blue Team)."
|
||||
icon_state = "bluetag2"
|
||||
|
||||
/obj/item/clothing/suit/redtag
|
||||
name = "red laser tag armour"
|
||||
name = "red laser tag armor"
|
||||
desc = "Reputed to go faster."
|
||||
icon_state = "redtag"
|
||||
item_state_slots = list(slot_r_hand_str = "tdred", slot_l_hand_str = "tdred")
|
||||
@@ -32,6 +37,11 @@
|
||||
allowed = list (/obj/item/weapon/gun/energy/lasertag/red)
|
||||
siemens_coefficient = 3.0
|
||||
|
||||
/obj/item/clothing/suit/redtag/dom
|
||||
name = "Mu'tu'bi Armor"
|
||||
desc = "Repilca rmor commonly worn by Dominion Of Mu'tu'bi soldiers from the hit series Spacer Trail. Modified for Laser Tag (Red Team)."
|
||||
icon_state = "redtag2"
|
||||
|
||||
/*
|
||||
* Costume
|
||||
*/
|
||||
@@ -985,3 +995,15 @@
|
||||
src.item_state = "caution"
|
||||
usr.show_message("You turn the wet floor sign off.")
|
||||
update_clothing_icon()
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
|
||||
//Ruin Marine (Doom Marine)
|
||||
/obj/item/clothing/suit/marine
|
||||
name = "marine armor"
|
||||
desc = "A set of marine prop armor from the popular game 'Ruin'."
|
||||
icon_state = "marine"
|
||||
body_parts_covered = FEET|LOWER_TORSO|UPPER_TORSO|LEGS
|
||||
flags_inv = HIDESHOES|HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
|
||||
item_state_slots = list(slot_r_hand_str = "green_labcoat", slot_l_hand_str = "green_labcoat")
|
||||
>>>>>>> 1432ca2b223... Merge pull request #12253 from GhostActual/Donk-Co.-Toys
|
||||
|
||||
@@ -1144,6 +1144,46 @@
|
||||
idle_power_usage = 211 //refrigerator - believe it or not, this is actually the average power consumption of a refrigerated vending machine according to NRCan.
|
||||
vending_sound = "machines/vending/vending_cans.ogg"
|
||||
|
||||
///////////////////////Donk-Soft!///////////////////////////////////////
|
||||
|
||||
/obj/machinery/vending/donksoft
|
||||
name = "Donk-Soft!"
|
||||
desc = "A toy vendor owned by Donk-Soft, a NanoTrasen sub-company."
|
||||
description_fluff = "Donk-Soft is a sub-company owned by NanoTrasen that distribute replica weapons that shoot squishy foam darts. \
|
||||
They've been a staple of personal entertainment for decades but their buisness has only just moved to the fringes of the galaxy."
|
||||
icon_state = "donksoft"
|
||||
product_slogans = "Get your cool toys today!;Quality toy weapons for cheap prices!"
|
||||
product_ads = "Express your inner child today!;Who needs responsibilities when you have toy weapons?;Make your next murder FUN!"
|
||||
products = list(/obj/item/ammo_magazine/ammo_box/foam = 20,
|
||||
/obj/item/weapon/storage/belt/dbandolier = 5,
|
||||
/obj/item/ammo_magazine/mfoam_dart/pistol = 10,
|
||||
/obj/item/ammo_magazine/mfoam_dart/smg = 10,
|
||||
/obj/item/weapon/gun/projectile/shotgun/pump/toy = 5,
|
||||
/obj/item/weapon/gun/projectile/revolver/toy/sawnoff = 5,
|
||||
/obj/item/weapon/gun/projectile/pistol/toy = 5,
|
||||
/obj/item/weapon/gun/projectile/pistol/toy/n99 = 5,
|
||||
/obj/item/weapon/gun/projectile/shotgun/pump/toy/levergun = 5,
|
||||
/obj/item/weapon/gun/projectile/revolver/toy = 5,
|
||||
/obj/item/weapon/gun/projectile/revolver/toy/big_iron = 5,
|
||||
/obj/item/weapon/gun/projectile/revolver/toy/crossbow = 5,
|
||||
/obj/item/weapon/gun/projectile/automatic/toy = 5
|
||||
)
|
||||
contraband = list()
|
||||
prices = list(/obj/item/ammo_magazine/ammo_box/foam = 50,
|
||||
/obj/item/weapon/storage/belt/dbandolier = 100,
|
||||
/obj/item/ammo_magazine/mfoam_dart/pistol = 25,
|
||||
/obj/item/ammo_magazine/mfoam_dart/smg = 25,
|
||||
/obj/item/weapon/gun/projectile/shotgun/pump/toy = 250,
|
||||
/obj/item/weapon/gun/projectile/revolver/toy/sawnoff = 150,
|
||||
/obj/item/weapon/gun/projectile/pistol/toy = 100,
|
||||
/obj/item/weapon/gun/projectile/pistol/toy/n99 = 175,
|
||||
/obj/item/weapon/gun/projectile/shotgun/pump/toy/levergun = 250,
|
||||
/obj/item/weapon/gun/projectile/revolver/toy = 100,
|
||||
/obj/item/weapon/gun/projectile/revolver/toy/big_iron = 175,
|
||||
/obj/item/weapon/gun/projectile/revolver/toy/crossbow = 75,
|
||||
/obj/item/weapon/gun/projectile/automatic/toy = 300)
|
||||
vending_sound = "machines/vending/vending_cans.ogg"
|
||||
|
||||
/*
|
||||
* Department/job vendors to sit in place of lockers taking up space
|
||||
*/
|
||||
|
||||
@@ -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!"
|
||||
|
||||
57
code/modules/games/wizoff.dm
Normal file
@@ -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"
|
||||
)
|
||||
|
||||
@@ -246,3 +246,39 @@
|
||||
magazine_icondata_keys[M.type] = icon_keys
|
||||
magazine_icondata_states[M.type] = ammo_states
|
||||
|
||||
/*
|
||||
* Ammo Boxes
|
||||
*/
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box
|
||||
name = "ammo box"
|
||||
desc = "A box that holds some kind of ammo."
|
||||
icon = 'icons/obj/ammo_boxes.dmi'
|
||||
icon_state = "pistol"
|
||||
slot_flags = null //You can't fit a box on your belt
|
||||
item_state = "paper"
|
||||
matter = null
|
||||
throwforce = 3
|
||||
throw_speed = 5
|
||||
throw_range = 12
|
||||
preserve_item = 1
|
||||
caliber = ".357"
|
||||
drop_sound = 'sound/items/drop/matchbox.ogg'
|
||||
pickup_sound = 'sound/items/pickup/matchbox.ogg'
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/AltClick(mob/user)
|
||||
if(can_remove_ammo)
|
||||
if(isliving(user) && Adjacent(user))
|
||||
if(stored_ammo.len)
|
||||
var/obj/item/ammo_casing/C = stored_ammo[stored_ammo.len]
|
||||
stored_ammo-=C
|
||||
user.put_in_hands(C)
|
||||
user.visible_message("\The [user] removes \a [C] from [src].", "<span class='notice'>You remove \a [C] from [src].</span>")
|
||||
update_icon()
|
||||
return
|
||||
..()
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/examine(mob/user)
|
||||
. = ..()
|
||||
|
||||
. += to_chat(usr, "<span class='notice'>Alt-click to extract contents</span>")
|
||||
58
code/modules/projectiles/ammunition/ammo_boxes.dm
Normal file
@@ -0,0 +1,58 @@
|
||||
/************************************************************************/
|
||||
/*
|
||||
# An explaination of the naming format for guns and ammo:
|
||||
#
|
||||
# a = Ammo, as in individual rounds of ammunition.
|
||||
# b = Box, intended to have ammo taken out one at a time by hand.
|
||||
# c = Clips, intended to reload magazines or guns quickly.
|
||||
# m = Magazine, intended to hold rounds of ammo.
|
||||
# s = Speedloaders, intended to reload guns quickly.
|
||||
#
|
||||
# Use this format, followed by the caliber. For example, a shotgun's caliber
|
||||
# variable is "12g" as a result. Ergo, a shotgun round's path would have "a12g",
|
||||
# or a magazine with shotgun shells would be "m12g" instead. To avoid confusion
|
||||
# for developers and in-game admins spawning these items, stick to this format.
|
||||
# Likewise, when creating new rounds, the caliber variable should match whatever
|
||||
# the name says.
|
||||
#
|
||||
# This comment is copied in rounds.dm and magazines.dm as well.
|
||||
#
|
||||
# Also, to remove bullets from ammo boxes, use Alt-Click on the box.
|
||||
*/
|
||||
/************************************************************************/
|
||||
|
||||
/*
|
||||
* Foam
|
||||
*/
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/foam
|
||||
name = "\improper Donk-Soft ammo box"
|
||||
desc = "Contains Donk-Soft foam darts. It's Donk or Don't! Ages 8 and up."
|
||||
icon = 'icons/obj/gun_toy.dmi'
|
||||
icon_state = "foambox"
|
||||
caliber = "foam"
|
||||
ammo_type = /obj/item/ammo_casing/afoam_dart
|
||||
matter = list(MAT_PLASTIC = 1800)
|
||||
max_ammo = 30
|
||||
multiple_sprites = null
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/foam/riot
|
||||
name = "\improper Donk-Soft riot ammo box"
|
||||
desc = "Contains Donk-Soft riot darts. It's Donk or Don't! Ages 18 and up."
|
||||
icon_state = "foambox_riot"
|
||||
matter = list(MAT_STEEL = 5040, MAT_PLASTIC = 1800)
|
||||
|
||||
/*
|
||||
* Cap
|
||||
*/
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/cap
|
||||
name = "\improper AlliCo SNAP! Caps"
|
||||
desc = "A box of spare caps for capguns. Ages 8 and up."
|
||||
icon = 'icons/obj/gun_toy.dmi'
|
||||
icon_state = "capbox"
|
||||
caliber = "caps"
|
||||
ammo_type = /obj/item/ammo_casing/cap
|
||||
matter = list(MAT_STEEL = 2040)
|
||||
max_ammo = 24
|
||||
multiple_sprites = null
|
||||
@@ -22,7 +22,42 @@
|
||||
*/
|
||||
/************************************************************************/
|
||||
|
||||
///////// Foam /////////
|
||||
|
||||
/obj/item/ammo_magazine/mfoam_dart/pistol
|
||||
name = "\improper Donk-Soft pistol magazine"
|
||||
icon = 'icons/obj/gun_toy.dmi'
|
||||
icon_state = "toy"
|
||||
mag_type = MAGAZINE
|
||||
ammo_type = /obj/item/ammo_casing/afoam_dart
|
||||
matter = list(MAT_PLASTIC = 250)
|
||||
caliber = "foam"
|
||||
max_ammo = 9
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/mfoam_dart/pistol/riot
|
||||
ammo_type = /obj/item/ammo_casing/afoam_dart/riot
|
||||
|
||||
/obj/item/ammo_magazine/mfoam_dart/pistol/empty
|
||||
initial_ammo = 0
|
||||
|
||||
/obj/item/ammo_magazine/mfoam_dart/smg
|
||||
name = "\improper Donk-Soft smg magazine"
|
||||
icon = 'icons/obj/gun_toy.dmi'
|
||||
icon_state = "toysmg"
|
||||
mag_type = MAGAZINE
|
||||
ammo_type = /obj/item/ammo_casing/afoam_dart
|
||||
matter = list(MAT_PLASTIC = 250)
|
||||
caliber = "foam"
|
||||
max_ammo = 20
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/mfoam_dart/smg/riot
|
||||
ammo_type = /obj/item/ammo_casing/afoam_dart/riot
|
||||
matter = list(MAT_PLASTIC = 1260, MAT_PLASTIC = 250)
|
||||
|
||||
/obj/item/ammo_magazine/mfoam_dart/smg/empty
|
||||
initial_ammo = 0
|
||||
|
||||
///////// .357 /////////
|
||||
|
||||
|
||||
@@ -19,6 +19,26 @@
|
||||
*/
|
||||
/************************************************************************/
|
||||
|
||||
/*
|
||||
* Foam
|
||||
*/
|
||||
|
||||
/obj/item/ammo_casing/afoam_dart
|
||||
name = "foam dart"
|
||||
desc = "It's Donk or Don't! Ages 8 and up."
|
||||
projectile_type = /obj/item/projectile/bullet/foam_dart
|
||||
matter = list(MAT_PLASTIC = 60)
|
||||
caliber = "foam"
|
||||
icon = 'icons/obj/gun_toy.dmi'
|
||||
icon_state = "foamdart"
|
||||
caseless = 1
|
||||
|
||||
/obj/item/ammo_casing/afoam_dart/riot
|
||||
name = "riot foam dart"
|
||||
desc = "Whose smart idea was it to use toys as crowd control? Ages 18 and up."
|
||||
matter = list(MAT_STEEL = 210, MAT_PLASTIC = 60)
|
||||
icon_state = "foamdart_riot"
|
||||
|
||||
/*
|
||||
* .357
|
||||
*/
|
||||
@@ -427,12 +447,13 @@
|
||||
|
||||
/obj/item/ammo_casing/cap
|
||||
name = "cap"
|
||||
desc = "A cap for children toys."
|
||||
desc = "A cap for children toys. Ages 8 and up."
|
||||
caliber = "caps"
|
||||
icon_state = "r-casing"
|
||||
color = "#FF0000"
|
||||
projectile_type = /obj/item/projectile/bullet/pistol/cap
|
||||
icon = 'icons/obj/gun_toy.dmi'
|
||||
icon_state = "cap"
|
||||
projectile_type = /obj/item/projectile/bullet/cap
|
||||
matter = list(MAT_STEEL = 85)
|
||||
caseless = 1
|
||||
|
||||
/obj/item/ammo_casing/spent // For simple hostile mobs only, so they don't cough up usable bullets when firing. This is for literally nothing else.
|
||||
icon_state = "s-casing-spent"
|
||||
|
||||
@@ -261,41 +261,6 @@
|
||||
accuracy = 0
|
||||
scoped_accuracy = 20
|
||||
|
||||
////////Laser Tag////////////////////
|
||||
|
||||
/obj/item/weapon/gun/energy/lasertag
|
||||
name = "laser tag gun"
|
||||
item_state = "laser"
|
||||
desc = "Standard issue weapon of the Imperial Guard"
|
||||
origin_tech = list(TECH_COMBAT = 1, TECH_MAGNET = 2)
|
||||
matter = list(MAT_STEEL = 2000)
|
||||
projectile_type = /obj/item/projectile/beam/lasertag/blue
|
||||
cell_type = /obj/item/weapon/cell/device/weapon/recharge
|
||||
battery_lock = 1
|
||||
var/required_vest
|
||||
|
||||
/obj/item/weapon/gun/energy/lasertag/special_check(var/mob/living/carbon/human/M)
|
||||
if(ishuman(M))
|
||||
if(!istype(M.wear_suit, required_vest))
|
||||
to_chat(M, "<span class='warning'>You need to be wearing your laser tag vest!</span>")
|
||||
return 0
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/gun/energy/lasertag/blue
|
||||
icon_state = "bluetag"
|
||||
item_state = "bluetag"
|
||||
projectile_type = /obj/item/projectile/beam/lasertag/blue
|
||||
required_vest = /obj/item/clothing/suit/bluetag
|
||||
|
||||
/obj/item/weapon/gun/energy/lasertag/red
|
||||
icon_state = "redtag"
|
||||
item_state = "redtag"
|
||||
projectile_type = /obj/item/projectile/beam/lasertag/red
|
||||
required_vest = /obj/item/clothing/suit/redtag
|
||||
|
||||
/obj/item/weapon/gun/energy/lasertag/omni
|
||||
projectile_type = /obj/item/projectile/beam/lasertag/omni
|
||||
|
||||
// Laser scattergun, proof of concept.
|
||||
|
||||
/obj/item/weapon/gun/energy/lasershotgun
|
||||
|
||||
@@ -149,18 +149,6 @@
|
||||
flick("deckard-reload",src)
|
||||
..()
|
||||
|
||||
/obj/item/weapon/gun/projectile/revolver/capgun
|
||||
name = "cap gun"
|
||||
desc = "Looks almost like the real thing! Ages 8 and up."
|
||||
icon_state = "revolver"
|
||||
item_state = "revolver"
|
||||
caliber = "caps"
|
||||
origin_tech = list(TECH_COMBAT = 1, TECH_MATERIAL = 1)
|
||||
handle_casings = CYCLE_CASINGS
|
||||
max_shells = 7
|
||||
ammo_type = /obj/item/ammo_casing/cap
|
||||
projectile_type = /obj/item/projectile/bullet/pistol/strong
|
||||
|
||||
/obj/item/weapon/gun/projectile/revolver/judge
|
||||
name = "\"The Judge\""
|
||||
desc = "A revolving hand-shotgun by Jindal Arms that packs the power of a 12 guage in the palm of your hand (if you don't break your wrist). Uses 12g rounds."
|
||||
|
||||
251
code/modules/projectiles/guns/toy.dm
Normal file
@@ -0,0 +1,251 @@
|
||||
/* Toys Guns!
|
||||
*
|
||||
* Contains:
|
||||
* Cap Gun
|
||||
* Shotgun
|
||||
* Pistol
|
||||
* N99 Pistol
|
||||
* Levergun
|
||||
* Revolver
|
||||
* Big Iron
|
||||
* Crossbow
|
||||
* Crossbow (Halloween)
|
||||
* Sawn Off
|
||||
* SMG
|
||||
* Laser Tag
|
||||
*/
|
||||
|
||||
/*
|
||||
* Cap Gun
|
||||
*/
|
||||
/obj/item/weapon/gun/projectile/revolver/capgun
|
||||
name = "cap gun"
|
||||
desc = "Looks almost like the real thing! Ages 8 and up."
|
||||
icon = 'icons/obj/gun_toy.dmi'
|
||||
icon_state = "cap_gun"
|
||||
item_state = "revolver"
|
||||
caliber = "caps"
|
||||
origin_tech = list(TECH_COMBAT = 1, TECH_MATERIAL = 1)
|
||||
ammo_type = /obj/item/ammo_casing/cap
|
||||
projectile_type = /obj/item/projectile/bullet/cap
|
||||
matter = list(MAT_STEEL = 1000)
|
||||
handle_casings = null
|
||||
recoil = 1 //it's a toy
|
||||
|
||||
/*
|
||||
* Shotgun
|
||||
*/
|
||||
/obj/item/weapon/gun/projectile/shotgun/pump/toy
|
||||
name = "\improper Donk-Soft shotgun"
|
||||
desc = "Donk-Soft foam shotgun! It's Donk or Don't! Ages 8 and up."
|
||||
icon = 'icons/obj/gun_toy.dmi'
|
||||
icon_state = "shotgun"
|
||||
item_state = "shotgun"
|
||||
max_shells = 6
|
||||
w_class = ITEMSIZE_LARGE
|
||||
force = 2
|
||||
slot_flags = null
|
||||
caliber = "foam"
|
||||
origin_tech = list(TECH_COMBAT = 1, TECH_MATERIAL = 1)
|
||||
load_method = SINGLE_CASING
|
||||
ammo_type = /obj/item/ammo_casing/afoam_dart
|
||||
projectile_type = /obj/item/projectile/bullet/foam_dart
|
||||
matter = list(MAT_PLASTIC = 2000)
|
||||
handle_casings = null
|
||||
recoil = null //it's a toy
|
||||
|
||||
/*
|
||||
* Pistol
|
||||
*/
|
||||
/obj/item/weapon/gun/projectile/pistol/toy
|
||||
name = "\improper Donk-Soft pistol"
|
||||
desc = "Donk-Soft foam pistol! It's Donk or Don't! Ages 8 and up."
|
||||
icon = 'icons/obj/gun_toy.dmi'
|
||||
icon_state = "pistol"
|
||||
item_state = "gun"
|
||||
magazine_type = /obj/item/ammo_magazine/mfoam_dart/pistol
|
||||
allowed_magazines = list(/obj/item/ammo_magazine/mfoam_dart/pistol)
|
||||
projectile_type = /obj/item/projectile/bullet/foam_dart
|
||||
caliber = "foam"
|
||||
origin_tech = list(TECH_COMBAT = 1, TECH_MATERIAL = 1)
|
||||
load_method = MAGAZINE
|
||||
matter = list(MAT_PLASTIC = 1000)
|
||||
recoil = null //it's a toy
|
||||
|
||||
/obj/item/weapon/gun/projectile/pistol/toy/update_icon()
|
||||
if(ammo_magazine)
|
||||
icon_state = initial(icon_state)
|
||||
else
|
||||
icon_state = "[initial(icon_state)]-e"
|
||||
|
||||
/*
|
||||
* N99 Pistol
|
||||
*/
|
||||
/obj/item/weapon/gun/projectile/pistol/toy/n99
|
||||
name = "\improper Donk-Soft commemorative pistol"
|
||||
desc = "A special made Donk-Soft pistol to promote 'Radius: Legend of the Demon Core', a popular post-apocolyptic TV series."
|
||||
icon_state = "n99"
|
||||
item_state = "gun"
|
||||
|
||||
/obj/item/weapon/gun/projectile/pistol/toy/n99/update_icon()
|
||||
if(ammo_magazine)
|
||||
icon_state = initial(icon_state)
|
||||
else
|
||||
icon_state = "[initial(icon_state)]-e"
|
||||
|
||||
/*
|
||||
* Levergun
|
||||
*/
|
||||
/obj/item/weapon/gun/projectile/shotgun/pump/toy/levergun
|
||||
name = "\improper Donk-Soft levergun"
|
||||
desc = "Donk-Soft foam levergun! Time to cowboy up! Ages 8 and up."
|
||||
icon_state = "leveraction"
|
||||
item_state = "leveraction"
|
||||
max_shells = 5
|
||||
pump_animation = "leveraction-cycling"
|
||||
|
||||
/*
|
||||
* Revolver
|
||||
*/
|
||||
/obj/item/weapon/gun/projectile/revolver/toy
|
||||
name = "\improper Donk-Soft revolver"
|
||||
desc = "Donk-Soft foam revolver! Time to cowboy up! Ages 8 and up."
|
||||
icon = 'icons/obj/gun_toy.dmi'
|
||||
icon_state = "revolver"
|
||||
item_state = "revolver"
|
||||
caliber = "foam"
|
||||
ammo_type = /obj/item/ammo_casing/afoam_dart
|
||||
projectile_type = /obj/item/projectile/bullet/foam_dart
|
||||
origin_tech = list(TECH_COMBAT = 1, TECH_MATERIAL = 1)
|
||||
load_method = SINGLE_CASING
|
||||
max_shells = 6
|
||||
matter = list(MAT_PLASTIC = 1000)
|
||||
handle_casings = null
|
||||
recoil = null //it's a toy
|
||||
|
||||
/*
|
||||
* Big Iron
|
||||
*/
|
||||
/obj/item/weapon/gun/projectile/revolver/toy/big_iron
|
||||
name = "\improper Donk-Soft big iron"
|
||||
desc = "A special made Donk-Soft pistol to promote 'A Fistful of Phoron', a popular frontier novel series."
|
||||
icon_state = "big_iron"
|
||||
item_state = "revolver"
|
||||
|
||||
/*
|
||||
* Crossbow
|
||||
*/
|
||||
/obj/item/weapon/gun/projectile/revolver/toy/crossbow
|
||||
name = "\improper Donk-Soft crossbow"
|
||||
desc = "Donk-Soft foam crossbow! It's Donk or Don't! Ages 8 and up."
|
||||
icon = 'icons/obj/gun_toy.dmi'
|
||||
icon_state = "foamcrossbow"
|
||||
item_state = "foamcrossbow"
|
||||
max_shells = 5
|
||||
|
||||
/*
|
||||
* Crossbow (Halloween)
|
||||
*/
|
||||
/obj/item/weapon/gun/projectile/revolver/toy/crossbow/halloween
|
||||
name = "\improper Donk-Soft special edition crossbow"
|
||||
desc = "A special edition Donk-Soft crossbow! Made special for your Halloween cosplay. It's Donk or Don't! Ages 8 and up."
|
||||
icon = 'icons/obj/gun_toy.dmi'
|
||||
icon_state = "foamcrossbow_halloween"
|
||||
item_state = "foamcrossbow_halloween"
|
||||
max_shells = 5
|
||||
|
||||
/*
|
||||
* Sawn Off
|
||||
*/
|
||||
/obj/item/weapon/gun/projectile/revolver/toy/sawnoff //revolver code just because it's easier
|
||||
name = "\improper Donk-Soft sawn off shotgun"
|
||||
desc = "Donk-Soft foam sawn off! It's Donk or Don't! Ages 8 and up."
|
||||
icon = 'icons/obj/gun_toy.dmi'
|
||||
icon_state = "sawnshotgun"
|
||||
item_state = "dshotgun"
|
||||
max_shells = 2
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
matter = list(MAT_PLASTIC = 1500)
|
||||
|
||||
/*
|
||||
* SMG
|
||||
*/
|
||||
/obj/item/weapon/gun/projectile/automatic/toy
|
||||
name = "\improper Donk-Soft SMG"
|
||||
desc = "Donk-Soft foam SMG! It's Donk or Don't! Ages 8 and up."
|
||||
icon = 'icons/obj/gun_toy.dmi'
|
||||
icon_state = "smg"
|
||||
caliber = "foam"
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
load_method = MAGAZINE
|
||||
origin_tech = list(TECH_COMBAT = 1, TECH_MATERIAL = 1)
|
||||
slot_flags = SLOT_BELT
|
||||
magazine_type = /obj/item/ammo_magazine/mfoam_dart/smg
|
||||
allowed_magazines = list(/obj/item/ammo_magazine/mfoam_dart/smg)
|
||||
projectile_type = /obj/item/projectile/bullet/foam_dart
|
||||
matter = list(MAT_PLASTIC = 1500)
|
||||
recoil = null //it's a toy
|
||||
|
||||
firemodes = list(
|
||||
list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, burst_accuracy=null, dispersion=null),
|
||||
list(mode_name="3-round bursts", burst=3, fire_delay=null, move_delay=2, burst_accuracy=list(0,-2,-2), dispersion=null)
|
||||
)
|
||||
|
||||
/obj/item/weapon/gun/projectile/automatic/toy/riot
|
||||
magazine_type = /obj/item/ammo_magazine/mfoam_dart/smg/riot
|
||||
|
||||
/obj/item/weapon/gun/projectile/automatic/toy/update_icon()
|
||||
if(ammo_magazine)
|
||||
icon_state = initial(icon_state)
|
||||
else
|
||||
icon_state = "[initial(icon_state)]-e"
|
||||
|
||||
/*
|
||||
* Laser Tag
|
||||
*/
|
||||
/obj/item/weapon/gun/energy/lasertag
|
||||
name = "laser tag gun"
|
||||
desc = "Standard issue weapon of the Imperial Guard"
|
||||
icon = 'icons/obj/gun_toy.dmi'
|
||||
item_state = "omnitag"
|
||||
item_state = "retro"
|
||||
origin_tech = list(TECH_COMBAT = 1, TECH_MAGNET = 2)
|
||||
matter = list(MAT_STEEL = 2000)
|
||||
projectile_type = /obj/item/projectile/beam/lasertag/blue
|
||||
cell_type = /obj/item/weapon/cell/device/weapon/recharge
|
||||
battery_lock = 1
|
||||
var/required_vest
|
||||
|
||||
/obj/item/weapon/gun/energy/lasertag/special_check(var/mob/living/carbon/human/M)
|
||||
if(ishuman(M))
|
||||
if(!istype(M.wear_suit, required_vest))
|
||||
to_chat(M, "<span class='warning'>You need to be wearing your laser tag vest!</span>")
|
||||
return 0
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/gun/energy/lasertag/blue
|
||||
icon_state = "bluetag"
|
||||
item_state = "bluetag"
|
||||
projectile_type = /obj/item/projectile/beam/lasertag/blue
|
||||
required_vest = /obj/item/clothing/suit/bluetag
|
||||
|
||||
/obj/item/weapon/gun/energy/lasertag/blue/sub
|
||||
name = "Brigader Sidearm"
|
||||
desc = "A laser tag replica of the standard issue weapon for the Spacer Union Brigade from the hit series Spacer Trail (Blue Team)."
|
||||
icon_state = "bluetwo"
|
||||
item_state = "retro"
|
||||
|
||||
/obj/item/weapon/gun/energy/lasertag/red
|
||||
icon_state = "redtag"
|
||||
item_state = "redtag"
|
||||
projectile_type = /obj/item/projectile/beam/lasertag/red
|
||||
required_vest = /obj/item/clothing/suit/redtag
|
||||
|
||||
/obj/item/weapon/gun/energy/lasertag/red/dom
|
||||
name = "Mu'tu'bi sidearm"
|
||||
desc = "A laser tag replica of the Mu'tu'bi sidearm from the hit series Spacer Trail (Red Team)."
|
||||
icon_state = "redtwo"
|
||||
item_state = "retro"
|
||||
|
||||
/obj/item/weapon/gun/energy/lasertag/omni
|
||||
projectile_type = /obj/item/projectile/beam/lasertag/omni
|
||||
@@ -322,10 +322,6 @@
|
||||
embed_chance = 0
|
||||
sharp = FALSE
|
||||
|
||||
/obj/item/projectile/bullet/blank/cap/process()
|
||||
loc = null
|
||||
qdel(src)
|
||||
|
||||
/* BB Rounds */
|
||||
/obj/item/projectile/bullet/bb // Generic single BB
|
||||
name = "BB"
|
||||
@@ -344,4 +340,54 @@
|
||||
pellets = 6
|
||||
range_step = 1
|
||||
spread_step = 10
|
||||
silenced = TRUE
|
||||
silenced = TRUE
|
||||
|
||||
/* toy projectiles */
|
||||
/obj/item/projectile/bullet/cap
|
||||
name = "cap"
|
||||
desc = "SNAP!"
|
||||
damage = 0 // It's a damn toy.
|
||||
embed_chance = 0
|
||||
nodamage = TRUE
|
||||
sharp = FALSE
|
||||
damage_type = HALLOSS
|
||||
impact_effect_type = null
|
||||
fire_sound = 'sound/effects/snap.ogg'
|
||||
combustion = FALSE
|
||||
|
||||
/obj/item/projectile/bullet/cap/process()
|
||||
loc = null
|
||||
qdel(src)
|
||||
|
||||
/obj/item/projectile/bullet/foam_dart
|
||||
name = "foam dart"
|
||||
desc = "I hope you're wearing eye protection."
|
||||
damage = 0 // It's a damn toy.
|
||||
embed_chance = 0
|
||||
nodamage = TRUE
|
||||
sharp = FALSE
|
||||
damage_type = HALLOSS
|
||||
impact_effect_type = null
|
||||
fire_sound = 'sound/items/syringeproj.ogg'
|
||||
combustion = FALSE
|
||||
icon = 'icons/obj/gun_toy.dmi'
|
||||
icon_state = "foamdart_proj"
|
||||
range = 15
|
||||
|
||||
/obj/item/projectile/bullet/foam_dart/on_impact(var/atom/A)
|
||||
. = ..()
|
||||
var/turf/T = get_turf(loc)
|
||||
if(istype(T))
|
||||
new /obj/item/ammo_casing/afoam_dart(get_turf(loc))
|
||||
|
||||
/obj/item/projectile/bullet/foam_dart/on_range(var/atom/A)
|
||||
. = ..()
|
||||
var/turf/T = get_turf(loc)
|
||||
if(istype(T))
|
||||
new /obj/item/ammo_casing/afoam_dart(get_turf(loc))
|
||||
|
||||
/obj/item/projectile/bullet/foam_dart/riot
|
||||
name = "riot foam dart"
|
||||
desc = "Whose smart idea was it to use toys as crowd control? Ages 18 and up."
|
||||
agony = 50
|
||||
icon_state = "foamdart_riot_proj"
|
||||
|
Before Width: | Height: | Size: 9.4 KiB After Width: | Height: | Size: 9.6 KiB |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 123 KiB After Width: | Height: | Size: 124 KiB |
|
Before Width: | Height: | Size: 248 KiB After Width: | Height: | Size: 250 KiB |
|
Before Width: | Height: | Size: 208 KiB After Width: | Height: | Size: 210 KiB |
|
Before Width: | Height: | Size: 618 KiB After Width: | Height: | Size: 624 KiB |
BIN
icons/obj/ammo_boxes.dmi
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
icons/obj/gun_toy.dmi
Normal file
|
After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 81 KiB After Width: | Height: | Size: 79 KiB |
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 418 KiB After Width: | Height: | Size: 426 KiB |
@@ -33527,7 +33527,7 @@
|
||||
"gWO" = (
|
||||
/obj/structure/table/rack,
|
||||
/obj/effect/floor_decal/rust,
|
||||
/obj/item/toy/crossbow,
|
||||
/obj/item/weapon/gun/projectile/revolver/toy/crossbow,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/tether/surfacebase/funny/hideyhole)
|
||||
"gYx" = (
|
||||
@@ -36697,8 +36697,8 @@
|
||||
/area/maintenance/lower/trash_pit)
|
||||
"qhs" = (
|
||||
/obj/structure/table/rack,
|
||||
/obj/item/toy/crossbow,
|
||||
/obj/item/weapon/coin/silver,
|
||||
/obj/item/weapon/gun/projectile/revolver/toy/crossbow,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/tether/surfacebase/funny/hideyhole)
|
||||
"qjE" = (
|
||||
|
||||
@@ -32593,7 +32593,6 @@
|
||||
/obj/item/weapon/soap/nanotrasen,
|
||||
/obj/item/weapon/soap/deluxe,
|
||||
/obj/item/weapon/staff/gentcane,
|
||||
/obj/item/toy/crossbow,
|
||||
/obj/item/toy/eight_ball/conch,
|
||||
/obj/item/weapon/cell/potato,
|
||||
/obj/structure/cable/green{
|
||||
@@ -32602,6 +32601,11 @@
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/obj/item/device/megaphone,
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
/obj/random/cutout,
|
||||
/obj/item/weapon/gun/projectile/revolver/toy/crossbow,
|
||||
>>>>>>> 1432ca2b223... Merge pull request #12253 from GhostActual/Donk-Co.-Toys
|
||||
/turf/simulated/floor/lino,
|
||||
/area/tether/surfacebase/entertainment/backstage)
|
||||
"bcV" = (
|
||||
|
||||
BIN
sound/items/sonic_driver.ogg
Normal file
@@ -3750,7 +3750,11 @@
|
||||
#include "code\modules\projectiles\gun.dm"
|
||||
#include "code\modules\projectiles\gun_ch.dm"
|
||||
#include "code\modules\projectiles\projectile.dm"
|
||||
<<<<<<< HEAD
|
||||
#include "code\modules\projectiles\projectile_ch.dm"
|
||||
=======
|
||||
#include "code\modules\projectiles\ammunition\ammo_boxes.dm"
|
||||
>>>>>>> 1432ca2b223... Merge pull request #12253 from GhostActual/Donk-Co.-Toys
|
||||
#include "code\modules\projectiles\ammunition\magazines.dm"
|
||||
#include "code\modules\projectiles\ammunition\magazines_vr.dm"
|
||||
#include "code\modules\projectiles\ammunition\magazines_yw.dm"
|
||||
@@ -3771,7 +3775,11 @@
|
||||
#include "code\modules\projectiles\guns\magic.dm"
|
||||
#include "code\modules\projectiles\guns\modular_guns.dm"
|
||||
#include "code\modules\projectiles\guns\projectile.dm"
|
||||
<<<<<<< HEAD
|
||||
#include "code\modules\projectiles\guns\projectile_ch.dm"
|
||||
=======
|
||||
#include "code\modules\projectiles\guns\toy.dm"
|
||||
>>>>>>> 1432ca2b223... Merge pull request #12253 from GhostActual/Donk-Co.-Toys
|
||||
#include "code\modules\projectiles\guns\vox.dm"
|
||||
#include "code\modules\projectiles\guns\energy\bsharpoon_vr.dm"
|
||||
#include "code\modules\projectiles\guns\energy\crestrose_vr.dm"
|
||||
|
||||