Merge pull request #5747 from Novacat/nova-weapons

Early Polaris Ports
This commit is contained in:
Novacat
2019-08-31 01:10:47 -04:00
committed by GitHub
33 changed files with 949 additions and 151 deletions
+1 -1
View File
@@ -368,7 +368,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
return
var/location = alert(src,"Please specify where to spawn them.", "Location", "Right Here", "Arrivals", "Cancel")
if(!location)
if(location == "Cancel" || !location)
return
var/announce = alert(src,"Announce as if they had just arrived?", "Announce", "Yes", "No", "Cancel")
+11
View File
@@ -293,6 +293,17 @@
punch_force = initial(punch_force)
wearer = null
/obj/item/clothing/gloves
var/datum/unarmed_attack/special_attack = null //do the gloves have a special unarmed attack?
var/special_attack_type = null
/obj/item/clothing/gloves/New()
..()
if(special_attack_type && ispath(special_attack_type))
special_attack = new special_attack_type
/////////////////////////////////////////////////////////////////////
//Rings
@@ -18,6 +18,10 @@
var/mob/living/carbon/human/H = user
if(H.gloves)
gloves = H.gloves
if(!istype(gloves))
to_chat(user, "You are unable to wear \the [src] as \the [H.gloves] are in the way.")
gloves = null
return 0
if(gloves.overgloves)
to_chat(user, "You are unable to wear \the [src] as \the [H.gloves] are in the way.")
gloves = null
+192
View File
@@ -182,6 +182,198 @@
. = ..()
reagents.add_reagent("sugar", 20)
//MRE condiments and drinks.
/obj/item/weapon/reagent_containers/food/condiment/small/packet
icon_state = "packet_small"
w_class = ITEMSIZE_TINY
possible_transfer_amounts = "1;5;10"
amount_per_transfer_from_this = 1
volume = 5
/obj/item/weapon/reagent_containers/food/condiment/small/packet/salt
name = "salt packet"
desc = "Contains 5u of table salt."
icon_state = "packet_small_white"
/obj/item/weapon/reagent_containers/food/condiment/small/packet/salt/Initialize()
. = ..()
reagents.add_reagent("sodiumchloride", 5)
/obj/item/weapon/reagent_containers/food/condiment/small/packet/pepper
name = "pepper packet"
desc = "Contains 5u of black pepper."
icon_state = "packet_small_black"
/obj/item/weapon/reagent_containers/food/condiment/small/packet/pepper/Initialize()
. = ..()
reagents.add_reagent("blackpepper", 5)
/obj/item/weapon/reagent_containers/food/condiment/small/packet/sugar
name = "sugar packet"
desc = "Contains 5u of refined sugar."
icon_state = "packet_small_white"
/obj/item/weapon/reagent_containers/food/condiment/small/packet/sugar/Initialize()
. = ..()
reagents.add_reagent("sugar", 5)
/obj/item/weapon/reagent_containers/food/condiment/small/packet/jelly
name = "jelly packet"
desc = "Contains 10u of cherry jelly. Best used for spreading on crackers."
icon_state = "packet_medium"
volume = 10
/obj/item/weapon/reagent_containers/food/condiment/small/packet/jelly/Initialize()
. = ..()
reagents.add_reagent("cherryjelly", 10)
/obj/item/weapon/reagent_containers/food/condiment/small/packet/honey
name = "honey packet"
desc = "Contains 10u of honey."
icon_state = "packet_medium"
volume = 10
/obj/item/weapon/reagent_containers/food/condiment/small/packet/honey/Initialize()
. = ..()
reagents.add_reagent("honey", 10)
/obj/item/weapon/reagent_containers/food/condiment/small/packet/capsaicin
name = "hot sauce packet"
desc = "Contains 5u of hot sauce. Enjoy in moderation."
icon_state = "packet_small_red"
/obj/item/weapon/reagent_containers/food/condiment/small/packet/capsaicin/Initialize()
. = ..()
reagents.add_reagent("capsaicin", 5)
/obj/item/weapon/reagent_containers/food/condiment/small/packet/ketchup
name = "ketchup packet"
desc = "Contains 5u of ketchup."
icon_state = "packet_small_red"
/obj/item/weapon/reagent_containers/food/condiment/small/packet/ketchup/Initialize()
. = ..()
reagents.add_reagent("ketchup", 5)
/obj/item/weapon/reagent_containers/food/condiment/small/packet/mayo
name = "mayonnaise packet"
desc = "Contains 5u of mayonnaise."
icon_state = "packet_small_white"
/obj/item/weapon/reagent_containers/food/condiment/small/packet/mayo/Initialize()
. = ..()
reagents.add_reagent("mayo", 5)
/obj/item/weapon/reagent_containers/food/condiment/small/packet/soy
name = "soy sauce packet"
desc = "Contains 5u of soy sauce."
icon_state = "packet_small_black"
/obj/item/weapon/reagent_containers/food/condiment/small/packet/soy/Initialize()
. = ..()
reagents.add_reagent("soysauce", 5)
/obj/item/weapon/reagent_containers/food/condiment/small/packet/coffee
name = "coffee powder packet"
desc = "Contains 5u of coffee powder. Mix with 25u of water and heat."
/obj/item/weapon/reagent_containers/food/condiment/small/packet/coffee/Initialize()
. = ..()
reagents.add_reagent("coffeepowder", 5)
/obj/item/weapon/reagent_containers/food/condiment/small/packet/tea
name = "tea powder packet"
desc = "Contains 5u of black tea powder. Mix with 25u of water and heat."
/obj/item/weapon/reagent_containers/food/condiment/small/packet/tea/Initialize()
. = ..()
reagents.add_reagent("tea", 5)
/obj/item/weapon/reagent_containers/food/condiment/small/packet/cocoa
name = "cocoa powder packet"
desc = "Contains 5u of cocoa powder. Mix with 25u of water and heat."
/obj/item/weapon/reagent_containers/food/condiment/small/packet/cocoa/Initialize()
. = ..()
reagents.add_reagent("coco", 5)
/obj/item/weapon/reagent_containers/food/condiment/small/packet/grape
name = "grape juice powder packet"
desc = "Contains 5u of powdered grape juice. Mix with 15u of water."
/obj/item/weapon/reagent_containers/food/condiment/small/packet/grape/Initialize()
. = ..()
reagents.add_reagent("instantgrape", 5)
/obj/item/weapon/reagent_containers/food/condiment/small/packet/orange
name = "orange juice powder packet"
desc = "Contains 5u of powdered orange juice. Mix with 15u of water."
/obj/item/weapon/reagent_containers/food/condiment/small/packet/orange/Initialize()
. = ..()
reagents.add_reagent("instantorange", 5)
/obj/item/weapon/reagent_containers/food/condiment/small/packet/watermelon
name = "watermelon juice powder packet"
desc = "Contains 5u of powdered watermelon juice. Mix with 15u of water."
/obj/item/weapon/reagent_containers/food/condiment/small/packet/watermelon/Initialize()
. = ..()
reagents.add_reagent("instantwatermelon", 5)
/obj/item/weapon/reagent_containers/food/condiment/small/packet/apple
name = "apple juice powder packet"
desc = "Contains 5u of powdered apple juice. Mix with 15u of water."
/obj/item/weapon/reagent_containers/food/condiment/small/packet/apple/Initialize()
. = ..()
reagents.add_reagent("instantapple", 5)
/obj/item/weapon/reagent_containers/food/condiment/small/packet/protein
name = "protein powder packet"
desc = "Contains 10u of powdered protein. Mix with 20u of water."
icon_state = "packet_medium"
volume = 10
/obj/item/weapon/reagent_containers/food/condiment/small/packet/protein/Initialize()
. = ..()
reagents.add_reagent("protein", 10)
/obj/item/weapon/reagent_containers/food/condiment/small/packet/crayon
name = "crayon powder packet"
desc = "Contains 10u of powdered crayon. Mix with 30u of water."
volume = 10
/obj/item/weapon/reagent_containers/food/condiment/small/packet/crayon/generic/Initialize()
. = ..()
reagents.add_reagent("crayon_dust", 10)
/obj/item/weapon/reagent_containers/food/condiment/small/packet/crayon/red/Initialize()
. = ..()
reagents.add_reagent("crayon_dust_red", 10)
/obj/item/weapon/reagent_containers/food/condiment/small/packet/crayon/orange/Initialize()
. = ..()
reagents.add_reagent("crayon_dust_orange", 10)
/obj/item/weapon/reagent_containers/food/condiment/small/packet/crayon/yellow/Initialize()
. = ..()
reagents.add_reagent("crayon_dust_yellow", 10)
/obj/item/weapon/reagent_containers/food/condiment/small/packet/crayon/green/Initialize()
. = ..()
reagents.add_reagent("crayon_dust_green", 10)
/obj/item/weapon/reagent_containers/food/condiment/small/packet/crayon/blue/Initialize()
. = ..()
reagents.add_reagent("crayon_dust_blue", 10)
/obj/item/weapon/reagent_containers/food/condiment/small/packet/crayon/purple/Initialize()
. = ..()
reagents.add_reagent("crayon_dust_purple", 10)
/obj/item/weapon/reagent_containers/food/condiment/small/packet/crayon/grey/Initialize()
. = ..()
reagents.add_reagent("crayon_dust_grey", 10)
/obj/item/weapon/reagent_containers/food/condiment/small/packet/crayon/brown/Initialize()
. = ..()
reagents.add_reagent("crayon_dust_brown", 10)
//End of MRE stuff.
/obj/item/weapon/reagent_containers/food/condiment/flour
name = "flour sack"
desc = "A big bag of flour. Good for baking!"
+29 -6
View File
@@ -21,12 +21,7 @@
/obj/item/weapon/reagent_containers/food/snacks/Initialize()
. = ..()
if(nutriment_amt)
reagents.add_reagent("nutriment",nutriment_amt,nutriment_desc)
/obj/item/weapon/reagent_containers/food/snacks/Initialize()
. = ..()
if(nutriment_amt)
reagents.add_reagent("nutriment", nutriment_amt)
reagents.add_reagent("nutriment",(nutriment_amt*2),nutriment_desc)
//Placeholder for effect that trigger on eating that aren't tied to reagents.
/obj/item/weapon/reagent_containers/food/snacks/proc/On_Consume(var/mob/M)
@@ -3088,6 +3083,7 @@
filling_color = "#F5DEB8"
center_of_mass = list("x"=16, "y"=6)
nutriment_desc = list("salt" = 1, "cracker" = 2)
w_class = ITEMSIZE_TINY
nutriment_amt = 1
@@ -3738,6 +3734,33 @@
reagents.add_reagent("iron", 3)
bitesize = 4
/obj/item/weapon/reagent_containers/food/snacks/liquidprotein
name = "\improper LiquidProtein Ration"
desc = "A variant of the liquidfood ration, designed for obligate carnivore species. Only barely more appealing than regular liquidfood. Should this be crunchy?"
icon_state = "liquidprotein"
trash = /obj/item/trash/liquidprotein
filling_color = "#A8A8A8"
survivalfood = TRUE
center_of_mass = list("x"=16, "y"=15)
/obj/item/weapon/reagent_containers/food/snacks/liquidprotein/Initialize()
..()
reagents.add_reagent("protein", 30)
reagents.add_reagent("iron", 3)
bitesize = 4
/obj/item/weapon/reagent_containers/food/snacks/meatcube
name = "cubed meat"
desc = "Fried, salted lean meat compressed into a cube. Not very appetizing."
icon_state = "meatcube"
filling_color = "#7a3d11"
center_of_mass = list("x"=16, "y"=16)
/obj/item/weapon/reagent_containers/food/snacks/meatcube/Initialize()
. = ..()
reagents.add_reagent("protein", 15)
bitesize = 3
/obj/item/weapon/reagent_containers/food/snacks/tastybread
name = "bread tube"
desc = "Bread in a tube. Chewy...and surprisingly tasty."
-16
View File
@@ -607,19 +607,3 @@
/obj/item/pizzabox/meat/Initialize()
pizza = new /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/meatcargo(src)
/obj/item/weapon/reagent_containers/food/snacks/liquidprotein
name = "\improper LiquidProtein Ration"
desc = "A variant of the liquidfood ration, designed for obligate carnivore species. Only barely more appealing than regular liquidfood. Should this be crunchy?"
icon = 'icons/obj/food_vr.dmi'
icon_state = "liquidprotein"
trash = /obj/item/trash/liquidprotein
filling_color = "#A8A8A8"
survivalfood = TRUE
center_of_mass = list("x"=16, "y"=15)
/obj/item/weapon/reagent_containers/food/snacks/liquidprotein/Initialize()
..()
reagents.add_reagent("protein", 20)
reagents.add_reagent("iron", 3)
bitesize = 4
+34 -2
View File
@@ -126,6 +126,38 @@
slot_r_hand_str = 'icons/mob/items/righthand_gloves.dmi',
)
item_state = "boxing"
special_attack_type = /datum/unarmed_attack/holopugilism
datum/unarmed_attack/holopugilism
sparring_variant_type = /datum/unarmed_attack/holopugilism
datum/unarmed_attack/holopugilism/unarmed_override(var/mob/living/carbon/human/user,var/mob/living/carbon/human/target,var/zone)
user.do_attack_animation(src)
var/damage = rand(0, 9)
if(!damage)
playsound(target.loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1)
target.visible_message("<font color='red'><B>[user] has attempted to punch [target]!</B></font>")
return TRUE
var/obj/item/organ/external/affecting = target.get_organ(ran_zone(user.zone_sel.selecting))
var/armor_block = target.run_armor_check(affecting, "melee")
var/armor_soak = target.get_armor_soak(affecting, "melee")
if(HULK in user.mutations)
damage += 5
playsound(target.loc, "punch", 25, 1, -1)
target.visible_message("<font color='red'><B>[user] has punched [target]!</B></font>")
if(armor_soak >= damage)
return TRUE
target.apply_damage(damage, HALLOSS, affecting, armor_block, armor_soak)
if(damage >= 9)
target.visible_message("<font color='red'><B>[user] has weakened [target]!</B></font>")
target.apply_effect(4, WEAKEN, armor_block)
return TRUE
/obj/structure/window/reinforced/holowindow/attackby(obj/item/W as obj, mob/user as mob)
if(!istype(W))
@@ -262,8 +294,8 @@
spark_system.set_up(5, 0, user.loc)
spark_system.start()
playsound(user.loc, 'sound/weapons/blade1.ogg', 50, 1)
return 1
return 0
return TRUE
return FALSE
/obj/item/weapon/holo/esword/New()
item_color = pick("red","blue","green","purple")
+7 -1
View File
@@ -438,7 +438,7 @@ var/list/name_to_material
// Very rare alloy that is reflective, should be used sparingly.
/material/durasteel
name = "durasteel"
stack_type = /obj/item/stack/material/durasteel
stack_type = /obj/item/stack/material/durasteel/hull
integrity = 600
melting_point = 7000
icon_base = "metal"
@@ -460,6 +460,9 @@ var/list/name_to_material
explosion_resistance = 90
reflectivity = 0.9
/material/durasteel/hull/place_sheet(var/turf/target) //Deconstructed into normal durasteel sheets.
new /obj/item/stack/material/durasteel(target)
/material/plasteel/titanium
name = MAT_TITANIUM
stack_type = /obj/item/stack/material/titanium
@@ -475,6 +478,9 @@ var/list/name_to_material
icon_base = "hull"
icon_reinf = "reinf_mesh"
/material/plasteel/titanium/hull/place_sheet(var/turf/target) //Deconstructed into normal titanium sheets.
new /obj/item/stack/material/titanium(target)
/material/glass
name = "glass"
stack_type = /obj/item/stack/material/glass
+2 -2
View File
@@ -591,9 +591,9 @@ turf/simulated/mineral/floor/light_corner
if(is_clean)
X = new /obj/item/weapon/archaeological_find(src, new_item_type = F.find_type)
else
X = new /obj/item/weapon/ore/strangerock(src, inside_item_type = F.find_type)
X = new /obj/item/weapon/strangerock(src, inside_item_type = F.find_type)
geologic_data.UpdateNearbyArtifactInfo(src)
var/obj/item/weapon/ore/strangerock/SR = X
var/obj/item/weapon/strangerock/SR = X
SR.geologic_data = geologic_data
//some find types delete the /obj/item/weapon/archaeological_find and replace it with something else, this handles when that happens
@@ -8,6 +8,14 @@
return soft_type
return src.default_attack
// VOREStation Edit - End
if(src.gloves)
var/obj/item/clothing/gloves/G = src.gloves
if(istype(G) && G.special_attack && G.special_attack.is_usable(src, target, hit_zone))
if(pulling_punches)
var/datum/unarmed_attack/soft_type = G.special_attack.get_sparring_variant()
if(soft_type)
return soft_type
return G.special_attack
for(var/datum/unarmed_attack/u_attack in species.unarmed_attacks)
if(u_attack.is_usable(src, target, hit_zone))
if(pulling_punches)
@@ -41,39 +49,11 @@
H.do_attack_animation(src)
playsound(loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1)
visible_message("<font color='red'><B>[H] reaches for [src], but misses!</B></font>")
return 0
return FALSE
if(H != src && check_shields(0, null, H, H.zone_sel.selecting, H.name))
H.do_attack_animation(src)
return 0
if(istype(H.gloves, /obj/item/clothing/gloves/boxing/hologlove))
H.do_attack_animation(src)
var/damage = rand(0, 9)
if(!damage)
playsound(loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1)
visible_message("<font color='red'><B>[H] has attempted to punch [src]!</B></font>")
return 0
var/obj/item/organ/external/affecting = get_organ(ran_zone(H.zone_sel.selecting))
var/armor_block = run_armor_check(affecting, "melee")
var/armor_soak = get_armor_soak(affecting, "melee")
if(HULK in H.mutations)
damage += 5
playsound(loc, "punch", 25, 1, -1)
visible_message("<font color='red'><B>[H] has punched [src]!</B></font>")
if(armor_soak >= damage)
return
apply_damage(damage, HALLOSS, affecting, armor_block, armor_soak)
if(damage >= 9)
visible_message("<font color='red'><B>[H] has weakened [src]!</B></font>")
apply_effect(4, WEAKEN, armor_block)
return
return FALSE
if(istype(M,/mob/living/carbon))
var/mob/living/carbon/C = M
@@ -122,7 +102,7 @@
else if(!(M == src && apply_pressure(M, M.zone_sel.selecting)))
help_shake_act(M)
return 1
return TRUE
if(I_GRAB)
if(M == src || anchored)
@@ -149,7 +129,7 @@
//VORESTATION EDIT
visible_message("<span class='warning'>[M] has grabbed [src] [(M.zone_sel.selecting == BP_L_HAND || M.zone_sel.selecting == BP_R_HAND)? "by [(gender==FEMALE)? "her" : ((gender==MALE)? "his": "their")] hands": "passively"]!</span>")
//VORESTATION END END
return 1
return TRUE
if(I_HURT)
@@ -175,7 +155,7 @@
if(!affecting || affecting.is_stump())
M << "<span class='danger'>They are missing that limb!</span>"
return 1
return TRUE
switch(src.a_intent)
if(I_HELP)
@@ -245,7 +225,10 @@
// See what attack they use
var/datum/unarmed_attack/attack = H.get_unarmed_attack(src, hit_zone)
if(!attack)
return 0
return FALSE
if(attack.unarmed_override(H, src, hit_zone))
return FALSE
H.do_attack_animation(src)
if(!attack_message)
@@ -258,7 +241,7 @@
add_attack_logs(H,src,"Melee attacked with fists (miss/block)")
if(miss_type)
return 0
return FALSE
var/real_damage = rand_damage
var/hit_dam_type = attack.damage_type
@@ -268,7 +251,7 @@
var/obj/item/clothing/gloves/G = H.gloves
real_damage += G.punch_force
hit_dam_type = G.punch_damtype
if(H.pulling_punches) //SO IT IS DECREED: PULLING PUNCHES WILL PREVENT THE ACTUAL DAMAGE FROM RINGS AND KNUCKLES, BUT NOT THE ADDED PAIN
if(H.pulling_punches && !attack.sharp && !attack.edge) //SO IT IS DECREED: PULLING PUNCHES WILL PREVENT THE ACTUAL DAMAGE FROM RINGS AND KNUCKLES, BUT NOT THE ADDED PAIN, BUT YOU CAN'T "PULL" A KNIFE
hit_dam_type = AGONY
real_damage *= damage_multiplier
rand_damage *= damage_multiplier
@@ -359,7 +342,7 @@
var/armor_soak = get_armor_soak(affecting, armor_type, armor_pen)
apply_damage(damage, BRUTE, affecting, armor_block, armor_soak, sharp = a_sharp, edge = a_edge)
updatehealth()
return 1
return TRUE
//Used to attack a joint through grabbing
/mob/living/carbon/human/proc/grab_joint(var/mob/living/user, var/def_zone)
@@ -370,43 +353,43 @@
break
if(!has_grab)
return 0
return FALSE
if(!def_zone) def_zone = user.zone_sel.selecting
var/target_zone = check_zone(def_zone)
if(!target_zone)
return 0
return FALSE
var/obj/item/organ/external/organ = get_organ(check_zone(target_zone))
if(!organ || organ.dislocated > 0 || organ.dislocated == -1) //don't use is_dislocated() here, that checks parent
return 0
return FALSE
user.visible_message("<span class='warning'>[user] begins to dislocate [src]'s [organ.joint]!</span>")
if(do_after(user, 100))
organ.dislocate(1)
src.visible_message("<span class='danger'>[src]'s [organ.joint] [pick("gives way","caves in","crumbles","collapses")]!</span>")
return 1
return 0
return TRUE
return FALSE
//Breaks all grips and pulls that the mob currently has.
/mob/living/carbon/human/proc/break_all_grabs(mob/living/carbon/user)
var/success = 0
var/success = FALSE
if(pulling)
visible_message("<span class='danger'>[user] has broken [src]'s grip on [pulling]!</span>")
success = 1
success = TRUE
stop_pulling()
if(istype(l_hand, /obj/item/weapon/grab))
var/obj/item/weapon/grab/lgrab = l_hand
if(lgrab.affecting)
visible_message("<span class='danger'>[user] has broken [src]'s grip on [lgrab.affecting]!</span>")
success = 1
success = TRUE
spawn(1)
qdel(lgrab)
if(istype(r_hand, /obj/item/weapon/grab))
var/obj/item/weapon/grab/rgrab = r_hand
if(rgrab.affecting)
visible_message("<span class='danger'>[user] has broken [src]'s grip on [rgrab.affecting]!</span>")
success = 1
success = TRUE
spawn(1)
qdel(rgrab)
return success
@@ -421,11 +404,11 @@
/mob/living/carbon/human/proc/apply_pressure(mob/living/user, var/target_zone)
var/obj/item/organ/external/organ = get_organ(target_zone)
if(!organ || !(organ.status & ORGAN_BLEEDING) || (organ.robotic >= ORGAN_ROBOT))
return 0
return FALSE
if(organ.applied_pressure)
user << "<span class='warning'>Someone is already applying pressure to [user == src? "your [organ.name]" : "[src]'s [organ.name]"].</span>"
return 0
return FALSE
var/datum/gender/TU = gender_datums[user.get_visible_gender()]
@@ -446,4 +429,4 @@
else
user.visible_message("\The [user] stops applying pressure to [src]'s [organ.name]!", "You stop applying pressure to [src]'s [organ.name]!")
return 1
return TRUE
@@ -25,18 +25,18 @@ var/global/list/sparring_attack_cache = list()
/datum/unarmed_attack/proc/is_usable(var/mob/living/carbon/human/user, var/mob/living/carbon/human/target, var/zone)
if(user.restrained())
return 0
return FALSE
// Check if they have a functioning hand.
var/obj/item/organ/external/E = user.organs_by_name["l_hand"]
if(E && !E.is_stump())
return 1
return TRUE
E = user.organs_by_name["r_hand"]
if(E && !E.is_stump())
return 1
return TRUE
return 0
return FALSE
/datum/unarmed_attack/proc/get_unarmed_damage()
return damage
@@ -105,6 +105,9 @@ var/global/list/sparring_attack_cache = list()
return
user.visible_message("<span class='danger'>[user] attempts to press [TU.his] [eye_attack_text] into [target]'s eyes, but [TT.he] [TT.does]n't have any!</span>")
/datum/unarmed_attack/proc/unarmed_override(var/mob/living/carbon/human/user,var/mob/living/carbon/human/target,var/zone)
return FALSE //return true if the unarmed override prevents further attacks
/datum/unarmed_attack/bite
attack_verb = list("bit")
attack_sound = 'sound/weapons/bite.ogg'
@@ -121,7 +124,7 @@ var/global/list/sparring_attack_cache = list()
return 0
if (user == target && (zone == BP_HEAD || zone == O_EYES || zone == O_MOUTH))
return 0
return 1
return TRUE
/datum/unarmed_attack/punch
attack_verb = list("punched")
@@ -187,20 +190,20 @@ var/global/list/sparring_attack_cache = list()
/datum/unarmed_attack/kick/is_usable(var/mob/living/carbon/human/user, var/mob/living/carbon/human/target, var/zone)
if (user.legcuffed)
return 0
return FALSE
if(!(zone in list("l_leg", "r_leg", "l_foot", "r_foot", BP_GROIN)))
return 0
return FALSE
var/obj/item/organ/external/E = user.organs_by_name["l_foot"]
if(E && !E.is_stump())
return 1
return TRUE
E = user.organs_by_name["r_foot"]
if(E && !E.is_stump())
return 1
return TRUE
return 0
return FALSE
/datum/unarmed_attack/kick/get_unarmed_damage(var/mob/living/carbon/human/user)
var/obj/item/clothing/shoes = user.shoes
@@ -231,23 +234,23 @@ var/global/list/sparring_attack_cache = list()
/datum/unarmed_attack/stomp/is_usable(var/mob/living/carbon/human/user, var/mob/living/carbon/human/target, var/zone)
if (user.legcuffed)
return 0
return FALSE
if(!istype(target))
return 0
return FALSE
if (!user.lying && (target.lying || (zone in list("l_foot", "r_foot"))))
if(target.grabbed_by == user && target.lying)
return 0
return FALSE
var/obj/item/organ/external/E = user.organs_by_name["l_foot"]
if(E && !E.is_stump())
return 1
return TRUE
E = user.organs_by_name["r_foot"]
if(E && !E.is_stump())
return 1
return TRUE
return 0
return FALSE
/datum/unarmed_attack/stomp/get_unarmed_damage(var/mob/living/carbon/human/user)
var/obj/item/clothing/shoes = user.shoes
@@ -411,7 +411,7 @@
/obj/random/bomb_supply = 7,
/obj/random/contraband = 3,
/obj/random/unidentified_medicine/old_medicine = 7,
/obj/item/weapon/ore/strangerock = 3,
/obj/item/weapon/strangerock = 3,
/obj/item/weapon/ore/phoron = 7,
/obj/random/handgun = 1,
/obj/random/toolbox = 4,
@@ -148,6 +148,24 @@
if(!istype(T, /turf/space))
new /obj/effect/decal/cleanable/flour(T)
/datum/reagent/nutriment/coffee
name = "Coffee Powder"
id = "coffeepowder"
description = "A bitter powder made by grinding coffee beans."
taste_description = "bitterness"
taste_mult = 1.3
nutriment_factor = 1
color = "#482000"
/datum/reagent/nutriment/tea
name = "Tea Powder"
id = "teapowder"
description = "A dark, tart powder made from black tea leaves."
taste_description = "tartness"
taste_mult = 1.3
nutriment_factor = 1
color = "#101000"
/datum/reagent/nutriment/coco
name = "Coco Powder"
id = "coco"
@@ -158,6 +176,41 @@
nutriment_factor = 5
color = "#302000"
/datum/reagent/nutriment/instantjuice
name = "Juice Powder"
id = "instantjuice"
description = "Dehydrated, powdered juice of some kind."
taste_mult = 1.3
nutriment_factor = 1
/datum/reagent/nutriment/instantjuice/grape
name = "Grape Juice Powder"
id = "instantgrape"
description = "Dehydrated, powdered grape juice."
taste_description = "dry grapes"
color = "#863333"
/datum/reagent/nutriment/instantjuice/orange
name = "Orange Juice Powder"
id = "instantorange"
description = "Dehydrated, powdered orange juice."
taste_description = "dry oranges"
color = "#e78108"
/datum/reagent/nutriment/instantjuice/watermelon
name = "Watermelon Juice Powder"
id = "instantwatermelon"
description = "Dehydrated, powdered watermelon juice."
taste_description = "dry sweet watermelon"
color = "#b83333"
/datum/reagent/nutriment/instantjuice/apple
name = "Apple Juice Powder"
id = "instantapple"
description = "Dehydrated, powdered apple juice."
taste_description = "dry sweet apples"
color = "#c07c40"
/datum/reagent/nutriment/soysauce
name = "Soysauce"
id = "soysauce"
@@ -1200,6 +1200,20 @@
new /obj/item/weapon/reagent_containers/food/snacks/chocolatebar(location)
return
/datum/chemical_reaction/drinks/coffee
name = "Coffee"
id = "coffee"
result = "coffee"
required_reagents = list("water" = 5, "coffeepowder" = 1)
result_amount = 5
/datum/chemical_reaction/drinks/tea
name = "Black tea"
id = "tea"
result = "tea"
required_reagents = list("water" = 5, "teapowder" = 1)
result_amount = 5
/datum/chemical_reaction/drinks/hot_coco
name = "Hot Coco"
id = "hot_coco"
@@ -1214,6 +1228,34 @@
required_reagents = list("soymilk" = 4, "sacid" = 1)
result_amount = 5
/datum/chemical_reaction/drinks/grapejuice
name = "Grape Juice"
id = "grapejuice"
result = "grapejuice"
required_reagents = list("water" = 3, "instantgrape" = 1)
result_amount = 3
/datum/chemical_reaction/drinks/orangejuice
name = "Orange Juice"
id = "orangejuice"
result = "orangejuice"
required_reagents = list("water" = 3, "instantorange" = 1)
result_amount = 3
/datum/chemical_reaction/drinks/watermelonjuice
name = "Watermelon Juice"
id = "watermelonjuice"
result = "watermelonjuice"
required_reagents = list("water" = 3, "instantwatermelon" = 1)
result_amount = 3
/datum/chemical_reaction/drinks/applejuice
name = "Apple Juice"
id = "applejuice"
result = "applejuice"
required_reagents = list("water" = 3, "instantapple" = 1)
result_amount = 3
/datum/chemical_reaction/food/ketchup
name = "Ketchup"
id = "ketchup"
+6 -4
View File
@@ -14,20 +14,22 @@
clearance_range = rand(4, 12)
dissonance_spread = rand(1500, 2500) / 100
/obj/item/weapon/ore/strangerock
/obj/item/weapon/strangerock
name = "Strange rock"
desc = "Seems to have some unusal strata evident throughout it."
icon = 'icons/obj/xenoarchaeology.dmi'
icon_state = "strange"
var/datum/geosample/geologic_data
origin_tech = list(TECH_MATERIAL = 5)
/obj/item/weapon/ore/strangerock/New(loc, var/inside_item_type = 0)
..(loc)
/obj/item/weapon/strangerock/New(loc, var/inside_item_type = 0)
pixel_x = rand(0,16)-8
pixel_y = rand(0,8)-8
if(inside_item_type)
new /obj/item/weapon/archaeological_find(src, new_item_type = inside_item_type)
/obj/item/weapon/ore/strangerock/attackby(var/obj/item/I, var/mob/user)
/obj/item/weapon/strangerock/attackby(var/obj/item/I, var/mob/user)
if(istype(I, /obj/item/weapon/pickaxe/brush))
var/obj/item/inside = locate() in src
if(inside)