mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2026-08-24 21:57:53 +01:00
Merge branch 'master' into upstream-merge-12463
This commit is contained in:
@@ -1,20 +1,18 @@
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
/*
|
||||
* Sidearm Lethal
|
||||
*/
|
||||
>>>>>>> 7eb5c88bcd... Merge pull request #12463 from GhostActual/gunbox_borked
|
||||
/obj/item/gunbox
|
||||
name = "detective's gun box"
|
||||
desc = "A secure box containing a Detective's sidearm."
|
||||
name = "sidearm box"
|
||||
desc = "A secure box containing a lethal sidearm."
|
||||
icon = 'icons/obj/storage.dmi'
|
||||
icon_state = "gunbox"
|
||||
w_class = ITEMSIZE_HUGE
|
||||
|
||||
/obj/item/gunbox/attack_self(mob/living/user)
|
||||
var/list/options = list()
|
||||
options[".45 Pistol"] = list(/obj/item/weapon/gun/projectile/colt/detective, /obj/item/ammo_magazine/m45/rubber, /obj/item/ammo_magazine/m45/rubber)
|
||||
options[".45 Revolver"] = list(/obj/item/weapon/gun/projectile/revolver/detective45, /obj/item/ammo_magazine/s45/rubber, /obj/item/ammo_magazine/s45/rubber)
|
||||
options["M1911 (.45)"] = list(/obj/item/weapon/gun/projectile/colt/detective, /obj/item/ammo_magazine/m45/rubber, /obj/item/ammo_magazine/m45/rubber)
|
||||
options["MT Mk58 (.45)"] = list(/obj/item/weapon/gun/projectile/sec, /obj/item/ammo_magazine/m45/rubber, /obj/item/ammo_magazine/m45/rubber)
|
||||
options["MarsTech R1 (.45)"] = list(/obj/item/weapon/gun/projectile/revolver/detective45, /obj/item/ammo_magazine/s45/rubber, /obj/item/ammo_magazine/s45/rubber)
|
||||
options["MarsTech P92X (9mm)"] = list(/obj/item/weapon/gun/projectile/p92x/rubber, /obj/item/ammo_magazine/m9mm/rubber, /obj/item/ammo_magazine/m9mm/rubber)
|
||||
var/choice = tgui_input_list(user,"Would you prefer a pistol or a revolver?", "Gun!", options)
|
||||
if(src && choice)
|
||||
var/list/things_to_spawn = options[choice]
|
||||
@@ -22,8 +20,6 @@
|
||||
var/atom/movable/AM = new new_type(get_turf(src))
|
||||
if(istype(AM, /obj/item/weapon/gun))
|
||||
to_chat(user, "You have chosen \the [AM]. Say hello to your new friend.")
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
qdel(src)
|
||||
|
||||
/*
|
||||
@@ -43,5 +39,4 @@
|
||||
var/atom/movable/AM = new new_type(get_turf(src))
|
||||
if(istype(AM, /obj/item/weapon/gun))
|
||||
to_chat(user, "You have chosen \the [AM]. Say hello to your new friend.")
|
||||
>>>>>>> 7eb5c88bcd... Merge pull request #12463 from GhostActual/gunbox_borked
|
||||
qdel(src)
|
||||
@@ -460,9 +460,9 @@
|
||||
/obj/item/ammo_magazine/s44
|
||||
),
|
||||
prob(1);list(
|
||||
/obj/item/weapon/gun/projectile/revolver/webley/auto,
|
||||
/obj/item/ammo_magazine/s44,
|
||||
/obj/item/ammo_magazine/s44
|
||||
/obj/item/weapon/gun/projectile/revolver/consul,
|
||||
/obj/item/ammo_magazine/s44/rubber,
|
||||
/obj/item/ammo_magazine/s44/rubber
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@@ -244,7 +244,7 @@
|
||||
/obj/item/clothing/accessory/badge/holo/detective,
|
||||
/obj/item/clothing/gloves/forensic, //CHOMP Edit replaces black gloves
|
||||
/obj/item/gunbox, //CHOMP Edit undoes vorestation removal and adds back gunbox
|
||||
/obj/item/weapon/gun/energy/stunrevolver/vintage,
|
||||
/obj/item/gunbox/stun,
|
||||
/obj/item/weapon/storage/belt/detective,
|
||||
/obj/item/weapon/storage/box/evidence,
|
||||
/obj/item/device/radio/headset/headset_sec,
|
||||
|
||||
@@ -49,6 +49,7 @@ GLOBAL_DATUM(character_directory, /datum/character_directory)
|
||||
// These are the three vars we're trying to find
|
||||
// The approach differs based on the mob the client is controlling
|
||||
var/name = null
|
||||
var/species = null
|
||||
var/ooc_notes = null
|
||||
var/flavor_text = null
|
||||
var/tag = C.prefs.directory_tag || "Unset"
|
||||
@@ -63,12 +64,14 @@ GLOBAL_DATUM(character_directory, /datum/character_directory)
|
||||
if(!find_record("name", H.real_name, data_core.hidden_general))
|
||||
continue
|
||||
name = H.real_name
|
||||
species = "[H.custom_species ? H.custom_species : H.species.name]"
|
||||
ooc_notes = H.ooc_notes
|
||||
flavor_text = H.flavor_texts["general"]
|
||||
|
||||
if(isAI(C.mob))
|
||||
var/mob/living/silicon/ai/A = C.mob
|
||||
name = "[A.name] (Artificial Intelligence)"
|
||||
name = A.name
|
||||
species = "Artificial Intelligence"
|
||||
ooc_notes = A.ooc_notes
|
||||
flavor_text = null // No flavor text for AIs :c
|
||||
|
||||
@@ -76,7 +79,8 @@ GLOBAL_DATUM(character_directory, /datum/character_directory)
|
||||
var/mob/living/silicon/robot/R = C.mob
|
||||
if(R.scrambledcodes || (R.module && R.module.hide_on_manifest))
|
||||
continue
|
||||
name = "[R.name] ([R.modtype] [R.braintype])"
|
||||
name = R.name
|
||||
species = "[R.modtype] [R.braintype]"
|
||||
ooc_notes = R.ooc_notes
|
||||
flavor_text = R.flavor_text
|
||||
|
||||
@@ -87,6 +91,7 @@ GLOBAL_DATUM(character_directory, /datum/character_directory)
|
||||
|
||||
directory_mobs.Add(list(list(
|
||||
"name" = name,
|
||||
"species" = species,
|
||||
"ooc_notes" = ooc_notes,
|
||||
"tag" = tag,
|
||||
"erptag" = erptag,
|
||||
|
||||
@@ -211,12 +211,13 @@ var/datum/species/shapeshifter/promethean/prometheans
|
||||
H.adjust_nutrition(rand(10, 20))
|
||||
if(H.clean_blood(1))
|
||||
H.adjust_nutrition(rand(5, 15))
|
||||
if(H.r_hand)
|
||||
if(H.r_hand.clean_blood())
|
||||
H.adjust_nutrition(rand(5, 15))
|
||||
if(H.l_hand)
|
||||
if(H.l_hand.clean_blood())
|
||||
H.adjust_nutrition(rand(5, 15))
|
||||
if(!(H.gloves || (H.wear_suit && (H.wear_suit.body_parts_covered & HANDS))))
|
||||
if(H.r_hand)
|
||||
if(H.r_hand.clean_blood())
|
||||
H.adjust_nutrition(rand(5, 15))
|
||||
if(H.l_hand)
|
||||
if(H.l_hand.clean_blood())
|
||||
H.adjust_nutrition(rand(5, 15))
|
||||
if(H.head)
|
||||
if(H.head.clean_blood())
|
||||
H.update_inv_head(0)
|
||||
|
||||
@@ -16,10 +16,9 @@
|
||||
spawn_flags = SPECIES_CAN_JOIN
|
||||
wikilink="https://wiki.vore-station.net/Promethean"
|
||||
genders = list(MALE, FEMALE, PLURAL, NEUTER)
|
||||
|
||||
color_mult = 1
|
||||
mob_size = MOB_MEDIUM //As of writing, original was MOB_SMALL - Allows normal swapping
|
||||
|
||||
//var/mob/living/simple_mob/slime/promethean/stored_blob = null
|
||||
appearance_flags = HAS_SKIN_COLOR | HAS_EYE_COLOR | HAS_HAIR_COLOR | RADIATION_GLOWS | HAS_UNDERWEAR
|
||||
|
||||
inherent_verbs = list(
|
||||
@@ -32,6 +31,48 @@
|
||||
/mob/living/carbon/human/proc/shapeshifter_select_wings,
|
||||
/mob/living/carbon/human/proc/shapeshifter_select_tail,
|
||||
/mob/living/carbon/human/proc/shapeshifter_select_ears,
|
||||
/mob/living/carbon/human/proc/prommie_blobform,
|
||||
/mob/living/proc/set_size,
|
||||
/mob/living/carbon/human/proc/promethean_select_opaqueness,
|
||||
)
|
||||
|
||||
/mob/living/carbon/human/proc/prommie_blobform()
|
||||
set name = "Toggle Blobform"
|
||||
set desc = "Switch between amorphous and humanoid forms."
|
||||
set category = "Abilities"
|
||||
set hidden = FALSE
|
||||
|
||||
var/atom/movable/to_locate = temporary_form || src
|
||||
if(!isturf(to_locate.loc))
|
||||
to_chat(to_locate,"<span class='warning'>You need more space to perform this action!</span>")
|
||||
return
|
||||
/*
|
||||
//Blob form
|
||||
if(temporary_form)
|
||||
if(temporary_form.stat)
|
||||
to_chat(temporary_form,"<span class='warning'>You can only do this while not stunned.</span>")
|
||||
else
|
||||
prommie_outofblob(temporary_form)
|
||||
*/
|
||||
//Human form
|
||||
else if(stat || paralysis || stunned || weakened || restrained())
|
||||
to_chat(src,"<span class='warning'>You can only do this while not stunned.</span>")
|
||||
return
|
||||
else
|
||||
prommie_intoblob()
|
||||
|
||||
/datum/species/shapeshifter/promethean/handle_death(var/mob/living/carbon/human/H)
|
||||
if(!H)
|
||||
return // Iono!
|
||||
|
||||
if(H.temporary_form)
|
||||
H.forceMove(H.temporary_form.drop_location())
|
||||
H.ckey = H.temporary_form.ckey
|
||||
QDEL_NULL(H.temporary_form)
|
||||
//else if(H.stored_blob) // Should prevent phantom blobs in the aether. I don't anticipate this being an issue, but if it is just uncomment.
|
||||
// qdel(stored_blob)
|
||||
// stored_blob = null
|
||||
|
||||
spawn(1)
|
||||
if(H)
|
||||
H.gib()
|
||||
@@ -0,0 +1,498 @@
|
||||
// Prommies are slimes, lets make them a subtype of slimes.
|
||||
/mob/living/simple_mob/slime/promethean
|
||||
name = "Promethean Blob"
|
||||
desc = "A promethean expressing their true form."
|
||||
//ai_holder_type = null
|
||||
color = null // Uses a special icon_state.
|
||||
slime_color = "rainbow"
|
||||
unity = TRUE
|
||||
water_resist = 100 // Lets not kill the prommies
|
||||
cores = 0
|
||||
movement_cooldown = 3
|
||||
//appearance_flags = RADIATION_GLOWS
|
||||
shock_resist = 0 // Lets not be immune to zaps.
|
||||
friendly = list("nuzzles", "glomps", "snuggles", "cuddles", "squishes") // lets be cute :3
|
||||
melee_damage_upper = 0
|
||||
melee_damage_lower = 0
|
||||
player_msg = "You're a little squisher! Your cuteness level has increased tenfold."
|
||||
heat_damage_per_tick = 20 // Hot and cold are bad, but cold is AS bad for prommies as it is for slimes.
|
||||
cold_damage_per_tick = 20
|
||||
//glow_range = 0
|
||||
//glow_intensity = 0
|
||||
|
||||
var/mob/living/carbon/human/humanform
|
||||
var/datum/modifier/healing
|
||||
|
||||
var/obj/prev_left_hand
|
||||
var/obj/prev_right_hand
|
||||
var/human_brute = 0
|
||||
var/human_burn = 0
|
||||
var/is_wide = FALSE
|
||||
var/rad_glow = 0
|
||||
|
||||
var/list/default_emotes = list(
|
||||
/decl/emote/audible/squish,
|
||||
/decl/emote/audible/chirp,
|
||||
/decl/emote/visible/bounce,
|
||||
/decl/emote/visible/jiggle,
|
||||
/decl/emote/visible/lightup,
|
||||
/decl/emote/visible/vibrate,
|
||||
/decl/emote/visible/flip,
|
||||
/decl/emote/visible/spin,
|
||||
/decl/emote/visible/floorspin
|
||||
)
|
||||
/mob/living/simple_mob/slime/promethean/Initialize(mapload, null)
|
||||
//verbs -= /mob/living/proc/ventcrawl
|
||||
verbs += /mob/living/simple_mob/slime/promethean/proc/prommie_blobform
|
||||
verbs += /mob/living/proc/set_size
|
||||
verbs += /mob/living/proc/hide
|
||||
verbs += /mob/living/simple_mob/proc/animal_nom
|
||||
verbs += /mob/living/proc/shred_limb
|
||||
verbs += /mob/living/simple_mob/slime/promethean/proc/toggle_expand
|
||||
verbs += /mob/living/simple_mob/slime/promethean/proc/prommie_select_colour
|
||||
verbs += /mob/living/simple_mob/slime/promethean/proc/toggle_shine
|
||||
update_mood()
|
||||
if(rad_glow)
|
||||
rad_glow = CLAMP(rad_glow,0,250)
|
||||
set_light(max(1,min(5,rad_glow/15)), max(1,min(10,rad_glow/25)), color)
|
||||
return ..()
|
||||
|
||||
/mob/living/simple_mob/slime/promethean/update_icon()
|
||||
icon_living = "[icon_state_override ? "[icon_state_override] slime" : "slime"] [is_wide ? "adult" : "baby"][""]"
|
||||
..()
|
||||
|
||||
/mob/living/simple_mob/slime/promethean/Destroy()
|
||||
humanform = null
|
||||
vore_organs = null
|
||||
vore_selected = null
|
||||
set_light(0)
|
||||
return ..()
|
||||
|
||||
/mob/living/carbon/human/Destroy()
|
||||
if(stored_blob)
|
||||
stored_blob = null
|
||||
qdel(stored_blob)
|
||||
return ..()
|
||||
|
||||
/mob/living/simple_mob/slime/promethean/Stat()
|
||||
..()
|
||||
if(humanform)
|
||||
humanform.species.Stat(humanform)
|
||||
|
||||
/mob/living/simple_mob/slime/promethean/handle_special() // Should disable default slime healing, we'll use nutrition based heals instead.
|
||||
if(rad_glow)
|
||||
rad_glow = CLAMP(rad_glow,0,250)
|
||||
set_light(max(1,min(5,rad_glow/15)), max(1,min(10,rad_glow/25)), color)
|
||||
else
|
||||
set_light(0)
|
||||
update_icon()
|
||||
|
||||
if(!humanform) // If we somehow have a blob with no human, lets just clean up.
|
||||
log_debug("Cleaning up blob with no prommie!")
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
//Constructor allows passing the human to sync damages
|
||||
/mob/living/simple_mob/slime/promethean/New(var/newloc, var/mob/living/carbon/human/H)
|
||||
..()
|
||||
if(H)
|
||||
humanform = H
|
||||
updatehealth()
|
||||
|
||||
else
|
||||
qdel(src)
|
||||
|
||||
/mob/living/simple_mob/slime/promethean/updatehealth()
|
||||
if(!humanform)
|
||||
return ..()
|
||||
|
||||
//Set the max
|
||||
maxHealth = humanform.getMaxHealth()*2 //HUMANS, and their 'double health', bleh.
|
||||
//Set us to their health, but, human health ignores robolimbs so we do it 'the hard way'
|
||||
human_brute = humanform.getActualBruteLoss()
|
||||
human_burn = humanform.getActualFireLoss()
|
||||
health = maxHealth - humanform.getOxyLoss() - humanform.getToxLoss() - humanform.getCloneLoss() - human_brute - human_burn
|
||||
|
||||
//Alive, becoming dead
|
||||
if((stat < DEAD) && (health <= 0))
|
||||
death()
|
||||
|
||||
//Overhealth
|
||||
if(health > getMaxHealth())
|
||||
health = getMaxHealth()
|
||||
|
||||
//Grab any other interesting values
|
||||
confused = humanform.confused
|
||||
radiation = humanform.radiation
|
||||
paralysis = humanform.paralysis
|
||||
|
||||
//Update our hud if we have one
|
||||
if(healths)
|
||||
if(stat != DEAD)
|
||||
var/heal_per = (health / getMaxHealth()) * 100
|
||||
switch(heal_per)
|
||||
if(100 to INFINITY)
|
||||
healths.icon_state = "health0"
|
||||
if(80 to 100)
|
||||
healths.icon_state = "health1"
|
||||
if(60 to 80)
|
||||
healths.icon_state = "health2"
|
||||
if(40 to 60)
|
||||
healths.icon_state = "health3"
|
||||
if(20 to 40)
|
||||
healths.icon_state = "health4"
|
||||
if(0 to 20)
|
||||
healths.icon_state = "health5"
|
||||
else
|
||||
healths.icon_state = "health6"
|
||||
else
|
||||
healths.icon_state = "health7"
|
||||
|
||||
// All the damage and such to the blob translates to the human
|
||||
/mob/living/simple_mob/slime/promethean/apply_effect(var/effect = 0, var/effecttype = STUN, var/blocked = 0, var/check_protection = 1)
|
||||
if(humanform)
|
||||
return humanform.apply_effect(effect, effecttype, blocked, check_protection)
|
||||
else
|
||||
return ..()
|
||||
|
||||
/mob/living/simple_mob/slime/promethean/adjustBruteLoss(var/amount,var/include_robo)
|
||||
amount *= 0.75
|
||||
if(humanform)
|
||||
return humanform.adjustBruteLoss(amount)
|
||||
else
|
||||
return ..()
|
||||
|
||||
/mob/living/simple_mob/slime/promethean/adjustFireLoss(var/amount,var/include_robo)
|
||||
amount *= 2
|
||||
if(humanform)
|
||||
return humanform.adjustFireLoss(amount)
|
||||
else
|
||||
return ..()
|
||||
|
||||
/mob/living/simple_mob/slime/promethean/adjustToxLoss(amount)
|
||||
if(humanform)
|
||||
return humanform.adjustToxLoss(amount)
|
||||
else
|
||||
return ..()
|
||||
|
||||
/mob/living/simple_mob/slime/promethean/adjustOxyLoss(amount)
|
||||
if(humanform)
|
||||
return humanform.adjustOxyLoss(amount)
|
||||
else
|
||||
return ..()
|
||||
|
||||
/mob/living/simple_mob/slime/promethean/adjustHalLoss(amount)
|
||||
if(humanform)
|
||||
return humanform.adjustHalLoss(amount)
|
||||
else
|
||||
return ..()
|
||||
|
||||
/mob/living/simple_mob/slime/promethean/adjustCloneLoss(amount)
|
||||
if(humanform)
|
||||
return humanform.adjustCloneLoss(amount)
|
||||
else
|
||||
return ..()
|
||||
|
||||
/mob/living/simple_mob/slime/promethean/ex_act(severity)
|
||||
if(humanform)
|
||||
return humanform.ex_act(severity)
|
||||
else
|
||||
return ..()
|
||||
|
||||
/mob/living/simple_mob/slime/promethean/rad_act(severity)
|
||||
rad_glow += severity
|
||||
rad_glow = CLAMP(rad_glow,0,250)
|
||||
if(rad_glow > 1)
|
||||
set_light(max(1,min(5,rad_glow/15)), max(1,min(10,rad_glow/25)), color)
|
||||
update_icon()
|
||||
|
||||
/mob/living/simple_mob/slime/promethean/bullet_act(obj/item/projectile/P)
|
||||
if(humanform)
|
||||
return humanform.bullet_act(P)
|
||||
else
|
||||
return ..()
|
||||
|
||||
/mob/living/simple_mob/slime/promethean/death(gibbed, deathmessage = "rapidly loses cohesion, splattering across the ground...")
|
||||
if(humanform)
|
||||
humanform.death(gibbed, deathmessage)
|
||||
else
|
||||
animate(src, alpha = 0, time = 2 SECONDS)
|
||||
sleep(2 SECONDS)
|
||||
|
||||
if(!QDELETED(src)) // Human's handle death should have taken us, but maybe we were adminspawned or something without a human counterpart
|
||||
qdel(src)
|
||||
|
||||
/mob/living/simple_mob/slime/promethean/Login()
|
||||
. = ..()
|
||||
copy_from_prefs_vr(bellies = FALSE)
|
||||
|
||||
/mob/living/simple_mob/slime/promethean/proc/prommie_blobform()
|
||||
set name = "Toggle Blobform"
|
||||
set desc = "Switch between amorphous and humanoid forms."
|
||||
set category = "Abilities"
|
||||
set hidden = FALSE
|
||||
|
||||
var/atom/movable/to_locate = src
|
||||
if(!isturf(to_locate.loc))
|
||||
to_chat(src,"<span class='warning'>You need more space to perform this action!</span>")
|
||||
return
|
||||
|
||||
//Blob form
|
||||
if(!ishuman(src))
|
||||
if(humanform.temporary_form.stat || paralysis || stunned || weakened || restrained())
|
||||
to_chat(src,"<span class='warning'>You can only do this while not stunned.</span>")
|
||||
else
|
||||
humanform.prommie_outofblob(src)
|
||||
|
||||
/mob/living/simple_mob/slime/promethean/proc/toggle_expand()
|
||||
set name = "Toggle Width"
|
||||
set desc = "Switch between smole and lorge."
|
||||
set category = "Abilities"
|
||||
set hidden = FALSE
|
||||
|
||||
if(stat || world.time < last_special)
|
||||
return
|
||||
|
||||
last_special = world.time + 25
|
||||
|
||||
if(is_wide)
|
||||
is_wide = FALSE
|
||||
src.visible_message("<b>[src.name]</b> pulls together, compacting themselves into a small ball!")
|
||||
update_icon()
|
||||
else
|
||||
is_wide = TRUE
|
||||
src.visible_message("<b>[src.name]</b> flows outwards, their goop expanding!")
|
||||
update_icon()
|
||||
|
||||
/mob/living/simple_mob/slime/promethean/proc/toggle_shine()
|
||||
set name = "Toggle Shine"
|
||||
set desc = "Shine on you crazy diamond."
|
||||
set category = "Abilities"
|
||||
set hidden = FALSE
|
||||
|
||||
if(stat || world.time < last_special)
|
||||
return
|
||||
|
||||
last_special = world.time + 25
|
||||
|
||||
if(shiny)
|
||||
shiny = FALSE
|
||||
src.visible_message("<b>[src.name]</b> dulls their shine, becoming more translucent.")
|
||||
update_icon()
|
||||
else
|
||||
shiny = TRUE
|
||||
src.visible_message("<b>[src.name]</b> glistens and sparkles, shining brilliantly.")
|
||||
update_icon()
|
||||
|
||||
/mob/living/simple_mob/slime/promethean/proc/prommie_select_colour()
|
||||
|
||||
set name = "Select Body Colour"
|
||||
set category = "Abilities"
|
||||
|
||||
if(stat || world.time < last_special)
|
||||
return
|
||||
|
||||
last_special = world.time + 25
|
||||
|
||||
var/new_skin = input(usr, "Please select a new body color.", "Shapeshifter Colour", color) as null|color
|
||||
if(!new_skin)
|
||||
return
|
||||
color = new_skin
|
||||
update_icon()
|
||||
|
||||
/mob/living/simple_mob/slime/promethean/get_description_interaction()
|
||||
return
|
||||
|
||||
|
||||
/mob/living/simple_mob/slime/promethean/get_description_info()
|
||||
return
|
||||
|
||||
/mob/living/simple_mob/slime/promethean/init_vore()
|
||||
return
|
||||
|
||||
/mob/living/simple_mob/slime/promethean/get_available_emotes()
|
||||
var/list/fulllist = _slime_default_emotes
|
||||
fulllist += default_emotes
|
||||
return fulllist
|
||||
/mob/living/carbon/human
|
||||
var/mob/living/simple_mob/slime/promethean/stored_blob = null
|
||||
// Helpers - Unsafe, WILL perform change.
|
||||
/mob/living/carbon/human/proc/prommie_intoblob(force)
|
||||
if(!force && !isturf(loc))
|
||||
to_chat(src,"<span class='warning'>You can't change forms while inside something.</span>")
|
||||
return
|
||||
|
||||
handle_grasp() //It's possible to blob out before some key parts of the life loop. This results in things getting dropped at null. TODO: Fix the code so this can be done better.
|
||||
remove_micros(src, src) //Living things don't fare well in roblobs.
|
||||
if(buckled)
|
||||
buckled.unbuckle_mob()
|
||||
if(LAZYLEN(buckled_mobs))
|
||||
for(var/buckledmob in buckled_mobs)
|
||||
riding_datum.force_dismount(buckledmob)
|
||||
if(pulledby)
|
||||
pulledby.stop_pulling()
|
||||
stop_pulling()
|
||||
|
||||
//Record where they should go
|
||||
var/atom/creation_spot = drop_location()
|
||||
var/mob/living/simple_mob/slime/promethean/blob = null
|
||||
//Create our new blob
|
||||
if(!stored_blob)
|
||||
blob = new(creation_spot,src)
|
||||
blob.mood = ":3"
|
||||
qdel(blob.ai_holder)
|
||||
blob.ai_holder = null
|
||||
else
|
||||
blob = stored_blob
|
||||
blob.forceMove(creation_spot)
|
||||
|
||||
//Drop all our things
|
||||
var/list/things_to_drop = contents.Copy()
|
||||
var/list/things_to_not_drop = list(w_uniform,nif,l_store,r_store,wear_id,l_ear,r_ear) //And whatever else we decide for balancing.
|
||||
var/obj/item/clothing/head/new_hat
|
||||
var/has_hat = FALSE
|
||||
things_to_drop -= things_to_not_drop //Crunch the lists
|
||||
things_to_drop -= organs //Mah armbs
|
||||
things_to_drop -= internal_organs //Mah sqeedily spooch
|
||||
|
||||
for(var/obj/item/clothing/head/H in things_to_drop)
|
||||
if(H)
|
||||
new_hat = H
|
||||
has_hat = TRUE
|
||||
drop_from_inventory(H)
|
||||
things_to_drop -= H
|
||||
|
||||
for(var/obj/item/I in things_to_drop) //rip hoarders
|
||||
drop_from_inventory(I)
|
||||
|
||||
if(w_uniform && istype(w_uniform,/obj/item/clothing)) //No webbings tho. We do this after in case a suit was in the way
|
||||
var/obj/item/clothing/uniform = w_uniform
|
||||
if(LAZYLEN(uniform.accessories))
|
||||
for(var/obj/item/clothing/accessory/A in uniform.accessories)
|
||||
if(is_type_in_list(A, disallowed_protean_accessories))
|
||||
uniform.remove_accessory(null,A) //First param is user, but adds fingerprints and messages
|
||||
|
||||
//Size update
|
||||
blob.transform = matrix()*size_multiplier
|
||||
blob.size_multiplier = size_multiplier
|
||||
|
||||
if(l_hand) blob.prev_left_hand = l_hand //Won't save them if dropped above, but necessary if handdrop is disabled.
|
||||
if(r_hand) blob.prev_right_hand = r_hand
|
||||
|
||||
//Put our owner in it (don't transfer var/mind)
|
||||
blob.Weaken(2)
|
||||
blob.transforming = TRUE
|
||||
blob.ckey = ckey
|
||||
blob.transforming = FALSE
|
||||
blob.name = name
|
||||
blob.nutrition = nutrition
|
||||
blob.color = rgb(r_skin, g_skin, b_skin)
|
||||
playsound(src.loc, "sound/effects/slime_squish.ogg", 15)
|
||||
if(radiation > 0)
|
||||
blob.rad_glow = CLAMP(radiation,0,250)
|
||||
set_light(0)
|
||||
blob.set_light(max(1,min(5,radiation/15)), max(1,min(10,radiation/25)), blob.color)
|
||||
blob.handle_light()
|
||||
if(has_hat)
|
||||
blob.hat = new_hat
|
||||
new_hat.forceMove(src)
|
||||
|
||||
blob.update_icon()
|
||||
blob.verbs -= /mob/living/proc/ventcrawl // Absolutely not.
|
||||
blob.verbs -= /mob/living/simple_mob/proc/set_name // We already have a name.
|
||||
temporary_form = blob
|
||||
//Mail them to nullspace
|
||||
moveToNullspace()
|
||||
|
||||
//Message
|
||||
blob.visible_message("<b>[src.name]</b> squishes into their true form!")
|
||||
|
||||
//Transfer vore organs
|
||||
blob.vore_organs = vore_organs
|
||||
blob.vore_selected = vore_selected
|
||||
for(var/obj/belly/B as anything in vore_organs)
|
||||
B.forceMove(blob)
|
||||
B.owner = blob
|
||||
|
||||
//We can still speak our languages!
|
||||
blob.languages = languages.Copy()
|
||||
|
||||
//Return our blob in case someone wants it
|
||||
return blob
|
||||
|
||||
/mob/living/carbon/human/proc/prommie_outofblob(var/mob/living/simple_mob/slime/promethean/blob, force)
|
||||
if(!istype(blob))
|
||||
return
|
||||
|
||||
if(!force && !isturf(blob.loc))
|
||||
to_chat(blob,"<span class='warning'>You can't change forms while inside something.</span>")
|
||||
return
|
||||
|
||||
if(buckled)
|
||||
buckled.unbuckle_mob()
|
||||
if(LAZYLEN(buckled_mobs))
|
||||
for(var/buckledmob in buckled_mobs)
|
||||
riding_datum.force_dismount(buckledmob)
|
||||
if(pulledby)
|
||||
pulledby.stop_pulling()
|
||||
stop_pulling()
|
||||
|
||||
//Message
|
||||
blob.visible_message("<b>[src.name]</b> pulls together, forming a humanoid shape!")
|
||||
|
||||
//Record where they should go
|
||||
var/atom/reform_spot = blob.drop_location()
|
||||
|
||||
//Size update
|
||||
resize(blob.size_multiplier, FALSE, ignore_prefs = TRUE)
|
||||
|
||||
//Move them back where the blob was
|
||||
forceMove(reform_spot)
|
||||
|
||||
//Put our owner in it (don't transfer var/mind)
|
||||
Weaken(2)
|
||||
playsound(src.loc, "sound/effects/slime_squish.ogg", 15)
|
||||
transforming = TRUE
|
||||
ckey = blob.ckey
|
||||
transforming = FALSE
|
||||
blob.name = "Promethean Blob"
|
||||
var/obj/item/hat = blob.hat
|
||||
blob.drop_hat()
|
||||
drop_from_inventory(hat) // Hat me baby
|
||||
equip_to_slot_if_possible(hat, slot_head)
|
||||
nutrition = blob.nutrition // food good
|
||||
|
||||
|
||||
temporary_form = null
|
||||
|
||||
shapeshifter_set_colour(blob.color)
|
||||
if(blob.rad_glow > 0)
|
||||
radiation = CLAMP(blob.rad_glow,0,250)
|
||||
set_light(max(1,min(5,radiation/15)), max(1,min(10,radiation/25)), species.get_flesh_colour(src))
|
||||
update_icon()
|
||||
|
||||
//Transfer vore organs
|
||||
vore_selected = blob.vore_selected
|
||||
for(var/obj/belly/B as anything in blob.vore_organs)
|
||||
B.forceMove(src)
|
||||
B.owner = src
|
||||
|
||||
//vore_organs.Cut()
|
||||
if(blob.prev_left_hand) put_in_l_hand(blob.prev_left_hand) //The restore for when reforming.
|
||||
if(blob.prev_right_hand) put_in_r_hand(blob.prev_right_hand)
|
||||
|
||||
Life(1) //Fix my blindness right meow //Has to be moved up here, there exists a circumstance where blob could be deleted without vore organs moving right.
|
||||
|
||||
//Get rid of friend blob
|
||||
stored_blob = blob
|
||||
blob.set_light(0)
|
||||
blob.moveToNullspace()
|
||||
//qdel(blob)
|
||||
|
||||
//Return ourselves in case someone wants it
|
||||
return src
|
||||
|
||||
/mob/living/simple_mob/slime/promethean/examine(mob/user)
|
||||
. = ..()
|
||||
if(hat)
|
||||
. += "They are wearing \a [hat]."
|
||||
@@ -27,3 +27,12 @@
|
||||
..()
|
||||
|
||||
src.modules += new /obj/item/weapon/melee/energy/sword/ionic_rapier/lance(src)
|
||||
|
||||
//Swarm Disabler Module
|
||||
/obj/item/weapon/gun/energy/taser/mounted/cyborg/swarm
|
||||
name = "disabler"
|
||||
desc = "An archaic device which attacks the target's nervous-system or control circuits."
|
||||
icon_state = "disabler"
|
||||
projectile_type = /obj/item/projectile/beam/stun/disabler
|
||||
charge_cost = 800
|
||||
recharge_time = 0.5 SECONDS
|
||||
@@ -583,6 +583,10 @@
|
||||
/obj/item/ammo_magazine/m44/empty
|
||||
initial_ammo = 0
|
||||
|
||||
/obj/item/ammo_magazine/m44/rubber
|
||||
desc = "magazine (.44 rubber)"
|
||||
ammo_type = /obj/item/ammo_casing/a44/rubber
|
||||
|
||||
// Stripper Clip
|
||||
/obj/item/ammo_magazine/clip/c44
|
||||
name = "ammo clip (.44)"
|
||||
|
||||
@@ -56,6 +56,25 @@
|
||||
matter = list(MAT_PLASTIC = 20)
|
||||
caseless = TRUE
|
||||
|
||||
/obj/item/ammo_casing/a357/rubber
|
||||
desc = "A .357 rubber bullet casing."
|
||||
caliber = ".357"
|
||||
icon_state = "r-casing"
|
||||
projectile_type = /obj/item/projectile/bullet/pistol/rubber/strong
|
||||
matter = list(MAT_STEEL = 60)
|
||||
|
||||
/obj/item/ammo_casing/a357/flash
|
||||
desc = "A .357 flash bullet casing."
|
||||
caliber = ".357"
|
||||
icon_state = "r-casing"
|
||||
projectile_type = /obj/item/projectile/energy/flash/strong
|
||||
|
||||
/obj/item/ammo_casing/a357/stun
|
||||
desc = "A .357 stun bullet casing."
|
||||
caliber = ".357"
|
||||
icon_state = "w-casing"
|
||||
projectile_type = /obj/item/projectile/energy/electrode/stunshot/strong
|
||||
|
||||
/*
|
||||
* .38
|
||||
*/
|
||||
|
||||
@@ -1,7 +1,11 @@
|
||||
/*
|
||||
* Taser
|
||||
*/
|
||||
/obj/item/weapon/gun/energy/taser
|
||||
name = "taser gun"
|
||||
desc = "The NT Mk30 NL is a small gun used for non-lethal takedowns. Produced by NT, it's actually a licensed version of a W-T RayZar design."
|
||||
description_fluff = "RayZar is Ward-Takahashi’s main consumer weapons brand, known for producing and licensing a wide variety of specialist energy weapons of various types and quality primarily for the civilian market."
|
||||
description_fluff = "RayZar is Ward-Takahashi’s main consumer weapons brand, known for producing and licensing a wide variety of specialist \
|
||||
energy weapons of various types and quality primarily for the civilian market."
|
||||
icon_state = "taser"
|
||||
item_state = null //so the human update icon uses the icon_state instead.
|
||||
projectile_type = /obj/item/projectile/beam/stun
|
||||
@@ -23,13 +27,20 @@
|
||||
charge_cost = 160 //Chompedit: Reduced from 400 to 160 to match VR's, which we also use.
|
||||
recharge_time = 5 //ChompEdit: reduced from 7 to 5, Time it takes for shots to recharge (in ticks)
|
||||
|
||||
/obj/item/weapon/gun/energy/taser/mounted/cyborg/swarm
|
||||
/*
|
||||
* Disabler
|
||||
*/
|
||||
/obj/item/weapon/gun/energy/taser/disabler
|
||||
name = "disabler"
|
||||
desc = "An archaic device which attacks the target's nervous-system or control circuits."
|
||||
desc = "The NT Mk4 T-DL is a small gun used for non-lethal takedowns. Produced by NT, it's an archaic device which attacks the target's \
|
||||
nervous-system and is actually a heavily modified version of the NT Mk30 NL. It's use is heavily regulated due to its effects on the body."
|
||||
icon_state = "disabler"
|
||||
projectile_type = /obj/item/projectile/beam/stun/disabler
|
||||
charge_cost = 800
|
||||
recharge_time = 0.5 SECONDS
|
||||
charge_cost = 480
|
||||
|
||||
/*
|
||||
* Crossbow
|
||||
*/
|
||||
/obj/item/weapon/gun/energy/crossbow
|
||||
name = "mini energy-crossbow"
|
||||
desc = "A weapon favored by many mercenary stealth specialists."
|
||||
@@ -53,12 +64,16 @@
|
||||
/obj/item/weapon/gun/energy/crossbow/largecrossbow
|
||||
name = "energy crossbow"
|
||||
desc = "A weapon favored by mercenary infiltration teams."
|
||||
icon_state = "crossbowlarge"
|
||||
w_class = ITEMSIZE_LARGE
|
||||
force = 10
|
||||
matter = list(MAT_STEEL = 200000)
|
||||
slot_flags = SLOT_BELT
|
||||
projectile_type = /obj/item/projectile/energy/bolt/large
|
||||
|
||||
/*
|
||||
* Plasma Stun
|
||||
*/
|
||||
/obj/item/weapon/gun/energy/plasmastun
|
||||
name = "plasma pulse projector"
|
||||
desc = "The RayZar MA21 Selkie is a weapon that uses a laser pulse to ionise the local atmosphere, creating a disorienting pulse of plasma and deafening shockwave as the wave expands."
|
||||
@@ -71,11 +86,12 @@
|
||||
charge_cost = 600
|
||||
projectile_type = /obj/item/projectile/energy/plasmastun
|
||||
|
||||
//Stun Revolvers
|
||||
|
||||
/*
|
||||
* Stun Revolver
|
||||
*/
|
||||
/obj/item/weapon/gun/energy/stunrevolver
|
||||
name = "stun revolver"
|
||||
desc = "A LAEP20 Aktzin. Designed and produced by Lawson Arms under the wing of Hephaestus, \
|
||||
desc = "A LAEP20 \"Aktzin\". Designed and produced by Lawson Arms under the wing of Hephaestus, \
|
||||
several TSCs have been trying to get a hold of the blueprints for half a decade."
|
||||
description_fluff = "Lawson Arms is Hephaestus Industries’ main personal-energy-weapon branding, \
|
||||
often sold alongside MarsTech projectile weapons to security and law enforcement agencies. \
|
||||
@@ -85,12 +101,92 @@
|
||||
item_state = "stunrevolver"
|
||||
origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3, TECH_POWER = 2)
|
||||
projectile_type = /obj/item/projectile/energy/electrode/strong
|
||||
charge_cost = 300
|
||||
charge_cost = 400
|
||||
|
||||
/*
|
||||
* Detective Stun Revolver
|
||||
*/
|
||||
/obj/item/weapon/gun/energy/stunrevolver/detective
|
||||
desc = "A LAEP20 \"Aktzin\". Designed and produced by Lawson Arms under the wing of Hephaestus, \
|
||||
several TSCs have been trying to get a hold of the blueprints for half a decade."
|
||||
var/unique_reskin
|
||||
|
||||
/obj/item/weapon/gun/energy/stunrevolver/detective/update_icon(var/ignore_inhands)
|
||||
if(power_supply == null)
|
||||
if(unique_reskin)
|
||||
icon_state = "[unique_reskin]_open"
|
||||
else
|
||||
icon_state = "[initial(icon_state)]_open"
|
||||
return
|
||||
else if(charge_meter)
|
||||
var/ratio = power_supply.charge / power_supply.maxcharge
|
||||
|
||||
//make sure that rounding down will not give us the empty state even if we have charge for a shot left.
|
||||
if(power_supply.charge < charge_cost)
|
||||
ratio = 0
|
||||
else
|
||||
ratio = max(round(ratio, 0.25) * 100, 25)
|
||||
|
||||
if(unique_reskin)
|
||||
icon_state = "[unique_reskin][ratio]"
|
||||
else
|
||||
icon_state = "[initial(icon_state)][ratio]"
|
||||
|
||||
else if(power_supply)
|
||||
if(unique_reskin)
|
||||
icon_state = "[unique_reskin]"
|
||||
else
|
||||
icon_state = "[initial(icon_state)]"
|
||||
|
||||
if(!ignore_inhands) update_held_icon()
|
||||
|
||||
/obj/item/weapon/gun/energy/stunrevolver/detective/verb/rename_gun()
|
||||
set name = "Name Gun"
|
||||
set category = "Object"
|
||||
set desc = "Rename your gun. If you're Security."
|
||||
|
||||
var/mob/M = usr
|
||||
if(!M.mind) return 0
|
||||
var/job = M.mind.assigned_role
|
||||
if(job != "Detective" && job != "Security Officer" && job != "Warden" && job != "Head of Security")
|
||||
to_chat(M, "<span class='notice'>You don't feel cool enough to name this gun, chump.</span>")
|
||||
return 0
|
||||
|
||||
var/input = sanitizeSafe(input("What do you want to name the gun?", ,""), MAX_NAME_LEN)
|
||||
|
||||
if(src && input && !M.stat && in_range(M,src))
|
||||
name = input
|
||||
to_chat(M, "You name the gun [input]. Say hello to your new friend.")
|
||||
return 1
|
||||
|
||||
/obj/item/weapon/gun/energy/stunrevolver/detective/verb/reskin_gun()
|
||||
set name = "Resprite gun"
|
||||
set category = "Object"
|
||||
set desc = "Click to choose a sprite for your gun."
|
||||
|
||||
var/mob/M = usr
|
||||
var/list/options = list()
|
||||
options["Lawson Arms LAEP20"] = "stunrevolver"
|
||||
options["Lawson Arms LTX1020"] = "vinstunrevolver"
|
||||
options["Lawson Arms LTX1010"] = "snubstun2revolver"
|
||||
options["Lawson Arms LTX1020 (Blued)"] = "bluedstunrevolver"
|
||||
options["Lawson Arms LTX1020 (Stainless)"] = "stainstunrevolver"
|
||||
options["Lawson Arms LTX1020 (Ace)"] = "snubstunrevolver"
|
||||
options["Lawson Arms LTX1020 (Gold)"] = "goldstunrevolver"
|
||||
var/choice = input(M,"Choose your sprite!","Resprite Gun") in options
|
||||
if(src && choice && !M.stat && in_range(M,src))
|
||||
icon_state = options[choice]
|
||||
unique_reskin = options[choice]
|
||||
to_chat(M, "Your gun is now sprited as [choice]. Say hello to your new friend.")
|
||||
return 1
|
||||
|
||||
/*
|
||||
* Vintage Stun Revolver
|
||||
*/
|
||||
/obj/item/weapon/gun/energy/stunrevolver/vintage
|
||||
name = "vintage stun revolver"
|
||||
desc = "An older model stun revolver that is still in service across the frontier."
|
||||
description_fluff = "The LTX1020 Bolter, a Firefly Co. staple from when the company was in its hayday. \
|
||||
description_fluff = "The LTX1020 \"Bolter\", a Firefly Co. staple from when the company was in its hayday. \
|
||||
While Firefly Co. has sadly been dissmantled due to bankruptcy, their iconic weapons can still be found \
|
||||
across the frontier as anything from collectors items to surplus equipment. The LTX1020 falls under \
|
||||
the latter category. Several companies have been known to use the base tech within the Bolter to create \
|
||||
@@ -99,10 +195,13 @@
|
||||
item_state = "stunrevolver"
|
||||
origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3, TECH_POWER = 2)
|
||||
|
||||
/*
|
||||
* Snubnose Stun Revolver
|
||||
*/
|
||||
/obj/item/weapon/gun/energy/stunrevolver/snubnose
|
||||
name = "snub stun revolver"
|
||||
desc = "A snub nose stun revolver sporting a rather elegant look."
|
||||
description_fluff = "The LTX1010 Stubby, a Firefly Co. staple from when the company was in its hayday. \
|
||||
description_fluff = "The LTX1010 \"Stubby\", a Firefly Co. staple from when the company was in its hayday. \
|
||||
While Firefly Co. has sadly been dissmantled due to bankruptcy, their iconic weapons can still be found \
|
||||
across the frontier as anything from collectors items to surplus equipment. The LTX1010 falls under \
|
||||
the latter category. Gangsters and other gentlemanly criminals alike use the Stubby as a means of policing \
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
/*
|
||||
* M1911
|
||||
*/
|
||||
/obj/item/weapon/gun/projectile/colt
|
||||
var/unique_reskin
|
||||
name = ".45 pistol"
|
||||
@@ -23,6 +26,9 @@
|
||||
else
|
||||
icon_state = "[initial(icon_state)]-e"
|
||||
|
||||
/*
|
||||
* Detective M1911
|
||||
*/
|
||||
/obj/item/weapon/gun/projectile/colt/detective
|
||||
desc = "A standard law enforcement issue pistol. Uses .45 rounds."
|
||||
magazine_type = /obj/item/ammo_magazine/m45/rubber
|
||||
@@ -53,15 +59,13 @@
|
||||
|
||||
var/mob/M = usr
|
||||
var/list/options = list()
|
||||
options["NT Mk. 58"] = "secguncomp"
|
||||
options["NT Mk. 58 Custom"] = "secgundark"
|
||||
options["MarsTech P11 Spur"] = "colt"
|
||||
options["MarsTech P59 Massif"] = "fnseven"
|
||||
options["ProTek YC9"] = "usp"
|
||||
options["ProTek Minx"] = "VP78"
|
||||
options["Jindal T15 Chooha"] = "p08"
|
||||
options["Jindal KP-45W"] = "p08b"
|
||||
options["PCA-11 Tenzu"] = "enforcer_black"
|
||||
options["MarsTech P11 Spur (Bubba'd)"] = "mod_colt"
|
||||
options["MarsTech P11 Spur (Blued)"] = "blued_colt"
|
||||
options["MarsTech P11 Spur (Gold)"] = "gold_colt"
|
||||
options["MarsTech P11 Spur (Stainless)"] = "stainless_colt"
|
||||
options["MarsTech P11 Spur (Dark)"] = "dark_colt"
|
||||
options["MarsTech P11 Spur (Green)"] = "green_colt"
|
||||
options["MarsTech P11 Spur (Blue)"] = "blue_colt"
|
||||
var/choice = tgui_input_list(M,"Choose your sprite!","Resprite Gun", options)
|
||||
if(src && choice && !M.stat && in_range(M,src))
|
||||
icon_state = options[choice]
|
||||
@@ -77,11 +81,15 @@
|
||||
..()
|
||||
*/
|
||||
|
||||
/*
|
||||
* Security Sidearm
|
||||
*/
|
||||
/obj/item/weapon/gun/projectile/sec
|
||||
name = ".45 pistol"
|
||||
desc = "The MT Mk58 is a cheap, ubiquitous sidearm, produced by MarsTech. Found pretty much everywhere humans are. Uses .45 rounds."
|
||||
description_fluff = "The leading civilian-sector high-quality small arms brand of Hephaestus Industries, MarsTech has been the provider of choice for law enforcement and security forces for over 300 years."
|
||||
icon_state = "secguncomp"
|
||||
description_fluff = "The leading civilian-sector high-quality small arms brand of Hephaestus Industries, \
|
||||
MarsTech has been the provider of choice for law enforcement and security forces for over 300 years."
|
||||
icon_state = "secgun"
|
||||
magazine_type = /obj/item/ammo_magazine/m45/rubber
|
||||
allowed_magazines = list(/obj/item/ammo_magazine/m45)
|
||||
projectile_type = /obj/item/projectile/bullet/pistol/medium
|
||||
@@ -93,9 +101,9 @@
|
||||
/obj/item/weapon/gun/projectile/sec/update_icon()
|
||||
..()
|
||||
if(ammo_magazine)
|
||||
icon_state = "secguncomp"
|
||||
icon_state = "secgun"
|
||||
else
|
||||
icon_state = "secguncomp-e"
|
||||
icon_state = "secgun-e"
|
||||
|
||||
/obj/item/weapon/gun/projectile/sec/flash
|
||||
name = ".45 signal pistol"
|
||||
@@ -105,18 +113,21 @@
|
||||
/obj/item/weapon/gun/projectile/sec/wood
|
||||
desc = "The MT Mk58 is a cheap, ubiquitous sidearm, produced by MarsTech. This one has a sweet wooden grip. Uses .45 rounds."
|
||||
name = "custom .45 Pistol"
|
||||
icon_state = "secgundark"
|
||||
icon_state = "secgunb"
|
||||
|
||||
/obj/item/weapon/gun/projectile/sec/wood/update_icon()
|
||||
..()
|
||||
if(ammo_magazine)
|
||||
icon_state = "secgundark"
|
||||
icon_state = "secgunb"
|
||||
else
|
||||
icon_state = "secgundark-e"
|
||||
icon_state = "secgunb-e"
|
||||
|
||||
/*
|
||||
* Silenced Pistol
|
||||
*/
|
||||
/obj/item/weapon/gun/projectile/silenced
|
||||
name = "silenced pistol"
|
||||
desc = "A small, quiet, easily concealable gun. Uses .45 rounds."
|
||||
desc = "A small, quiet, easily concealable gun with a built-in silencer. Uses .45 rounds."
|
||||
icon_state = "silenced_pistol"
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
caliber = ".45"
|
||||
@@ -133,6 +144,9 @@
|
||||
/obj/item/weapon/gun/projectile/silenced/empty
|
||||
magazine_type = null
|
||||
|
||||
/*
|
||||
* Deagle
|
||||
*/
|
||||
/obj/item/weapon/gun/projectile/deagle
|
||||
name = "hand cannon"
|
||||
desc = "The PCA-55 Rarkajar perfect handgun for shooters with a need to hit targets through a wall and behind a fridge in your neighbor's house. Uses .44 rounds."
|
||||
@@ -165,6 +179,9 @@
|
||||
icon_state = "deaglecamo"
|
||||
item_state = "deagleg"
|
||||
|
||||
/*
|
||||
* Gyro Pistol (Admin Abuse in gun form)
|
||||
*/
|
||||
/obj/item/weapon/gun/projectile/gyropistol // Does this even appear anywhere outside of admin abuse?
|
||||
name = "gyrojet pistol"
|
||||
desc = "Speak softly, and carry a big gun. Fires rare .75 caliber self-propelled exploding bolts--because fuck you and everything around you."
|
||||
@@ -188,6 +205,9 @@
|
||||
else
|
||||
icon_state = "gyropistol"
|
||||
|
||||
/*
|
||||
* Compact Pistol
|
||||
*/
|
||||
/obj/item/weapon/gun/projectile/pistol
|
||||
name = "compact pistol"
|
||||
desc = "The Lumoco Arms P3 Whisper. A compact, easily concealable gun, though it's only compatible with compact magazines. Uses 9mm rounds."
|
||||
@@ -242,6 +262,9 @@
|
||||
else
|
||||
icon_state = "pistol"
|
||||
|
||||
/*
|
||||
* Silencer
|
||||
*/
|
||||
/obj/item/weapon/silencer
|
||||
name = "silencer"
|
||||
desc = "a silencer"
|
||||
@@ -249,6 +272,9 @@
|
||||
icon_state = "silencer"
|
||||
w_class = ITEMSIZE_SMALL
|
||||
|
||||
/*
|
||||
* Zip Gun (yar har)
|
||||
*/
|
||||
/obj/item/weapon/gun/projectile/pirate
|
||||
name = "zip gun"
|
||||
desc = "Little more than a barrel, handle, and firing mechanism, cheap makeshift firearms like this one are not uncommon in frontier systems."
|
||||
@@ -283,6 +309,9 @@
|
||||
caliber = initial(ammo.caliber)
|
||||
..()
|
||||
|
||||
/*
|
||||
* Derringer
|
||||
*/
|
||||
/obj/item/weapon/gun/projectile/derringer
|
||||
name = "derringer"
|
||||
desc = "It's not size of your gun that matters, just the size of your load. Uses .357 rounds." //OHHH MYYY~
|
||||
@@ -296,6 +325,9 @@
|
||||
ammo_type = /obj/item/ammo_casing/a357
|
||||
projectile_type = /obj/item/projectile/bullet/pistol/strong
|
||||
|
||||
/*
|
||||
* Luger
|
||||
*/
|
||||
/obj/item/weapon/gun/projectile/luger
|
||||
name = "\improper Jindal T15 Chooha"
|
||||
desc = "Almost seventy percent guaranteed not to be a cheap rimworld knockoff! Accuracy, easy handling, and its distinctive appearance make it popular among gun collectors. Uses 9mm rounds."
|
||||
@@ -324,6 +356,9 @@
|
||||
(Perhaps owing to its less than prestigious image), instead being sold almost exclusively through retailers and advertising platforms targeting the 'independent roughneck' demographic."
|
||||
icon_state = "p08b"
|
||||
|
||||
/*
|
||||
* P92X (9mm Pistol)
|
||||
*/
|
||||
/obj/item/weapon/gun/projectile/p92x
|
||||
name = "9mm pistol"
|
||||
desc = "A widespread MarsTech sidearm called the P92X which is used by military, police, and security forces across the galaxy. Uses 9mm rounds."
|
||||
@@ -342,8 +377,11 @@
|
||||
else
|
||||
icon_state = "[initial(icon_state)]-e"
|
||||
|
||||
/obj/item/weapon/gun/projectile/p92x/rubber
|
||||
magazine_type = /obj/item/ammo_magazine/m9mm/rubber
|
||||
|
||||
/obj/item/weapon/gun/projectile/p92x/brown
|
||||
icon_state = "p92x-brown"
|
||||
icon_state = "p92xb"
|
||||
|
||||
/obj/item/weapon/gun/projectile/p92x/large
|
||||
magazine_type = /obj/item/ammo_magazine/m9mm/large // Spawns with illegal magazines.
|
||||
@@ -1,3 +1,6 @@
|
||||
/*
|
||||
* Revolver
|
||||
*/
|
||||
/obj/item/weapon/gun/projectile/revolver
|
||||
name = "revolver"
|
||||
desc = "The MarsTech HE Colt is a choice revolver for when you absolutely, positively need to put a hole in the other guy. Uses .357 rounds."
|
||||
@@ -38,12 +41,12 @@
|
||||
chamber_offset = 0
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/gun/projectile/revolver/mateba
|
||||
name = "mateba"
|
||||
desc = "This unique looking handgun is named after an Italian company famous for the original manufacture of these revolvers, and pasta kneading machines. Uses .357 rounds." // Yes I'm serious. -Spades
|
||||
icon_state = "mateba"
|
||||
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2)
|
||||
/obj/item/weapon/gun/projectile/revolver/stainless
|
||||
icon_state = "revolver_stainless"
|
||||
|
||||
/*
|
||||
* Detective Revolver
|
||||
*/
|
||||
/obj/item/weapon/gun/projectile/revolver/detective
|
||||
name = "revolver"
|
||||
desc = "A standard MarsTech R1 snubnose revolver, popular among some law enforcement agencies for its simple, long-lasting construction. Uses .38-Special rounds."
|
||||
@@ -80,7 +83,6 @@
|
||||
ammo_type = /obj/item/ammo_casing/a45/rubber
|
||||
max_shells = 6
|
||||
|
||||
|
||||
/obj/item/weapon/gun/projectile/revolver/detective45/verb/rename_gun()
|
||||
set name = "Name Gun"
|
||||
set category = "Object"
|
||||
@@ -108,24 +110,67 @@
|
||||
var/mob/M = usr
|
||||
var/list/options = list()
|
||||
options["MarsTech R1 Snubnose"] = "detective"
|
||||
options["ProTek Cowboy"] = "GP100"
|
||||
options["MarsTech R1 Snubnose (Blued)"] = "detective_blued"
|
||||
options["MarsTech R1 Snubnose (Stainless)"] = "detective_stainless"
|
||||
options["MarsTech R1 Snubnose (Gold)"] = "detective_stainless"
|
||||
options["MarsTech R1 Snubnose (Leopard)"] = "detective_leopard"
|
||||
options["MarsTech Frontiersman Classic"] = "detective_peacemaker"
|
||||
options["MarsTech Frontiersman Shadow"] = "detective_peacemaker_dark"
|
||||
options["MarsTech Panther"] = "detective_panther"
|
||||
options["Jindal Duke"] = "lemat_old"
|
||||
options["H-H Sindri"] = "webley"
|
||||
options["Lombardi Buzzard"] = "detective_buzzard"
|
||||
options["Lombardi Constable Deluxe 2502"] = "detective_constable"
|
||||
options["Jindal Duke"] = "detective_fitz"
|
||||
options["H-H M1895"] = "nagant"
|
||||
var/choice = tgui_input_list(M,"Choose your sprite!","Resprite Gun", options)
|
||||
if(src && choice && !M.stat && in_range(M,src))
|
||||
icon_state = options[choice]
|
||||
to_chat(M, "Your gun is now sprited as [choice]. Say hello to your new friend.")
|
||||
return 1
|
||||
|
||||
/*
|
||||
* Lombardi Revolvers
|
||||
* Use to be detective revolvers until seperated
|
||||
*/
|
||||
/obj/item/weapon/gun/projectile/revolver/lombardi
|
||||
name = "Lombardi Buzzard"
|
||||
desc = "A rugged revolver that is mostly used by small law enforcement agencies across the frontier as a cheap, reliable sidearm. Uses .357 rounds."
|
||||
icon_state = "lombardi_police"
|
||||
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2)
|
||||
|
||||
// Blade Runner pistol.
|
||||
/obj/item/weapon/gun/projectile/revolver/lombardi/panther
|
||||
name = "Lombardi Panther"
|
||||
icon_state = "lombardi_panther"
|
||||
|
||||
/obj/item/weapon/gun/projectile/revolver/lombardi/gold
|
||||
name = "Lombardi Deluxe 2502"
|
||||
desc = "A sweet looking revolver that is deocrated with false gold and silver plating. Favored among by gamblers and criminals alike. Uses .357 rounds."
|
||||
icon_state = "lombardi_gold"
|
||||
|
||||
/*
|
||||
* Captain's Peacekeeper
|
||||
*/
|
||||
/obj/item/weapon/gun/projectile/revolver/cappeacekeeper
|
||||
name = "decorated peacekeeper"
|
||||
desc = "A MarsTech Frontiersman revolver that has been heavily modified. It has been decorated for personal use by command officers. Uses .44 rounds."
|
||||
description_fluff = "The leading civilian-sector high-quality small arms brand of Hephaestus Industries, \
|
||||
MarsTech has been the provider of choice for law enforcement and security forces for over 300 years."
|
||||
icon_state = "captains_peacemaker"
|
||||
caliber = ".44"
|
||||
origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 2)
|
||||
ammo_type = /obj/item/ammo_casing/a44
|
||||
|
||||
/*
|
||||
* Mateba
|
||||
*/
|
||||
/obj/item/weapon/gun/projectile/revolver/mateba
|
||||
name = "mateba"
|
||||
desc = "This unique looking handgun is named after an Italian company famous for the original manufacture of \
|
||||
these revolvers, and pasta kneading machines. Uses .357 rounds." // Yes I'm serious. -Spades
|
||||
icon_state = "mateba"
|
||||
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2)
|
||||
|
||||
/*
|
||||
* Deckard (Blade Runner)
|
||||
*/
|
||||
/obj/item/weapon/gun/projectile/revolver/deckard
|
||||
name = "\improper Deckard .38"
|
||||
name = "\improper \"Deckard\" .38"
|
||||
desc = "A custom-built revolver, based off the semi-popular Detective Special model. Uses .38-Special rounds."
|
||||
icon_state = "deckard-empty"
|
||||
caliber = ".38"
|
||||
@@ -149,11 +194,16 @@
|
||||
flick("deckard-reload",src)
|
||||
..()
|
||||
|
||||
/*
|
||||
* Judge
|
||||
*/
|
||||
/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."
|
||||
description_fluff = "While wholly owned by Hephaestus Industries, the Jindal Arms brand does not appear prominently in most company catalogues (Perhaps owing to its less than prestigious image), \
|
||||
instead being sold almost exclusively through retailers and advertising platforms targeting the 'independent roughneck' demographic."
|
||||
description_fluff = "While wholly owned by Hephaestus Industries, the Jindal Arms brand does not appear \
|
||||
prominently in most company catalogues (Perhaps owing to its less than prestigious image), \
|
||||
instead being sold almost exclusively through retailers and advertising platforms targeting the \
|
||||
'independent roughneck' demographic."
|
||||
icon_state = "judge"
|
||||
caliber = "12g"
|
||||
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2, TECH_ILLEGAL = 4)
|
||||
@@ -164,13 +214,20 @@
|
||||
projectile_type = /obj/item/projectile/bullet/shotgun
|
||||
// ToDo: Remove accuracy debuf in exchange for slightly injuring your hand every time you fire it.
|
||||
|
||||
/*
|
||||
* Mako
|
||||
*/
|
||||
/obj/item/weapon/gun/projectile/revolver/lemat
|
||||
name = "Mako Revolver"
|
||||
desc = "The Bishamonten P100 Mako is a 9 shot revolver with a secondary firing barrel loading shotgun shells. For when you really need something dead. A rare yet deadly collector's item. Uses .38-Special and 12g rounds depending on the barrel."
|
||||
description_fluff = "The Bishamonten Company operated from roughly 2150-2280 - the height of the first extrasolar colonisation boom - before filing for bankruptcy and selling off its assets to various companies that would go on to become today’s TSCs. \
|
||||
Focused on sleek ‘futurist’ designs which have largely fallen out of fashion but remain popular with collectors and people hoping to make some quick thalers from replica weapons. \
|
||||
Bishamonten weapons tended to be form over function - despite their flashy looks, most were completely unremarkable one way or another as weapons and used very standard firing mechanisms - \
|
||||
the Mako was a notable exception, and original examples are much sought after."
|
||||
name = "\improper \"Mako\" Revolver"
|
||||
desc = "The Bishamonten P100 Mako is a 9 shot revolver with a secondary firing barrel loading shotgun shells. \
|
||||
For when you really need something dead. A rare yet deadly collector's item. Uses .38-Special and 12g rounds depending on the barrel."
|
||||
description_fluff = "The Bishamonten Company operated from roughly 2150-2280 - the height of the first \
|
||||
extrasolar colonisation boom - before filing for bankruptcy and selling off its assets to various companies \
|
||||
that would go on to become today’s TSCs. Focused on sleek ‘futurist’ designs which have largely fallen out of \
|
||||
fashion but remain popular with collectors and people hoping to make some quick thalers from replica weapons. \
|
||||
Bishamonten weapons tended to be form over function - despite their flashy looks, most were completely \
|
||||
unremarkable one way or another as weapons and used very standard firing mechanisms - the Mako was a notable \
|
||||
exception, and original examples are much sought after."
|
||||
icon_state = "combatrevolver"
|
||||
item_state = "revolver"
|
||||
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2)
|
||||
@@ -259,24 +316,41 @@
|
||||
. += "It has a secondary barrel that is empty."
|
||||
|
||||
|
||||
//Ported from Bay
|
||||
/*
|
||||
* Webley (Bay Port)
|
||||
*/
|
||||
/obj/item/weapon/gun/projectile/revolver/webley
|
||||
name = "patrol revolver"
|
||||
desc = "A rugged top break revolver commonly issued to members of the SifGuard. Uses .44 magnum rounds."
|
||||
desc = "A rugged top break revolver commonly issued to planetary law enforcement offices. Uses .44 magnum rounds."
|
||||
description_fluff = "The Heberg-Hammarstrom Althing is a simple, head-wearing revolver made with an anti-corrosive alloy. \
|
||||
The Althing is advertised as being 'able to survive six months on the bottom of a frozen river and emerge full ready to save a life'. Issued as standard sidearms to SifGuard frontier patrol."
|
||||
The Althing is advertised as being 'able to survive six months on the bottom of a frozen river and emerge full ready to \
|
||||
save a life'. Issued as standard sidearms to SifGuard frontier patrol."
|
||||
icon_state = "webley2"
|
||||
item_state = "webley2"
|
||||
caliber = ".44"
|
||||
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2)
|
||||
handle_casings = CYCLE_CASINGS
|
||||
max_shells = 6
|
||||
ammo_type = /obj/item/ammo_casing/a44
|
||||
|
||||
/obj/item/weapon/gun/projectile/revolver/webley/auto
|
||||
name = "autorevolver"
|
||||
icon_state = "mosley"
|
||||
desc = "A shiny Fosbery Autococker automatic revolver, with black accents. Marketed as the 'Revolver for the Modern Era'. Uses .44 magnum rounds."
|
||||
fire_delay = 5.7 //Autorevolver. Also synced with the animation
|
||||
fire_anim = "mosley_fire"
|
||||
origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 2)
|
||||
/*
|
||||
* Webley (Eris Port)
|
||||
*/
|
||||
/obj/item/weapon/gun/projectile/revolver/consul
|
||||
name = "\improper \"Consul\" Revolver"
|
||||
desc = "Are you feeling lucky, punk? Uses .44 rounds."
|
||||
icon_state = "inspector"
|
||||
item_state = "revolver"
|
||||
caliber = ".44"
|
||||
origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3)
|
||||
handle_casings = CYCLE_CASINGS
|
||||
ammo_type = /obj/item/ammo_casing/a44/rubber
|
||||
|
||||
/obj/item/weapon/gun/projectile/revolver/consul/proc/update_charge()
|
||||
cut_overlays()
|
||||
if(loaded.len==0)
|
||||
add_overlay("inspector_off")
|
||||
else
|
||||
add_overlay("inspector_on")
|
||||
|
||||
/obj/item/weapon/gun/projectile/revolver/consul/update_icon()
|
||||
update_charge()
|
||||
|
||||
@@ -1,73 +1,4 @@
|
||||
//////////////////// Eris Ported Guns ////////////////////
|
||||
//Detective gun
|
||||
/obj/item/weapon/gun/projectile/revolver/consul
|
||||
name = "\improper \"Consul\" Revolver"
|
||||
desc = "Are you feeling lucky, punk? Uses .44 rounds."
|
||||
icon = 'icons/obj/gun_vr.dmi'
|
||||
icon_state = "inspector"
|
||||
item_state = "revolver"
|
||||
caliber = ".44"
|
||||
ammo_type = /obj/item/ammo_casing/a44/rubber
|
||||
handle_casings = CYCLE_CASINGS
|
||||
origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3)
|
||||
|
||||
/obj/item/weapon/gun/projectile/revolver/consul/proc/update_charge()
|
||||
cut_overlays()
|
||||
if(loaded.len==0)
|
||||
add_overlay("inspector_off")
|
||||
else
|
||||
add_overlay("inspector_on")
|
||||
|
||||
/obj/item/weapon/gun/projectile/revolver/consul/update_icon()
|
||||
update_charge()
|
||||
|
||||
//.357 special ammo
|
||||
/obj/item/ammo_magazine/s357/stun
|
||||
name = "speedloader (.357 stun)"
|
||||
desc = "A speedloader for .357 revolvers."
|
||||
icon = 'icons/obj/ammo_vr.dmi'
|
||||
icon_state = "s357"
|
||||
caliber = ".357"
|
||||
ammo_type = /obj/item/ammo_casing/a357/stun
|
||||
|
||||
|
||||
/obj/item/ammo_casing/a357/stun
|
||||
desc = "A .357 stun bullet casing."
|
||||
caliber = ".357"
|
||||
icon = 'icons/obj/ammo_vr.dmi'
|
||||
icon_state = "stun357"
|
||||
projectile_type = /obj/item/projectile/energy/electrode/stunshot/strong
|
||||
|
||||
/obj/item/ammo_magazine/s357/rubber
|
||||
name = "speedloader (.357 rubber)"
|
||||
desc = "A speedloader for .357 revolvers."
|
||||
icon = 'icons/obj/ammo_vr.dmi'
|
||||
icon_state = "r357"
|
||||
caliber = ".357"
|
||||
ammo_type = /obj/item/ammo_casing/a357/rubber
|
||||
|
||||
|
||||
/obj/item/ammo_casing/a357/rubber
|
||||
desc = "A .357 rubber bullet casing."
|
||||
caliber = ".357"
|
||||
icon = 'icons/obj/ammo_vr.dmi'
|
||||
icon_state = "rubber357"
|
||||
projectile_type = /obj/item/projectile/bullet/pistol/rubber/strong
|
||||
|
||||
/obj/item/ammo_magazine/s357/flash
|
||||
name = "speedloader (.357 flash)"
|
||||
desc = "A speedloader for .357 revolvers."
|
||||
icon = 'icons/obj/ammo_vr.dmi'
|
||||
icon_state = "f357"
|
||||
caliber = ".357"
|
||||
ammo_type = /obj/item/ammo_casing/a357/flash
|
||||
|
||||
/obj/item/ammo_casing/a357/flash
|
||||
desc = "A .357 flash bullet casing."
|
||||
caliber = ".357"
|
||||
icon = 'icons/obj/ammo_vr.dmi'
|
||||
icon_state = "flash357"
|
||||
projectile_type = /obj/item/projectile/energy/flash/strong
|
||||
//Dunno why .380 ammo was in here but Im not touching it. Rest was moved to other files.
|
||||
|
||||
//.380
|
||||
/obj/item/ammo_casing/a380
|
||||
@@ -77,7 +8,7 @@
|
||||
|
||||
/obj/item/ammo_magazine/m380
|
||||
name = "magazine (.380)"
|
||||
icon_state = "9x19p"
|
||||
icon_state = "m92"
|
||||
origin_tech = list(TECH_COMBAT = 2)
|
||||
mag_type = MAGAZINE
|
||||
matter = list(MAT_STEEL = 480)
|
||||
@@ -86,30 +17,3 @@
|
||||
max_ammo = 8
|
||||
multiple_sprites = 1
|
||||
|
||||
//.44
|
||||
/obj/item/ammo_casing/a44/rubber
|
||||
icon_state = "r-casing"
|
||||
desc = "A .44 rubber bullet casing."
|
||||
projectile_type = /obj/item/projectile/bullet/pistol/rubber/strong
|
||||
|
||||
/obj/item/ammo_magazine/m44/rubber
|
||||
desc = "A magazine for .44 less-than-lethal ammo."
|
||||
ammo_type = /obj/item/ammo_casing/a44/rubber
|
||||
|
||||
//.44 speedloaders
|
||||
/obj/item/ammo_magazine/s44
|
||||
name = "speedloader (.44)"
|
||||
desc = "A speedloader for .44 revolvers."
|
||||
icon = 'icons/obj/ammo_vr.dmi'
|
||||
icon_state = "s357"
|
||||
caliber = ".44"
|
||||
matter = list(MAT_STEEL = 1260)
|
||||
ammo_type = /obj/item/ammo_casing/a44
|
||||
max_ammo = 6
|
||||
multiple_sprites = 1
|
||||
mag_type = SPEEDLOADER
|
||||
|
||||
/obj/item/ammo_magazine/s44/rubber
|
||||
name = "speedloader (.44 rubber)"
|
||||
icon_state = "r357"
|
||||
ammo_type = /obj/item/ammo_casing/a44/rubber
|
||||
|
||||
@@ -33,7 +33,6 @@
|
||||
update_icon()
|
||||
return ..()
|
||||
|
||||
|
||||
// Research borg's version
|
||||
/obj/item/weapon/melee/baton/slime/robot
|
||||
hitcost = 200
|
||||
@@ -44,21 +43,23 @@
|
||||
name = "xeno taser gun"
|
||||
desc = "Straight out of NT's testing laboratories, this small gun is used to subdue non-humanoid xeno life forms. \
|
||||
While marketed towards handling slimes, it may be useful for other creatures."
|
||||
icon_state = "taserold"
|
||||
icon_state = "taserblue"
|
||||
fire_sound = 'sound/weapons/taser2.ogg'
|
||||
charge_cost = 120 // Twice as many shots.
|
||||
projectile_type = /obj/item/projectile/beam/stun/xeno
|
||||
accuracy = 30 // Make it a bit easier to hit the slimes.
|
||||
description_info = "This gun will stun a slime or other lesser slimy lifeform for about two seconds, if hit with the projectile it fires."
|
||||
description_fluff = "An easy to use weapon designed by NanoTrasen, for NanoTrasen. This weapon is designed to subdue lesser \
|
||||
slime-based xeno lifeforms at a distance. It is ineffective at stunning non-slimy lifeforms such as humanoids."
|
||||
description_info = "This gun will stun a slime or other lesser slimy lifeform for about two seconds if hit with the projectile it fires."
|
||||
description_fluff = "An easy to use weapon designed by NanoTrasen, for NanoTrasen. This weapon is based on the NT Mk30 NL, \
|
||||
it's core components swaped out for a new design made to subdue lesser slime-based xeno lifeforms at a distance. It is \
|
||||
ineffective at stunning non-slimy lifeforms such as humanoids."
|
||||
recoil_mode = 0 //CHOMP Addition
|
||||
|
||||
/obj/item/weapon/gun/energy/taser/xeno/robot // Borg version
|
||||
self_recharge = 1
|
||||
use_external_power = 1
|
||||
recharge_time = 3
|
||||
|
||||
/*
|
||||
VORESTATION REMOVAL
|
||||
/obj/item/weapon/gun/energy/taser/xeno/sec //NT's corner-cutting option for their on-station security.
|
||||
desc = "An NT Mk30 NL retrofitted to fire beams for subduing non-humanoid slimy xeno life forms."
|
||||
icon_state = "taserblue"
|
||||
@@ -72,6 +73,7 @@
|
||||
self_recharge = 1
|
||||
use_external_power = 1
|
||||
recharge_time = 3
|
||||
*/
|
||||
|
||||
/obj/item/projectile/beam/stun/xeno
|
||||
icon_state = "omni"
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 97 KiB After Width: | Height: | Size: 100 KiB |
@@ -14568,7 +14568,6 @@
|
||||
},
|
||||
/obj/structure/closet/secure_closet/detective,
|
||||
/obj/item/weapon/reagent_containers/spray/pepper,
|
||||
/obj/item/weapon/gun/energy/taser,
|
||||
/obj/item/device/camera{
|
||||
desc = "A one use - polaroid camera. 30 photos left.";
|
||||
name = "detectives camera";
|
||||
|
||||
-1
Submodule tgstation deleted from ccf136aa07
@@ -94,6 +94,11 @@ const ViewCharacter = (props, context) => {
|
||||
content="Back"
|
||||
onClick={() => setOverlay(null)} />
|
||||
}>
|
||||
<Section level={2} title="Species">
|
||||
<Box>
|
||||
{overlay.species}
|
||||
</Box>
|
||||
</Section>
|
||||
<Section level={2} title="Vore Tag">
|
||||
<Box p={1} backgroundColor={getTagColor(overlay.tag)}>
|
||||
{overlay.tag}
|
||||
@@ -149,6 +154,7 @@ const CharacterDirectoryList = (props, context) => {
|
||||
<Table>
|
||||
<Table.Row bold>
|
||||
<SortButton id="name">Name</SortButton>
|
||||
<SortButton id="species">Species</SortButton>
|
||||
<SortButton id="tag">Vore Tag</SortButton>
|
||||
<SortButton id="erptag">ERP Tag</SortButton>
|
||||
<SortButton id="eventtag">Event Pref</SortButton>
|
||||
@@ -162,6 +168,7 @@ const CharacterDirectoryList = (props, context) => {
|
||||
.map((character, i) => (
|
||||
<Table.Row key={i} backgroundColor={getTagColor(character.tag)}>
|
||||
<Table.Cell p={1}>{character.name}</Table.Cell>
|
||||
<Table.Cell>{character.species}</Table.Cell>
|
||||
<Table.Cell>{character.tag}</Table.Cell>
|
||||
<Table.Cell>{character.erptag}</Table.Cell>
|
||||
<Table.Cell>{character.eventtag}</Table.Cell>
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -3010,6 +3010,7 @@
|
||||
#include "code\modules\mob\living\carbon\human\species\station\monkey_vr.dm"
|
||||
#include "code\modules\mob\living\carbon\human\species\station\prometheans.dm"
|
||||
#include "code\modules\mob\living\carbon\human\species\station\prometheans_vr.dm"
|
||||
#include "code\modules\mob\living\carbon\human\species\station\prommie_blob.dm"
|
||||
#include "code\modules\mob\living\carbon\human\species\station\station.dm"
|
||||
#include "code\modules\mob\living\carbon\human\species\station\station_ch.dm"
|
||||
#include "code\modules\mob\living\carbon\human\species\station\station_special_abilities_ch.dm"
|
||||
|
||||
Reference in New Issue
Block a user