mirror of
https://github.com/CHOMPstation/CHOMPstation.git
synced 2026-08-25 04:56:29 +01:00
Merge branch 'master' of https://github.com/VOREStation/Polaris into aro-sync-05-25-2018
# Conflicts: # code/__defines/misc.dm # code/controllers/master_controller.dm # code/game/machinery/computer3/computers/card.dm # code/game/objects/items/devices/communicator/UI.dm # code/game/objects/items/stacks/medical.dm # code/game/objects/structures/signs.dm # code/modules/admin/admin_verbs.dm # code/modules/client/client defines.dm # code/modules/client/client procs.dm # code/modules/clothing/clothing.dm # code/modules/clothing/under/accessories/holster.dm # code/modules/events/radiation_storm.dm # code/modules/mining/machine_processing.dm # code/modules/mob/living/carbon/human/species/station/prometheans.dm # code/modules/mob/living/living.dm # code/modules/mob/living/simple_animal/animals/bear.dm # code/modules/mob/living/simple_animal/animals/cat.dm # code/modules/mob/living/simple_animal/animals/parrot.dm # code/modules/mob/mob.dm # code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Core.dm # code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm # code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm # code/modules/reagents/reagent_dispenser.dm # config/example/config.txt # html/changelogs/.all_changelog.yml # interface/skin.dmf # maps/southern_cross/southern_cross-1.dmm # vorestation.dme
This commit is contained in:
@@ -3,19 +3,20 @@
|
||||
icon_state = "flashbang"
|
||||
item_state = "flashbang"
|
||||
origin_tech = list(TECH_MATERIAL = 2, TECH_COMBAT = 1)
|
||||
var/max_range = 10 //The maximum range possible, including species effect mods. Cuts off at 7 for normal humans. Should be 3 higher than your intended target range for affecting normal humans.
|
||||
var/banglet = 0
|
||||
|
||||
/obj/item/weapon/grenade/flashbang/prime()
|
||||
..()
|
||||
for(var/obj/structure/closet/L in hear(7, get_turf(src)))
|
||||
for(var/obj/structure/closet/L in hear(max_range, get_turf(src)))
|
||||
if(locate(/mob/living/carbon/, L))
|
||||
for(var/mob/living/carbon/M in L)
|
||||
bang(get_turf(src), M)
|
||||
|
||||
for(var/mob/living/carbon/M in hear(7, get_turf(src)))
|
||||
for(var/mob/living/carbon/M in hear(max_range, get_turf(src)))
|
||||
bang(get_turf(src), M)
|
||||
|
||||
for(var/obj/structure/blob/B in hear(8,get_turf(src))) //Blob damage here
|
||||
for(var/obj/structure/blob/B in hear(max_range - 2,get_turf(src))) //Blob damage here
|
||||
var/damage = round(30/(get_dist(B,get_turf(src))+1))
|
||||
if(B.overmind)
|
||||
damage *= B.overmind.blob_type.burn_multiplier
|
||||
@@ -39,13 +40,19 @@
|
||||
ear_safety = M.get_ear_protection()
|
||||
|
||||
//Flashing everyone
|
||||
if(eye_safety < 1)
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/flash_effectiveness = 1
|
||||
var/bang_effectiveness = 1
|
||||
if(ishuman(M))
|
||||
flash_effectiveness = H.species.flash_mod
|
||||
bang_effectiveness = H.species.sound_mod
|
||||
if(eye_safety < 1 && get_dist(M, T) <= round(max_range * 0.7 * flash_effectiveness))
|
||||
M.flash_eyes()
|
||||
M.Confuse(2)
|
||||
M.Weaken(5)
|
||||
M.Confuse(2 * flash_effectiveness)
|
||||
M.Weaken(5 * flash_effectiveness)
|
||||
|
||||
//Now applying sound
|
||||
if((get_dist(M, T) <= 2 || src.loc == M.loc || src.loc == M))
|
||||
if((get_dist(M, T) <= round(max_range * 0.3 * bang_effectiveness) || src.loc == M.loc || src.loc == M))
|
||||
if(ear_safety > 0)
|
||||
M.Confuse(2)
|
||||
M.Weaken(1)
|
||||
@@ -58,20 +65,19 @@
|
||||
M.ear_damage += rand(0, 5)
|
||||
M.ear_deaf = max(M.ear_deaf,15)
|
||||
|
||||
else if(get_dist(M, T) <= 5)
|
||||
else if(get_dist(M, T) <= round(max_range * 0.5 * bang_effectiveness))
|
||||
if(!ear_safety)
|
||||
M.Confuse(8)
|
||||
M.ear_damage += rand(0, 3)
|
||||
M.ear_deaf = max(M.ear_deaf,10)
|
||||
|
||||
else if(!ear_safety)
|
||||
else if(!ear_safety && get_dist(M, T) <= (max_range * 0.7 * bang_effectiveness))
|
||||
M.Confuse(4)
|
||||
M.ear_damage += rand(0, 1)
|
||||
M.ear_deaf = max(M.ear_deaf,5)
|
||||
|
||||
//This really should be in mob not every check
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/obj/item/organ/internal/eyes/E = H.internal_organs_by_name[O_EYES]
|
||||
if (E && E.damage >= E.min_bruised_damage)
|
||||
M << "<span class='danger'>Your eyes start to burn badly!</span>"
|
||||
|
||||
@@ -69,6 +69,8 @@
|
||||
else
|
||||
..()
|
||||
|
||||
GLOBAL_LIST_BOILERPLATE(all_tracking_implants, /obj/item/weapon/implant/tracking)
|
||||
|
||||
/obj/item/weapon/implant/tracking
|
||||
name = "tracking implant"
|
||||
desc = "An implant normally given to dangerous criminals. Allows security to track your location."
|
||||
@@ -309,6 +311,8 @@ Implant Specifics:<BR>"}
|
||||
explosion(get_turf(imp_in), -1, -1, 1, 3)
|
||||
qdel(src)
|
||||
|
||||
GLOBAL_LIST_BOILERPLATE(all_chem_implants, /obj/item/weapon/implant/chem)
|
||||
|
||||
/obj/item/weapon/implant/chem
|
||||
name = "chemical implant"
|
||||
desc = "Injects things."
|
||||
|
||||
@@ -144,9 +144,9 @@
|
||||
force = 10
|
||||
w_class = ITEMSIZE_LARGE
|
||||
slot_flags = SLOT_BACK
|
||||
force_divisor = 0.5 // 15 when wielded with hardness 15 (glass)
|
||||
force_divisor = 0.5 // 15 when wielded with hardness 30 (glass)
|
||||
unwielded_force_divisor = 0.375
|
||||
thrown_force_divisor = 1.5 // 20 when thrown with weight 15 (glass)
|
||||
thrown_force_divisor = 1.5 // 22.5 when thrown with weight 15 (glass)
|
||||
throw_speed = 3
|
||||
edge = 0
|
||||
sharp = 1
|
||||
@@ -156,4 +156,4 @@
|
||||
applies_material_colour = 0
|
||||
fragile = 1 //It's a haphazard thing of glass, wire, and steel
|
||||
reach = 2 // Spears are long.
|
||||
attackspeed = 14
|
||||
attackspeed = 14
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
GLOBAL_LIST_BOILERPLATE(all_mops, /obj/item/weapon/mop)
|
||||
|
||||
/obj/item/weapon/mop
|
||||
desc = "The world of janitalia wouldn't be complete without a mop."
|
||||
name = "mop"
|
||||
@@ -12,7 +14,6 @@
|
||||
var/mopping = 0
|
||||
var/mopcount = 0
|
||||
|
||||
|
||||
/obj/item/weapon/mop/New()
|
||||
create_reagents(30)
|
||||
|
||||
|
||||
@@ -47,6 +47,10 @@
|
||||
max_storage_space = ITEMSIZE_COST_NORMAL * 14 // 56
|
||||
storage_cost = INVENTORY_STANDARD_SPACE + 1
|
||||
|
||||
/obj/item/weapon/storage/backpack/holding/duffle
|
||||
name = "dufflebag of holding"
|
||||
icon_state = "holdingduffle"
|
||||
|
||||
/obj/item/weapon/storage/backpack/holding/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if(istype(W, /obj/item/weapon/storage/backpack/holding))
|
||||
user << "<span class='warning'>The Bluespace interfaces of the two devices conflict and malfunction.</span>"
|
||||
|
||||
@@ -254,6 +254,7 @@
|
||||
description_antag = "This case will likely contain a charged fuel rod gun, and a few fuel rods to go with it. It can only hold the fuel rod gun, fuel rods, batteries, a screwdriver, and stock machine parts."
|
||||
force = 12 //Anti-rad lined i.e. Lead, probably gonna hurt a bit if you get bashed with it.
|
||||
can_hold = list(/obj/item/weapon/gun/magnetic/fuelrod, /obj/item/weapon/fuel_assembly, /obj/item/weapon/cell, /obj/item/weapon/stock_parts, /obj/item/weapon/screwdriver)
|
||||
cant_hold = list(/obj/item/weapon/screwdriver/power)
|
||||
starts_with = list(
|
||||
/obj/item/weapon/gun/magnetic/fuelrod,
|
||||
/obj/item/weapon/fuel_assembly/deuterium,
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
/obj/item/clothing/accessory/permit,
|
||||
/obj/item/clothing/accessory/badge
|
||||
)
|
||||
cant_hold = list(/obj/item/weapon/screwdriver/power)
|
||||
slot_flags = SLOT_ID
|
||||
|
||||
var/obj/item/weapon/card/id/front_id = null
|
||||
|
||||
@@ -56,6 +56,7 @@
|
||||
user.visible_message("<span class='danger'>\The [user] has taped up \the [H]'s eyes!</span>")
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses/blindfold/tape(H), slot_glasses)
|
||||
H.update_inv_glasses()
|
||||
playsound(src, 'sound/effects/tape.ogg',25)
|
||||
|
||||
else if(user.zone_sel.selecting == O_MOUTH || user.zone_sel.selecting == BP_HEAD)
|
||||
if(!H.organs_by_name[BP_HEAD])
|
||||
@@ -94,6 +95,7 @@
|
||||
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/mask/muzzle/tape(H), slot_wear_mask)
|
||||
H.update_inv_wear_mask()
|
||||
playsound(src, 'sound/effects/tape.ogg',25)
|
||||
|
||||
else if(user.zone_sel.selecting == "r_hand" || user.zone_sel.selecting == "l_hand")
|
||||
can_place = 0
|
||||
@@ -109,6 +111,7 @@
|
||||
return
|
||||
|
||||
var/obj/item/weapon/handcuffs/cable/tape/T = new(user)
|
||||
playsound(src, 'sound/effects/tape.ogg',25)
|
||||
|
||||
if(!T.place_handcuffs(H, user))
|
||||
user.unEquip(T)
|
||||
@@ -124,6 +127,7 @@
|
||||
var/obj/item/weapon/ducttape/tape = new(get_turf(src))
|
||||
tape.attach(W)
|
||||
user.put_in_hands(tape)
|
||||
playsound(src, 'sound/effects/tape.ogg',25)
|
||||
|
||||
/obj/item/weapon/ducttape
|
||||
name = "tape"
|
||||
@@ -188,6 +192,7 @@
|
||||
return // reduce papers around corners issue.
|
||||
|
||||
user.drop_from_inventory(src)
|
||||
playsound(src, 'sound/effects/tape.ogg',25)
|
||||
forceMove(source_turf)
|
||||
|
||||
if(params)
|
||||
|
||||
@@ -60,7 +60,7 @@ Frequency:
|
||||
if (sr)
|
||||
src.temp += "<B>Located Beacons:</B><BR>"
|
||||
|
||||
for(var/obj/item/device/radio/beacon/W in world)
|
||||
for(var/obj/item/device/radio/beacon/W in all_beacons)
|
||||
if (W.frequency == src.frequency)
|
||||
var/turf/tr = get_turf(W)
|
||||
if (tr.z == sr.z && tr)
|
||||
@@ -78,7 +78,7 @@ Frequency:
|
||||
src.temp += "[W.code]-[dir2text(get_dir(sr, tr))]-[direct]<BR>"
|
||||
|
||||
src.temp += "<B>Extranneous Signals:</B><BR>"
|
||||
for (var/obj/item/weapon/implant/tracking/W in world)
|
||||
for (var/obj/item/weapon/implant/tracking/W in all_tracking_implants)
|
||||
if (!W.implanted || !(istype(W.loc,/obj/item/organ/external) || ismob(W.loc) || W.malfunction))
|
||||
continue
|
||||
|
||||
@@ -137,7 +137,7 @@ Frequency:
|
||||
user << "<span class='notice'>\The [src] is malfunctioning.</span>"
|
||||
return
|
||||
var/list/L = list( )
|
||||
for(var/obj/machinery/teleport/hub/R in world)
|
||||
for(var/obj/machinery/teleport/hub/R in machines)
|
||||
var/obj/machinery/computer/teleporter/com = locate(/obj/machinery/computer/teleporter, locate(R.x - 2, R.y, R.z))
|
||||
if (istype(com, /obj/machinery/computer/teleporter) && com.locked && !com.one_time_use)
|
||||
if(R.icon_state == "tele1")
|
||||
@@ -156,7 +156,7 @@ Frequency:
|
||||
if ((user.get_active_hand() != src || user.stat || user.restrained()))
|
||||
return
|
||||
var/count = 0 //num of portals from this teleport in world
|
||||
for(var/obj/effect/portal/PO in world)
|
||||
for(var/obj/effect/portal/PO in all_portals)
|
||||
if(PO.creator == src) count++
|
||||
if(count >= 3)
|
||||
user.show_message("<span class='notice'>\The [src] is recharging!</span>")
|
||||
|
||||
@@ -172,7 +172,7 @@
|
||||
item_state = "drill"
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 150, MAT_SILVER = 50)
|
||||
origin_tech = list(TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
|
||||
|
||||
slot_flags = SLOT_BELT
|
||||
force = 8
|
||||
w_class = ITEMSIZE_SMALL
|
||||
throwforce = 8
|
||||
|
||||
Reference in New Issue
Block a user