Merge branch 'master' into assu

This commit is contained in:
Anonymous
2019-11-05 15:45:04 +03:00
77 changed files with 1533 additions and 827 deletions
-14
View File
@@ -82,13 +82,6 @@
item_state = "nr_helmet"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
/obj/item/clothing/head/stalhelm
name = "Stalhelm"
desc = "Ein Helm, um die Nazi-Interesse an fremden Raumstationen zu sichern."
icon_state = "stalhelm"
item_state = "stalhelm"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
/obj/item/clothing/head/panzer
name = "Panzer Cap"
desc = "Command any mech in style."
@@ -96,13 +89,6 @@
item_state = "panzercap"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
/obj/item/clothing/head/naziofficer
name = "Officer Cap"
desc = "Style is all that matters."
icon_state = "officercap"
item_state = "officercap"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
/obj/item/clothing/head/russobluecamohat
name = "russian blue camo beret"
desc = "A symbol of discipline, honor, and lots and lots of removal of some type of skewered food."
@@ -1,24 +1,5 @@
//VG Ports
/obj/item/clothing/head/helmet/space/hardsuit/nazi
name = "nazi hardhelmet"
desc = "This is the face of das vaterland's top elite. Gas or energy are your only escapes."
item_state = "hardsuit0-nazi"
icon_state = "hardsuit0-nazi"
armor = list(melee = 40, bullet = 30, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 20)
item_color = "nazi"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
/obj/item/clothing/suit/space/hardsuit/nazi
name = "nazi hardsuit"
desc = "The attire of a true krieger. All shall fall, and only das vaterland will remain."
item_state = "hardsuit-nazi"
icon_state = "hardsuit-nazi"
slowdown = 1
armor = list(melee = 40, bullet = 30, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 20)
allowed = list(/obj/item/gun,/obj/item/flashlight,/obj/item/tank,/obj/item/melee/)
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/nazi
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
/obj/item/clothing/head/helmet/space/hardsuit/soviet
name = "soviet hardhelmet"
+9 -72
View File
@@ -8,8 +8,11 @@
/datum/round_event/wizard/rpgloot/start()
var/upgrade_scroll_chance = 0
for(var/obj/item/I in world)
if(!istype(I.rpg_loot))
I.rpg_loot = new(I)
CHECK_TICK
if(!(I.flags_1 & INITIALIZED_1))
continue
I.AddComponent(/datum/component/fantasy)
if(istype(I, /obj/item/storage))
var/obj/item/storage/S = I
@@ -31,86 +34,20 @@
var/upgrade_amount = 1
var/can_backfire = TRUE
var/one_use = TRUE
var/uses = 1
/obj/item/upgradescroll/afterattack(obj/item/target, mob/user , proximity)
. = ..()
if(!proximity || !istype(target))
return
var/datum/rpg_loot/rpg_loot_datum = target.rpg_loot
if(!istype(rpg_loot_datum))
target.rpg_loot = rpg_loot_datum = new /datum/rpg_loot(target)
target.AddComponent(/datum/component/fantasy, upgrade_amount, null, null, can_backfire, TRUE)
var/quality = rpg_loot_datum.quality
if(can_backfire && (quality > 9 && prob((quality - 9)*10)))
to_chat(user, "<span class='danger'>[target] violently glows blue for a while, then evaporates.</span>")
target.burn()
else
to_chat(user, "<span class='notice'>[target] glows blue and seems vaguely \"better\"!</span>")
rpg_loot_datum.modify(upgrade_amount)
if(one_use)
if(--uses <= 0)
qdel(src)
/obj/item/upgradescroll/unlimited
name = "unlimited foolproof item fortification scroll"
desc = "Somehow, this piece of paper can be applied to items to make them \"better\". This scroll is made from the tongues of dead paper wizards, and can be used an unlimited number of times, with no drawbacks."
one_use = FALSE
uses = INFINITY
can_backfire = FALSE
/datum/rpg_loot
var/positive_prefix = "okay"
var/negative_prefix = "weak"
var/suffix = "something profound"
var/quality = 0
var/obj/item/attached
var/original_name
/datum/rpg_loot/New(attached_item=null)
attached = attached_item
randomise()
/datum/rpg_loot/Destroy()
attached = null
/datum/rpg_loot/proc/randomise()
var/static/list/prefixespositive = list("greater", "major", "blessed", "superior", "empowered", "honed", "true", "glorious", "robust")
var/static/list/prefixesnegative = list("lesser", "minor", "blighted", "inferior", "enfeebled", "rusted", "unsteady", "tragic", "gimped")
var/static/list/suffixes = list("orc slaying", "elf slaying", "corgi slaying", "strength", "dexterity", "constitution", "intelligence", "wisdom", "charisma", "the forest", "the hills", "the plains", "the sea", "the sun", "the moon", "the void", "the world", "the fool", "many secrets", "many tales", "many colors", "rending", "sundering", "the night", "the day")
var/new_quality = pick(1;15, 2;14, 2;13, 2;12, 3;11, 3;10, 3;9, 4;8, 4;7, 4;6, 5;5, 5;4, 5;3, 6;2, 6;1, 6;0)
suffix = pick(suffixes)
positive_prefix = pick(prefixespositive)
negative_prefix = pick(prefixesnegative)
if(prob(50))
new_quality = -new_quality
modify(new_quality)
/datum/rpg_loot/proc/rename()
var/obj/item/I = attached
if(!original_name)
original_name = I.name
if(quality < 0)
I.name = "[negative_prefix] [original_name] of [suffix] [quality]"
else if(quality == 0)
I.name = "[original_name] of [suffix]"
else if(quality > 0)
I.name = "[positive_prefix] [original_name] of [suffix] +[quality]"
/datum/rpg_loot/proc/modify(quality_mod)
var/obj/item/I = attached
quality += quality_mod
I.force = max(0,I.force + quality_mod)
I.throwforce = max(0,I.throwforce + quality_mod)
I.armor = I.armor.modifyAllRatings(quality)
rename()
+19 -30
View File
@@ -95,45 +95,34 @@
last_poof = world.realtime
var/datum/reagents/R = new/datum/reagents(100)//Hey, just in case.
var/datum/effect_system/smoke_spread/chem/s = new()
R.add_reagent("secretcatchem", (10))
R.add_reagent("secretcatchem", 10)
s.set_up(R, 0, loc)
s.start()
visible_message("<b>[src]</b> disappears in a puff of smoke!")
canmove = TRUE
health = 25
var/hp_list = list()
for(var/obj/machinery/holopad/hp in world)
hp_list += hp
//Try to go to populated areas
var/list/pop_areas = list()
for(var/mob/living/L in GLOB.player_list)
var/area/A = get_area(L)
pop_areas += A
var/nono_areas = list("AI ")
for(var/i = 0, i <= 6, i+=1) //Attempts a jump 6 times.
var/obj/machinery/holopad/hp = pick(hp_list)
if(forceMove(pick(hp.loc)))
var/jacq_please_no = FALSE
for(var/no_area in nono_areas)
var/turf/L1 = hp.loc
if(!L1) //Incase the area isn't a turf (i.e. in a locker)
continue
var/area/L2 = L1.loc
if(L2)
if(findtext(L2.name, no_area))
jacq_please_no = TRUE
if(jacq_please_no)
i-=1
continue
//Try to go to populated areas
var/list/seen = viewers(8, get_turf(src))
for(var/victim in seen)
if(ishuman(victim))
if(z == cached_z)
return TRUE
var/list/targets = list()
for(var/H in GLOB.network_holopads)
var/area/A = get_area(H)
if(findtextEx(A, "AI") || !(A in pop_areas) || !is_station_level(H))
continue
targets += H
if(!targets)
targets = GLOB.generic_event_spawns
for(var/i in 1 to 6) //Attempts a jump up to 6 times.
var/atom/A = pick(targets)
if(do_teleport(src, A, channel = TELEPORT_CHANNEL_MAGIC))
return TRUE
targets -= A
return FALSE
/mob/living/simple_animal/jacq/proc/gender_check(mob/living/carbon/C)
@@ -66,7 +66,7 @@
playsound(C, pick(spooks), 50, TRUE, 10)
//Congrats you somehow died so hard you stopped being a zombie
/datum/species/zombie/infectious/spec_death(mob/living/carbon/C)
/datum/species/zombie/infectious/spec_death(gibbed, mob/living/carbon/C)
. = ..()
var/obj/item/organ/zombie_infection/infection
infection = C.getorganslot(ORGAN_SLOT_ZOMBIE)
+1 -1
View File
@@ -98,7 +98,7 @@
var/datum/gas_mixture/breath
if(!getorganslot(ORGAN_SLOT_BREATHING_TUBE))
if(health <= HEALTH_THRESHOLD_FULLCRIT || (pulledby && pulledby.grab_state >= GRAB_KILL) || lungs.organ_flags & ORGAN_FAILING)
if(health <= HEALTH_THRESHOLD_FULLCRIT || (pulledby && pulledby.grab_state >= GRAB_KILL) || !lungs || lungs.organ_flags & ORGAN_FAILING)
losebreath++ //You can't breath at all when in critical or when being choked, so you're going to miss a breath
else if(health <= crit_threshold)
@@ -2,7 +2,7 @@
#define GORILLA_TOTAL_LAYERS 1
/mob/living/simple_animal/hostile/gorilla
name = "Gorilla"
name = "gorilla"
desc = "A ground-dwelling, predominantly herbivorous ape that inhabits the forests of central Africa."
icon = 'icons/mob/gorilla.dmi'
icon_state = "crawling"
@@ -108,3 +108,10 @@
playsound(src, 'sound/creatures/gorilla.ogg', 200)
oogas = 0
/mob/living/simple_animal/hostile/gorilla/familiar
name = "familiar gorilla"
desc = "There is no need to be upset."
unique_name = FALSE
AIStatus = AI_OFF
atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
minbodytemp = 0
@@ -344,6 +344,7 @@
/mob/living/simple_animal/hostile/proc/AttackingTarget()
SEND_SIGNAL(src, COMSIG_HOSTILE_ATTACKINGTARGET, target)
in_melee = TRUE
if(vore_active)
if(isliving(target))
@@ -426,12 +427,13 @@
if(casingtype)
var/obj/item/ammo_casing/casing = new casingtype(startloc)
playsound(src, projectilesound, 100, 1)
casing.fire_casing(targeted_atom, src, null, null, null, ran_zone())
casing.fire_casing(targeted_atom, src, null, null, null, ran_zone(), src)
else if(projectiletype)
var/obj/item/projectile/P = new projectiletype(startloc)
playsound(src, projectilesound, 100, 1)
P.starting = startloc
P.firer = src
P.fired_from = src
P.yo = targeted_atom.y - startloc.y
P.xo = targeted_atom.x - startloc.x
if(AIStatus != AI_ON)//Don't want mindless mobs to have their movement screwed up firing in space
@@ -199,6 +199,7 @@
if(prob(35))
sparks.start()
P.firer = user ? user : src
P.fired_from = src
if(last_projectile_params)
P.p_x = last_projectile_params[2]
P.p_y = last_projectile_params[3]
@@ -1,8 +1,8 @@
/obj/item/ammo_casing/proc/fire_casing(atom/target, mob/living/user, params, distro, quiet, zone_override, spread)
/obj/item/ammo_casing/proc/fire_casing(atom/target, mob/living/user, params, distro, quiet, zone_override, spread, atom/fired_from)
distro += variance
for (var/i = max(1, pellets), i > 0, i--)
var/targloc = get_turf(target)
ready_proj(target, user, quiet, zone_override)
ready_proj(target, user, quiet, zone_override, fired_from)
if(distro) //We have to spread a pixel-precision bullet. throw_proj was called before so angles should exist by now...
if(randomspread)
spread = round((rand() - 0.5) * distro)
@@ -20,11 +20,12 @@
update_icon()
return 1
/obj/item/ammo_casing/proc/ready_proj(atom/target, mob/living/user, quiet, zone_override = "")
/obj/item/ammo_casing/proc/ready_proj(atom/target, mob/living/user, quiet, zone_override = "", fired_from)
if (!BB)
return
BB.original = target
BB.firer = user
BB.fired_from = fired_from
if (zone_override)
BB.def_zone = zone_override
else
@@ -3,7 +3,7 @@
firing_effect_type = null
heavy_metal = FALSE
/obj/item/ammo_casing/caseless/fire_casing(atom/target, mob/living/user, params, distro, quiet, zone_override, spread)
/obj/item/ammo_casing/caseless/fire_casing(atom/target, mob/living/user, params, distro, quiet, zone_override, spread, atom/fired_from)
if (..()) //successfully firing
moveToNullspace()
QDEL_NULL(src)
+2 -2
View File
@@ -233,7 +233,7 @@
else //Smart spread
sprd = round((((rand_spr/burst_size) * iteration) - (0.5 + (rand_spr * 0.25))) * (randomized_gun_spread + randomized_bonus_spread), 1)
if(!chambered.fire_casing(target, user, params, ,suppressed, zone_override, sprd))
if(!chambered.fire_casing(target, user, params, ,suppressed, zone_override, sprd, src))
shoot_with_empty_chamber(user)
firing_burst = FALSE
return FALSE
@@ -280,7 +280,7 @@
to_chat(user, "<span class='notice'> [src] is lethally chambered! You don't want to risk harming anyone...</span>")
return
sprd = round((rand() - 0.5) * DUALWIELD_PENALTY_EXTRA_MULTIPLIER * (randomized_gun_spread + randomized_bonus_spread))
if(!chambered.fire_casing(target, user, params, , suppressed, zone_override, sprd))
if(!chambered.fire_casing(target, user, params, , suppressed, zone_override, sprd, src))
shoot_with_empty_chamber(user)
return
else
@@ -331,9 +331,9 @@
uninstall(KA)
/obj/item/borg/upgrade/modkit/proc/uninstall(obj/item/gun/energy/kinetic_accelerator/KA, forcemove = TRUE)
KA.modkits -= src
if(forcemove)
forceMove(get_turf(KA))
KA.modkits -= src
/obj/item/borg/upgrade/modkit/proc/modify_projectile(obj/item/projectile/kinetic/K)
+5
View File
@@ -17,6 +17,7 @@
resistance_flags = LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
var/def_zone = "" //Aiming at
var/atom/movable/firer = null//Who shot it
var/atom/fired_from = null // the atom that the projectile was fired from (gun, turret)
var/suppressed = FALSE //Attack message
var/candink = FALSE //Can this projectile play the dink sound when hitting the head?
var/yo = null
@@ -131,6 +132,8 @@
return TRUE
/obj/item/projectile/proc/on_hit(atom/target, blocked = FALSE)
if(fired_from)
SEND_SIGNAL(fired_from, COMSIG_PROJECTILE_ON_HIT, firer, target, Angle)
var/turf/target_loca = get_turf(target)
var/hitx
@@ -356,6 +359,8 @@
pixel_move(1, FALSE)
/obj/item/projectile/proc/fire(angle, atom/direct_target)
if(fired_from)
SEND_SIGNAL(fired_from, COMSIG_PROJECTILE_BEFORE_FIRE, src, original)
//If no angle needs to resolve it from xo/yo!
if(!log_override && firer && original)
log_combat(firer, original, "fired at", src, "from [get_area_name(src, TRUE)]")
+1 -1
View File
@@ -338,7 +338,7 @@
/obj/item/organ/eyes/robotic/glow/proc/start_visuals()
if(!islist(eye_lighting))
regenerate_light_effects()
if((eye_lighting.len < light_beam_distance) || !on_mob)
if((LAZYLEN(eye_lighting) < light_beam_distance) || !on_mob)
regenerate_light_effects()
sync_light_effects()
update_visuals()
+1 -1
View File
@@ -92,7 +92,7 @@
return TRUE
if(iscyborg(user) && user.a_intent != INTENT_HARM) //to save asimov borgs a LOT of heartache
return TRUE
if(tool.item_flags & SURGICAL_TOOL) //Just because you used the wrong tool it doesn't mean you meant to whack the patient with it
if(tool && tool.item_flags & SURGICAL_TOOL) //Just because you used the wrong tool it doesn't mean you meant to whack the patient with it
to_chat(user, "<span class='warning'>This step requires a different tool!</span>")
return TRUE
+1 -1
View File
@@ -158,7 +158,7 @@
/obj/belly/Destroy()
SSbellies.belly_list -= src
if(owner)
if(owner?.vore_organs)
owner.vore_organs -= src
owner = null
. = ..()