diff --git a/code/WorkInProgress/Chemistry-Tools.dm b/code/WorkInProgress/Chemistry-Tools.dm index 6be71fdb393..8566e04ff24 100644 --- a/code/WorkInProgress/Chemistry-Tools.dm +++ b/code/WorkInProgress/Chemistry-Tools.dm @@ -1549,6 +1549,14 @@ ..() reagents.add_reagent("nutriment", 3) +/obj/item/weapon/reagent_containers/food/snacks/carpmeat + name = "carp fillet" + desc = "A fillet of spess carp meat" + icon_state = "fishfillet" + New() + ..() + reagents.add_reagent("nutriment", 3) + /obj/item/weapon/reagent_containers/food/snacks/xenomeat name = "meat" desc = "A slab of meat" diff --git a/code/datums/shuttle_controller.dm b/code/datums/shuttle_controller.dm index 0e5626f0cfc..9f529dfb282 100644 --- a/code/datums/shuttle_controller.dm +++ b/code/datums/shuttle_controller.dm @@ -16,6 +16,7 @@ datum/shuttle_controller endtime // timeofday that shuttle arrives //timeleft = 360 //600 + fake_recall = 0 //Used in rounds to prevent "ON NOES, IT MUST [INSERT ROUND] BECAUSE SHUTTLE CAN'T BE CALLED" // call the shuttle @@ -85,6 +86,11 @@ datum/shuttle_controller return 0 + else if((fake_recall != 0) && (timeleft <= fake_recall)) + recall() + + return 0 + else if(timeleft <= 0) location = 1 var/area/start_location = locate(/area/shuttle/escape/centcom) diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index e702330c014..d7612c84c5f 100644 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -388,18 +388,32 @@ /proc/call_shuttle_proc(var/mob/user) if ((!( ticker ) || emergency_shuttle.location)) return + if(world.time < 6000) // Ten minute grace period to let the game get going without lolmetagaming. -- TLE user << "The emergency shuttle is refueling. Please wait another [(6000-world.time)/10] seconds before trying again." return - if(ticker.mode.name == "revolution" || ticker.mode.name == "AI malfunction" || ticker.mode.name == "confliction") - user << "Centcom will not allow the shuttle to be called." - if(sent_strike_team == 1) - user << "Consider all contracts terminated." + + if(emergency_shuttle.direction == -1) + user << "Shuttle may not be called while returning to CentCom." return + + if(ticker.mode.name == "revolution" || ticker.mode.name == "AI malfunction" || ticker.mode.name == "confliction") + //user << "Centcom will not allow the shuttle to be called." //Old code + //if(sent_strike_team == 1) + // user << "Consider all contracts terminated." + //return + + if(sent_strike_team == 1) + user << "Centcom will not allow the shuttle to be called. Consider all contracts terminated." + return + //New version pretends to call the shuttle but cause the shuttle to return after a random duration. + emergency_shuttle.fake_recall = rand(300,500) + if(sent_strike_team == 1) if(ticker.mode.name != "revolution" || ticker.mode.name != "AI malfunction") user << "Centcom will not allow the shuttle to be called. Consider all contracts terminated." return + // if(ticker.mode.name == "blob" || ticker.mode.name == "Corporate Restructuring" || ticker.mode.name == "sandbox") // user << "Under directive 7-10, [station_name()] is quarantined until further notice." // return diff --git a/code/game/objects/livestock.dm b/code/game/objects/livestock.dm index 9740d0a3897..0456621e0dd 100644 --- a/code/game/objects/livestock.dm +++ b/code/game/objects/livestock.dm @@ -53,23 +53,45 @@ usr << text("\red Looks fierce!") return + proc/gib() //Will move this to a generic livestock proc once I get some gib animations for the others -- Darem. + var/atom/movable/overlay/animation = null + src.icon = null + src.invisibility = 101 + animation = new(src.loc) + animation.icon = 'livestock.dmi' + animation.icon_state = "blank" + animation.master = src + if(istype(src, /obj/livestock/spesscarp)) flick("spesscarp_g", animation) + sleep(11) + src.death(1) + del(animation) + return + attack_hand(user as mob) return attackby(obj/item/weapon/W as obj, mob/user as mob) - switch(W.damtype) - if("fire") - src.health -= W.force * 0.75 - if("brute") - src.health -= W.force * 0.5 - else - if (src.health <= 0) - src.death() - else if (W.force) - if(src.aggressive && (ishuman(user) || ismonkey(user) || isrobot(user))) - src.target = user - src.state = 1 + if(src.alive) + switch(W.damtype) + if("fire") + src.health -= W.force * 0.75 + if("brute") + src.health -= W.force * 0.5 + else + if (src.health <= 0) + src.death() + else if (W.force) + if(src.aggressive && (ishuman(user) || ismonkey(user) || isrobot(user))) + src.target = user + src.state = 1 + if(prob(10)) new /obj/decal/cleanable/blood(src.loc) + else if(istype(W, /obj/item/weapon/kitchenknife)) + user << "\red You slice open the [src.name]!" + for (var/obj/item/I in src) + I.loc = src.loc + del(src) + return ..() bullet_act(flag, A as obj) @@ -85,9 +107,10 @@ if(PROJECTILE_PULSE) src.health -= 25 if(prob(30)) - src.ex_act(1) + src.gib() if(PROJECTILE_BOLT) src.health -= 5 + if(prob(10)) new /obj/decal/cleanable/blood(src.loc) healthcheck() ex_act(severity) @@ -100,7 +123,7 @@ return meteorhit() - src.death() + src.gib() return blob_act() @@ -178,9 +201,9 @@ for (var/mob/living/carbon/C in range(view,src.loc)) //Checks all carbon creatures in range. if (!aggressive) //Is this animal angry? If not, what the fuck are you doing? break - if (C.stat == 2 || !can_see(src,C,view_range)) //Can it see it at all or is the target a ghost? + if (C.stat == 2 || !can_see(src,C,view_range) || (!can_see(src,C,(view_range / 2)) && C.invisibility >= 1)) continue - if(C:stunned || C:paralysis || C:weakened) //An easy target, bwahaha! + if(C:stunned || C:paralysis || C:weakened) target = C break if(C:health < last_health) //Selects the target but does NOT break the FOR loop. @@ -281,7 +304,7 @@ proc/death(var/messy = 0) if(!alive) return - src.alive = 0 + alive = 0 density = 0 icon_state = "[initial(icon_state)]_d" set_null() @@ -289,13 +312,20 @@ for(var/mob/O in hearers(src, null)) O.show_message("\red [src]'s eyes glass over!", 1) else + for (var/obj/item/I in src) + if(!istype(I, /obj/item/weapon/card)) I.loc = src.loc del(src) proc/healthcheck() if (src.health <= 0) src.death() -/obj/livestock/chick + +////////////////////////////////////////////////////////////////////////////// +/////////////////////////Specific Creature Entries//////////////////////////// +////////////////////////////////////////////////////////////////////////////// + +/*/obj/livestock/chick name = "Chick" desc = "A harmless little baby chicken, it's so cute!" icon_state = "chick" @@ -316,6 +346,7 @@ if(V.mind.special_role == "wizard") for(var/mob/H in hearers(src, null)) H << "\green Chick clucks in an angry manner at [V.name]." +*/ /obj/livestock/spesscarp name = "Spess Carp" @@ -329,6 +360,11 @@ patience = 25 view_range = 8 var/stun_chance = 5 // determines the prob of a stun + New() + ..() + new /obj/item/weapon/reagent_containers/food/snacks/carpmeat(src) + new /obj/item/weapon/reagent_containers/food/snacks/carpmeat(src) + new /obj/item/weapon/reagent_containers/food/snacks/carpmeat(src) special_attack() if (prob(stun_chance)) target:stunned = max(target:stunned, (strength / 2)) @@ -341,6 +377,7 @@ stun_chance = 40 intelligence = "Assistant" +/* Commented out because of filthy xeno-lovers. /obj/livestock/cow name = "Pigmy Cow" desc = "That's not my cow!" @@ -351,6 +388,11 @@ cycle_pause = 20 patience = 50 view_range = 10 + New() + ..() + new /obj/item/weapon/reagent_containers/food/snacks/monkeymeat(src) + new /obj/item/weapon/reagent_containers/food/snacks/monkeymeat(src) + new /obj/item/weapon/reagent_containers/food/snacks/monkeymeat(src) special_extra() if(prob(20)) for(var/mob/O in hearers(src, null)) @@ -368,23 +410,4 @@ usr << text("\red The cow looks uncomfortable.") if(81 to INFINITY) usr << text("\red The cow looks as if it could burst at any minute!") - - proc/gib() //Will move this to a generic livestock proc once I get some gib animations for the others -- Darem. - var/atom/movable/overlay/animation = null - src.icon = null - src.invisibility = 101 - animation = new(src.loc) - animation.icon = 'livestock.dmi' - animation.icon_state = "blank" - animation.master = src - flick("cow_g", animation) - new /obj/decal/cleanable/blood(src) - new /obj/item/weapon/reagent_containers/food/snacks/monkeymeat(src) - new /obj/item/weapon/reagent_containers/food/snacks/monkeymeat(src) - new /obj/item/weapon/reagent_containers/food/snacks/monkeymeat(src) - for (var/obj/I in src) //Not the best way to do this but it allows for pinata style animals as well. - I.loc = src.loc - sleep(11) - src.death(1) - del(animation) - return \ No newline at end of file + */ \ No newline at end of file diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index ac8aa899c55..6c6252d43b9 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -566,10 +566,16 @@ Would like to add a law like "Law x is _______" where x = a number, and _____ is src << "Only administrators may use this command." return + if(ticker.mode.name == "revolution" || ticker.mode.name == "AI malfunction" || ticker.mode.name == "confliction") + var/choice = input("The shuttle will just return if you call it. Call anyway?") in list("Confirm", "Cancel") + if(choice == "Confirm") + emergency_shuttle.fake_recall = rand(300,500) + else + return + emergency_shuttle.incall() world << "\blue Alert: The emergency shuttle has been called. It will arrive in [round(emergency_shuttle.timeleft()/60)] minutes." world << sound('shuttlecalled.ogg') - return /client/proc/admin_cancel_shuttle() diff --git a/code/modules/mob/living/carbon/human/say.dm b/code/modules/mob/living/carbon/human/say.dm index 5f500cc3248..886e93d1eb0 100644 --- a/code/modules/mob/living/carbon/human/say.dm +++ b/code/modules/mob/living/carbon/human/say.dm @@ -1,6 +1,7 @@ /mob/living/carbon/human/say(var/message) if(src.mutantrace == "lizard") - message = dd_replaceText(message, "s", stutter("ss")) + if(copytext(message, 1, 2) != "*") + message = dd_replaceText(message, "s", stutter("ss")) ..(message) /mob/living/carbon/human/say_understands(var/other) diff --git a/icons/mob/livestock.dmi b/icons/mob/livestock.dmi index 577e0bcf73e..cedaeaf5066 100644 Binary files a/icons/mob/livestock.dmi and b/icons/mob/livestock.dmi differ diff --git a/icons/obj/food.dmi b/icons/obj/food.dmi index 42d64d6567b..c1b51ae3e22 100644 Binary files a/icons/obj/food.dmi and b/icons/obj/food.dmi differ