mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-18 02:24:11 +01:00
Merge pull request #11170 from Fox-McCloud/trick-revolver
Adds Trick Revolver
This commit is contained in:
@@ -182,6 +182,14 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
|
||||
cost = 3
|
||||
job = list("Clown")
|
||||
|
||||
/datum/uplink_item/jobspecific/trick_revolver
|
||||
name = "Trick Revolver"
|
||||
desc = "A revolver that will fire backwards and kill whoever attempts to use it. Perfect for those pesky vigilante or just a good laugh."
|
||||
reference = "CTR"
|
||||
item = /obj/item/toy/russian_revolver/trick_revolver
|
||||
cost = 1
|
||||
job = list("Clown")
|
||||
|
||||
//mime
|
||||
/datum/uplink_item/jobspecific/caneshotgun
|
||||
name = "Cane Shotgun and Assassination Shells"
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
|
||||
|
||||
/mob/proc/rightandwrong(var/summon_type) //0 = Summon Guns, 1 = Summon Magic
|
||||
var/list/gunslist = list("taser","egun","laser","revolver","detective","c20r","nuclear","deagle","gyrojet","pulse","suppressed","cannon","doublebarrel","shotgun","combatshotgun","bulldog","mateba","sabr","crossbow","saw","car","boltaction","arg","uzi","turret","pulsecarbine","decloner","mindflayer","kinetic","advplasmacutter","wormhole","wt550","grenadelauncher","medibeam")
|
||||
/mob/proc/rightandwrong(summon_type, revolver_fight = FALSE, fake_revolver_fight = FALSE) //0 = Summon Guns, 1 = Summon Magic
|
||||
var/list/gunslist = list("taser","egun","laser","revolver","detective","c20r","nuclear","deagle","gyrojet","pulse","suppressed","cannon","doublebarrel","shotgun","combatshotgun","bulldog","mateba","sabr","crossbow","saw","car","boltaction","arg","uzi","turret","pulsecarbine","decloner","mindflayer","kinetic","advplasmacutter","wormhole","wt550","grenadelauncher","medibeam", "fakerevolver")
|
||||
var/list/magiclist = list("fireball","smoke","blind","mindswap","forcewall","knock","horsemask","charge", "summonitem", "wandnothing", "wanddeath", "wandresurrection", "wandpolymorph", "wandteleport", "wanddoor", "wandfireball", "staffhealing", "armor", "scrying", "staffdoor", "special","voodoo","special")
|
||||
var/list/magicspeciallist = list("staffchange","staffanimation", "wandbelt", "contract", "staffchaos","necromantic")
|
||||
|
||||
to_chat(usr, "<B>You summoned [summon_type ? "magic" : "guns"]!</B>")
|
||||
message_admins("[key_name_admin(usr)] summoned [summon_type ? "magic" : "guns"]!")
|
||||
message_admins("[key_name_admin(usr)] summoned [summon_type ? "magic" : "guns"]! ([revolver_fight ? "Revolver duel!" : ""] [fake_revolver_fight ? "Suicidal revolver duel!" : ""])")
|
||||
|
||||
for(var/mob/living/carbon/human/H in GLOB.player_list)
|
||||
if(H.stat == 2 || !(H.client))
|
||||
@@ -17,6 +17,13 @@
|
||||
var/randomizeguns = pick(gunslist)
|
||||
var/randomizemagic = pick(magiclist)
|
||||
var/randomizemagicspecial = pick(magicspeciallist)
|
||||
if(revolver_fight)
|
||||
randomizeguns = "revolver"
|
||||
if(fake_revolver_fight)
|
||||
if(prob(50))
|
||||
randomizeguns = "revolver"
|
||||
else
|
||||
randomizeguns = "fakerevolver"
|
||||
if(!summon_type)
|
||||
switch(randomizeguns)
|
||||
if("taser")
|
||||
@@ -88,6 +95,8 @@
|
||||
new /obj/item/gun/projectile/revolver/grenadelauncher(get_turf(H))
|
||||
if("medibeam")
|
||||
new /obj/item/gun/medbeam(get_turf(H))
|
||||
if("fakerevolver")
|
||||
new /obj/item/toy/russian_revolver/trick_revolver(get_turf(H)) //lol
|
||||
|
||||
playsound(get_turf(H), 'sound/magic/summon_guns.ogg', 50, 1)
|
||||
else
|
||||
|
||||
@@ -1372,7 +1372,8 @@ obj/item/toy/cards/deck/syndicate/black
|
||||
force = 5
|
||||
origin_tech = "combat=1"
|
||||
attack_verb = list("struck", "hit", "bashed")
|
||||
var/bullet_position = 1
|
||||
var/bullets_left = 0
|
||||
var/max_shots = 6
|
||||
|
||||
/obj/item/toy/russian_revolver/suicide_act(mob/user)
|
||||
user.visible_message("<span class='suicide'>[user] quickly loads six bullets into [src]'s cylinder and points it at [user.p_their()] head before pulling the trigger! It looks like [user.p_theyre()] trying to commit suicide.</span>")
|
||||
@@ -1380,46 +1381,70 @@ obj/item/toy/cards/deck/syndicate/black
|
||||
return BRUTELOSS
|
||||
|
||||
/obj/item/toy/russian_revolver/New()
|
||||
spin_cylinder()
|
||||
..()
|
||||
|
||||
spin_cylinder()
|
||||
|
||||
/obj/item/toy/russian_revolver/attack_self(mob/user)
|
||||
if(!bullet_position)
|
||||
user.visible_message("<span class='warning'>[user] loads a bullet into [src]'s cylinder.</span>")
|
||||
bullet_position = 1
|
||||
else
|
||||
if(!bullets_left)
|
||||
user.visible_message("<span class='warning'>[user] loads a bullet into [src]'s cylinder before spinning it.</span>")
|
||||
spin_cylinder()
|
||||
user.visible_message("<span class='warning'>[user] spins the cylinder on [src]!</span>")
|
||||
|
||||
/obj/item/toy/russian_revolver/attack(mob/living/carbon/human/M, mob/living/carbon/human/user)
|
||||
if(M != user) //can't use this on other people
|
||||
return ..()
|
||||
if(!bullet_position)
|
||||
to_chat(user, "<span class='notice'>[src] is empty.</span>")
|
||||
return
|
||||
if(!(user.has_organ("head"))) //For sanity
|
||||
to_chat(user, "<span class='notice'>Playing this game without a head would be classed as cheating.</span>")
|
||||
return
|
||||
user.visible_message("<span class='danger'>[user] points [src] at [user.p_their()] head, ready to pull the trigger!</span>")
|
||||
if(do_after(user, 30, target = user))
|
||||
if(bullet_position > 1)
|
||||
user.visible_message("<span class='danger'>*click*</span>")
|
||||
playsound(src, 'sound/weapons/empty.ogg', 100, 1)
|
||||
bullet_position--
|
||||
return
|
||||
else
|
||||
bullet_position = null
|
||||
playsound(src, 'sound/weapons/gunshots/gunshot_strong.ogg', 50, 1)
|
||||
user.visible_message("<span class='danger'>[src] goes off!</span>")
|
||||
user.apply_damage(200, BRUTE, "head", sharp = 1, used_weapon = "Self-inflicted gunshot wound to the head.")
|
||||
user.death()
|
||||
else
|
||||
user.visible_message("<span class='danger'>[user] lowers [src] from [user.p_their()] head.</span>")
|
||||
user.visible_message("<span class='warning'>[user] spins the cylinder on [src]!</span>")
|
||||
spin_cylinder()
|
||||
|
||||
/obj/item/toy/russian_revolver/attack(mob/M, mob/living/user)
|
||||
return
|
||||
|
||||
/obj/item/toy/russian_revolver/afterattack(atom/target, mob/user, proximity)
|
||||
shoot_gun(user)
|
||||
|
||||
/obj/item/toy/russian_revolver/proc/spin_cylinder()
|
||||
bullet_position = rand(1,6)
|
||||
bullets_left = rand(1, max_shots)
|
||||
|
||||
/obj/item/toy/russian_revolver/proc/post_shot(mob/user)
|
||||
return
|
||||
|
||||
/obj/item/toy/russian_revolver/proc/shoot_gun(mob/living/carbon/human/user)
|
||||
if(bullets_left > 1)
|
||||
bullets_left--
|
||||
user.visible_message("<span class='danger'>*click*</span>")
|
||||
playsound(src, 'sound/weapons/empty.ogg', 100, 1)
|
||||
return FALSE
|
||||
if(bullets_left == 1)
|
||||
bullets_left = 0
|
||||
var/zone = "head"
|
||||
if(!(user.has_organ(zone))) // If they somehow don't have a head.
|
||||
zone = "chest"
|
||||
playsound(src, 'sound/weapons/gunshots/gunshot_strong.ogg', 50, 1)
|
||||
user.visible_message("<span class='danger'>[src] goes off!</span>")
|
||||
post_shot(user)
|
||||
user.apply_damage(300, BRUTE, zone, sharp = TRUE, used_weapon = "Self-inflicted gunshot wound to the [zone].")
|
||||
user.bleed(BLOOD_VOLUME_NORMAL)
|
||||
user.death() // Just in case
|
||||
return TRUE
|
||||
else
|
||||
to_chat(user, "<span class='warning'>[src] needs to be reloaded.</span>")
|
||||
return FALSE
|
||||
|
||||
/obj/item/toy/russian_revolver/trick_revolver
|
||||
name = "\improper .357 revolver"
|
||||
desc = "A suspicious revolver. Uses .357 ammo."
|
||||
icon_state = "revolver"
|
||||
max_shots = 1
|
||||
var/fake_bullets = 0
|
||||
|
||||
/obj/item/toy/russian_revolver/trick_revolver/New()
|
||||
..()
|
||||
fake_bullets = rand(2, 7)
|
||||
|
||||
/obj/item/toy/russian_revolver/trick_revolver/examine(mob/user) //Sneaky sneaky
|
||||
..()
|
||||
to_chat(user, "Has [fake_bullets] round\s remaining.")
|
||||
to_chat(user, "[fake_bullets] of those are live rounds.")
|
||||
|
||||
/obj/item/toy/russian_revolver/trick_revolver/post_shot(user)
|
||||
to_chat(user, "<span class='danger'>[src] did look pretty dodgey!</span>")
|
||||
SEND_SOUND(user, 'sound/misc/sadtrombone.ogg') //HONK
|
||||
/*
|
||||
* Rubber Chainsaw
|
||||
*/
|
||||
|
||||
@@ -113,7 +113,9 @@
|
||||
<A href='?src=[UID()];secretsfun=schoolgirl'>Japanese Animes Mode</A>
|
||||
<A href='?src=[UID()];secretsfun=eagles'>Egalitarian Station Mode</A><BR>
|
||||
<A href='?src=[UID()];secretsfun=guns'>Summon Guns</A>
|
||||
<A href='?src=[UID()];secretsfun=magic'>Summon Magic</A>
|
||||
<A href='?src=[UID()];secretsfun=magic'>Summon Magic</A>
|
||||
<A href='?src=[UID()];secretsfun=revolver'>Summon Revolver Duel</A>
|
||||
<A href='?src=[UID()];secretsfun=fakerevolver'>Summon Suicidal Revolver Duel</A>
|
||||
<BR>
|
||||
<A href='?src=[UID()];secretsfun=rolldice'>Roll the Dice</A><BR>
|
||||
<BR>
|
||||
|
||||
@@ -2843,11 +2843,19 @@
|
||||
if("guns")
|
||||
feedback_inc("admin_secrets_fun_used",1)
|
||||
feedback_add_details("admin_secrets_fun_used","SG")
|
||||
usr.rightandwrong(0)
|
||||
usr.rightandwrong(FALSE)
|
||||
if("magic")
|
||||
feedback_inc("admin_secrets_fun_used",1)
|
||||
feedback_add_details("admin_secrets_fun_used","SM")
|
||||
usr.rightandwrong(1)
|
||||
usr.rightandwrong(TRUE)
|
||||
if("revolver")
|
||||
feedback_inc("admin_secrets_fun_used", 1)
|
||||
feedback_add_details("admin_secrets_fun_used", "SRD")
|
||||
usr.rightandwrong(FALSE, revolver_fight = TRUE)
|
||||
if("fakerevolver")
|
||||
feedback_inc("admin_secrets_fun_used", 1)
|
||||
feedback_add_details("admin_secrets_fun_used", "SFD")
|
||||
usr.rightandwrong(FALSE, fake_revolver_fight = TRUE)
|
||||
if("tdomereset")
|
||||
var/delete_mobs = alert("Clear all mobs?","Confirm","Yes","No","Cancel")
|
||||
if(delete_mobs == "Cancel")
|
||||
|
||||
@@ -55,6 +55,11 @@
|
||||
then click where you want to fire. After firing, you will need to pump the gun, by clicking on the gun in your hand. To reload, load more shotgun \
|
||||
shells into the gun."
|
||||
|
||||
/obj/item/toy/russian_revolver/trick_revolver //oh no
|
||||
description_info = "This is a ballistic weapon. To fire the weapon, have your gun mode set to 'fire', \
|
||||
then click where you want to fire. To reload, click the weapon in your hand to unload (if needed), then add the appropriate ammo. The description \
|
||||
will tell you what caliber you need."
|
||||
|
||||
//*******
|
||||
//*Melee*
|
||||
//*******
|
||||
|
||||
Reference in New Issue
Block a user